warnings.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 can_see_member_warns(self, user, other_user):
  19. if user.pk == other_user.pk:
  20. return Ture
  21. return self.acl['can_see_other_members_warns']
  22. def build(acl, roles):
  23. acl.warnings = WarningsACL()
  24. acl.warnings.acl['can_warn_members'] = False
  25. acl.warnings.acl['can_see_other_members_warns'] = False
  26. for role in roles:
  27. try:
  28. if role['can_warn_members']:
  29. acl.warnings.acl['can_warn_members'] = True
  30. if role['can_see_other_members_warns']:
  31. acl.warnings.acl['can_see_other_members_warns'] = True
  32. except KeyError:
  33. pass