The goal of dj_auth is to limit data access for certain user over your django project.
Project description
dj_auth
—
The goal of dj_auth is to limit data access for certain user over your django project.
Requirements
Django 1.9
Quickstart
Install dj_auth:
pip install dj_auth
Put dj_auth into your INSTALLED_APPS at settings module:
INSTALLED_APPS = ( ... 'dj_auth', )
Create dj_auth database tables by running:
python manage.py migrate
Extend the Queryset methods of your Models:
from django.db import models from dj_auth.models import ObjectFilterQuerySetMixin class YourModelQuerySet(ObjectFilterQuerySetMixin, models.QuerySet): def sichtbar(self, sichtbar=True): return self.filter(sichtbar=sichtbar) class YourModel(models.Model): your_fielfs = models.SmallIntegerField() objects = YourModelQuerySet.as_manager()
Set DJ_AUTH constant in your settings.py:
DJ_AUTH = {'content_type_exclude': ('contenttypes.contenttype', 'sessions.session', 'sites.site', 'auth.user', 'auth.group', 'auth.permission', 'admin.logentry', 'dj_auth.objectfilter',), 'content_type_include': (), 'global_fields_exclude': ('user', ), 'related_filter_fields_exclude': {'auth.user': ('groups', ), }, }
In “content_type_exclude” you put the models on which you don’t want create ObjectFilters
In “content_type_include” you put the models on which you want create ObjectFilters
In “global_fields_exclude” you put the fieldnames on which you don’t want apply the ObjectFilter globally
In “related_filter_fields_exclude” you put the fieldnames on which you don’t want apply the ObjectFilter for a specific Model
Features
ObjectFilterFormMixin
First of all you have to create an ObjectFilter record for a specific user. Therefore you can should use ObjectFilterFormMixin:
from django import forms from dj_auth.forms import ObjectFilterFormMixin class ObjectFilterForm(ObjectFilterFormMixin, forms.ModelForm): pass
ObjectFilterListMixin
To limit data in ListView use ObjectFilterListMixin:
from django.views.generic import ListView from django.contrib.auth import get_user_model from dj_auth.views import ObjectFilterListMixin class UserListView(ObjectFilterListMixin, ListView): model = get_user_model()
ObjectFilterDetailMixin
To limit data in DetailView use ObjectFilterDetailMixin:
from django.views.generic import DetailView from django.contrib.auth import get_user_model from dj_auth.views import ObjectFilterDetailMixin class UserDetailView(ObjectFilterDetailMixin, DetailView): model = get_user_model()
ObjectFilterUpdateMixin
To limit data in UpdateView use ObjectFilterUpdateMixin:
from django.views.generic import UpdateView from django.contrib.auth import get_user_model from dj_auth.views import ObjectFilterUpdateMixin class UserDetailView(ObjectFilterUpdateMixin, UpdateView): model = get_user_model()
ObjectFilterDeleteMixin
To limit data in UpdateView use ObjectFilterDeleteMixin:
from django.views.generic import DeleteView from django.contrib.auth import get_user_model from dj_auth.views import ObjectFilterDeleteMixin class UserDetailView(ObjectFilterDeleteMixin, DeleteView): model = get_user_model()
Todo
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install -r requirements_test.txt (myenv) $ coverage run --source=dj_auth runtests.py && coverage html
Credits
Tools used in rendering this package:
History
0.1.0 (2016-07-29)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dj_auth-1.5.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 836c7b6f5dbc5d517e08ac36b59e62be4625e18c037fd6c9d4562a76896b7fb5 |
|
MD5 | 1db91674f5d13595c05c14ae3155c83d |
|
BLAKE2b-256 | 46eccd58ce84e66deeaacbf2b4d3b625ffcf1b991ee41ba13f2073306be92a1c |