gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
This commit is contained in:
83
core/apps/eggs/serializers/add_courier.py
Normal file
83
core/apps/eggs/serializers/add_courier.py
Normal file
@@ -0,0 +1,83 @@
|
||||
from django.core import exceptions
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.http.models import User
|
||||
from core.apps.eggs import models
|
||||
from core.apps.eggs.serializers import CourierHistorySerializer
|
||||
|
||||
|
||||
class AddCourierSerializer(serializers.ModelSerializer):
|
||||
courier_id = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = (
|
||||
"courier_id",
|
||||
"id",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"phone",
|
||||
"username",
|
||||
"role",
|
||||
"avatar",
|
||||
"password",
|
||||
)
|
||||
|
||||
def create(self, validated_data):
|
||||
validated_data["role"] = "courier"
|
||||
user = User.objects.create_user(**validated_data)
|
||||
courier = models.Courier.objects.create(user_id=user)
|
||||
|
||||
request_user = self.context["request"].user
|
||||
created_who = f"{request_user.first_name} {request_user.last_name}"
|
||||
|
||||
models.History.objects.create(
|
||||
content_object=courier,
|
||||
action="courier_created",
|
||||
created_who=created_who,
|
||||
user_id=user,
|
||||
created_by=f"{user.first_name} {user.last_name}",
|
||||
reason="Kuryer qo'shildi",
|
||||
avatar=user.avatar if user.avatar else None,
|
||||
)
|
||||
|
||||
return user
|
||||
|
||||
def get_courier_id(self, obj):
|
||||
courier = models.Courier.objects.filter(user_id=obj.id).first()
|
||||
return courier.id if courier else None
|
||||
|
||||
|
||||
class CouriersListSerializer(serializers.ModelSerializer):
|
||||
courier_history = serializers.SerializerMethodField()
|
||||
avatar = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = (
|
||||
"id",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"phone",
|
||||
"username",
|
||||
"avatar",
|
||||
"role",
|
||||
"courier_history",
|
||||
"avatar",
|
||||
)
|
||||
|
||||
def get_courier_history(self, obj):
|
||||
try:
|
||||
user = User.objects.get(id=obj.id, role="courier")
|
||||
courier = models.Courier.objects.get(user_id=user.id)
|
||||
courier_history = models.CourierHistory.objects.filter(
|
||||
courier_id=courier.id
|
||||
) # noqa
|
||||
return CourierHistorySerializer(courier_history, many=True).data
|
||||
except exceptions.ObjectDoesNotExist:
|
||||
return []
|
||||
|
||||
def get_avatar(self, obj):
|
||||
if obj.avatar:
|
||||
return obj.avatar.url
|
||||
return None
|
||||
Reference in New Issue
Block a user