# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-04 10:25 from __future__ import unicode_literals from django.conf import settings from django.db import migrations, models from django.core.exceptions import ObjectDoesNotExist import django.db.models.deletion def internal_group(group): return ( "Corp_" in group.name or "Alliance_" in group.name or settings.DEFAULT_AUTH_GROUP in group.name or settings.DEFAULT_BLUE_GROUP in group.name ) def combine_group_models(apps, schema_editor): Group = apps.get_model("auth", "Group") AuthGroup = apps.get_model("groupmanagement", "AuthGroup") for group in Group.objects.all(): authgroup = AuthGroup(group=group) if not hasattr(group, 'hiddengroup'): authgroup.hidden = False if hasattr(group, 'opengroup'): authgroup.open = True if hasattr(group, 'groupdescription'): authgroup.description = group.groupdescription.description authgroup.internal = internal_group(group) authgroup.save() def reverse_group_models(apps, schema_editor): Group = apps.get_model("auth", "Group") GroupDescription = apps.get_model("groupmanagement", "GroupDescription") OpenGroup = apps.get_model("groupmanagement", "OpenGroup") HiddenGroup = apps.get_model("groupmanagement", "HiddenGroup") for group in Group.objects.all(): if not hasattr(group, 'authgroup') or group.authgroup is None: continue if group.authgroup.open: OpenGroup.objects.get_or_create(group=group) else: try: OpenGroup.objects.get(group=group).delete() except ObjectDoesNotExist: pass if group.authgroup.hidden: HiddenGroup.objects.get_or_create(group=group) else: try: HiddenGroup.objects.get(group=group).delete() except ObjectDoesNotExist: pass if len(group.authgroup.description): GroupDescription.objects.update_or_create(group=group, defaults={'description': group.authgroup.description}) class Migration(migrations.Migration): dependencies = [ ('auth', '0008_alter_user_username_max_length'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('groupmanagement', '0003_default_groups'), ] operations = [ migrations.CreateModel( name='AuthGroup', fields=[ ('group', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.Group')), ('internal', models.BooleanField(default=True, help_text='Internal group, users cannot see, join or request to join this group.
Used for groups such as Members, Corp_*, Alliance_* etc.
Overrides Hidden and Open options when selected.')), ('hidden', models.BooleanField(default=True, help_text='Group is hidden from users but can still join with the correct link.')), ('open', models.BooleanField(default=False, help_text='Group is open and users will be automatically added upon request.
If the group is not open users will need their request manually approved.')), ('description', models.CharField(max_length=512, blank=True, help_text='Description of the group shown to users.', )), ('group_leaders', models.ManyToManyField(related_name='leads_groups', to=settings.AUTH_USER_MODEL, blank=True, help_text='Group leaders can process group requests for this group specifically. Use the auth.group_management permission to allow a user to manage all groups.',)), ], ), migrations.RunPython(combine_group_models, reverse_group_models), migrations.RemoveField( model_name='groupdescription', name='group', ), migrations.RemoveField( model_name='hiddengroup', name='group', ), migrations.RemoveField( model_name='opengroup', name='group', ), migrations.DeleteModel( name='GroupDescription', ), migrations.DeleteModel( name='HiddenGroup', ), migrations.DeleteModel( name='OpenGroup', ), ]