diff --git a/admin/migrations/0004_add_permissions.py b/admin/migrations/0004_add_permissions.py new file mode 100644 index 000000000..f1c0ec735 --- /dev/null +++ b/admin/migrations/0004_add_permissions.py @@ -0,0 +1,96 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import DataMigration +from django.db import models +from django.contrib.auth.models import Permission +from django.contrib.contenttypes.models import ContentType + +class Migration(DataMigration): + + def forwards(self, orm): + perm_ct = ContentType.objects.get(app_label="auth", model="permission") + view_perms = Permission(name="View permissions", codename="view_permissions", + content_type=perm_ct) + view_perms.save() + + def backwards(self, orm): + p = orm.Permission.objects.get(codename="view_permissions") + p.delete() + + + models = { + 'admin.alias': { + 'Meta': {'object_name': 'Alias'}, + 'address': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'full_address': ('django.db.models.fields.CharField', [], {'max_length': '150'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mboxes': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['admin.Mailbox']", 'symmetrical': 'False'}) + }, + 'admin.domain': { + 'Meta': {'object_name': 'Domain'}, + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'quota': ('django.db.models.fields.IntegerField', [], {}) + }, + 'admin.extension': { + 'Meta': {'object_name': 'Extension'}, + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '150'}) + }, + 'admin.mailbox': { + 'Meta': {'object_name': 'Mailbox'}, + 'address': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'domain': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['admin.Domain']"}), + 'full_address': ('django.db.models.fields.CharField', [], {'max_length': '150'}), + 'gid': ('django.db.models.fields.IntegerField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'quota': ('django.db.models.fields.IntegerField', [], {}), + 'uid': ('django.db.models.fields.IntegerField', [], {}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['admin'] diff --git a/admin/templatetags/admin_extras.py b/admin/templatetags/admin_extras.py index 9605b3464..35b9665ca 100644 --- a/admin/templatetags/admin_extras.py +++ b/admin/templatetags/admin_extras.py @@ -11,6 +11,44 @@ genders = { "Enabled" : (_("enabled_m"), _("enabled_f")) } +@register.simple_tag +def admin_menu(user): + entries = [ + {"name" : "admin", + "img" : static_url('pics/admin.png'), + "label" : _("Admin"), + "class" : "topdropdown", + "menu" : [] + } + ] + if user.has_perm("admin.view_domains"): + entries[0]["menu"] += [ + {"name" : "domains", + "url" : reverse(admin.views.domains), + "label" : _("Domains"), + "img" : static_url("pics/domains.png")} + ] + if user.has_perm("auth.view_permissions"): + entries[0]["menu"] += [ + {"name" : "permissions", + "url" : "", + "label" : _("Permissions"), + "img" : static_url("pics/permissions.png")} + ] + if user.is_superuser: + entries[0]["menu"] += [ + {"name" : "settings", + "img" : static_url("pics/settings.png"), + "label" : _("Settings"), + "url" : reverse(admin.views.settings)} + ] + + if not len(entries[0]["menu"]): + return "" + return render_to_string("common/menulist.html", + {"entries" : entries, "user" : user}) + + @register.simple_tag def domain_menu(domain_id, selection, user): entries = [ diff --git a/templates/nlayout.html b/templates/nlayout.html index a8288ba22..d3293087f 100644 --- a/templates/nlayout.html +++ b/templates/nlayout.html @@ -1,4 +1,5 @@ {% load i18n %} +{% load admin_extras %} {% load uprefs_extras %} @@ -26,28 +27,7 @@
-
-
{% trans "Domains" %}
-
-
- {% trans "Settings" %}
-
-