decorators.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from django.core.exceptions import PermissionDenied
  2. from django.shortcuts import redirect
  3. from django.utils.translation import gettext as _
  4. from misago.core.exceptions import Banned
  5. from misago.users.bans import get_request_ip_ban
  6. def deny_authenticated(f):
  7. def decorator(request, *args, **kwargs):
  8. if request.user.is_authenticated():
  9. raise PermissionDenied(
  10. _("This action is not available to signed in users."))
  11. else:
  12. return f(request, *args, **kwargs)
  13. return decorator
  14. def deny_guests(f):
  15. def decorator(request, *args, **kwargs):
  16. if request.user.is_anonymous():
  17. raise PermissionDenied(
  18. _("This action is not available to guests."))
  19. else:
  20. return f(request, *args, **kwargs)
  21. return decorator
  22. def deny_banned_ips(f):
  23. def decorator(request, *args, **kwargs):
  24. ban = get_request_ip_ban(request)
  25. if ban:
  26. raise Banned(ban)
  27. else:
  28. return f(request, *args, **kwargs)
  29. return decorator
  30. def deflect_authenticated(f):
  31. def decorator(request, *args, **kwargs):
  32. if request.user.is_authenticated():
  33. return redirect('misago:index')
  34. else:
  35. return f(request, *args, **kwargs)
  36. return decorator
  37. def deflect_guests(f):
  38. def decorator(request, *args, **kwargs):
  39. if request.user.is_anonymous():
  40. return redirect('misago:index')
  41. else:
  42. return f(request, *args, **kwargs)
  43. return decorator
  44. def deflect_banned_ips(f):
  45. def decorator(request, *args, **kwargs):
  46. ban = get_request_ip_ban(request)
  47. if ban:
  48. return redirect('misago:index')
  49. else:
  50. return f(request, *args, **kwargs)
  51. return decorator