mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
64 lines
2.6 KiB
Python
64 lines
2.6 KiB
Python
# coding: utf-8
|
|
from django.utils.translation import ugettext as _
|
|
from django.db import IntegrityError, transaction
|
|
from django.contrib.auth.models import *
|
|
from django.contrib import messages
|
|
from django.contrib.auth.decorators \
|
|
import login_required, user_passes_test, permission_required
|
|
from django.core.urlresolvers import reverse
|
|
from forms import *
|
|
from modoboa.lib.webutils import _render, ajax_response
|
|
|
|
@login_required
|
|
@user_passes_test(lambda u: u.is_superuser)
|
|
def edit_reseller(request, resid, tplname="admin/add_permission.html"):
|
|
reseller = User.objects.get(pk=resid)
|
|
ctx = dict(title=_("Edit reseller"), submit_label=_("Update"),
|
|
addurl=reverse(edit_reseller, args=[resid]))
|
|
if request.method == "POST":
|
|
if request.POST.get("password1", "") != "" and \
|
|
request.POST.get("password2", "") != "":
|
|
form = ResellerWithPasswordForm(request.POST, instance=reseller)
|
|
else:
|
|
form = ResellerForm(request.POST, instance=reseller)
|
|
if form.is_valid():
|
|
try:
|
|
form.save()
|
|
except IntegrityError:
|
|
error = _("User with this Username already exists")
|
|
else:
|
|
messages.info(request, _("Reseller updated"), fail_silently=True)
|
|
return ajax_response(request,
|
|
url=reverse("modoboa.admin.views.permissions"))
|
|
|
|
ctx.update(form=form, error=error)
|
|
return ajax_response(request, status="ko", template=tplname, **ctx)
|
|
|
|
form = ResellerWithPasswordForm(instance=reseller)
|
|
ctx.update(form=form)
|
|
return _render(request, tplname, ctx)
|
|
|
|
@login_required
|
|
@permission_required("auth.view_permissions")
|
|
@transaction.commit_on_success
|
|
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(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()
|
|
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)
|