account.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django import forms
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.acl import algebra
  4. from misago.acl.models import Role
  5. from misago.core.forms import YesNoSwitch
  6. """
  7. Admin Permissions Form
  8. """
  9. class PermissionsForm(forms.Form):
  10. legend = _("Account settings")
  11. name_changes_allowed = forms.IntegerField(
  12. label=_("Allowed username changes number"),
  13. min_value=0,
  14. initial=1
  15. )
  16. name_changes_expire = forms.IntegerField(
  17. label=_("Don't count username changes older than"),
  18. help_text=_("Number of days since name change that makes "
  19. "that change no longer count to limit. Enter "
  20. "zero to make all changes count."),
  21. min_value=0,
  22. initial=0
  23. )
  24. can_have_signature = YesNoSwitch(label=_("Can have signature"))
  25. allow_signature_links = YesNoSwitch(label=_("Can put links in signature"))
  26. allow_signature_images = YesNoSwitch(label=_("Can put images in signature"))
  27. allow_signature_blocks = 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. )
  32. def change_permissions_form(role):
  33. if isinstance(role, Role) and role.special_role != 'anonymous':
  34. return PermissionsForm
  35. else:
  36. return None
  37. """
  38. ACL Builder
  39. """
  40. def build_acl(acl, roles, key_name):
  41. new_acl = {
  42. 'name_changes_allowed': 0,
  43. 'name_changes_expire': 0,
  44. 'can_have_signature': 0,
  45. 'allow_signature_links': 0,
  46. 'allow_signature_images': 0,
  47. 'allow_signature_blocks': 0,
  48. }
  49. new_acl.update(acl)
  50. return algebra.sum_acls(new_acl, roles=roles, key=key_name,
  51. name_changes_allowed=algebra.greater,
  52. name_changes_expire=algebra.lower_non_zero,
  53. can_have_signature=algebra.greater,
  54. allow_signature_links=algebra.greater,
  55. allow_signature_images=algebra.greater,
  56. allow_signature_blocks=algebra.greater
  57. )