Package: django-masquerade
``django-masquerade`` Documentation===================================Masquerade is a simple app to allow site administrators (IE, any user withis_staff = True) to browse the site as a different user.It is implemented via a middleware that looks for a specific key in the user'ssession -- the user to masquerade as. Also included are views and templatesto allow the staff user to enter a username to masquerade and turn offmasquerading as well as a template tag that provides links to these views forstaff users.Installation------------- ``pip install django-masquerade`` (or clone/fork)- Add ``"masquerade"`` to your ``INSTALLED_APPS`` setting- Include ``masquerade.urls`` from your project's root ``urls`` module- Optionally load and use the ``masquerade`` template tag library in your templates.- Add ``"masquerade.middleware.MasqueradeMiddleware"`` to your``MIDDLEWARE`` setting. (``MIDDLEWARE_CLASSES`` for django pre-1.10) Note this must come after Session andAuthentication middleware classes.Note that there is one template supplied by this app,``masquerade/mask_form.html``, which does not inherit from any other template.I recommend you simply copy this into your own template directory and edit asneeded to match your site's look and feel.Requirements------------``masquerade`` depends on django's SessionMiddleware and, obviously,``django.contrib.auth``.The unit tests depend on the mock_ library.Template Tags-------------The ``masquerade`` template tag library provides the following tags:- ``masquerade_link`` creates a link to either the "Masquerade as user" URL (ifmasquerading is not active) or the "Turn off masquerading" URL (ifmasquerading is active).- ``masquerade_status`` displays the name of the (other) user that thecurrently logged in user is masquerading as.**Note**: These template tags require that the ``request`` object be in thetemplate context, so use ``RequestContext`` to render the template and makesure the ``django.core.context_processors.request`` context processor is used.User Attributes---------------Two attributes are added to the ``request.user`` object by the masquerade middleware:- ``is_masked``. True if masquerading is in use and this user is not actually the original user.- ``original_user``. The non-masked user that initiated the masquerade. Set to Noneif no masquerading is happening.Settings--------The following settings can be set in your project's settings file.- ``MASQUERADE_REDIRECT_URL`` (default: "/"). The URL to redirect the user to aftermasquerading is activated.- ``MASQUERADE_REQUIRE_SUPERUSER`` (default: False). If set to true, only userswith both is_staff and is_superuser set to True will be allowed to use thisfeature.- ``MASQUERADE_REQUIRE_COMMON_GROUP`` (default: False). If set to true, only userswith that have at least one common Group (django auth Group) with the masqueradeduser will be allowed to masquerade as that user. If user is a superuser, thisrequirement is ignored.- ``MASQUERADE_USER_SEARCH_FIELDS`` (default: ``['username', 'email']``). Thelist of fields on the User object that will be searched in the masqueradeform.Additionally, masquerade respects the ``USERNAME_FIELD`` value of custom user classesimplementing ``AbstractBaseUser``, although you must manually add the name of your usernamefield to the ``MASQUERADE_USER_SEARCH_FIELDS`` setting as well.Signals-------``masquerade.signals`` defines two signals that can be attached to:- ``masquerade.signals.mask_on`` is sent when the user successfully masqueradesas another user. It is sent one argument, ``mask_username``, the username ofthe user being masqueraded as. The ``sender`` argument is an instance of``masquerade.forms.MaskForm``.- ``masquerade.signals.mask_off`` is sent when a masqueraded user visits the``unmask`` view. It also receives a ``mask_username`` argument. The``sender`` argument is an empty object.Testing------------masquerade ships with a test runner. To run the unit tests, simply ``python run_tests.py``... _mock: http://www.voidspace.org.uk/python/mock/