account.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. initial=False)
  22. allow_signature_links = forms.YesNoSwitch(
  23. label=_("Can put links in signature"),
  24. initial=False)
  25. allow_signature_images = forms.YesNoSwitch(
  26. label=_("Can put images in signature"),
  27. initial=False)
  28. def change_permissions_form(role):
  29. if isinstance(role, Role) and role.special_role != 'anonymous':
  30. return PermissionsForm
  31. else:
  32. return None
  33. """
  34. ACL Builder
  35. """
  36. def build_acl(acl, roles, key_name):
  37. new_acl = {
  38. 'name_changes_allowed': 0,
  39. 'name_changes_expire': 0,
  40. 'can_have_signature': False,
  41. 'allow_signature_links': False,
  42. 'allow_signature_images': False,
  43. }
  44. new_acl.update(acl)
  45. return algebra.sum_acls(
  46. new_acl, roles=roles, key=key_name,
  47. name_changes_allowed=algebra.greater,
  48. name_changes_expire=algebra.lower,
  49. can_have_signature=algebra.greater,
  50. allow_signature_links=algebra.greater,
  51. allow_signature_images=algebra.greater
  52. )