Browse Source

add serializers

blezz-tech 3 months ago
parent
commit
9dea04cc0d

+ 1 - 0
serializer/__init__.py

@@ -3,3 +3,4 @@ from .frequentaddress import FrequentaddressSerializer
 from .orders_local import OrdersLocalSerializer
 from .orders_local import OrdersLocalSerializer
 from .personinfo import PersonInfoSerializer
 from .personinfo import PersonInfoSerializer
 from .preferreddrivers import PreferreddriversSerializer
 from .preferreddrivers import PreferreddriversSerializer
+from .sport import *

+ 15 - 0
serializer/sport/__init__.py

@@ -0,0 +1,15 @@
+from .achievement import AchievementSerializer
+from .achievements import AchievementsSerializer
+from .blocked_sportsman import BlockedSportsmanSerializer
+from .browse_event import BrowseEventSerializer
+from .browse_sportsman import BrowseSportsmanSerializer
+from .event_gallery import EventGallerySerializer
+from .event import EventSerializer
+from .event_create import EventCreateSerializer
+from .participant import ParticipantSerializer
+from .saved_event import SavedEventSerializer
+from .saved_sportsman import SavedSportsmanSerializer
+from .sport_preferrence import SportPreferrenceSerializer
+from .sport import SportSerializer
+from .sportsman_gallery import SportsmanGallerySerializer
+from .sportsman import SportsmanSerializer

+ 8 - 0
serializer/sport/achievement.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import Achievement
+
+
+class AchievementSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Achievement
+        exclude = ["id"]

+ 8 - 0
serializer/sport/achievements.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import Achievements
+
+
+class AchievementsSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Achievements
+        exclude = ["id"]

+ 8 - 0
serializer/sport/blocked_sportsman.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import BlockedSportsman
+
+
+class BlockedSportsmanSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = BlockedSportsman
+        exclude = ["id"]

+ 8 - 0
serializer/sport/browse_event.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import BrowseEvent
+
+
+class BrowseEventSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = BrowseEvent
+        exclude = ["id"]

+ 8 - 0
serializer/sport/browse_sportsman.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import BrowseSportsman
+
+
+class BrowseSportsmanSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = BrowseSportsman
+        exclude = ["id"]

+ 80 - 0
serializer/sport/event.py

