#31 API Improvement

* adds support for returning all shared data
* adds documentation
This commit is contained in:
2022-01-24 16:23:38 +01:00
parent fa6603f218
commit 9da5df2d5b
5 changed files with 48 additions and 14 deletions

View File

@@ -62,7 +62,12 @@ class AbstractModelAPISerializer:
Returns:
"""
self.lookup["id"] = _id
if _id is None:
# Return all objects
del self.lookup["id"]
else:
# Return certain objects
self.lookup["id"] = _id
self.lookup["users__in"] = [user]
def fetch_and_serialize(self):
@@ -73,8 +78,10 @@ class AbstractModelAPISerializer:
Returns:
serialized_data (dict)
"""
entry = self.model.objects.get(**self.lookup)
serialized_data = self.model_to_geo_json(entry)
entries = self.model.objects.filter(**self.lookup)
serialized_data = {}
for entry in entries:
serialized_data[str(entry.id)] = self.model_to_geo_json(entry)
return serialized_data
@abstractmethod

View File

@@ -19,7 +19,7 @@ class CompensationAPISerializerV1(AbstractModelAPISerializerV1, AbstractCompensa
model = Compensation
def prepare_lookup(self, id, user):
self.lookup["id"] = id
super().prepare_lookup(id, user)
del self.lookup["users__in"]
self.lookup["intervention__users__in"] = [user]

View File

@@ -90,6 +90,8 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
Returns:
obj
"""
if legal_data is None:
return obj
obj.legal.registration_date = legal_data["registration_date"]
obj.legal.binding_date = legal_data["binding_date"]
obj.legal.process_type = self.konova_code_from_json(
@@ -110,6 +112,8 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
Returns:
obj
"""
if responsibility_data is None:
return obj
obj.responsible.registration_office = self.konova_code_from_json(
responsibility_data["registration_office"],
CODELIST_REGISTRATION_OFFICE_ID
@@ -134,6 +138,8 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
Returns:
obj (intervention)
"""
if payment_data is None:
return obj
payments = []
for entry in payment_data:
due_on = entry["due_on"]
@@ -226,9 +232,9 @@ class InterventionAPISerializerV1(AbstractModelAPISerializerV1,
properties = json_model["properties"]
obj.title = properties["title"]
obj.modified = update_action
self.set_responsibility(obj, properties["responsible"])
self.set_legal(obj, properties["legal"])
self.set_payments(obj, properties["payments"])
self.set_responsibility(obj, properties.get("responsible", None))
self.set_legal(obj, properties.get("legal", None))
self.set_payments(obj, properties.get("payments", None))
obj.geometry.geom = self.create_geometry_from_json(json_model)
obj.geometry.modified = update_action

View File

@@ -50,6 +50,8 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
Returns:
serialized_json (dict)
"""
if konova_code is None:
return None
return {
"atom_id": konova_code.atom_id,
"long_name": konova_code.long_name,
@@ -83,7 +85,7 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
Returns:
created_on (timestamp)
"""
return entry.created.timestamp
return entry.created.timestamp if entry.created is not None else None
def modified_on_to_json(self, entry):
""" Serializes the modified_on into json
@@ -95,7 +97,7 @@ class AbstractModelAPISerializerV1(AbstractModelAPISerializer):
modified_on (timestamp)
"""
modified_on = entry.modified or entry.created
modified_on = modified_on.timestamp
modified_on = modified_on.timestamp if modified_on is not None else None
return modified_on