1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from django import forms
- from django.utils.translation import gettext_lazy as _
- from misago.acl import algebra
- from misago.acl.models import Role
- from misago.admin.forms import YesNoSwitch
- 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 = YesNoSwitch(label=_("Can have signature"))
- allow_signature_links = YesNoSwitch(label=_("Can put links in signature"))
- allow_signature_images = YesNoSwitch(label=_("Can put images in signature"))
- allow_signature_blocks = 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
- 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
- )
|