Projet

Général

Profil

0002-planitech-add-a-pricing-code-on-users-30261.patch

Emmanuel Cazenave, 03 avril 2019 17:32

Télécharger (5,53 ko)

Voir les différences:

Subject: [PATCH 2/2] planitech: add a pricing code on users (#30261)

 .../migrations/0004_auto_20190225_1416.py     | 32 +++++++++++++++++++
 passerelle/contrib/planitech/models.py        |  7 ++--
 tests/test_planitech.py                       |  6 +++-
 3 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 passerelle/contrib/planitech/migrations/0004_auto_20190225_1416.py
passerelle/contrib/planitech/migrations/0004_auto_20190225_1416.py
1
# -*- coding: utf-8 -*-
2
# Generated by Django 1.11.18 on 2019-02-25 13:16
3
from __future__ import unicode_literals
4

  
5
from django.db import migrations, models
6

  
7

  
8
class Migration(migrations.Migration):
9

  
10
    dependencies = [
11
        ('planitech', '0003_pairing'),
12
    ]
13

  
14
    operations = [
15
        migrations.AddField(
16
            model_name='pairing',
17
            name='price_code',
18
            field=models.CharField(default='T1', max_length=128, verbose_name='Price code'),
19
            preserve_default=False,
20
        ),
21
        migrations.AddField(
22
            model_name='planitechconnector',
23
            name='price_code',
24
            field=models.CharField(default='T1', max_length=128, verbose_name='Price code'),
25
            preserve_default=False,
26
        ),
27
        migrations.AlterField(
28
            model_name='planitechconnector',
29
            name='slug',
30
            field=models.SlugField(unique=True, verbose_name='Identifier'),
31
        ),
32
    ]
passerelle/contrib/planitech/models.py
254 254
    verify_cert = models.BooleanField(
255 255
        default=True, verbose_name=_('Check HTTPS Certificate validity'))
256 256
    custom_fields = JSONField(_('Custom places fields'), blank=True, null=True)
257
    price_code = models.CharField(max_length=128, verbose_name=_('Price code'))
257 258

  
258 259
    category = _('Business Process Connectors')
259 260

  
......
386 387
        with transaction.atomic():
387 388
            pairing, created = Pairing.objects.get_or_create(
388 389
                resource=self, name_id=post_data['name_id'],
389
                defaults={'external_id': uuid.uuid4().get_hex()})
390
                defaults={'external_id': uuid.uuid4().get_hex(), 'price_code': self.price_code})
390 391
            if created:
391 392
                params = {
392 393
                    "externalUserIdentifier": pairing.external_id,
393 394
                    "name": post_data['last_name'],
394 395
                    "firstName": post_data['first_name'],
395
                    "mail": post_data['email']
396
                    "mail": post_data['email'],
397
                    "pricingCode": self.price_code
396 398
                }
397 399
                data = self._call_planitech(self.requests.post, 'createPerson', params)
398 400
                if data.get('creationStatus') != 'OK':
......
720 722
    name_id = models.CharField(blank=False, max_length=256)
721 723
    external_id = models.CharField(blank=False, max_length=256)
722 724
    created = models.DateTimeField(auto_now_add=True)
725
    price_code = models.CharField(max_length=128, verbose_name=_('Price code'))
tests/test_planitech.py
74 74
    connector = PlanitechConnector.objects.create(
75 75
        url='http://example.planitech.com/', username='admin', password='admin',
76 76
        verify_cert=False, slug='slug-planitech',
77
        custom_fields=[{'name': 'some_custom_field', 'type': 'string'}])
77
        custom_fields=[{'name': 'some_custom_field', 'type': 'string'}], price_code='T1')
78 78
    obj_type = ContentType.objects.get_for_model(connector)
79 79
    AccessRight.objects.create(
80 80
        codename='can_access', apiuser=api, resource_type=obj_type, resource_pk=connector.pk)
......
183 183
    assert person_args['mail'] == 'jon.doe@localhost'
184 184
    assert person_args['firstName'] == 'jon'
185 185
    assert person_args['name'] == 'doe'
186
    assert person_args['pricingCode'] == 'T1'
186 187
    external_id = person_args['externalUserIdentifier']
187 188
    pairing = Pairing.objects.get(resource=connector, name_id='john-doe')
188 189
    assert pairing.external_id == external_id
190
    assert pairing.price_code == 'T1'
189 191

  
190 192
    reservation_args = mock_call_planitech.call_args_list[1][0]
191 193
    assert reservation_args[1] == 'createReservation'
......
273 275
    assert person_args['mail'] == 'jon.doe@localhost'
274 276
    assert person_args['firstName'] == 'jon'
275 277
    assert person_args['name'] == 'doe'
278
    assert person_args['pricingCode'] == 'T1'
276 279
    external_id = person_args['externalUserIdentifier']
277 280
    pairing = Pairing.objects.get(resource=connector, name_id='john-doe')
278 281
    assert pairing.external_id == external_id
282
    assert pairing.price_code == 'T1'
279 283

  
280 284
    reservation_args = mock_call_planitech.call_args_list[1][0]
281 285
    assert reservation_args[1] == 'getFutureReservationPrice'
282
-