Skip to content

Commit

Permalink
[refs #130782] Add endpoint for all years licences listing
Browse files Browse the repository at this point in the history
  • Loading branch information
dianaboiangiu committed Apr 13, 2021
1 parent 4a20a73 commit ee125ee
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
5 changes: 5 additions & 0 deletions cache_registry/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ def register_url(prefix, url, view, name, view_name):
view=SubstanceYearListView,
view_name='current_substances_per_undertaking')

register_url(prefix=licence_prefix, name=licence_name,
url='/licences/aggregated',
view=SubstanceListView,
view_name='all_substances_per_undertaking')

register_url(prefix=licence_prefix, name=licence_name,
url='/<year>/licences',
view=LicencesOfOneDeliveryListView,
Expand Down
43 changes: 43 additions & 0 deletions cache_registry/api/licence.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,49 @@ def post(self, **kwargs):
data.extend(self.patch_licences(**kwargs))
return {"licences": data}

class SubstanceListView(ApiView):
model = Substance

def get_queryset(self, domain, pk, **kwargs):
undertaking = Undertaking.query.filter_by(domain=domain, external_id=pk).first_or_404()
deliveries = undertaking.deliveries.all()
if not deliveries:
return []
substances = []
for delivery in deliveries:
substances.extend(delivery.substances.all())
data = json.loads(request.data)
return substances

@classmethod
def serialize(cls, obj, **kwargs):
data = ApiView.serialize(obj)
_strip_fields = (
'date_created', 'date_updated',
'delivery_id'
)
for field in _strip_fields:
data.pop(field)
data['company_id'] = obj.deliverylicence.undertaking.external_id
data['use_kind'] = data.pop('lic_use_kind')
data['use_desc'] = data.pop('lic_use_desc')
data['type'] = data.pop('lic_type')
data['quantity'] = int(data['quantity'])
return data

def patch_licences(self, **kwargs):
data = []
pk = int(kwargs['pk'])
patch = current_app.config.get('PATCH_LICENCES', [])
for element in patch:
if element.get('company_id') == pk:
data.append(element)
return data

def post(self, **kwargs):
data = [self.serialize(u) for u in self.get_queryset(**kwargs)]
data.extend(self.patch_licences(**kwargs))
return {"licences": data}

class LicencesOfOneDeliveryListView(ListView):
model = Licence
Expand Down

0 comments on commit ee125ee

Please sign in to comment.