0001-agent-save-role-emails-during-provisionning-44754.patch
hobo/agent/common/migrations/0003_auto_20200707_1656.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# Generated by Django 1.11.18 on 2020-07-07 14:56 |
|
3 |
from __future__ import unicode_literals |
|
4 | ||
5 |
import django.contrib.postgres.fields |
|
6 |
from django.db import migrations, models |
|
7 | ||
8 | ||
9 |
class Migration(migrations.Migration): |
|
10 | ||
11 |
dependencies = [ |
|
12 |
('common', '0002_auto_20160105_1702'), |
|
13 |
] |
|
14 | ||
15 |
operations = [ |
|
16 |
migrations.AddField( |
|
17 |
model_name='role', |
|
18 |
name='emails', |
|
19 |
field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=128), default=[], size=None), |
|
20 |
), |
|
21 |
migrations.AddField( |
|
22 |
model_name='role', |
|
23 |
name='emails_to_members', |
|
24 |
field=models.BooleanField(default=True), |
|
25 |
), |
|
26 |
] |
hobo/agent/common/models.py | ||
---|---|---|
1 |
from django.contrib.postgres.fields import ArrayField |
|
1 | 2 |
from django.db import models |
2 | 3 | |
3 | 4 |
from django.contrib.auth.models import Group |
... | ... | |
6 | 7 |
uuid = models.CharField(max_length=32) |
7 | 8 |
description = models.TextField(default=u'') |
8 | 9 |
details = models.TextField(default=u'') |
10 |
emails = ArrayField(models.CharField(max_length=128), default=[]) |
|
11 |
emails_to_members = models.BooleanField(default=True) |
hobo/provisionning/utils.py | ||
---|---|---|
122 | 122 |
try: |
123 | 123 |
with atomic(): |
124 | 124 |
role, created = Role.objects.get_or_create( |
125 |
name=role_name, defaults={ |
|
125 |
name=role_name, |
|
126 |
defaults={ |
|
126 | 127 |
'uuid': o['uuid'], |
127 |
'description': o['description']}) |
|
128 |
'description': o['description'], |
|
129 |
'details': o.get('details', u''), |
|
130 |
'emails': o.get('emails', []), |
|
131 |
'emails_to_members': o.get('emails_to_members', True), |
|
132 |
} |
|
133 |
) |
|
128 | 134 |
except IntegrityError: |
129 | 135 |
# Can happen if uuid and name already exist |
130 | 136 |
logger.error(u'cannot provision role "%s" (%s)', o['name'], o['uuid']) |
... | ... | |
143 | 149 |
if role.details != o.get('details', u''): |
144 | 150 |
role.details = o.get('details', u'') |
145 | 151 |
save = True |
152 |
if role.emails != o.get('emails', []): |
|
153 |
role.emails = o.get('emails', []) |
|
154 |
save = True |
|
155 |
if role.emails_to_members != o.get('emails_to_members', True): |
|
156 |
role.emails_to_members = o.get('emails_to_members', True) |
|
157 |
save = True |
|
146 | 158 |
if save: |
147 | 159 |
try: |
148 | 160 |
with atomic(): |
tests_multitenant/test_hobo_notify.py | ||
---|---|---|
48 | 48 |
u'name': u'Service petite enfance', |
49 | 49 |
u'slug': u'service-petite-enfance', |
50 | 50 |
u'description': u'Role du service petite enfance %s' % tenant.domain_url, |
51 |
u'details': u'Some details', |
|
52 |
u'emails': [u'foo@bar.com', u'test@entrouvert.org'], |
|
53 |
u'emails_to_members': False, |
|
51 | 54 |
} |
52 | 55 |
] |
53 | 56 |
} |
... | ... | |
59 | 62 |
assert role.uuid == u'12345' |
60 | 63 |
assert role.name == u'Service petite enfance' |
61 | 64 |
assert role.description == u'Role du service petite enfance %s' % tenant.domain_url |
65 |
assert role.details == u'Some details' |
|
66 |
assert role.emails == [u'foo@bar.com', u'test@entrouvert.org'] |
|
67 |
assert role.emails_to_members is False |
|
62 | 68 | |
63 | 69 |
# test full provisionning |
64 | 70 |
for tenant in tenants: |
65 |
- |