django-groups-cache 1.0.2

Creator: danarutscher

Last updated:

Add to Cart

Description:

djangogroupscache 1.0.2

Caches the groups a user is in so requests don’t have to make calls to the database to check group status.

Support
Currently supporting Django 1.8, 1.11, and 2.0 with Python 2.7/Python 3 where support for versions aligns with
Django’s support. See the tox.ini file for specific Python and Django version pairings.


Documentation
The full documentation is at https://django-groups-cache.readthedocs.io.


Quickstart
Install django-groups-cache:
pip install django-groups-cache
Add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'groups_cache.apps.GroupsCacheConfig',
...
)
Add the middleware to your MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
'groups_cache.middleware.GroupsCacheMiddleware',
)
Checking in a Django Template if the user is in a group name:
{% if "admins" in request.groups_cache %}
<a href="/admin">Admin Panel</a>
{% endif %}

# or use templatetag, note that templatetag is slower

{% load has_group %}

{% if request.user|has_group:"admins" %}
<a href="/admin">Admin Panel</a>
{% endif %}
Turn on caching:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
See https://docs.djangoproject.com/en/1.10/topics/cache/#memcached for more details on setting
up memcached.
Note**
Using django.core.cache.backends.locmem.LocMemCache is not safe for production unless you are
only running a single process (and odds are you aren’t).
See https://docs.djangoproject.com/en/1.10/topics/cache/#local-memory-caching for more details.


Features

Adds groups_cache property to request object
Provides templatetag has_group
Invalidates cache on User or Group model changes and on m2m groups ManyToManyField changes
Fully tested with high coverage



Running Tests
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox


Credits
Tools used in rendering this package:

Cookiecutter
cookiecutter-djangopackage



History

0.5.5 (2017-01-13)

Bug fix for templatetag has_group
Tests added for 100% coverage of templatetag folder



0.5.5 (2017-01-12)

Omit urls.py from coverage report (not used but needed for django package)
Omit apps.py from coverage report (default apps file)



0.5.4 (2017-01-12)

Removal of py32/django1.8 support from Travis CI build



0.5.3 (2017-01-12)

Fixing .travis.yml file and CI builds



0.5.2 (2017-01-12)

Typo in README.rst



0.5.1 (2017-01-12)

Add codecov.io support
Documentation updates



0.5.0 (2017-01-12)

Add requirements.txt to tox.ini so tests can run
Fix broken compatibility with Django 1.8/1.9 due to backwards incompatible changes in 1.9/1.10 code



0.4.0 (2017-01-12)

Add test suite that generates 100% coverage
Fixed a bug found by test suite with cache not invalidating on the groups ManyToManyField changing



0.3.1 (2017-01-11)

Documentation updates



0.3.0 (2017-01-11)

First stable and working release on PyPI.



0.1.0 (2017-01-11)

First release on PyPI.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.