mpeltriaux
d0f3fb9f61
* adds support for proper POST of intervention * makes /<id> optional (required for Post)
69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
"""
|
|
Author: Michel Peltriaux
|
|
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
|
Contact: michel.peltriaux@sgdnord.rlp.de
|
|
Created on: 21.01.22
|
|
|
|
"""
|
|
import json
|
|
|
|
from django.http import JsonResponse, HttpRequest
|
|
|
|
from api.utils.serializer.v1.compensation import CompensationAPISerializerV1
|
|
from api.utils.serializer.v1.ecoaccount import EcoAccountAPISerializerV1
|
|
from api.utils.serializer.v1.ema import EmaAPISerializerV1
|
|
from api.utils.serializer.v1.intervention import InterventionAPISerializerV1
|
|
from api.views.views import AbstractModelAPIView
|
|
|
|
|
|
class AbstractModelAPIViewV1(AbstractModelAPIView):
|
|
""" Holds general serialization functions for API v1
|
|
|
|
"""
|
|
|
|
def get(self, request: HttpRequest, id=None):
|
|
""" Handles the GET request
|
|
|
|
Performs the fetching and serialization of the data
|
|
|
|
Args:
|
|
request (HttpRequest): The incoming request
|
|
id (str): The entries id
|
|
|
|
Returns:
|
|
|
|
"""
|
|
try:
|
|
if id is None:
|
|
raise AttributeError("No id provided")
|
|
self.serializer.prepare_lookup(id, self.user)
|
|
data = self.serializer.fetch_and_serialize()
|
|
except Exception as e:
|
|
return self.return_error_response(e, 500)
|
|
return JsonResponse(data)
|
|
|
|
def post(self, request: HttpRequest, id=None):
|
|
try:
|
|
body = request.body.decode("utf-8")
|
|
body = json.loads(body)
|
|
created_id = self.serializer.create_model_from_json(body, self.user)
|
|
except Exception as e:
|
|
return self.return_error_response(e, 500)
|
|
return JsonResponse({"id": created_id})
|
|
|
|
|
|
class InterventionAPIViewV1(AbstractModelAPIViewV1):
|
|
serializer = InterventionAPISerializerV1
|
|
|
|
|
|
class CompensationAPIViewV1(AbstractModelAPIViewV1):
|
|
serializer = CompensationAPISerializerV1
|
|
|
|
|
|
class EcoAccountAPIViewV1(AbstractModelAPIViewV1):
|
|
serializer = EcoAccountAPISerializerV1
|
|
|
|
|
|
class EmaAPIViewV1(AbstractModelAPIViewV1):
|
|
serializer = EmaAPISerializerV1
|