Metadata-Version: 1.1
Name: django-tsugi
Version: 0.1.9
Summary: Library code to help write Python Tools that use the Tsugi library to integrate into Learning Management Systems.
Home-page: https://github.com/tsugiproject/django-tsugi.git
Author: Charles Severance (Dr. Chuck)
Author-email: drchuck@learnxp.com
License: Apache License
Description: ============
        Django Tsugi
        ============
        
        This is the emerging Tsugi library for Django - https://www.tsugi.org
        
        https://pypi.org/project/django-tsugi/
        
        Quick start
        -----------
        
        1.  Install
        
                pip install django-tsugi    # or pip3
        
        2. Add "django_tsugi" to your INSTALLED_APPS and add the keyset url for your
           controlling server in `settings.py` like this::
        
                INSTALLED_APPS = [
                    ...
                    'django_tsugi',
                ]
        
                # To set up Tsugi
                TSUGI_KEYSET = "https://dev1.tsugicloud.org/tsugi/lti/keyset-ext";
        
        3. Add a line to your application's `urls.py` file to handle launches and
           tell Tsugi which view to redirect to after the launch is successful::
        
                from . import views
                from django_tsugi.views import LaunchView
        
                urlpatterns = [
                    path('', views.GradeView.as_view(), name='grade' ),
                    path('launch', LaunchView.as_view(), {'success_url' : 'grade'} ),
                ]
        
        4. Add the TsugiMixin to your class based view and it will define
           the `request.tsugi` variable with the user, context, and link
           information::
        
               from django.views import View
               from django_tsugi.mixins import TsugiMixin
        
               class GradeView(TsugiMixin, View):
        
                def get(self, request) :
                    context = {'tsugi': request.tsugi}
                    return render(request, 'grade/main.html', context)
        
               def post(self, request) :
                    grade = float(request.POST.get('grade'))
                    comment = request.POST.get('comment')
        
                    retval = request.tsugi.result.gradeSend(grade, comment)
                    context = {'tsugi': request.tsugi, 'retval' : retval}
                    return render(request, 'grade/done.html', context)
        
        Revising and testing locally
        ----------------------------
        
        If you are running your Django tool locally and Tsugi locally, you
        can use the following in `settings.py`::
        
            TSUGI_KEYSET = "http://localhost:8888/tsugi/lti/keyset-ext";
        
        If you are working on a new version of this library with a django
        tsugi app, you can release a new version locally with::
        
            python3 setup.py sdist ;  pip3 install dist/*.tar.gz
        
        
        Releasing to pypi.org
        ---------------------
        
        This library is released to https://pypi.org/project/django-tsugi/
        
        You need `twine` to push changes to pypi::
        
            pip3 install twine           # If needed
            pip install --upgrade twine  # If needed
            pip3 install twine==1.12.1   # If needed since later twines mess up
        
        To release a whole new version, update the version in `setup.py` and then::
        
            rm dist/* ; python3 setup.py sdist ; twine check dist/*
        
            twine upload dist/*
        
        You cannot upload the same version number twice.
        
        
        References
        ----------
        
        [1] How to write reusable apps - https://docs.djangoproject.com/en/2.2/intro/reusable-apps/
        
        [2] Tutorial on Packaging and Distributing Projects - https://packaging.python.org/tutorials/packaging-projects/
        
        [3] https://pypi.org/ - https://packaging.python.org/tutorials/packaging-projects/#uploading-the-distribution-archives
        
        
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.1
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
