mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 04:20:17 +02:00
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# Generated by Django 1.10.1 on 2017-01-07 06:47
|
|
|
|
from django.db import migrations
|
|
|
|
|
|
def count_completed_fields(model):
|
|
return len([True for key, value in model.__dict__.items() if bool(value)])
|
|
|
|
def forward(apps, schema_editor):
|
|
# this ensures only one model exists per user
|
|
AuthServicesInfo = apps.get_model('authentication', 'AuthServicesInfo')
|
|
users = {a.user for a in AuthServicesInfo.objects.all()}
|
|
for u in users:
|
|
auths = AuthServicesInfo.objects.filter(user=u)
|
|
if auths.count() > 1:
|
|
pk = auths[0].pk
|
|
largest = 0
|
|
for auth in auths:
|
|
completed = count_completed_fields(auth)
|
|
if completed > largest:
|
|
largest = completed
|
|
pk = auth.pk
|
|
auths.exclude(pk=pk).delete()
|
|
|
|
# ensure all users have a model
|
|
User = apps.get_model('auth', 'User')
|
|
for u in User.objects.exclude(pk__in=[user.pk for user in users]):
|
|
AuthServicesInfo.objects.create(user=u)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('authentication', '0009_auto_20161021_0228'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(forward, migrations.RunPython.noop)
|
|
]
|