NewsBlur/utils/user_functions.py

41 lines
No EOL
1.3 KiB
Python

from django.contrib.auth.models import User
from django.core.cache import cache
from django.utils.hashcompat import md5_constructor
from django.utils.http import urlquote
from django.http import HttpResponseForbidden
DEFAULT_USER = 'conesus'
def ajax_login_required(function=None):
def _dec(view_func):
def _view(request, *args, **kwargs):
if request.user.is_anonymous():
return HttpResponseForbidden()
else:
return view_func(request, *args, **kwargs)
_view.__name__ = view_func.__name__
_view.__dict__ = view_func.__dict__
_view.__doc__ = view_func.__doc__
return _view
if function is None:
return _dec
else:
return _dec(function)
def get_user(request):
if request.user.is_authenticated():
user = request.user
else:
user = cache.get('user:%s' % DEFAULT_USER, None)
if not user:
user = User.objects.get(username=DEFAULT_USER)
cache.set('user:%s' % user, user)
return user
def invalidate_template_cache(fragment_name, *variables):
args = md5_constructor(u':'.join([urlquote(var) for var in variables]))
cache_key = 'template.cache.%s.%s' % (fragment_name, args.hexdigest())
cache.delete(cache_key)