decorators.py 1001 B

12345678910111213141516171819202122232425262728293031323334
  1. from django.core.exceptions import PermissionDenied
  2. from django.utils.translation import gettext_lazy as _
  3. from misago.users.bans import is_ip_banned
  4. def deny_authenticated(f):
  5. def decorator(request, *args, **kwargs):
  6. if request.user.is_authenticated():
  7. raise PermissionDenied(
  8. _("This page is not available to signed in users."))
  9. else:
  10. return f(request, *args, **kwargs)
  11. return decorator
  12. def deny_guests(f):
  13. def decorator(request, *args, **kwargs):
  14. if request.user.is_anonymous():
  15. raise PermissionDenied(
  16. _("This page is not available to guests."))
  17. else:
  18. return f(request, *args, **kwargs)
  19. return decorator
  20. def deny_banned_ips(f):
  21. def decorator(request, *args, **kwargs):
  22. ban = is_ip_banned(request)
  23. if ban:
  24. raise PermissionDenied(ban.get('message'))
  25. else:
  26. return f(request, *args, **kwargs)
  27. return decorator