cartads_cs: cache additional dossier infos (#36561)
This commit is contained in:
parent
0a97c0ee1f
commit
3eb45f4e5f
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.12 on 2019-09-30 15:42
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
import jsonfield.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cartads_cs', '0010_cartadsdossier_cartads_cache_code_acces'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='cartadsdossier',
|
||||
name='cartads_cache_infos',
|
||||
field=jsonfield.fields.JSONField(default={}),
|
||||
),
|
||||
]
|
|
@ -46,7 +46,7 @@ import zeep.helpers as zeep_helpers
|
|||
|
||||
from passerelle.base.models import BaseResource
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.jsonresponse import APIError, JSONEncoder
|
||||
|
||||
|
||||
def cartads_file_location(instance, filename):
|
||||
|
@ -94,6 +94,7 @@ class CartaDSDossier(models.Model):
|
|||
cartads_id_dossier = models.CharField(max_length=50, null=True)
|
||||
cartads_numero_dossier = models.CharField(max_length=50, null=True)
|
||||
cartads_cache_code_acces = models.CharField(max_length=200, null=True)
|
||||
cartads_cache_infos = JSONField(default={})
|
||||
cartads_steps_cache = JSONField(default={})
|
||||
last_update_datetime = models.DateTimeField(auto_now=True)
|
||||
subscribers = models.ManyToManyField(CartaDSSubscriber, blank=True)
|
||||
|
@ -301,11 +302,26 @@ class AbstractCartaDSCS(BaseResource):
|
|||
def update_dossier_cache(self):
|
||||
client = self.soap_client(wsdl_url=self.get_wsdl_url('ServiceEtapeDossier'))
|
||||
client_suivi = self.soap_client(wsdl_url=self.get_wsdl_url('ServiceSuiviNumerique'))
|
||||
client_dossier = self.soap_client(wsdl_url=self.get_wsdl_url('ServiceDossier'))
|
||||
token = self.get_token()
|
||||
for dossier in CartaDSDossier.objects.filter(cartads_id_dossier__isnull=False):
|
||||
dossier.cartads_steps_cache = {'steps': self.get_dossier_steps(client, token, dossier)}
|
||||
dossier.cartads_cache_code_acces = client_suivi.service.GetMotPasse(
|
||||
self.get_token(), dossier.cartads_id_dossier)
|
||||
try:
|
||||
dossier.cartads_cache_code_acces = client_suivi.service.GetMotPasse(
|
||||
self.get_token(), dossier.cartads_id_dossier)
|
||||
except zeep.exceptions.Fault as e:
|
||||
self.logger.exception('error getting access code (%s) (%r)', dossier.id, e.message)
|
||||
try:
|
||||
infos_dossier = client_dossier.service.GetInfosDossier(self.client_name, dossier.cartads_id_dossier)
|
||||
if infos_dossier:
|
||||
# load(dump(...)) to serialize dates
|
||||
dossier.cartads_cache_infos = json.loads(json.dumps(
|
||||
zeep_helpers.serialize_object(
|
||||
client_dossier.service.GetInfosDossier(
|
||||
self.client_name, dossier.cartads_id_dossier)),
|
||||
cls=JSONEncoder))
|
||||
except zeep.exceptions.Fault as e:
|
||||
self.logger.exception('error getting dossier infos (%s) (%r)', dossier.id, e.message)
|
||||
dossier.save()
|
||||
|
||||
def hourly(self):
|
||||
|
|
|
@ -165,7 +165,7 @@ class FakeService():
|
|||
return 123
|
||||
|
||||
def GetInfosDossier(self, client_name, id_dossier):
|
||||
assert id_dossier == 123
|
||||
assert id_dossier in (123, '135792')
|
||||
return OrderedDict([
|
||||
(u'AdresseTerrain', u'all\xe9e des Fleurs'),
|
||||
(u'CoTypeDossier', 'PC'),
|
||||
|
@ -402,7 +402,7 @@ def test_status(connector, app, cached_data):
|
|||
|
||||
assert CartaDSDossier.objects.get(pk=dossier.id).cartads_steps_cache
|
||||
assert CartaDSDossier.objects.get(pk=dossier.id).cartads_cache_code_acces
|
||||
|
||||
assert CartaDSDossier.objects.get(pk=dossier.id).cartads_cache_infos
|
||||
|
||||
def test_status_error(connector, app, cached_data):
|
||||
CartaDSDossier.objects.all().delete()
|
||||
|
|
Loading…
Reference in New Issue