Projet

Général

Profil

0001-agent-save-role-emails-during-provisionning-44754.patch

Valentin Deniaud, 07 juillet 2020 17:38

Télécharger (5,3 ko)

Voir les différences:

Subject: [PATCH] agent: save role emails during provisionning (#44754)

 .../migrations/0003_auto_20200707_1656.py     | 26 +++++++++++++++++++
 hobo/agent/common/models.py                   |  3 +++
 hobo/provisionning/utils.py                   | 16 ++++++++++--
 tests_multitenant/test_hobo_notify.py         |  6 +++++
 4 files changed, 49 insertions(+), 2 deletions(-)
 create mode 100644 hobo/agent/common/migrations/0003_auto_20200707_1656.py
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
-