Metadata-Version: 1.1
Name: django-simple_perms
Version: 0.2.1
Summary: A simple class based permission backend for django
Home-page: https://bitbucket.org/hespul/django-simple_perms
Author: Fabien MICHEL
Author-email: fabien.michel@hespul.org
License: WTFPL
Description: Really simple permission backend for django
        
        Class based, No database
        
        Inspired by
        `django-permission <https://github.com/lambdalisue/django-permission>`__
        
        Tested with Django 1.10 - python 3.5
        
        Introduction
        ============
        
        The app autodiscover perms.py module in your project's apps.
        
        This modules should register PermissionLogic based class.
        
        When calling django's has\_perm method, it will run the corresponding
        method name in your PermissionLogic class.
        
        See usage section below for comprehensive example.
        
        Usage
        =====
        
        *settings.py*
        
        .. code:: python
        
            INSTALLED_APPS = (
              # ...
              'simple_perms',  # Add app to your INSTALLED_APPS
              # ...
            )
        
            AUTHENTICATION_BACKENDS = (
                'simple_perms.backend.PermissionBackend',  # Add permission backend before django's one
                'django.contrib.auth.backends.ModelBackend',
            )
        
        *project\_app/perms.py*
        
        .. code:: python
        
            from simple_perms import register, PermissionLogic
        
        
            class ProjectLogic(PermissionLogic):
        
                def add_project(self, user, project, perm):
                    return True
        
                def change_project(self, user, project, perm):
                    return user.is_admin() or project.owner == user
        
                delete_project = change_project
        
                def default_permission(self, user, project, perm):
                  # Optional, default to global default permission, which default to False
                  return user.is_admin()
        
        
            register('project_app', ProjectLogic)
        
        .. code:: python
        
            user1.has_perm('project_app.add_project')  # True
            user1.has_perm('project_app.change_project', user1_project)  # True
            user1.has_perm('project_app.delete_project', user1_project)  # True
            user2.has_perm('project_app.change_project', user1_project)  # False
            admin.has_perm('project_app.change_project', user1_project)  # True
        
        Default permission
        ==================
        
        If a checked permission doesn't exists in registered PermissionLogic
        based classe, the backend will run the default\_permission method of
        this class. If no default\_permission defined, it default to the global
        default permission which default to False.
        
        **Change global default permission**
        
        *settings.py*
        
        .. code:: python
        
            SIMPLE_PERMS_GLOBAL_DEFAULT_PERMISSION = 'path.to.custom_global_default_permission'
        
        *path/to.py*
        
        .. code:: python
        
            def custom_global_default_permission(user, obj, perm):
                return user.is_admin()
        
        global\_default\_permission and default\_permission have the same
        arguments as others permissions : ``(user, obj, perm)``
        
        Change autodiscovered perms module name
        =======================================
        
        simple\_perms autodiscover perms.py modules in every django's apps. You
        can change the module name to autodiscover using the
        SIMPLE\_PERMS\_MODULE\_NAME setting :
        
        .. code:: python
        
            SIMPLE_PERMS_MODULE_NAME = 'permission'
        
        Run tests
        =========
        
        .. code:: bash
        
            python runtests.py
        
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.10
Classifier: Intended Audience :: Developers
Classifier: License :: Public Domain
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