@@ -0,0 +1,80 @@
+from django.forms.models import model_to_dict
+from rest_framework import serializers
+from webservice_running.models import Event
+from webservice_running.exceptions import OrderNotDefined
+
+
+class EventSerializer(serializers.ModelSerializer):
+    service = serializers.IntegerField(source="order_synced.service.pk", allow_null=True, required=False)
+    service_type = serializers.IntegerField(source="order_synced.service_type.pk", allow_null=True, required=False)
+    state = serializers.CharField(source="order_synced.state", allow_null=True, required=False)
+    id_metaservice = serializers.IntegerField(source="order_synced.id_metaservice", allow_null=True, required=False)
+
+    provider = serializers.IntegerField(source="order_synced.provider.pk", allow_null=True, required=False)
+    provider_screen_name = serializers.CharField(source="order_synced.provider.user_id.full_name", allow_null=True, required=False)
+
+    receiver = serializers.IntegerField(source="order_synced.receiver.pk", allow_null=True, required=False)
+    receiver_screen_name = serializers.CharField(source="order_synced.receiver.full_name", allow_null=True, required=False)
+
+    client_id = serializers.CharField(source="order_synced.client_id.pk", allow_null=True, required=False)
+    client_screen_name = serializers.CharField(source="order_synced.client.user.full_name", allow_null=True, required=False)
+
+    #time_created = serializers.DateTimeField(source="order_synced.time_created", allow_null=True)
+    time_placed = serializers.DateTimeField(source="order_synced.time_placed", allow_null=True, required=False)
+    time_start = serializers.DateTimeField(source="order_synced.time_start", allow_null=True, required=False)
+    time_start_real = serializers.DateTimeField(source="order_synced.time_start_real", allow_null=True, required=False)
+    time_start_predicted = serializers.DateTimeField(source="order_synced.time_start_predicted", allow_null=True, required=False)
+    time_finish_predicted = serializers.DateTimeField(source="order_synced.time_finish_predicted", allow_null=True, required=False)
+    time_finish_real = serializers.DateTimeField(source="order_synced.time_finish_real", allow_null=True, required=False)
+
+    predicted_price = serializers.FloatField(source="order_synced.predicted_price", allow_null=True, required=False)
+    real_price = serializers.FloatField(source="order_synced.real_price", allow_null=True, required=False)
+    is_global = serializers.BooleanField(source="order_synced.is_global", allow_null=True, required=False)
+    is_visible = serializers.BooleanField(source="order_synced.is_visible", allow_null=True, required=False)
+    ticket = serializers.IntegerField(source="order_synced.ticket.pk", allow_null=True, required=False)
+    status = serializers.IntegerField(source="order_synced.ticket.stauts", allow_null=True, required=False)
+    priority = serializers.IntegerField(source="order_synced.ticket.priority", allow_null=True, required=False)
+    title = serializers.CharField(source="order_synced.ticket.title", allow_null=True, required=False)
+    note = serializers.CharField(source="order_synced.ticket.note", allow_null=True, required=False)
+    due_date = serializers.DateField(source="order_synced.ticket.due_date", allow_null=True, required=False)
+    status_changed_date = serializers.DateTimeField(source="order_synced.ticket.status_changed_date", allow_null=True, required=False)
+    # order_synced = OrdersSerializer(read_only=True)
+
+    class Meta:
+        model = Event
+        fields = "__all__"
+        # fields = [
+        #     "order",
+        #     "order_synced"
+        # ]
+        # depth = 2
+
+    def update(self, instance, validated_data):
+        """
+        Normally order_synced is not null, but in testing it is null=True, so it can produce exceptions
+        """
+
+        order_instance = instance.order_synced
+        if not order_instance:
+            raise OrderNotDefined()
+        ticket_instance = instance.order_synced.ticket
+        # ОШИБКА ЕСЛИ В validated_data УКАЗАТЬ order_synced
+        for attr, value in validated_data.items():
+            if attr == "order_synced":
+                print("="*100)
+                #print(model_to_dict(value))
+                print("="*100)
+                for order_synced_attr, order_synced_value in value.items():
+                    if order_synced_attr == "ticket":
+                        for ticket_attr, ticket_value in order_synced_value.items():
+                            setattr(ticket_instance, ticket_attr, ticket_value)
+                            continue
+                    else:
+                        setattr(order_instance, order_synced_attr, order_synced_value)
+            else:
+                setattr(instance, attr, value)
+
+        instance.save()
+        ticket_instance.save()
+        order_instance.save()
+        return instance

+ 10 - 0
serializer/sport/event_create.py

@@ -0,0 +1,10 @@
+from rest_framework import serializers
+from webservice_running.models import Event
+
+
+class EventCreateSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Event
+        fields = "__all__"
+
+    

+ 8 - 0
serializer/sport/event_gallery.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import EventGallery
+
+
+class EventGallerySerializer(serializers.ModelSerializer):
+    class Meta:
+        model = EventGallery
+        exclude = ["id"]

+ 13 - 0
serializer/sport/favoritecontacts.py

@@ -0,0 +1,13 @@
+from rest_framework import serializers
+
+from webservice_running.models import Favoritecontacts
+
+
+class FavoritecontactsSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Favoritecontacts
+        fields = [
+            'full_name',
+            'phone_number',
+            'id'
+        ]

+ 12 - 0
serializer/sport/frequentaddress.py

@@ -0,0 +1,12 @@
+from rest_framework import serializers
+
+from webservice_running.models import Frequentaddress
+
+
+class FrequentaddressSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Frequentaddress
+        exclude = [
+            "id",
+            "client"
+        ]

+ 8 - 0
serializer/sport/participant.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import Participant
+
+
+class ParticipantSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Participant
+        exclude = ["id"]

+ 15 - 0
serializer/sport/personinfo.py

@@ -0,0 +1,15 @@
+from django.contrib.auth import get_user_model
+from rest_framework import serializers
+
+
+class PersonInfoSerializer(serializers.ModelSerializer):
+    full_name = serializers.ReadOnlyField()
+
+    class Meta:
+        model = get_user_model()
+        fields = [
+            'full_name'
+        ]
+
+    def validate(self, attrs):
+        return super().validate(attrs)

