agent: save role emails during provisionning (#44754)
This commit is contained in:
parent
3d632d370c
commit
88c06f1df0
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.18 on 2020-07-07 14:56
|
||||
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),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='role',
|
||||
name='emails_to_members',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
]
|
|
@ -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,5 @@ 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=[])
|
||||
emails_to_members = models.BooleanField(default=True)
|
||||
|
|
|
@ -122,9 +122,15 @@ 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'],
|
||||
'details': o.get('details', u''),
|
||||
'emails': o.get('emails', []),
|
||||
'emails_to_members': o.get('emails_to_members', True),
|
||||
}
|
||||
)
|
||||
except IntegrityError:
|
||||
# Can happen if uuid and name already exist
|
||||
logger.error(u'cannot provision role "%s" (%s)', o['name'], o['uuid'])
|
||||
|
@ -143,6 +149,12 @@ class NotificationProcessing:
|
|||
if role.details != o.get('details', u''):
|
||||
role.details = o.get('details', u'')
|
||||
save = True
|
||||
if role.emails != o.get('emails', []):
|
||||
role.emails = o.get('emails', [])
|
||||
save = True
|
||||
if role.emails_to_members != o.get('emails_to_members', True):
|
||||
role.emails_to_members = o.get('emails_to_members', True)
|
||||
save = True
|
||||
if save:
|
||||
try:
|
||||
with atomic():
|
||||
|
|
|
@ -48,6 +48,9 @@ def test_hobo_notify_roles(caplog, tenants):
|
|||
u'name': u'Service petite enfance',
|
||||
u'slug': u'service-petite-enfance',
|
||||
u'description': u'Role du service petite enfance %s' % tenant.domain_url,
|
||||
u'details': u'Some details',
|
||||
u'emails': [u'foo@bar.com', u'test@entrouvert.org'],
|
||||
u'emails_to_members': False,
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -59,6 +62,9 @@ def test_hobo_notify_roles(caplog, tenants):
|
|||
assert role.uuid == u'12345'
|
||||
assert role.name == u'Service petite enfance'
|
||||
assert role.description == u'Role du service petite enfance %s' % tenant.domain_url
|
||||
assert role.details == u'Some details'
|
||||
assert role.emails == [u'foo@bar.com', u'test@entrouvert.org']
|
||||
assert role.emails_to_members is False
|
||||
|
||||
# test full provisionning
|
||||
for tenant in tenants:
|
||||
|
|
Loading…
Reference in New Issue