0001-gesbac-get-demand-response-by-gesbac-id-instead-of-f.patch
passerelle/apps/gesbac/migrations/0002_form_gesbac_id.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# Generated by Django 1.11.20 on 2020-01-23 13:39 |
|
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 |
('gesbac', '0001_initial'), |
|
12 |
] |
|
13 | ||
14 |
operations = [ |
|
15 |
migrations.AddField( |
|
16 |
model_name='form', |
|
17 |
name='gesbac_id', |
|
18 |
field=models.CharField(default='', max_length=64), |
|
19 |
preserve_default=False, |
|
20 |
), |
|
21 |
] |
passerelle/apps/gesbac/models.py | ||
---|---|---|
355 | 355 |
form.demand_data = data |
356 | 356 |
form.save() |
357 | 357 |
self.add_job('send_demand', form_id=form.id) |
358 |
return {'data': {'filename': form.get_filename()}} |
|
358 |
return {'data': {'filename': form.get_filename(), |
|
359 |
'gesbac_id': form.get_gesbac_id()}} |
|
359 | 360 | |
360 | 361 |
@endpoint(name='get-response', perm='can_access', |
361 | 362 |
description=_('Get response'), |
362 | 363 |
parameters={ |
363 |
'form_id': {
|
|
364 |
'description': _('Form identifier'),
|
|
365 |
'example_value': '42-01'
|
|
364 |
'gesbac_id': {
|
|
365 |
'description': _('Gesbac demand identifier'),
|
|
366 |
'example_value': '420001'
|
|
366 | 367 |
} |
367 | 368 |
} |
368 | 369 |
) |
369 |
def get_response(self, request, form_id):
|
|
370 |
def get_response(self, request, gesbac_id):
|
|
370 | 371 |
try: |
371 | 372 |
response = self.form_set.filter(status='closed', |
372 |
form_id=form_id).latest()
|
|
373 |
gesbac_id=gesbac_id).latest()
|
|
373 | 374 |
return {'data': response.card_data} |
374 | 375 |
except Form.DoesNotExist: |
375 | 376 |
raise Http404('No response found') |
... | ... | |
385 | 386 |
class Form(models.Model): |
386 | 387 |
resource = models.ForeignKey(Gesbac, on_delete=models.CASCADE) |
387 | 388 |
form_id = models.CharField(max_length=64) |
389 |
gesbac_id = models.CharField(max_length=64) |
|
388 | 390 |
creation_datetime = models.DateTimeField(auto_now_add=True) |
389 | 391 |
filename = models.CharField(max_length=128, null=True) |
390 | 392 |
status = models.CharField(max_length=8, default='new', |
... | ... | |
397 | 399 |
get_latest_by = 'creation_datetime' |
398 | 400 | |
399 | 401 |
def get_gesbac_id(self): |
400 |
return self.form_id.replace('-', '%03d' % self.id) |
|
402 |
if not self.gesbac_id: |
|
403 |
self.gesbac_id = self.form_id.replace('-', '%03d' % self.id) |
|
404 |
self.save() |
|
405 |
return self.gesbac_id |
|
401 | 406 | |
402 | 407 |
def get_filename(self): |
403 | 408 |
if not self.filename: |
tests/test_gesbac.py | ||
---|---|---|
82 | 82 |
timestamp.strftime('%y%m%d-%H%M%S'), |
83 | 83 |
form.get_gesbac_id()) |
84 | 84 |
assert response.json['data']['filename'] == expected_filename |
85 |
assert response.json['data']['gesbac_id'] == form.gesbac_id |
|
85 | 86 |
assert resource.form_set.filter(status='new').count() == 1 |
86 | 87 |
with sftpserver.serve_content({'output': {expected_filename: 'content'}}): |
87 | 88 |
resource.jobs() |
... | ... | |
96 | 97 |
timestamp.strftime('%y%m%d-%H%M%S'), |
97 | 98 |
form.get_gesbac_id()) |
98 | 99 |
assert response.json['data']['filename'] == expected_filename |
100 |
assert response.json['data']['gesbac_id'] == form.gesbac_id |
|
99 | 101 |
with sftpserver.serve_content({'output': {response.json['data']['filename']: 'content'}}): |
100 | 102 |
resource.jobs() |
101 | 103 |
assert resource.form_set.filter(status='sent').count() == 2 |
... | ... | |
103 | 105 | |
104 | 106 |
def test_get_demand_response(app, resource, freezer, sftpserver): |
105 | 107 |
response = app.get('/gesbac/test/get-response/', |
106 |
params={'form_id': '42-43'}, status=404)
|
|
108 |
params={'gesbac_id': '42043'}, status=404)
|
|
107 | 109 |
timestamp = now() |
108 | 110 |
payload = { |
109 | 111 |
'form_id': '42-43', |
... | ... | |
154 | 156 |
assert response.card_data == ['CARTE', gesbac_id, '3', '2', '1234', '', '', |
155 | 157 |
'', '', '', '', '', force_text(comment, 'latin-1')] |
156 | 158 |
response = app.get('/gesbac/test/get-response/', |
157 |
params={'form_id': '42-43'})
|
|
159 |
params={'gesbac_id': gesbac_id})
|
|
158 | 160 |
assert response.json['err'] == 0 |
159 | 161 |
assert response.json['data'] == ['CARTE', gesbac_id, '3', '2', '1234', '', |
160 | 162 |
'', '', '', '', '', '', force_text(comment, 'latin-1')] |
161 |
- |