Skip to content

Commit 542c165

Browse files
committed
Added a migration to create login and person records for the mail-archive and registration-system users.
- Legacy-Id: 17934
1 parent ff0279e commit 542c165

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.29 on 2020-05-01 12:54
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations
6+
from django.utils.text import slugify
7+
8+
robots = [
9+
('Mail Archive', '/api/v2/person/person', 'secretariat', 'mailarchive@ietf.org'),
10+
('Registration System', '/api/notify/meeting/registration', 'secretariat', 'registration@ietf.org'),
11+
]
12+
13+
def forward(apps, schema_editor):
14+
RoleName = apps.get_model('name', 'RoleName')
15+
Role = apps.get_model('group', 'Role')
16+
Group = apps.get_model('group', 'Group')
17+
User = apps.get_model('auth', 'User')
18+
Person = apps.get_model('person', 'Person')
19+
Email = apps.get_model('person', 'Email')
20+
PersonalApiKey = apps.get_model('person', 'PersonalApiKey')
21+
#
22+
rname, __ = RoleName.objects.get_or_create(slug='robot')
23+
#
24+
for (name, endpoint, acronym, address) in robots:
25+
first_name, last_name = name.rsplit(None, 1)
26+
user, created = User.objects.get_or_create(username=slugify(name))
27+
if created:
28+
user.first_name=first_name
29+
user.last_name=last_name
30+
user.is_staff=True
31+
user.is_active=True
32+
user.save()
33+
#
34+
person, created = Person.objects.get_or_create(name=name)
35+
if created:
36+
person.user = user
37+
person.ascii = name
38+
person.consent = True
39+
person.save()
40+
else:
41+
assert person.user == user
42+
#
43+
email, created = Email.objects.get_or_create(address=address)
44+
if created:
45+
email.origin = 'registration'
46+
email.person = person
47+
email.active = True
48+
email.save()
49+
else:
50+
assert email.person == person
51+
#
52+
group = Group.objects.get(acronym=acronym)
53+
role, created = Role.objects.get_or_create(person=person, name=rname, group=group, email=email)
54+
#
55+
key, created = PersonalApiKey.objects.get_or_create(person=person, endpoint=endpoint, valid=True)
56+
57+
def reverse(apps, schema_editor):
58+
Person = apps.get_model('person', 'Person')
59+
for (name, endpoint, acronym, address) in robots:
60+
deleted = Person.objects.filter(name=name).delete()
61+
print('deleted: %s' % deleted)
62+
63+
class Migration(migrations.Migration):
64+
65+
dependencies = [
66+
('group', '0027_programs_have_parents'),
67+
('name', '0012_role_name_robots'),
68+
]
69+
70+
operations = [
71+
migrations.RunPython(forward, reverse),
72+
]

0 commit comments

Comments
 (0)