Skip to main content
https://badge.fury.io/py/django-groups-cache.svg https://travis-ci.org/audiolion/django-groups-cache.svg?branch=master https://codecov.io/gh/audiolion/django-groups-cache/branch/master/graph/badge.svg

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:

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.

Release files for django-groups-cache 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-groups-cache 1.0.2
File Size Uploaded
django-groups-cache-1.0.2.tar.gz 8.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-groups-cache 1.0.2
File Interpreter ABI Platform
django_groups_cache-1.0.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 18.5 kB

Release files / django-groups-cache-1.0.2.tar.gz

Download URL django-groups-cache-1.0.2.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a5b8621c2e18f5067cdbb289f9a35616539a351794cc27dbc8b6bf8dd34ac856
BLAKE2b-256 checksum
How to use checksums
c9262c6fc2d80de0c1a84591e470edab2bc8d739bdfc68cc2d24d375ae195150
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / django_groups_cache-1.0.2-py2.py3-none-any.whl

Download URL django_groups_cache-1.0.2-py2.py3-none-any.whl
Size 10.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
349e03fc1371f7292f70682792d8d0d8f8731765e2dd8ffdfb4888d161238cec
BLAKE2b-256 checksum
How to use checksums
c1d5c72d95a2b649357c1f779a23dc6872494112aacb89fbafaf9d71cb3a3873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.0

1 release file

0.3.1

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page