Metadata-Version: 2.1
Name: django-decorator-include
Version: 3.0
Summary: Include Django URL patterns with decorators
Home-page: https://github.com/twidi/django-decorator-include
Author: Jeff Kistler
Author-email: jeff@jeffkistler.com
License: BSD
Description: django-decorator-include
        ========================
        
        Include Django URL patterns with decorators.
        
        Maintained by Stéphane "Twidi" Angel, and Jon Dufresne on
        https://github.com/twidi/django-decorator-include
        based on the original work from Jeff Kistler on
        https://github.com/jeffkistler/django-decorator-include.
        
        .. image:: https://badge.fury.io/py/django-decorator-include.svg
            :target: https://badge.fury.io/py/django-decorator-include
        
        .. image:: https://travis-ci.org/twidi/django-decorator-include.svg?branch=develop
            :target: https://travis-ci.org/twidi/django-decorator-include
        
        Installation
        ------------
        
        Assuming you have pip installed, run the following command to install from
        PyPI::
        
            pip install django-decorator-include
        
        
        Usage
        -----
        
        ``decorator_include`` is intended for use in URL confs as a replacement for the
        ``django.conf.urls.include`` function. It works in almost the same way as
        ``include`` however the first argument should be either a decorator or an
        iterable of decorators to apply to all included views (if an iterable, the order of the
        decorators is the order in which the functions will be applied on the views).
        Herei s an example URL conf::
        
            from django.contrib import admin
            from django.core.exceptions import PermissionDenied
            from django.urls import path
            from django.contrib.auth.decorators import login_required, user_passes_test
        
            from decorator_include import decorator_include
        
            from mysite.views import index
        
            def only_user(username):
                def check(user):
                    if user.is_authenticated and user.username == username:
                        return True
                    raise PermissionDenied
                return user_passes_test(check)
        
            urlpatterns = [
                path('', views.index, name='index'),
                # will redirect to login page if not authenticated
                path('secret/', decorator_include(login_required, 'mysite.secret.urls')),
                # will redirect to login page if not authenticated
                # will return a 403 http error if the user does not have the "god" username
                path('admin/', decorator_include([login_required, only_user('god')], admin.site.urls),
            ]
        
        
        Supported versions
        ------------------
        
        =============== ==================
        Django versions Python versions
        =============== ==================
        2.0             3.4, 3.5, 3.6, 3.7
        2.1             3.5, 3.6, 3.7
        2.2             3.5, 3.6, 3.7, 3.8
        3.0             3.6, 3.7, 3.8
        =============== ==================
        
        All library versions to use for old Django/Python support
        ---------------------------------------------------------
        
        =============== ======================= ==================
        Django versions Python versions         Library versions
        =============== ======================= ==================
        1.4, 1.5        2.6, 2.7                1.2
        1.6             2.6, 2.7, 3.2, 3.3      1.2
        1.7             2.7, 3.2, 3.3, 3.4      1.2
        1.8             2.7, 3.2, 3.3, 3.4, 3.5 1.3
        1.9, 1.10       2.7, 3.4, 3.5           1.3
        1.11            2.7, 3.4, 3.5, 3.6      1.4.x (>=1.4.1,<2)
        2.0             3.4, 3.5, 3.6, 3.7      3.0
        2.1             3.5, 3.6, 3.7           3.0
        2.2             3.5, 3.6, 3.7, 3.8      3.0
        3.0             3.6, 3.7, 3.8           3.0
        =============== ======================= ==================
        
        
        Development
        -----------
        
        Make sure you are in a virtualenv on a valid python version.
        
        Grab the sources from Github::
        
            git clone -b develop https://github.com/twidi/django-decorator-include.git
        
        
        Then go into the newly created ``django-decorator-include`` directory and install
        the few needed libraries::
        
            pip install -r requirements.txt
        
        
        To run the tests, this library provides a test project, so you can launch
        them this way::
        
            django-admin test --settings=tests.settings tests
        
        Or simply launch the ``runtests.sh`` script (it will run this exact command)::
        
            ./runtests.sh
        
        Base your work on the ``develop`` branch. Iit should be the default branch on
        git assuming you used the ``-b develop`` argument on the ``git clone``
        command as shown above.
        
        When creating the pull request, ensure you are using the correct base
        (twidi/django-decorator-include on develop).
        
Keywords: django,urls
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.4
Provides-Extra: dev
