profiles.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from django.utils.translation import ugettext_lazy as _
  2. from misago.acl import algebra
  3. from misago.acl.models import Role
  4. from misago.core import forms
  5. """
  6. Admin Permissions Form
  7. """
  8. class PermissionsForm(forms.Form):
  9. legend = _("User profiles")
  10. can_search_users = forms.YesNoSwitch(
  11. label=_("Can search user profiles"),
  12. initial=1)
  13. can_see_users_name_history = forms.YesNoSwitch(
  14. label=_("Can see other members name history"))
  15. can_see_ban_details = forms.YesNoSwitch(
  16. label=_("Can see members bans details"),
  17. help_text=_("Allows users with this permission to see user and "
  18. "staff ban messages."))
  19. can_see_users_emails = forms.YesNoSwitch(
  20. label=_("Can see members e-mails"))
  21. can_see_users_ips = forms.YesNoSwitch(
  22. label=_("Can see members IPs"))
  23. can_see_hidden_users = forms.YesNoSwitch(
  24. label=_("Can see members that hide their presence"))
  25. def change_permissions_form(role):
  26. if isinstance(role, Role):
  27. return PermissionsForm
  28. else:
  29. return None
  30. """
  31. ACL Builder
  32. """
  33. def build_acl(acl, roles, key_name):
  34. new_acl = {
  35. 'can_search_users': 0,
  36. 'can_see_users_name_history': 0,
  37. 'can_see_ban_details': 0,
  38. 'can_see_users_emails': 0,
  39. 'can_see_users_ips': 0,
  40. 'can_see_hidden_users': 0,
  41. }
  42. new_acl.update(acl)
  43. return algebra.sum_acls(
  44. new_acl, roles=roles, key=key_name,
  45. can_see_users_name_history=algebra.greater,
  46. can_see_ban_details=algebra.greater,
  47. can_search_users=algebra.greater,
  48. can_see_users_emails=algebra.greater,
  49. can_see_users_ips=algebra.greater,
  50. can_see_hidden_users=algebra.greater
  51. )