Projet

Général

Profil

0003-toulouse_smart-factorize-wcs_request-response-62012.patch

Nicolas Roche, 23 juillet 2022 19:54

Télécharger (3,71 ko)

Voir les différences:

Subject: [PATCH 3/4] toulouse_smart: factorize wcs_request response (#62012)

 passerelle/contrib/toulouse_smart/models.py | 36 ++++++++-------------
 1 file changed, 14 insertions(+), 22 deletions(-)
passerelle/contrib/toulouse_smart/models.py
247 247
            wcs_request.payload[label] = utils.localtz_to_utc(post_data[label])
248 248
        wcs_request.save()
249 249
        if not wcs_request.push(timeout=10):
250 250
            self.add_job(
251 251
                'create_intervention_job',
252 252
                pk=str(wcs_request.pk),
253 253
                natural_id='wcs-request-%s' % wcs_request.pk,
254 254
            )
255
        return {
256
            'data': {
257
                'wcs_form_api_url': wcs_request.wcs_form_api_url,
258
                'wcs_form_number': wcs_request.wcs_form_number,
259
                'uuid': wcs_request.uuid,
260
                'payload': wcs_request.payload,
261
                'result': wcs_request.result,
262
                'status': wcs_request.status,
263
                'tries': wcs_request.tries,
264
            }
265
        }
255
        return {'data': wcs_request.reply}
266 256

  
267 257
    def create_intervention_job(self, *args, **kwargs):
268 258
        wcs_request = self.wcs_requests.get(pk=kwargs['pk'])
269 259
        after_timestamp = None
270 260
        if not wcs_request.push():
271 261
            if wcs_request.tries < 5:
272 262
                if wcs_request.tries == 3:
273 263
                    after_timestamp = datetime.timedelta(hours=1)
274 264
                if wcs_request.tries == 4:
275 265
                    after_timestamp = datetime.timedelta(days=1)
276 266
            else:
277 267
                wcs_request.status = 'failed'
278 268
                wcs_request.save()
279
        payload = {
280
            'creation_response': {
281
                'wcs_form_api_url': wcs_request.wcs_form_api_url,
282
                'wcs_form_number': wcs_request.wcs_form_number,
283
                'uuid': str(wcs_request.uuid),
284
                'payload': wcs_request.payload,
285
                'result': wcs_request.result,
286
                'status': wcs_request.status,
287
                'tries': wcs_request.tries,
288
            }
289
        }
269
        payload = {'creation_response': wcs_request.reply}
290 270
        smart_request = wcs_request.smart_requests.create(payload=payload)
291 271
        self.add_job(
292 272
            'update_intervention_job',
293 273
            id=smart_request.id,
294 274
            natural_id='smart-request-%s' % smart_request.id,
295 275
        )
296 276
        if wcs_request.status == 'registered':
297 277
            raise SkipJob(after_timestamp)
......
437 417
            self.save()
438 418
            return False
439 419
        for label in 'interventionCreated', 'interventionDesired':
440 420
            self.result[label] = utils.utc_to_localtz(self.result[label])
441 421
        self.status = 'sent'
442 422
        self.save()
443 423
        return True
444 424

  
425
    @property
426
    def reply(self):
427
        return {
428
            'wcs_form_api_url': self.wcs_form_api_url,
429
            'wcs_form_number': self.wcs_form_number,
430
            'uuid': str(self.uuid),
431
            'payload': self.payload,
432
            'result': self.result,
433
            'status': self.status,
434
            'tries': self.tries,
435
        }
436

  
445 437
    class Meta:
446 438
        unique_together = [
447 439
            ('wcs_form_api_url', 'wcs_form_step'),
448 440
        ]
449 441

  
450 442

  
451 443
def upload_to(wcs_request_file, filename):
452 444
    instance = wcs_request_file.resource.resource
453
-