diff --git a/.travis.yml b/.travis.yml index 318473a6f..6e55a8fc1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ python: - "2.7" env: - - DJANGO=1.6 + - DJANGO=1.7 install: - pip install -q Django==$DJANGO --use-mirrors diff --git a/modoboa/core/fixtures/initial_users.json b/modoboa/core/fixtures/initial_users.json deleted file mode 100644 index 0986e6fb0..000000000 --- a/modoboa/core/fixtures/initial_users.json +++ /dev/null @@ -1 +0,0 @@ -[{"pk": 1, "model": "core.user", "fields": {"username": "admin", "first_name": "", "last_name": "", "is_active": true, "is_superuser": true, "is_staff": false, "last_login": "2012-01-26T15:19:26+01:00", "groups": [], "user_permissions": [], "password": "{CRYPT}dTTsGDkA5ZHKg", "email": "", "date_joined": "2012-01-26T15:19:26+01:00"}},{"pk": 1, "model": "core.objectaccess", "fields": {"is_owner": true, "user": 1, "content_type": ["core", "user"], "object_id": 1}}] \ No newline at end of file diff --git a/modoboa/core/migrations/0002_load_initial_data.py b/modoboa/core/migrations/0002_load_initial_data.py new file mode 100644 index 000000000..67be945f2 --- /dev/null +++ b/modoboa/core/migrations/0002_load_initial_data.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +def load_initial_data(apps, schema_editor): + """Load initial data.""" + User = apps.get_model("core", "User") + user = User(username="admin", is_superuser=True) + user.set_password("password") + user.save() + + ObjectAccess = apps.get_model("core", "ObjectAccess") + ObjectAccess.objects.create(user=user, content_object=user, is_owner=True) + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0001_initial'), + ] + + operations = [ + migrations.RunPython(load_initial_data) + ] diff --git a/modoboa/core/migrations/0002_delete_extension.py b/modoboa/core/migrations/0003_delete_extension.py similarity index 86% rename from modoboa/core/migrations/0002_delete_extension.py rename to modoboa/core/migrations/0003_delete_extension.py index 073ef44bb..3b4dc989e 100644 --- a/modoboa/core/migrations/0002_delete_extension.py +++ b/modoboa/core/migrations/0003_delete_extension.py @@ -7,7 +7,7 @@ from django.db import models, migrations class Migration(migrations.Migration): dependencies = [ - ('core', '0001_initial'), + ('core', '0002_load_initial_data'), ] operations = [ diff --git a/modoboa/extensions/admin/fixtures/initial_data.json b/modoboa/extensions/admin/fixtures/initial_data.json deleted file mode 100644 index 9ad462996..000000000 --- a/modoboa/extensions/admin/fixtures/initial_data.json +++ /dev/null @@ -1 +0,0 @@ -[{"pk": 1, "model": "auth.group", "fields": {"name": "DomainAdmins", "permissions": [["add_user", "core", "user"], ["change_user", "core", "user"], ["delete_user", "core", "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": []}}] diff --git a/modoboa/extensions/admin/migrations/0002_load_initial_data.py b/modoboa/extensions/admin/migrations/0002_load_initial_data.py new file mode 100644 index 000000000..1f08a43c9 --- /dev/null +++ b/modoboa/extensions/admin/migrations/0002_load_initial_data.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + +from modoboa.lib.migration_tools import add_permissions_to_group + +PERMISSIONS = [ + ["core", "user", "add_user"], + ["core", "user", "change_user"], + ["core", "user", "delete_user"], + ["admin", "domain", "view_domain"], + ["admin", "mailbox", "add_mailbox"], + ["admin", "mailbox", "change_mailbox"], + ["admin", "mailbox", "delete_mailbox"], + ["admin", "alias", "add_alias"], + ["admin", "alias", "change_alias"], + ["admin", "alias", "delete_alias"], + ["admin", "mailbox", "view_mailboxes"], + ["admin", "alias", "view_aliases"], + ["admin", "domainalias", "view_domainaliases"], + ["admin", "domainalias", "add_domainalias"], + ["admin", "domainalias", "change_domainalias"], + ["admin", "domainalias", "delete_domainalias"] +] + +def load_initial_data(apps, schema_editor): + """Load initial data.""" + Group = apps.get_model("auth", "Group") + dadmins = Group.objects.create(name="DomainAdmins") + add_permissions_to_group(apps, dadmins, PERMISSIONS) + Group.objects.create(name="SimpleUsers") + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin', '0001_initial'), + ] + + operations = [ + migrations.RunPython(load_initial_data) + ] diff --git a/modoboa/lib/migration_tools.py b/modoboa/lib/migration_tools.py index 4509379d6..307acad6f 100644 --- a/modoboa/lib/migration_tools.py +++ b/modoboa/lib/migration_tools.py @@ -1,16 +1,18 @@ """Additional functions available for migration scripts.""" -def add_permissions_to_group(apps, groupname, permissions): +def add_permissions_to_group(apps, group, permissions): """Add the specified permissions to a django group.""" - Group = apps.get_model("auth", "Group") Permission = apps.get_model("auth", "Permission") ContentType = apps.get_model("contenttypes", "ContentType") - grp = Group.objects.get(name=groupname) + if isinstance(group, basestring): + Group = apps.get_model("auth", "Group") + group = Group.objects.get(name=group) + for appname, modelname, permname in permissions: ct = ContentType.objects.get_by_natural_key( appname, modelname) - grp.permissions.add( + group.permissions.add( Permission.objects.get(content_type=ct, codename=permname) )