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. 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 "
  17. "that change no longer count to limit. Enter "
  18. "zero to make all changes count."),
  19. min_value=0,
  20. initial=0)
  21. can_have_signature = forms.YesNoSwitch(
  22. label=_("Can have signature"))
  23. allow_signature_links = forms.YesNoSwitch(
  24. label=_("Can put links in signature"))
  25. allow_signature_images = forms.YesNoSwitch(
  26. label=_("Can put images in signature"))
  27. allow_signature_blocks = forms.YesNoSwitch(
  28. label=_("Can use text blocks in signature"),
  29. help_text=_("Controls whether or not users can put quote, code, "
  30. "spoiler blocks and horizontal lines in signatures."))
  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. )