1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from django.utils.translation import ugettext_lazy as _
- from misago.acl import algebra
- from misago.acl.models import Role
- from misago.core import forms
- """
- Admin Permissions Form
- """
- class PermissionsForm(forms.Form):
- legend = _("Account settings")
- name_changes_allowed = forms.IntegerField(
- label=_("Allowed username changes number"),
- min_value=0,
- initial=1
- )
- name_changes_expire = forms.IntegerField(
- label=_("Don't count username changes older than"),
- help_text=_("Number of days since name change that makes "
- "that change no longer count to limit. Enter "
- "zero to make all changes count."),
- min_value=0,
- initial=0
- )
- can_have_signature = forms.YesNoSwitch(label=_("Can have signature"))
- allow_signature_links = forms.YesNoSwitch(label=_("Can put links in signature"))
- allow_signature_images = forms.YesNoSwitch(label=_("Can put images in signature"))
- allow_signature_blocks = forms.YesNoSwitch(
- label=_("Can use text blocks in signature"),
- help_text=_("Controls whether or not users can put quote, code, "
- "spoiler blocks and horizontal lines in signatures.")
- )
- def change_permissions_form(role):
- if isinstance(role, Role) and role.special_role != 'anonymous':
- return PermissionsForm
- else:
- return None
- """
- ACL Builder
- """
- def build_acl(acl, roles, key_name):
- new_acl = {
- 'name_changes_allowed': 0,
- 'name_changes_expire': 0,
- 'can_have_signature': 0,
- 'allow_signature_links': 0,
- 'allow_signature_images': 0,
- 'allow_signature_blocks': 0,
- }
- new_acl.update(acl)
- return algebra.sum_acls(new_acl, roles=roles, key=key_name,
- name_changes_allowed=algebra.greater,
- name_changes_expire=algebra.lower_non_zero,
- can_have_signature=algebra.greater,
- allow_signature_links=algebra.greater,
- allow_signature_images=algebra.greater,
- allow_signature_blocks=algebra.greater
- )
|