account.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. )
  15. name_changes_expire = forms.IntegerField(
  16. label=_("Don't count username changes older than"),
  17. help_text=_("Number of days since name change that makes "
  18. "that change no longer count to limit. Enter "
  19. "zero to make all changes count."),
  20. min_value=0,
  21. initial=0
  22. )
  23. can_have_signature = forms.YesNoSwitch(label=_("Can have signature"))
  24. allow_signature_links = forms.YesNoSwitch(label=_("Can put links in signature"))
  25. allow_signature_images = forms.YesNoSwitch(label=_("Can put images in signature"))
  26. allow_signature_blocks = forms.YesNoSwitch(
  27. label=_("Can use text blocks in signature"),
  28. help_text=_("Controls whether or not users can put quote, code, "
  29. "spoiler blocks and horizontal lines in signatures.")
  30. )
  31. def change_permissions_form(role):
  32. if isinstance(role, Role) and role.special_role != 'anonymous':
  33. return PermissionsForm
  34. else:
  35. return None
  36. """
  37. ACL Builder
  38. """
  39. def build_acl(acl, roles, key_name):
  40. new_acl = {
  41. 'name_changes_allowed': 0,
  42. 'name_changes_expire': 0,
  43. 'can_have_signature': 0,
  44. 'allow_signature_links': 0,
  45. 'allow_signature_images': 0,
  46. 'allow_signature_blocks': 0,
  47. }
  48. new_acl.update(acl)
  49. return algebra.sum_acls(new_acl, roles=roles, key=key_name,
  50. name_changes_allowed=algebra.greater,
  51. name_changes_expire=algebra.lower_non_zero,
  52. can_have_signature=algebra.greater,
  53. allow_signature_links=algebra.greater,
  54. allow_signature_images=algebra.greater,
  55. allow_signature_blocks=algebra.greater
  56. )