More work (again) about permissions.

This commit is contained in:
Antoine Nguyen
2009-04-07 17:54:59 +02:00
parent 6cfd76809f
commit 2985d5444e
5 changed files with 53 additions and 7 deletions
+3 -2
View File
@@ -1,8 +1,8 @@
from django.conf.urls.defaults import *
urlpatterns = patterns('mailng.admin.views',
(r'^$', 'domains'),
(r'^domains/$', 'domains'),
url(r'^$', 'domains', name="index"),
url(r'^domains/$', 'domains', name="domains"),
(r'^domains/new/', 'newdomain'),
(r'^domains/(?P<dom_id>\d+)/edit/$', 'editdomain'),
(r'^domains/(?P<dom_id>\d+)/delete/$', 'deldomain'),
@@ -12,6 +12,7 @@ urlpatterns = patterns('mailng.admin.views',
(r'^domains/(?P<dom_id>\d+)/newalias/(?P<mbox_id>\d+)/$', 'newalias'),
(r'^domains/(?P<dom_id>\d+)/editalias/(?P<alias_id>\d+)/$', 'editalias'),
(r'^domains/(?P<dom_id>\d+)/$', 'mailboxes'),
(r'^domains/(?P<dom_id>\d+)/raw/$', 'mailboxes_raw'),
url(r'^domains/(?P<dom_id>\d+)/aliases/$', "aliases", name="full-aliases"),
url(r'^domains/(?P<dom_id>\d+)/aliases/(?P<mbox_id>\d+)/$', "aliases", name="mbox-aliases"),
(r'^domains/(?P<dom_id>\d+)/delalias/(?P<alias_id>\d+)/$', 'delalias'),
+24
View File
@@ -101,6 +101,13 @@ def mailboxes(request, dom_id=None):
"mailboxes" : mailboxes, "domain" : domain
})
@login_required
def mailboxes_raw(request, dom_id=None):
mailboxes = Mailbox.objects.filter(domain=dom_id)
return _render(request, 'admin/mailboxes_raw.html', {
"mailboxes" : mailboxes
})
@login_required
def newmailbox(request, dom_id=None):
domain = Domain.objects.get(pk=dom_id)
@@ -288,6 +295,23 @@ def settings(request):
@login_required
def addpermission(request):
if request.method == "POST":
form = PermissionForm(request.POST)
if form.is_valid():
mb = Mailbox.objects.get(pk=request.POST["user"])
if request.POST["role"] == "SuperAdmin":
mb.user.is_superadmin = True
else:
mb.user.groups.add("DomainAdmins")
mb.user.save()
ctx = _ctx_ok(reverse(admin.views.permissions))
return HttpResponse(simplejson.dumps(ctx),
mimetype="application/json")
ctx = _ctx_ko("admin/addpermission.html", {
"form" : form
})
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
form = PermissionForm()
return _render(request, 'admin/addpermission.html', {
"form" : form
+5 -4
View File
@@ -28,6 +28,9 @@ window.addEvent("domready", function() {
alias_submit = function(event) {
generic_submit(this, event, "aliasform", alias_submit);
}
permission_submit = function(event) {
generic_submit(this, event, "permform", permission_submit);
}
if ($("domform"))
$("domform").addEvent("submit", domain_submit);
@@ -38,9 +41,7 @@ window.addEvent("domready", function() {
if ($("aliasform"))
$("aliasform").addEvent("submit", alias_submit);
if ($("permform")) {
$("id_domain").addEvent("change", function(event) {
if ($("permform"))
$("permform").addEvent("submit", permission_submit);
});
}
});
+18 -1
View File
@@ -2,12 +2,29 @@
{% load i18n %}
{% block html_head %}
<script src="/static/js/form.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEvent("domready", function() {
$("id_domain").addEvent("change", function(event) {
domid = this.value;
if (domid == "") {
$("id_user").set("html", "");
return;
}
{% url domains as doms_url %}
new Request({url: "{{ doms_url }}" + domid + "/raw/",
method: "get", onSuccess: function(data) {
$("id_user").set("html", data);
}}).send();
});
});
</script>
{% endblock %}
{% block content %}
<div class="title"><h1>{% trans "Add permission" %}</h1></div>
{% if error %}<div class="error">{{ error }}</div>{% endif %}
{% url admin.views.add_permission as addperm_url %}
{% url admin.views.addpermission as addperm_url %}
<form action="{{ addperm_url }}" method="POST" id="permform" name="permform">
{% include "admin/genericform.html" %}
<div class="spacer"></div>
+3
View File
@@ -0,0 +1,3 @@
{% for mb in mailboxes %}
<option value='{{ mb.id }}'>{{ mb.name }}</option>
{% endfor %}