decorators.py 1.9 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.users.bans import get_request_ip_ban
  5. def deny_authenticated(f):
  6. def decorator(request, *args, **kwargs):
  7. if request.user.is_authenticated():
  8. raise PermissionDenied(
  9. _("This action is not available to signed in users."))
  10. else:
  11. return f(request, *args, **kwargs)
  12. return decorator
  13. def deny_guests(f):
  14. def decorator(request, *args, **kwargs):
  15. if request.user.is_anonymous():
  16. raise PermissionDenied(
  17. _("This action is not available to guests."))
  18. else:
  19. return f(request, *args, **kwargs)
  20. return decorator
  21. def deny_banned_ips(f):
  22. def decorator(request, *args, **kwargs):
  23. ban = get_request_ip_ban(request)
  24. if ban:
  25. raise PermissionDenied(
  26. _("Your IP address is banned from performing this action."),
  27. {'ban': ban.get_serialized_message()})
  28. else:
  29. return f(request, *args, **kwargs)
  30. return decorator
  31. def deflect_authenticated(f):
  32. def decorator(request, *args, **kwargs):
  33. if request.user.is_authenticated():
  34. return redirect('misago:index')
  35. else:
  36. return f(request, *args, **kwargs)
  37. return decorator
  38. def deflect_guests(f):
  39. def decorator(request, *args, **kwargs):
  40. if request.user.is_anonymous():
  41. return redirect('misago:index')
  42. else:
  43. return f(request, *args, **kwargs)
  44. return decorator
  45. def deflect_banned_ips(f):
  46. def decorator(request, *args, **kwargs):
  47. ban = get_request_ip_ban(request)
  48. if ban:
  49. return redirect('misago:index')
  50. else:
  51. return f(request, *args, **kwargs)
  52. return decorator