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:
parent
ff0279e7ae
commit
542c165907
72
ietf/group/migrations/0028_add_robots.py
Normal file
72
ietf/group/migrations/0028_add_robots.py
Normal 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),
|
||||
]
|
Loading…
Reference in a new issue