Changed migration coding style.
This commit is contained in:
parent
4ffe2b5a80
commit
cd3c470919
@ -1,5 +0,0 @@
|
|||||||
from ..utils.exceptions import OpenSlidesError
|
|
||||||
|
|
||||||
|
|
||||||
class UsersError(OpenSlidesError):
|
|
||||||
pass
|
|
@ -2,47 +2,53 @@
|
|||||||
# Generated by Django 1.9.7 on 2016-08-01 14:54
|
# Generated by Django 1.9.7 on 2016-08-01 14:54
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.db import migrations, models
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
def migrate_groups_and_user_permissions(apps, schema_editor):
|
def migrate_groups_and_user_permissions(apps, schema_editor):
|
||||||
"""
|
"""
|
||||||
This function migrates the database to the new groups logic:
|
This function migrates the database to the new groups logic:
|
||||||
- Rename Group 'Anonymous' (pk=1) to 'Default'
|
- Rename group 'Anonymous' (pk=1) to 'Default'
|
||||||
- Rename Group 'Registered users' (pk=2) to 'Previous group Registered'
|
- Rename group 'Registered users' (pk=2) to 'Previous group Registered'
|
||||||
- Add all users who are not in any group to this group (pk=2)
|
- Add all users who are not in any group to this group (pk=2)
|
||||||
- Add all permissions of 'Previous group Registered' to all other groups (exclude 'Default')
|
- Add all permissions of 'Previous group Registered' to all other groups (except 'Default')
|
||||||
|
|
||||||
But only do this migration if:
|
But only run this migration if:
|
||||||
- there are groups in the database
|
- there are groups in the database,
|
||||||
- the name of the first group is 'Guests'.
|
- the name of the first group is 'Guests',
|
||||||
|
- the name of the second group is 'Registered users'.
|
||||||
"""
|
"""
|
||||||
|
# Disconnect autoupdate. We do not want to trigger it here.
|
||||||
|
models.signals.post_save.disconnect(dispatch_uid='inform_changed_data_receiver')
|
||||||
|
|
||||||
User = apps.get_model('users', 'User')
|
User = apps.get_model('users', 'User')
|
||||||
Group = apps.get_model('auth', 'Group')
|
Group = apps.get_model('auth', 'Group')
|
||||||
|
|
||||||
if Group.objects.exists():
|
try:
|
||||||
try:
|
group_default = Group.objects.get(pk=1)
|
||||||
group_default = Group.objects.filter(pk=1)
|
group_registered = Group.objects.get(pk=2)
|
||||||
if group_default.get().name == 'Guests':
|
except Group.DoesNotExist:
|
||||||
group_default.update(name='Default')
|
# One of the groups does not exist. Just do nothing.
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if group_default.name == 'Guests' and group_registered.name == 'Registered users':
|
||||||
|
# Rename groups pk 1 and 2.
|
||||||
|
group_default.name = 'Default'
|
||||||
|
group_default.save()
|
||||||
|
group_registered.name = 'Previous group Registered'
|
||||||
|
group_registered.save()
|
||||||
|
|
||||||
group_old_registered = Group.objects.filter(pk=2)
|
# Move users without groups to group pk 2.
|
||||||
group_old_registered.update(name='Previous group Registered')
|
users = User.objects.all()
|
||||||
group_old_registered = group_old_registered.get()
|
for user in users:
|
||||||
|
if not user.groups.exists():
|
||||||
|
user.groups.add(group_registered)
|
||||||
|
|
||||||
users = User.objects.all()
|
# Copy permissions of group pk 2 to all other groups except pk 1.
|
||||||
for user in users:
|
groups = Group.objects.filter(pk__gt=2)
|
||||||
if not user.groups.exists():
|
for group in groups:
|
||||||
user.groups.add(group_old_registered.pk)
|
for permission in group_registered.permissions.all():
|
||||||
|
group.permissions.add(permission)
|
||||||
groups = Group.objects.filter(pk__gt=2)
|
|
||||||
for group in groups:
|
|
||||||
for permission in group_old_registered.permissions.all():
|
|
||||||
group.permissions.add(permission)
|
|
||||||
except ObjectDoesNotExist:
|
|
||||||
# If the first or second group doesn't exists, just pass this migraition
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -12,7 +12,7 @@ def create_builtin_groups_and_admin(**kwargs):
|
|||||||
"""
|
"""
|
||||||
# Check whether there are groups in the database.
|
# Check whether there are groups in the database.
|
||||||
if Group.objects.exists():
|
if Group.objects.exists():
|
||||||
# Do completely nothing if there are already some of our groups in the database.
|
# Do completely nothing if there are already some groups in the database.
|
||||||
return
|
return
|
||||||
|
|
||||||
permission_strings = (
|
permission_strings = (
|
||||||
|
Loading…
Reference in New Issue
Block a user