diff --git a/admin/permissions.py b/admin/permissions.py index 34b74311f..31b50317d 100644 --- a/admin/permissions.py +++ b/admin/permissions.py @@ -69,13 +69,7 @@ class SuperAdminsPerms(Permissions): def get(self, request): admins = User.objects.filter(is_superuser=True) - admins_list = [] - for admin in admins: - admins_list += [{"id" : admin.id, "user_name" : admin.username, - "full_name" : "%s %s" % (admin.first_name, admin.last_name), - "date_joined" : admin.date_joined, - "enabled" : admin.is_active}] - return SuperAdminsTable(request, admins_list).render() + return SuperAdminsTable(request, admins).render() class DomainAdminsPerms(Permissions): diff --git a/admin/tables.py b/admin/tables.py index 5fd152771..4e6f7f182 100644 --- a/admin/tables.py +++ b/admin/tables.py @@ -135,13 +135,22 @@ class ExtensionsTable(tables.Table): class SuperAdminsTable(tables.Table): idkey = "id" - selection = tables.SelectionColumn("selection", width="4%", first=True) - user_name = tables.Column("user_name", label=ugettext_noop("User name")) - full_name = tables.Column("full_name", label=ugettext_noop("Full name")) + selection = tables.SelectionColumn("selection", width="4%") + username = tables.Column("username", label=ugettext_noop("User name")) + first_name = tables.Column("first_name", label=ugettext_noop("First name")) + last_name = tables.Column("last_name", label=ugettext_noop("Last name")) date_joined = tables.Column("date_joined", label=ugettext_noop("Defined")) enabled = tables.Column("enabled", label=gender("Enabled", "m"), width="10%") - cols_order = ["selection", "user_name", "full_name", "date_joined", "enabled"] + cols_order = ["selection", "username", "first_name", "last_name", + "date_joined", "enabled"] + + def __init__(self, request, users): + super(SuperAdminsTable, self).__init__(request) + self.populate(self._rows_from_model(users)) + + def parse_enabled(self, value): + return _("yes") if value else _("no") class DomainAdminsTable(tables.Table): idkey = "id" diff --git a/admin/views.py b/admin/views.py index e70b52516..925d0e681 100644 --- a/admin/views.py +++ b/admin/views.py @@ -513,9 +513,9 @@ def add_permission(request): messages.error(request, _("Permission denied!"), fail_silently=True) else: + events.raiseEvent("CanCreate", request.user, role) pobj = pclass() if request.method == "GET": - events.raiseEvent("CanCreate", request.user, role) return pobj.get_add_form(request) status, data = pobj.add(request) if not status: @@ -530,6 +530,7 @@ def add_permission(request): @login_required @permission_required("auth.view_permissions") def create_domain_admin(request, tplname="admin/create_domain_admin.html"): + events.raiseEvent("CanCreate", request.user, "domain_admins") if request.method == "POST": form = UserWithPasswordForm(request.POST) if form.is_valid(): diff --git a/extensions/limits/forms.py b/extensions/limits/forms.py index 50554d91c..55814b710 100644 --- a/extensions/limits/forms.py +++ b/extensions/limits/forms.py @@ -62,6 +62,8 @@ class ResellerPoolForm(forms.Form): def load_from_user(self, user): for l in reseller_limits_tpl: + if not self.fields.has_key(l): + continue self.fields[l].initial = user.limitspool.getmaxvalue(l) def allocate_from_pool(self, limit, pool): @@ -85,6 +87,8 @@ class ResellerPoolForm(forms.Form): def save_new_limits(self, pool): owner = get_object_owner(pool.user) for lname in reseller_limits_tpl: + if not self.cleaned_data.has_key(lname): + continue l = pool.limit_set.get(name=lname) if not owner.is_superuser: self.allocate_from_pool(l, owner.limitspool) diff --git a/extensions/limits/urls.py b/extensions/limits/urls.py index 17f89d920..8f611080c 100644 --- a/extensions/limits/urls.py +++ b/extensions/limits/urls.py @@ -3,5 +3,5 @@ from django.conf.urls.defaults import * urlpatterns = patterns( 'modoboa.extensions.limits.views', (r'reseller/edit/(?P\d+)/$', 'edit_reseller'), - (r'pool/edit/(?P\d+)/$', 'edit_limits_pool'), + (r'pool/edit/(?P\d+)/$', 'edit_limits_pool'), ) diff --git a/extensions/limits/views.py b/extensions/limits/views.py index 375e819f2..638100781 100644 --- a/extensions/limits/views.py +++ b/extensions/limits/views.py @@ -41,19 +41,23 @@ def edit_reseller(request, resid, tplname="admin/add_permission.html"): @login_required @permission_required("auth.view_permissions") @transaction.commit_on_success -def edit_limits_pool(request, resid, tplname="limits/pool.html"): - reseller = User.objects.get(pk=resid) - ctx = dict(reseller=reseller) +def edit_limits_pool(request, uid, tplname="limits/pool.html"): + user = User.objects.get(pk=uid) + ctx = dict(reseller=user) if request.method == "POST": form = ResellerPoolForm(request.POST) + if not user.belongs_to_group('Resellers'): + del form.fields["domain_admins_limit"] if form.is_valid(): - form.save_new_limits(reseller.limitspool) + form.save_new_limits(user.limitspool) messages.info(request, _("Pool updated"), fail_silently=True) return ajax_response(request, url=reverse("modoboa.admin.views.permissions")) ctx.update(form=form) return ajax_response(request, status="ko", template=tplname, **ctx) form = ResellerPoolForm() - form.load_from_user(reseller) + if not user.belongs_to_group('Resellers'): + del form.fields["domain_admins_limit"] + form.load_from_user(user) ctx.update(form=form) return _render(request, tplname, ctx)