diff --git a/unisportomat/quiz/models.py b/unisportomat/quiz/models.py index fa320b1cf6b87dfdd15573c426992ec1aaf80c3b..d832f508ad22c6e3c0fe68974defca77a8c7e575 100644 --- a/unisportomat/quiz/models.py +++ b/unisportomat/quiz/models.py @@ -163,6 +163,9 @@ class CallToMove(models.Model): return self.text def take_base64_image(self, image_data, image_type): + """ + Takes a String of a Base64 Image and writes it onto the objects image field + """ new_image = convert_base64_to_image(image_data, image_type, "activity_img") if new_image is None: @@ -180,6 +183,9 @@ class KnowledgeSnack(models.Model): return self.text def take_base64_image(self, image_data, image_type): + """ + Takes a String of a Base64 Image and writes it onto the objects image field + """ new_image = convert_base64_to_image(image_data, image_type, "snack_image") if new_image is None: @@ -188,6 +194,9 @@ class KnowledgeSnack(models.Model): def convert_base64_to_image(image_data, image_type, image_name): + """ + Converts a Base64-String into a Django Image File + """ if image_data == "": return None diff --git a/unisportomat/quiz/serializers.py b/unisportomat/quiz/serializers.py index f8d8ddb079f68d6d00797b9fe04fbc9483e7d4d6..feced60febcc558e401f81e625abbe3952992b1c 100644 --- a/unisportomat/quiz/serializers.py +++ b/unisportomat/quiz/serializers.py @@ -327,7 +327,14 @@ class SnackTivityListSerializer(serializers.BaseSerializer): class SingleSnackTivitySerializer(serializers.BaseSerializer): + """ + Converts a Single SnackTivity Object to JSON and back + """ + def to_internal_value(self, data): + """ + Validates Data given in a Request + """ validated_data = {} @@ -343,24 +350,27 @@ class SingleSnackTivitySerializer(serializers.BaseSerializer): return validated_data - def to_representation(self, object): + def to_representation(self, obj): + """ + Converts a SnackTivity Model + """ # bug https://code.djangoproject.com/ticket/25528 - has_image = object.image not in [None, ""] + has_image = obj.image not in [None, ""] if has_image: - image_base64 = base64.b64encode(object.image.file.read()) - # TODO: Maybe rethink this? Dunno if unsafe. - image_type = "image/" + object.image.file.name.split(".")[-1] + image_base64 = base64.b64encode(obj.image.file.read()) + # Maybe rethink this? Dunno if unsafe. + image_type = "image/" + obj.image.file.name.split(".")[-1] else: image_base64 = "" image_type = "" data = { - "id": object.pk, - "text_de": object.text_de, - "text_en": object.text_en or "", + "id": obj.pk, + "text_de": obj.text_de, + "text_en": obj.text_en or "", "has_image": has_image, "image_type": image_type, "image": image_base64, diff --git a/unisportomat/quiz/views.py b/unisportomat/quiz/views.py index 45d9ed3724e0b332f4d99018f9d1230565778c3e..c22ff483981471e0a0a6acd4e18b29c0a34bbca7 100644 --- a/unisportomat/quiz/views.py +++ b/unisportomat/quiz/views.py @@ -5,7 +5,6 @@ Defines the views for the API # from django.shortcuts import render from rest_framework import viewsets -from rest_framework import filters from rest_framework.views import APIView from rest_framework.response import Response from django.shortcuts import get_object_or_404 @@ -104,7 +103,7 @@ class SmallSportListView(viewsets.ViewSet): if "ordering" in request.query_params.keys(): order_by = order_by_dict[request.query_params.get("ordering")] - # TODO: Maybe care for is_filled ordering + # Maybe care for is_filled ordering in the Future? sports = Sport.objects.all().order_by(order_by) sports = paginator.paginate_queryset(sports, request) @@ -539,7 +538,7 @@ class SnackTivityView(viewsets.ViewSet): data = SingleSnackTivitySerializer().to_internal_value(request.data) - new_object = self.used_objects() + new_object = self.used_objects() # pylint: disable=not-callable if "text_de" in data.keys(): new_object.text_de = data["text_de"] @@ -572,18 +571,18 @@ class SnackTivityView(viewsets.ViewSet): Assumes every Data was given and fills them out for given PK """ - object = get_object_or_404(self.used_objects, pk=pk) + obj = get_object_or_404(self.used_objects, pk=pk) data = SingleSnackTivitySerializer().to_internal_value(request.data) - object.text_de = data["text_de"] - object.text_en = data["text_en"] + obj.text_de = data["text_de"] + obj.text_en = data["text_en"] - object.take_base64_image(data["image"], data["image_type"]) + obj.take_base64_image(data["image"], data["image_type"]) - object.save() + obj.save() - return Response(SingleSnackTivitySerializer(object).data) + return Response(SingleSnackTivitySerializer(obj).data) def partial_update(self, request, pk=None): """ @@ -591,21 +590,21 @@ class SnackTivityView(viewsets.ViewSet): Fills in Given Data in PK """ - object = get_object_or_404(self.used_objects, pk=pk) + obj = get_object_or_404(self.used_objects, pk=pk) data = SingleSnackTivitySerializer().to_internal_value(request.data) if "text_de" in data.keys(): - object.text_de = data["text_de"] + obj.text_de = data["text_de"] if "text_en" in data.keys(): - object.text_en = data["text_en"] + obj.text_en = data["text_en"] if "image" in data.keys(): - object.take_base64_image(data["image"], data["image_type"]) + obj.take_base64_image(data["image"], data["image_type"]) - object.save() + obj.save() - return Response(SingleSnackTivitySerializer(object).data) + return Response(SingleSnackTivitySerializer(obj).data) def destroy(self, request, pk=None): """ @@ -613,12 +612,12 @@ class SnackTivityView(viewsets.ViewSet): Deletes given PK """ - object = get_object_or_404(self.used_objects, pk=pk) + obj = get_object_or_404(self.used_objects, pk=pk) # Delete Appended Image first - object.image.delete() + obj.image.delete() - object.delete() + obj.delete() return Response(status=404)