warnings.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from django.utils.translation import ugettext_lazy as _
  2. import floppyforms as forms
  3. from misago.acl.builder import BaseACL
  4. from misago.forms import YesNoSwitch
  5. def make_form(request, role, form):
  6. if role.special != 'guest':
  7. form.base_fields['can_warn_members'] = forms.BooleanField(label=_("Can warn members"),
  8. widget=YesNoSwitch, initial=False, required=False)
  9. form.base_fields['can_see_other_members_warns'] = forms.BooleanField(label=_("Can see other members warnings"),
  10. widget=YesNoSwitch, initial=False, required=False)
  11. form.fieldsets.append((
  12. _("Warning Members"),
  13. ('can_warn_members', 'can_see_other_members_warns',)
  14. ))
  15. class WarningsACL(BaseACL):
  16. def can_warn_members(self):
  17. return self.acl['can_warn_members']
  18. def build(acl, roles):
  19. acl.warnings = WarningsACL()
  20. acl.warnings.acl['can_warn_members'] = False
  21. acl.warnings.acl['can_see_other_members_warns'] = False
  22. for role in roles:
  23. try:
  24. if role['can_warn_members']:
  25. acl.warnings.acl['can_warn_members'] = True
  26. if role['can_see_other_members_warns']:
  27. acl.warnings.acl['can_see_other_members_warns'] = True
  28. except KeyError:
  29. pass