Added a migration to create login and person records for the mail-archive and registration-system users.

- Legacy-Id: 17934
This commit is contained in:
Henrik Levkowetz 2020-06-08 19:19:25 +00:00
parent ff0279e7ae
commit 542c165907

View file

@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-05-01 12:54
from __future__ import unicode_literals
from django.db import migrations
from django.utils.text import slugify
robots = [
('Mail Archive', '/api/v2/person/person', 'secretariat', 'mailarchive@ietf.org'),
('Registration System', '/api/notify/meeting/registration', 'secretariat', 'registration@ietf.org'),
]
def forward(apps, schema_editor):
RoleName = apps.get_model('name', 'RoleName')
Role = apps.get_model('group', 'Role')
Group = apps.get_model('group', 'Group')
User = apps.get_model('auth', 'User')
Person = apps.get_model('person', 'Person')
Email = apps.get_model('person', 'Email')
PersonalApiKey = apps.get_model('person', 'PersonalApiKey')
#
rname, __ = RoleName.objects.get_or_create(slug='robot')
#
for (name, endpoint, acronym, address) in robots:
first_name, last_name = name.rsplit(None, 1)
user, created = User.objects.get_or_create(username=slugify(name))
if created:
user.first_name=first_name
user.last_name=last_name
user.is_staff=True
user.is_active=True
user.save()
#
person, created = Person.objects.get_or_create(name=name)
if created:
person.user = user
person.ascii = name
person.consent = True
person.save()
else:
assert person.user == user
#
email, created = Email.objects.get_or_create(address=address)
if created:
email.origin = 'registration'
email.person = person
email.active = True
email.save()
else:
assert email.person == person
#
group = Group.objects.get(acronym=acronym)
role, created = Role.objects.get_or_create(person=person, name=rname, group=group, email=email)
#
key, created = PersonalApiKey.objects.get_or_create(person=person, endpoint=endpoint, valid=True)
def reverse(apps, schema_editor):
Person = apps.get_model('person', 'Person')
for (name, endpoint, acronym, address) in robots:
deleted = Person.objects.filter(name=name).delete()
print('deleted: %s' % deleted)
class Migration(migrations.Migration):
dependencies = [
('group', '0027_programs_have_parents'),
('name', '0012_role_name_robots'),
]
operations = [
migrations.RunPython(forward, reverse),
]