diff --git a/modoboa/admin/callbacks.py b/modoboa/admin/callbacks.py index 163bf49aa..f65df4147 100644 --- a/modoboa/admin/callbacks.py +++ b/modoboa/admin/callbacks.py @@ -85,7 +85,7 @@ def grant_access_to_all_objects(user, role): def export_admin_domains(admin): result = [admin.mailbox.quota] \ if hasattr(admin, "mailbox") else [""] - if admin.group != "DomainAdmins": + if admin.role != "DomainAdmins": return result return result + [dom.name for dom in Domain.objects.get_for_admin(admin)] @@ -139,7 +139,7 @@ def import_account_mailbox(user, account, row): quota, override_rules=user.has_perm("admin.change_domain") ) mb.save(creator=user) - if account.group == "DomainAdmins": + if account.role == "DomainAdmins": for domname in row[2:]: try: dom = Domain.objects.get(name=domname.strip()) @@ -157,7 +157,7 @@ def account_auto_created(user): if parameters.get_admin("AUTO_CREATE_DOMAIN_AND_MAILBOX") == "no": return localpart, domname = split_mailbox(user.username) - if user.group != 'SimpleUsers' and domname is None: + if user.role != 'SimpleUsers' and domname is None: return sadmins = User.objects.filter(is_superuser=True) try: diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index cbcbbf587..e732d95aa 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -38,7 +38,7 @@ class AccountFormGeneral(forms.ModelForm): ) role = forms.ChoiceField( label=ugettext_lazy("Role"), - choices=[('', ugettext_lazy("Choose"))], + choices=[("", ugettext_lazy("Choose"))], help_text=ugettext_lazy("What level of permission this user will have") ) password1 = PasswordField( @@ -69,17 +69,17 @@ class AccountFormGeneral(forms.ModelForm): ) self.fields["is_active"].label = _("Enabled") self.user = user - if user.group == "DomainAdmins": + if user.role in ["Resellers", "DomainAdmins"]: self.fields["role"] = forms.CharField( label="", widget=forms.HiddenInput(attrs={"class": "form-control"}), required=False ) else: - self.fields["role"].choices = [('', ugettext_lazy("Choose"))] - self.fields["role"].choices += \ - get_account_roles(user, kwargs['instance']) \ - if 'instance' in kwargs else get_account_roles(user) + self.fields["role"].choices += ( + get_account_roles(user, kwargs["instance"]) + if "instance" in kwargs else get_account_roles(user) + ) if not user.is_superuser: del self.fields["master_user"] @@ -91,7 +91,7 @@ class AccountFormGeneral(forms.ModelForm): not account.mailbox.domain.enabled ) if domain_disabled: - self.fields["is_active"].widget.attrs['disabled'] = "disabled" + self.fields["is_active"].widget.attrs["disabled"] = "disabled" if args: if args[0].get("password1", "") == "" \ and args[0].get("password2", "") == "": @@ -99,7 +99,7 @@ class AccountFormGeneral(forms.ModelForm): self.fields["password2"].required = False if domain_disabled: del self.fields["is_active"] - self.fields["role"].initial = account.group + self.fields["role"].initial = account.role if not account.is_local \ and parameters.get_admin( "LDAP_AUTH_METHOD", app="core") == "directbind": @@ -118,10 +118,12 @@ class AccountFormGeneral(forms.ModelForm): return not self.instance.mailbox.domain.enabled def clean_role(self): - if self.user.group == "DomainAdmins": + if self.user.role == "DomainAdmins": if self.instance == self.user: return "DomainAdmins" return "SimpleUsers" + elif self.user.role == "Resellers" and self.instance == self.user: + return "Resellers" return self.cleaned_data["role"] def clean_username(self): @@ -459,10 +461,12 @@ class AccountForm(TabForms): }) def check_perms(self, account): - if account.is_superuser: - return False - return self.user.has_perm("admin.add_domain") \ - and account.has_perm("core.add_user") + """Check if perms form must displayed or not.""" + return ( + self.user.is_superuser and + not account.is_superuser and + account.has_perm("core.add_user") + ) def _before_is_valid(self, form): if form["id"] == "general": @@ -480,9 +484,8 @@ class AccountForm(TabForms): return True def is_valid(self): - """Two steps validation. - """ - self.instances["general"].oldgroup = self.instances["general"].group + """Two steps validation.""" + self.instances["general"].oldgroup = self.instances["general"].role if super(AccountForm, self).is_valid(mandatory_only=True): self.account = self.forms[0]["instance"].save() return super(AccountForm, self).is_valid(optional_only=True) diff --git a/modoboa/admin/forms/domain.py b/modoboa/admin/forms/domain.py index c74b45c3d..f124158a5 100644 --- a/modoboa/admin/forms/domain.py +++ b/modoboa/admin/forms/domain.py @@ -8,7 +8,7 @@ from django.utils.translation import ugettext as _, ugettext_lazy from modoboa.core.models import User from modoboa.core import signals as core_signals from modoboa.lib import events, parameters -from modoboa.lib.exceptions import ModoboaException, Conflict +from modoboa.lib.exceptions import Conflict from modoboa.lib.fields import DomainNameField from modoboa.lib.form_utils import ( YesNoField, WizardForm, WizardStep, DynamicForm, TabForms @@ -282,7 +282,7 @@ class DomainForm(TabForms): domadmins = [u for u in self.domain.admins if self.request.user.can_access(u) and not u.is_superuser] if not self.request.user.is_superuser: - domadmins = [u for u in domadmins if u.group == "DomainAdmins"] + domadmins = [u for u in domadmins if u.role == "DomainAdmins"] context.update({ "title": self.domain.name, "action": reverse( diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py index 3c44842cb..6ed568c83 100644 --- a/modoboa/admin/models/mailbox.py +++ b/modoboa/admin/models/mailbox.py @@ -283,7 +283,7 @@ class Mailbox(AdminObject): newaddress = None if values["email"] != self.full_address: newaddress = values["email"] - elif (self.user.group == "SimpleUsers" and + elif (self.user.role == "SimpleUsers" and self.user.username != self.full_address): newaddress = self.user.username if newaddress is not None: diff --git a/modoboa/admin/serializers.py b/modoboa/admin/serializers.py index 47de388b0..8a842f5ae 100644 --- a/modoboa/admin/serializers.py +++ b/modoboa/admin/serializers.py @@ -102,7 +102,7 @@ class AccountSerializer(serializers.ModelSerializer): def get_role(self, account): """Return role.""" - return account.group + return account.role def get_domains(self, account): """Return domains administered by this account.""" diff --git a/modoboa/admin/templates/admin/domain_statistics.html b/modoboa/admin/templates/admin/domain_statistics.html index 1123c93bf..08eceb08c 100644 --- a/modoboa/admin/templates/admin/domain_statistics.html +++ b/modoboa/admin/templates/admin/domain_statistics.html @@ -16,7 +16,7 @@