+ 13 - 0
serializer/sport/preferreddrivers.py

@@ -0,0 +1,13 @@
+from rest_framework import serializers
+
+from webservice_running.models import Preferreddrivers
+
+
+class PreferreddriversSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Preferreddrivers
+        fields = [
+            'provider_id',
+            'client',
+            'id'
+        ]

+ 8 - 0
serializer/sport/saved_event.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import SavedEvent
+
+
+class SavedEventSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = SavedEvent
+        exclude = ["id"]

+ 8 - 0
serializer/sport/saved_sportsman.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import SavedSportsman
+
+
+class SavedSportsmanSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = SavedSportsman
+        exclude = ["id"]

+ 8 - 0
serializer/sport/sport.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import Sport
+
+
+class SportSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Sport
+        exclude = ["id"]

+ 8 - 0
serializer/sport/sport_preferrence.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import SportPreferrence
+
+
+class SportPreferrenceSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = SportPreferrence
+        exclude = ["id"]

+ 86 - 0
serializer/sport/sportsman.py

@@ -0,0 +1,86 @@
+from rest_framework import serializers
+from webservice_running.models import Sportsman
+from metaservicesynced.models import Client
+from SharixAdmin.models import SharixUser
+from webservice_running.exceptions import ClientNotDefined
+from rest_framework.response import Response
+
+
+class SportsmanSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Sportsman
+        exclude = ["blocked_sportsman", 
+                   "browse_sportsman",
+                    "saved_sportsman",
+                    "sport_preferrence",
+                    "achievement",
+                    "saved_event",
+                    "participant",
+                    "browse_event",]
+
+    # User data
+    phone_number = serializers.CharField(source="client.user.phone_number")
+    first_name = serializers.CharField(source="client.user.first_name")
+    last_name = serializers.CharField(source="client.user.last_name")
+    email = serializers.CharField(source="client.user.email")
+    # Client data
+    requirements = serializers.CharField(source="client.requirements")
+    status = serializers.CharField(source="client.status")
+    ticket_status = serializers.IntegerField(source="client.ticket_status.pk")
+    id_metaservice = serializers.IntegerField(source="client.id_metaservice")
+    is_global = serializers.BooleanField(source="client.is_global")
+    is_visible = serializers.BooleanField(source="client.is_visible")
+
+
+    # def create(self, validated_data):
+    #     print("="*30)
+    #     print(validated_data['client'].status)
+    #     # # Temporary solution
+    #     # client_fields = ("requirements", "status", "ticket_status", "id_metaservice", "is_global", "is_visible")
+    #     # for attr, value in validated_data.items():
+    #     #     # If "client" in req, then User model is accessed
+    #     #     if attr == "client":
+    #     #         for u_attr, u_value in value.get('user').items():
+    #     #             setattr(user_instance, u_attr, u_value)
+    #     #     else:
+    #     #         setattr(instance, attr, value)
+
+    #     # for i in validated_data.items():
+    #     #     pass
+    #     # user_instance = SharixUser._default_manager.create(**validated_data)
+    #     # client_instance = Client._default_manager.create(**validated_data)
+    #     # instance = Sportsman._default_manager.create(**validated_data)
+    #     # return instance
+        
+
+    def update(self, instance, validated_data):
+        client_instance = instance.client
+        if not client_instance:
+            raise ClientNotDefined()
+        user_instance = instance.client.user
+
+        for attr, value in validated_data.items():
+            # If "client" in req, then User model is accessed
+            if attr == "client":
+                for u_attr, u_value in value.get('user').items():
+                    setattr(user_instance, u_attr, u_value)
+            else:
+                setattr(instance, attr, value)
+
+        instance.save()
+        user_instance.save()
+        
+        return instance
+
+'''
+
+{
+    'client': {
+        'user': {
+            'phone_number': '99999999999', 
+            'email': 'email'
+        }
+    },
+    'bio': 'bio test'}
+
+'''

+ 8 - 0
serializer/sport/sportsman_gallery.py

@@ -0,0 +1,8 @@
+from rest_framework import serializers
+from webservice_running.models import SportsmanGallery
+
+
+class SportsmanGallerySerializer(serializers.ModelSerializer):
+    class Meta:
+        model = SportsmanGallery
+        exclude = ["id"]