mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
@@ -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):
|
||||
|
||||
+13
-4
@@ -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"
|
||||
|
||||
+2
-1
@@ -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():
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -3,5 +3,5 @@ from django.conf.urls.defaults import *
|
||||
urlpatterns = patterns(
|
||||
'modoboa.extensions.limits.views',
|
||||
(r'reseller/edit/(?P<resid>\d+)/$', 'edit_reseller'),
|
||||
(r'pool/edit/(?P<resid>\d+)/$', 'edit_limits_pool'),
|
||||
(r'pool/edit/(?P<uid>\d+)/$', 'edit_limits_pool'),
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user