0002-planitech-add-a-pricing-code-on-users-30261.patch
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 |
- |