From f0eea146266a2d1effabc2168a5c4cdb3b9b5f38 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 12 Sep 2015 00:43:19 +0200 Subject: [PATCH 1/3] import-wcs-roles: import roles .emails and .emails_to_members fields (#8217) As we are moving from and w.c.s. role master to an authentic as role master, we must first import as much data from w.c.s. roles as possible into authentic. --- .../management/commands/import-wcs-roles.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/hobo/agent/authentic2/management/commands/import-wcs-roles.py b/hobo/agent/authentic2/management/commands/import-wcs-roles.py index ba3e8d8..d72f115 100644 --- a/hobo/agent/authentic2/management/commands/import-wcs-roles.py +++ b/hobo/agent/authentic2/management/commands/import-wcs-roles.py @@ -84,6 +84,20 @@ class WcsRoleImporter(object): if role.name != role_tpl.name: role.name = role_tpl.name role.save() + # update emails and emails_to_members in RA + if role.emails: + ra, created = RoleAttribute.objects.get_or_create( + role=role, name='emails', kind='json', + defaults={'value': json.dumps(role.emails)}) + if ra.value != json.dumps(role.emails): + ra.value = json.dumps(role.emails) + ra.save() + ra, created = RoleAttribute.objects.get_or_create( + role=role, name='emails_to_members', kind='json', + defaults={'value': json.dumps(role.emails_to_members)}) + if ra.value != json.dumps(role.emails_to_members): + ra.value = json.dumps(role.emails_to_members) + ra.save() def delete_dead_roles(self): '''Deletes service roles whose id is not in self.seen_ids''' @@ -104,8 +118,11 @@ class WcsRoleImporter(object): response = requests.get(signed_url, verify=app_settings.A2_VERIFY_SSL) if response.status_code == 200: for role in response.json()['data']: - yield Role(name=role['text'], external_id=str(role['slug']), - slug=str(role['slug'])) + role = Role(name=role['text'], external_id=str(role['slug']), + slug=str(role['slug'])) + role.description = role.get('details', u'') + role.emails = role.get('emails', []) + role.emails_to_members = role.get('emails_to_members', False) else: self.logger.warn('failed to get roles for %s (response: %s)', self.wcs_url, response.status_code) -- 2.1.4