mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Take care with proxy models and content types :p (https://code.djangoproject.com/ticket/11154) see #105
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
# coding: utf-8
|
|
|
|
from django.utils.translation import ugettext as _, ugettext_noop
|
|
from modoboa.admin.permissions import Permissions
|
|
from modoboa.admin.lib import grant_access_to_object, ungrant_access_to_object
|
|
from modoboa.admin.models import User, ObjectAccess
|
|
from modoboa.lib import events
|
|
from modoboa.lib.webutils import _render, _render_to_string
|
|
from tables import *
|
|
from forms import *
|
|
|
|
class ResellersPerms(Permissions):
|
|
title = ugettext_noop("New reseller")
|
|
role = "resellers"
|
|
add_success_msg = ugettext_noop("Reseller added")
|
|
|
|
def get_add_form(self, request):
|
|
form = ResellerWithPasswordForm()
|
|
return self._render_form(request, form)
|
|
|
|
def add(self, request):
|
|
form = ResellerWithPasswordForm(request.POST)
|
|
error = None
|
|
if form.is_valid():
|
|
r = form.save(group="Resellers")
|
|
grant_access_to_object(request.user, r, True)
|
|
return True, None
|
|
content = self._render_form(request, form, True)
|
|
return False, dict(status="ko", content=content)
|
|
|
|
def delete(self, selection):
|
|
for u in User.objects.filter(id__in=selection):
|
|
ungrant_access_to_object(u)
|
|
u.delete()
|
|
|
|
def get(self, request):
|
|
resellers = User.objects.filter(groups__name="Resellers")
|
|
return ResellersTable(request, resellers).render()
|
|
|
|
@events.observe('PermsGetTables')
|
|
def get_resellers_table(request):
|
|
if not request.user.is_superuser:
|
|
return []
|
|
return [{"id" : "resellers",
|
|
"title" : _("Resellers"),
|
|
"rel" : "350 300",
|
|
"content" : ResellersPerms().get(request)}]
|
|
|
|
@events.observe("PermsGetClass")
|
|
def get_perms_class(role):
|
|
if role != "resellers":
|
|
return []
|
|
return [ResellersPerms]
|