account.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 = _("Account settings")
  10. name_changes_allowed = forms.IntegerField(
  11. label=_("Allowed username changes number"),
  12. min_value=0,
  13. initial=1)
  14. name_changes_expire = forms.IntegerField(
  15. label=_("Don't count username changes older than"),
  16. help_text=_("Number of days since name change that makes that change no longer count to limit. Enter zero to make all changes count."),
  17. min_value=0,
  18. initial=0)
  19. can_have_signature = forms.YesNoSwitch(
  20. label=_("Can have signature"))
  21. allow_signature_links = forms.YesNoSwitch(
  22. label=_("Can put links in signature"))
  23. allow_signature_images = forms.YesNoSwitch(
  24. label=_("Can put images in signature"))
  25. def change_permissions_form(role):
  26. if isinstance(role, Role) and role.special_role != 'anonymous':
  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. 'name_changes_allowed': 0,
  36. 'name_changes_expire': 0,
  37. 'can_have_signature': 0,
  38. 'allow_signature_links': 0,
  39. 'allow_signature_images': 0,
  40. }
  41. new_acl.update(acl)
  42. return algebra.sum_acls(
  43. new_acl, roles=roles, key=key_name,
  44. name_changes_allowed=algebra.greater,
  45. name_changes_expire=algebra.lower,
  46. can_have_signature=algebra.greater,
  47. allow_signature_links=algebra.greater,
  48. allow_signature_images=algebra.greater
  49. )