django-cuser
django-cuser copied to clipboard
Middleware to make authentication data easily available to all parts of a django project
======================================================= django-cuser - Take care of current user in silent way.
.. image:: https://travis-ci.org/Alir3z4/django-cuser.png :alt: travis-cli tests status for django-cuser :target: https://travis-ci.org/Alir3z4/django-cuser
.. image:: http://badge.kloud51.com/pypi/w/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Wheel
.. image:: http://badge.kloud51.com/pypi/s/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Status
.. image:: http://badge.kloud51.com/pypi/l/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI License
.. image:: http://badge.kloud51.com/pypi/f/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Format
.. image:: http://badge.kloud51.com/pypi/p/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Py_versions
.. image:: http://badge.kloud51.com/pypi/d/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Downloads
.. image:: http://badge.kloud51.com/pypi/i/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Implementation
.. image:: http://badge.kloud51.com/pypi/v/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Version
.. image:: http://badge.kloud51.com/pypi/e/django-cuser.svg :target: https://pypi.python.org/pypi/django-cuser :alt: PyPI Egg
.. contents:: Table of contents
Overview
cuser will bring you Current user of your django application from anywhere in your code. I know, sounds fantastic ;)
Supported Python versions
django-cuser currently can be run on multiple python versions:
- Python 2 (2.7)
- Python 3 (3.4, 3.5)
- PyPy
Installing
django-cuser is also available at http://pypi.python.org/pypi/django-cuser So it can be install it by pip or easy_install::
$ pip install django-cuser
Or you can grab the latest version tarball::
$ python setup.py install
To enable django-cuser in your project
- Add
cusertoINSTALLED_APPSin yoursettings.py - Add
cuser.middleware.CuserMiddlewaretoMIDDLEWARE_CLASSESafter the authentication and session middleware.
Who is the current user
To set/get the user info, there is the following API::
from cuser.middleware import CuserMiddleware
Set the current user for this thread. Accepts user objects and login names::
CuserMiddleware.set_user(some_user)
Get the current user or None::
user = CuserMiddleware.get_user()
This will return some_user if there is no current user::
user = CuserMiddleware.get_user(some_user)
Forget the current user. It is always safe to call this, even if there is no current user::
CuserMiddleware.del_user()
The middleware automatically sets/deletes the current user for HTTP requests. For other uses (management commands, scripts), you will need to do this yourself.
CurrentUserField
cuser also provides a CurrentUserField, which can be used for auditing
purposes. Use it as follows:
from cuser.fields import CurrentUserField ::
class MyModel(models.Model):
....
creator = CurrentUserField(add_only=True, related_name="created_mymodels")
last_editor = CurrentUserField(related_name="last_edited_mymodels")
...
This field is a ForeignKey to the settings.AUTH_USER_MODEL model and you
can treat it as such.
Tests
django-cuser has been tested Django 1.8 and later. To run the the tests:
::
$ python manage.py test -v 2
It's also available on travis-ci:
https://travis-ci.org/Alir3z4/django-cuser/