18 |
18 |
from collections import defaultdict
|
19 |
19 |
|
20 |
20 |
from urllib.parse import urljoin
|
21 |
21 |
|
22 |
22 |
import zeep
|
23 |
23 |
from zeep.wsse.username import UsernameToken
|
24 |
24 |
from zeep.helpers import serialize_object
|
25 |
25 |
|
|
26 |
from django.core.cache import cache
|
26 |
27 |
from django.db import models
|
27 |
28 |
from django.utils import timezone
|
28 |
29 |
|
29 |
30 |
from django.utils.translation import ugettext_lazy as _
|
30 |
31 |
|
31 |
32 |
from passerelle.base.models import BaseResource
|
32 |
33 |
from passerelle.utils.api import endpoint
|
33 |
34 |
from passerelle.utils.jsonresponse import APIError
|
... | ... | |
133 |
134 |
return self.link_set.get(name_id=name_id)
|
134 |
135 |
except Link.DoesNotExist:
|
135 |
136 |
raise APIError('User not linked to family', err_code='not-found')
|
136 |
137 |
|
137 |
138 |
def get_family_data(self, family_id, school_year=None):
|
138 |
139 |
if not school_year:
|
139 |
140 |
# fallback to current year if not provided
|
140 |
141 |
school_year = utils.get_default_school_year()
|
|
142 |
cache_key = 'maelis-%s-%s' % (family_id, school_year)
|
|
143 |
family_data = cache.get(cache_key)
|
|
144 |
if family_data:
|
|
145 |
return family_data
|
|
146 |
|
141 |
147 |
family_data = serialize_object(self.call('FamilyService?wsdl',
|
142 |
148 |
'readFamily',
|
143 |
149 |
dossierNumber=family_id,
|
144 |
150 |
schoolYear=school_year))
|
145 |
151 |
for child in family_data['childInfoList']:
|
146 |
152 |
utils.normalize_person(child)
|
|
153 |
cache.set(cache_key, family_data, 3600)
|
147 |
154 |
return family_data
|
148 |
155 |
|
149 |
156 |
def get_invoices(self, regie_id, name_id):
|
150 |
157 |
family_id = self.get_link(name_id).family_id
|
151 |
158 |
return [utils.normalize_invoice(i) for i in self.call(
|
152 |
159 |
'InvoiceService?wsdl', 'readInvoices',
|
153 |
160 |
numDossier=family_id, codeRegie=regie_id)]
|
154 |
161 |
|