From ef85123f606b6c598a0a6c2a866db66c2094386e Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 2 Jul 2020 18:42:48 +0200 Subject: [PATCH] agent: save role emails during provisionning (#44754) --- .../common/migrations/0003_role_emails.py | 21 +++++++++++++++++++ hobo/agent/common/models.py | 2 ++ hobo/provisionning/utils.py | 11 ++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 hobo/agent/common/migrations/0003_role_emails.py diff --git a/hobo/agent/common/migrations/0003_role_emails.py b/hobo/agent/common/migrations/0003_role_emails.py new file mode 100644 index 0000000..707e3a4 --- /dev/null +++ b/hobo/agent/common/migrations/0003_role_emails.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2020-07-02 16:39 +from __future__ import unicode_literals + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0002_auto_20160105_1702'), + ] + + operations = [ + migrations.AddField( + model_name='role', + name='emails', + field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), default=[], size=None), + ), + ] diff --git a/hobo/agent/common/models.py b/hobo/agent/common/models.py index 6c3463f..094ee49 100644 --- a/hobo/agent/common/models.py +++ b/hobo/agent/common/models.py @@ -1,3 +1,4 @@ +from django.contrib.postgres.fields import ArrayField from django.db import models from django.contrib.auth.models import Group @@ -6,3 +7,4 @@ class Role(Group): uuid = models.CharField(max_length=32) description = models.TextField(default=u'') details = models.TextField(default=u'') + emails = ArrayField(models.CharField(max_length=128), default=[]) diff --git a/hobo/provisionning/utils.py b/hobo/provisionning/utils.py index 980189c..428afda 100644 --- a/hobo/provisionning/utils.py +++ b/hobo/provisionning/utils.py @@ -122,9 +122,13 @@ class NotificationProcessing: try: with atomic(): role, created = Role.objects.get_or_create( - name=role_name, defaults={ + name=role_name, + defaults={ 'uuid': o['uuid'], - 'description': o['description']}) + 'description': o['description'], + 'emails': o['emails'], + } + ) except IntegrityError: # Can happen if uuid and name already exist logger.error(u'cannot provision role "%s" (%s)', o['name'], o['uuid']) @@ -143,6 +147,9 @@ class NotificationProcessing: if role.details != o.get('details', u''): role.details = o.get('details', u'') save = True + if role.emails != o['emails']: + role.emails = o['emails'] + save = True if save: try: with atomic(): -- 2.20.1