Search ads uchun api chiqarildi

This commit is contained in:
2025-11-27 15:02:23 +05:00
parent 94f129c446
commit 02fd95fe1f
12 changed files with 206 additions and 2 deletions

View File

@@ -1 +1,2 @@
from .search import * # noqa
from .search_ads import * # noqa

View File

@@ -0,0 +1,58 @@
from rest_framework import serializers
from core.apps.api.models import AdModel
class BaseSearchAdsSerializer(serializers.ModelSerializer):
category = serializers.SerializerMethodField()
class Meta:
model = AdModel
fields = [
"id",
"name",
"image",
"category"
]
def get_category(self, obj):
request = self.context.get("request")
lang = request.headers.get("Accept-Language", "uz")
lang = lang.split(",")[0].split("-")[0]
if lang not in ["uz", "ru", "en"]:
lang = "uz"
category = obj.category
if not category:
return None
chain = []
current = category
while current:
chain.append(current)
current = current.parent
chain = list(reversed(chain))
result = None
for cat in reversed(chain):
result = {
"id": cat.id,
"name": getattr(cat, f"name_{lang}"),
"children": result
}
return result
class ListSearchAdsSerializer(BaseSearchAdsSerializer):
class Meta(BaseSearchAdsSerializer.Meta): ...
class RetrieveSearchAdsSerializer(BaseSearchAdsSerializer):
class Meta(BaseSearchAdsSerializer.Meta): ...
class CreateSearchAdsSerializer(BaseSearchAdsSerializer):
class Meta(BaseSearchAdsSerializer.Meta): ...