mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
It is now possible to delete a SuperAdmin permission.
Postfix Autoreply plugin is not a real plugin... I've begun the conversion but it will cause a modification into the SQL schema and I don't know how to handle migrations yet...
This commit is contained in:
+18
-7
@@ -9,7 +9,7 @@ from django.core.urlresolvers import reverse
|
||||
from django.contrib.auth.decorators \
|
||||
import login_required, permission_required, user_passes_test
|
||||
from django.contrib.auth.models import User, Group
|
||||
from mailng import admin
|
||||
from mailng import admin, main
|
||||
from mailng.admin.models import Domain, Mailbox, Alias
|
||||
from forms import MailboxForm, DomainForm, AliasForm, PermissionForm
|
||||
from mailng.lib.authbackends import crypt_password
|
||||
@@ -26,8 +26,11 @@ def is_superuser(user):
|
||||
@login_required
|
||||
def domains(request):
|
||||
if not request.user.has_perm("admin.view_domains"):
|
||||
mb = Mailbox.objects.get(user=request.user.id)
|
||||
return mailboxes(request, dom_id=mb.domain.id)
|
||||
if request.user.has_perm("admin.view_mailboxes"):
|
||||
mb = Mailbox.objects.get(user=request.user.id)
|
||||
return mailboxes(request, dom_id=mb.domain.id)
|
||||
|
||||
return HttpResponseRedirect(reverse(main.views.index))
|
||||
|
||||
domains = Domain.objects.all()
|
||||
counters = {}
|
||||
@@ -362,8 +365,16 @@ def addpermission(request):
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.is_superuser)
|
||||
def deletepermission(request, mbox_id, group):
|
||||
mbox = Mailbox.objects.get(pk=mbox_id)
|
||||
grp = Group.objects.get(name=group)
|
||||
mbox.user.groups.remove(grp)
|
||||
mbox.user.save()
|
||||
if group == "SuperAdmins":
|
||||
user = User.objects.get(pk=mbox_id)
|
||||
if user.username == "admin":
|
||||
request.user.message_set.create(message=_("admin is intouchable!!"))
|
||||
else:
|
||||
user.is_superuser = False
|
||||
user.save()
|
||||
else:
|
||||
mbox = Mailbox.objects.get(pk=mbox_id)
|
||||
grp = Group.objects.get(name=group)
|
||||
mbox.user.groups.remove(grp)
|
||||
mbox.user.save()
|
||||
return HttpResponseRedirect(reverse(admin.views.settings))
|
||||
|
||||
@@ -42,6 +42,8 @@ def urls():
|
||||
include('mailng.extensions.amavis_quarantine.urls'))
|
||||
|
||||
def menu(**kwargs):
|
||||
if kwargs["target"] != "user_menu_box":
|
||||
return []
|
||||
return [
|
||||
{"name" : _("Quarantine"),
|
||||
"url" : reverse(index),
|
||||
|
||||
@@ -7,7 +7,10 @@ This module provides a way to integrate MailNG auto-reply
|
||||
functionality into Postfix.
|
||||
|
||||
"""
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from mailng.lib import events
|
||||
from mailng import main
|
||||
from models import Transport, Alias
|
||||
|
||||
def init():
|
||||
@@ -17,9 +20,21 @@ def init():
|
||||
events.register("DeleteMailbox", onDeleteMailbox)
|
||||
events.register("ModifyMailbox", onModifyMailbox)
|
||||
|
||||
events.register("UserMenuDisplay", menu)
|
||||
|
||||
def urls():
|
||||
return ()
|
||||
|
||||
def menu(**kwargs):
|
||||
if kwargs["target"] != "user_menu_bar":
|
||||
return []
|
||||
return [
|
||||
{"name" : "autoreply",
|
||||
"url" : reverse(main.views.autoreply),
|
||||
"img" : "/static/pics/auto-reply.png",
|
||||
"label" : _("Auto-reply message")}
|
||||
]
|
||||
|
||||
def onCreateDomain(**kwargs):
|
||||
dom = kwargs["dom"]
|
||||
transport = Transport()
|
||||
|
||||
@@ -10,10 +10,6 @@ register = template.Library()
|
||||
@register.simple_tag
|
||||
def menu(selection, perms):
|
||||
entries = [
|
||||
{"name" : "autoreply",
|
||||
"url" : reverse(main.views.autoreply),
|
||||
"img" : "/static/pics/auto-reply.png",
|
||||
"label" : _("Auto-reply message")},
|
||||
{"name" : "changepwd",
|
||||
"url" : reverse(main.views.changepassword),
|
||||
"img" : "/static/pics/edit.png",
|
||||
@@ -21,6 +17,7 @@ def menu(selection, perms):
|
||||
"class" : "boxed",
|
||||
"rel" : "{handler:'iframe',size:{x:350,y:220}}"}
|
||||
]
|
||||
entries += events.raiseQueryEvent("UserMenuDisplay", target="user_menu_bar")
|
||||
|
||||
return render_to_string('main/menu.html',
|
||||
{"selection" : selection, "entries" : entries,
|
||||
@@ -28,6 +25,6 @@ def menu(selection, perms):
|
||||
|
||||
@register.simple_tag
|
||||
def loadextmenu(perms):
|
||||
menu = events.raiseQueryEvent("UserMenuDisplay")
|
||||
menu = events.raiseQueryEvent("UserMenuDisplay", target="user_menu_box")
|
||||
return render_to_string('main/menulist.html',
|
||||
{"menu" : menu, "perms" : perms})
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
{% for admin in admins %}
|
||||
<tr class="{% cycle 'odd' 'even' %}">
|
||||
<td>
|
||||
<a href=""><img src="/static/pics/remove.png" border="0" title="{% trans 'Remove permission' %}" /></a>
|
||||
{% url admin.views.deletepermission admin.id "SuperAdmins" as del_url %}
|
||||
<a href="{{ del_url }}"><img src="/static/pics/remove.png" border="0" title="{% trans 'Remove permission' %}" /></a>
|
||||
</td>
|
||||
<td>{{ admin.first_name }} {{ admin.last_name }}</td>
|
||||
<td>{{ admin.username }}</td>
|
||||
|
||||
Reference in New Issue
Block a user