From c616acdc2cd2a87010c190f1221b56d80586d52f Mon Sep 17 00:00:00 2001 From: Dmitry Titenkov Date: Mon, 17 Nov 2025 13:20:08 +0300 Subject: [PATCH] logging --- backend/api/v1/serializers.py | 2 +- backend/api/v1/views.py | 104 +++++++++++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 2 deletions(-) diff --git a/backend/api/v1/serializers.py b/backend/api/v1/serializers.py index 597cc1d..0f20d9e 100644 --- a/backend/api/v1/serializers.py +++ b/backend/api/v1/serializers.py @@ -33,7 +33,7 @@ class RoomImageReadSerializer(serializers.ModelSerializer): class Meta: model = RoomImage - fields = ("room", "image") + fields = ("id", "room", "image") read_only_fields = ("id",) diff --git a/backend/api/v1/views.py b/backend/api/v1/views.py index 1a6e8f1..f17dfda 100644 --- a/backend/api/v1/views.py +++ b/backend/api/v1/views.py @@ -41,6 +41,31 @@ def get_queryset(self): logger.debug(f"Ошибка при получении типов номеров: {error}", exc_info=True) return RoomType.objects.none() + def perform_create(self, serializer): + try: + serializer.save() + logger.info(f"Создан новый тип номера: {serializer.instance.name}") + except Exception as error: + logger.error(f"Ошибка при создании типа номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось создать тип номера"}) + + def perform_update(self, serializer): + try: + serializer.save() + logger.info(f"Обновлеен тип номера: {serializer.instance.name}") + except Exception as error: + logger.error(f"Ошибка при обновлении типа номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось обновить тип номера"}) + + def perform_destroy(self, instance): + try: + room_type_name = instance.name + instance.delete() + logger.info(f"Удален тип номера: {room_type_name}") + except Exception as error: + logger.error(f"Ошибка при удалении типа номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось удалить тип номера"}) + @extend_schema(tags=["RoomImage"]) class RoomImageViewSet(viewsets.ModelViewSet): @@ -65,6 +90,35 @@ def get_serializer_class(self): ) return RoomImageWriteSerializer + def perform_create(self, serializer): + try: + serializer.save() + logger.info( + f"Загружена новая фотография id = {serializer.instance.id} для номера {serializer.instance.room}" + ) + except Exception as error: + logger.error(f"Ошибка при загрузке фотогрвфии: {error}", exc_info=True) + raise serializers.ValidationError( + {"error": "Не удалось загрузить фотографию"} + ) + + def perform_update(self, serializer): + try: + serializer.save() + logger.info(f"Фотография обновлена id = {serializer.instance.id}") + except Exception as error: + logger.error(f"Ошибка при обновлении фотографии: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось обновить фотографию"}) + + def perform_destroy(self, instance): + try: + image_name = instance.image + instance.delete() + logger.info(f"Фотография удалена: {image_name}") + except Exception as error: + logger.error(f"Ошибка при удалении фотографии: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось удалить фотографию"}) + @extend_schema( tags=["Room"], @@ -117,6 +171,31 @@ def get_queryset(self): logger.error(f"Ошибка при получении списка номеров: {error}", exc_info=True) return Room.objects.none() + def perform_create(self, serializer): + try: + serializer.save() + logger.info(f"Добавлен новый номер: {serializer.instance.title}") + except Exception as error: + logger.error(f"Ошибка при добавлении номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось добавить номер"}) + + def perform_update(self, serializer): + try: + serializer.save() + logger.info(f"Номер обновлен {serializer.instance.title}") + except Exception as error: + logger.error(f"Ошибка при обновлении номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось обновить номер"}) + + def perform_destroy(self, instance): + try: + room_name = instance.title + instance.delete() + logger.info(f"Номер {room_name} удален") + except Exception as error: + logger.error(f"Ошибка при удалении номера: {error}", exc_info=True) + raise serializers.ValidationError({"error": "Не удалось удалить номер"}) + @extend_schema(tags=["Booking"], summary="Работа с бронированиями") class BookingViewSet(viewsets.ModelViewSet): @@ -170,10 +249,33 @@ def perform_create(self, serializer): try: serializer.save(user=self.request.user) logger.info( - f"Пользователь {self.request.user} создал бронирование для номера {serializer.instance.room}" + f"Пользователь {self.request.user} создал бронирование для номера: {serializer.instance.room}" ) except Exception as error: logger.error(f"Не удалось создать бронирование: {error}", exc_info=True) raise serializers.ValidationError( {"error": "Не Удалось создать бронирование"} ) + + def perform_update(self, serializer): + try: + serializer.save(user=self.request.user) + logger.info( + f"Пользователь {self.request.user} обновил бронирование для номера: {serializer.instance.room}" + ) + except Exception as error: + logger.error(f"Ошибка при обновлении бронирования: {error}", exc_info=True) + raise serializers.ValidationError( + {"error": "Не удалось обновить бронирование"} + ) + + def perform_destroy(self, instance): + try: + booking_for_room = instance.room + instance.delete() + logger.info(f"Бронирование для номера {booking_for_room} удалено") + except Exception as error: + logger.error(f"Ошибка при удалении бронирования: {error}", exc_info=True) + raise serializers.ValidationError( + {"error": "Не удалось удалить бронирование"} + )