From e2f06c635eceeee174de72b46b33ef497662715e Mon Sep 17 00:00:00 2001 From: j Date: Fri, 29 Sep 2017 12:05:33 +0200 Subject: [PATCH] django-requestuser --- .gitignore | 10 ++++++++++ README.md | 18 ++++++++++++++++++ requestuser/__init__.py | 3 +++ requestuser/requestuser.py | 34 +++++++++++++++++++++++++++++++++ setup.py | 39 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 requestuser/__init__.py create mode 100644 requestuser/requestuser.py create mode 100755 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c79d23 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +*.py? +*.sw? +*~ +.coverage +.tox +/*.egg-info +/MANIFEST +build +dist +__pycache__ diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4138ff --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# django-requestuser + +Usage: + +add requestuser.RequestUserMiddleware to your middleware + + MIDDLEWARE_CLASSES = [ + ... + 'requestuser.RequestUserMiddleware' + ] + + +now you can get current user via: + + from requestuser import get_request_user + + user = get_request_user() + diff --git a/requestuser/__init__.py b/requestuser/__init__.py new file mode 100644 index 0000000..ae1e04a --- /dev/null +++ b/requestuser/__init__.py @@ -0,0 +1,3 @@ +__version__ = '0.1' + +from .requestuser import get_request_user, RequestUserMiddleware diff --git a/requestuser/requestuser.py b/requestuser/requestuser.py new file mode 100644 index 0000000..3022979 --- /dev/null +++ b/requestuser/requestuser.py @@ -0,0 +1,34 @@ +import threading +from django.utils.deprecation import MiddlewareMixin + + +_active = threading.local() + + +def activate(user): + if user.is_anonymous(): + _active.user = None + else: + _active.user = user.pk + + +def get_request_user(): + from django.contrib.auth import get_user_model + from django.contrib.auth.models import AnonymousUser + if not hasattr(_active, 'user') or _active.user is None: + user = AnonymousUser() + else: + User = get_user_model() + user = User.objects.get(pk=_active.user) + return user + + +class RequestUserMiddleware(MiddlewareMixin): + + def process_request(self, request): + activate(request.user) + + ''' + def process_response(self, request, response): + return response + ''' diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..8766d57 --- /dev/null +++ b/setup.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +from setuptools import find_packages, setup + +setup( + name='django-requestuser', + version=__import__('requestuser').__version__, + description='Make current request.user available to templates', + author='j', + author_email='j@mailb.org', + url='https://r-w-x.org/django-requestuser.git', + license='BSD License', + platforms=['OS Independent'], + packages=find_packages( + exclude=['tests', 'testapp'] + ), + include_package_data=True, + install_requires=[ + # 'Django>=1.9', commented out to make `pip install -U` easier + ], + dependency_links=[ + ], + extras_require={ + }, + classifiers=[ + 'Development Status :: 4 - Beta', + 'Environment :: Web Environment', + 'Framework :: Django', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Topic :: Software Development', + ], + zip_safe=False, +)