special.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from django.utils.translation import ugettext_lazy as _
  2. from django import forms
  3. from misago.acl.builder import BaseACL
  4. from misago.forms import YesNoSwitch
  5. def make_form(request, role, form):
  6. if not role.special and request.user.is_god():
  7. form.base_fields['can_use_acp'] = forms.BooleanField(widget=YesNoSwitch, initial=False, required=False)
  8. form.base_fields['can_use_mcp'] = forms.BooleanField(widget=YesNoSwitch, initial=False, required=False)
  9. form.layout.append((
  10. _("Special Access"),
  11. (('can_use_mcp', {'label': _("Can use Moderator Control Panel"), 'help_text': _("Change this permission to yes to grant access to Mod CP for users with this role.")}),),
  12. (('can_use_acp', {'label': _("Can use Admin Control Panel"), 'help_text': _("Change this permission to yes to grant admin access for users with this role.")}),),
  13. ))
  14. class SpecialACL(BaseACL):
  15. def is_admin(self):
  16. return self.acl['can_use_acp']
  17. def can_use_mcp(self):
  18. return self.acl['can_use_mcp']
  19. def build(acl, roles):
  20. acl.special = SpecialACL()
  21. acl.special.acl['can_use_acp'] = False
  22. acl.special.acl['can_use_mcp'] = False
  23. for role in roles:
  24. if 'can_use_acp' in role:
  25. acl.special.acl['can_use_acp'] = True
  26. acl.special.acl['can_use_mcp'] = True
  27. elif 'can_use_mcp' in role:
  28. acl.special.acl['can_use_mcp'] = True
  29. if acl.special.acl['can_use_acp'] or acl.special.acl['can_use_mcp']:
  30. acl.team = True