diff --git a/src/fellchensammlung/api/serializers.py b/src/fellchensammlung/api/serializers.py index 2c11099..69eb38f 100644 --- a/src/fellchensammlung/api/serializers.py +++ b/src/fellchensammlung/api/serializers.py @@ -14,6 +14,11 @@ class AnimalCreateSerializer(serializers.ModelSerializer): model = Animal fields = ["name", "date_of_birth", "description", "species", "sex", "adoption_notice"] +class RescueOrgSerializer(serializers.ModelSerializer): + class Meta: + model = RescueOrganization + fields = ["name", "location_string", "instagram", "facebook", "fediverse_profile", "email", "phone_number", + "website", "description", "external_object_identifier", "external_source_identifier"] class AnimalGetSerializer(serializers.ModelSerializer): class Meta: diff --git a/src/fellchensammlung/api/views.py b/src/fellchensammlung/api/views.py index 02e101a..5074f8a 100644 --- a/src/fellchensammlung/api/views.py +++ b/src/fellchensammlung/api/views.py @@ -11,7 +11,7 @@ from .serializers import ( RescueOrganizationSerializer, AdoptionNoticeSerializer, ImageCreateSerializer, - SpeciesSerializer, + SpeciesSerializer, RescueOrgSerializer, ) from fellchensammlung.models import Animal, RescueOrganization, AdoptionNotice, Species, Image @@ -122,6 +122,19 @@ class RescueOrganizationApiView(APIView): serializer = RescueOrganizationSerializer(organizations, many=True, context={"request": request}) return Response(serializer.data, status=status.HTTP_200_OK) + @transaction.atomic + def post(self, request, *args, **kwargs): + """ + Create or update a rescue organization. + """ + serializer = RescueOrgSerializer(data=request.data, context={"request": request}) + if serializer.is_valid(): + rescue_org = serializer.save(owner=request.user) + return Response( + {"message": "Rescue organization created/updated successfully successfully!", "id": rescue_org.id}, + status=status.HTTP_201_CREATED, + ) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class AddImageApiView(APIView): permission_classes = [IsAuthenticated]