Domains admins can now access the *domains* section.

see #274
This commit is contained in:
Antoine Nguyen
2012-06-22 17:05:53 +02:00
parent 72a53c5bac
commit 356ee3db1b
6 changed files with 39 additions and 28 deletions
+1 -1
View File
@@ -1 +1 @@
[{"pk": 1, "model": "auth.group", "fields": {"name": "DomainAdmins", "permissions": [["add_user", "auth", "user"], ["change_user", "auth", "user"], ["delete_user", "auth", "user"], ["add_mailbox", "admin", "mailbox"], ["change_mailbox", "admin", "mailbox"], ["delete_mailbox", "admin", "mailbox"], ["add_alias", "admin", "alias"], ["change_alias", "admin", "alias"], ["delete_alias", "admin", "alias"], ["view_mailboxes", "admin", "mailbox"], ["view_aliases", "admin", "alias"], ["view_domaliases", "admin", "domainalias"], ["add_domainalias", "admin", "domainalias"], ["change_domainalias", "admin", "domainalias"], ["delete_domainalias", "admin", "domainalias"]]}},{"pk": 2, "model": "auth.group", "fields": {"name": "SimpleUsers", "permissions": []}},{"pk": 1, "model": "auth.user", "fields": {"username": "admin", "first_name": "", "last_name": "", "is_active": true, "is_superuser": true, "is_staff": false, "last_login": "2012-01-26 15:19:25", "groups": [], "user_permissions": [], "password": "{CRYPT}dTTsGDkA5ZHKg", "email": "", "date_joined": "2012-01-26 15:19:25"}},{"pk": 1, "model": "admin.objectaccess", "fields": {"is_owner": false, "user": 1, "content_type": ["admin", "user"], "object_id": 1}}]
[{"pk": 1, "model": "auth.group", "fields": {"name": "DomainAdmins", "permissions": [["add_user", "auth", "user"], ["change_user", "auth", "user"], ["delete_user", "auth", "user"], ["view_domains", "admin", "domain"], ["add_mailbox", "admin", "mailbox"], ["change_mailbox", "admin", "mailbox"], ["delete_mailbox", "admin", "mailbox"], ["add_alias", "admin", "alias"], ["change_alias", "admin", "alias"], ["delete_alias", "admin", "alias"], ["view_mailboxes", "admin", "mailbox"], ["view_aliases", "admin", "alias"], ["view_domaliases", "admin", "domainalias"], ["add_domainalias", "admin", "domainalias"], ["change_domainalias", "admin", "domainalias"], ["delete_domainalias", "admin", "domainalias"]]}},{"pk": 2, "model": "auth.group", "fields": {"name": "SimpleUsers", "permissions": []}},{"pk": 1, "model": "auth.user", "fields": {"username": "admin", "first_name": "", "last_name": "", "is_active": true, "is_superuser": true, "is_staff": false, "last_login": "2012-01-26 15:19:25", "groups": [], "user_permissions": [], "password": "{CRYPT}dTTsGDkA5ZHKg", "email": "", "date_joined": "2012-01-26 15:19:25"}},{"pk": 1, "model": "admin.objectaccess", "fields": {"is_owner": false, "user": 1, "content_type": ["admin", "user"], "object_id": 1}}]
+11 -11
View File
@@ -101,10 +101,13 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm):
class DomainForm(TabForms):
def __init__(self, user, *args, **kwargs):
self.user = user
self.forms = [
dict(id="general", title=_("General"), formtpl="admin/domain_general_form.html",
cls=DomainFormGeneral, mandatory=True),
]
self.forms = []
if user.has_perm("admin.change_domain"):
self.forms.append(dict(
id="general", title=_("General"), formtpl="admin/domain_general_form.html",
cls=DomainFormGeneral, mandatory=True
))
cbargs = [user]
if kwargs.has_key("instances"):
cbargs += [kwargs["instances"]["general"]]
@@ -115,14 +118,11 @@ class DomainForm(TabForms):
def save(self, user):
"""Custom save method
As forms interact with each other, it is simpler to make
custom code to save them.
As forms interact with each other, it is easier to make custom
code to save them.
"""
self.forms[0]["instance"].save(user)
if len(self.forms) <= 1:
return
for f in self.forms[1:]:
f["instance"].save()
for f in self.forms:
f["instance"].save(user)
class DlistForm(forms.ModelForm, DynamicForm):
email = forms.EmailField(
+24 -13
View File
@@ -62,6 +62,9 @@ def settings_menu(selection, user):
@register.simple_tag
def domains_menu(selection, user):
if not user.has_perm("admin.add_domain"):
return ""
entries = [
{"name" : "newdomain",
"label" : _("Add domain"),
@@ -76,6 +79,7 @@ def domains_menu(selection, user):
"modal" : True,
"modalcb" : "importform_cb"}
]
return render_to_string('common/menu.html', {
"entries" : entries,
"css" : "nav nav-list",
@@ -126,13 +130,14 @@ def identities_menu(user):
@register.simple_tag
def domain_actions(user, domid):
actions = [
{"name" : "deldomain",
"url" : reverse(admin.views.deldomain) + "?selection=%s" % domid,
"img" : "icon-trash"},
]
return render_actions(actions)
if user.has_perm("admin.delete_domain"):
actions = [
{"name" : "deldomain",
"url" : reverse(admin.views.deldomain) + "?selection=%s" % domid,
"img" : "icon-trash"},
]
return render_actions(actions)
return "---"
@register.simple_tag
def identity_actions(user, iid):
@@ -204,16 +209,22 @@ def param(app, definition):
if definition["type"] == "text":
result += "<textarea name='%s' id='%s'>%s</textarea>" \
% (name, name, value)
if definition["type"] == "list_yesno":
for v in [("yes", _("Yes")), ("no", _("No"))]:
checked = "checked" if value == v[0] else ""
result += """<label for="%(id)s" class="radio inline">
%(label)s
<input type="radio" name="%(id)s" id="%(id)s" value="%(value)s"%(checked)s />
</label>
""" % dict(id=name, value=v[0], label=v[1], checked=checked)
if definition["type"] in ["list", "list_yesno"]:
if definition["type"] == "list":
result += """
<select name='%s' id='%s'>""" % (name, name)
values = []
if definition["type"] == "list_yesno":
values = [("yes", _("Yes")), ("no", _("No"))]
else:
if definition.has_key("values"):
values = definition["values"]
if definition.has_key("values"):
values = definition["values"]
for v in values:
selected = ""
if value == v[0]:
+1 -1
View File
@@ -91,7 +91,7 @@ def newdomain(request, tplname="admin/newdomainform.html"):
return _render(request, tplname, commonctx)
@login_required
@permission_required("admin.change_domain")
@permission_required("admin.view_domains")
def editdomain(request, dom_id, tplname="admin/editdomainform.html"):
domain = Domain.objects.get(pk=dom_id)
if not request.user.can_access(domain):
+1 -1
View File
@@ -143,7 +143,7 @@ def alert(msg, typ):
return t.render(Context(dict(type=typ, msg=msg)))
@register.simple_tag
def render_link(linkdef, mdclass=None):
def render_link(linkdef, mdclass=""):
t = Template("""<a href="{{ link.url }}" name="{{ link.name }}" title="{{ link.title }}"
{% if link.modal %}data-toggle="ajaxmodal{% if link.autowidth %}-autowidth{% endif %}"{% endif %}
{% if link.modalcb %}modalcb="{{ link.modalcb }}"{% endif %}
+1 -1
View File
@@ -17,7 +17,7 @@
</ul>
</li>
{% else %}
<li {% if selection == entry.name %}class="active"{% endif %}>
<li class="{% if selection == entry.name %}active{% endif %}">
{% render_link entry %}
</li>
{% endif %}