(add, done): add common api, and done common app tasks
This commit is contained in:
@@ -29,7 +29,8 @@ urlpatterns = [
|
|||||||
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
|
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
|
||||||
path('api/v1/', include(
|
path('api/v1/', include(
|
||||||
[
|
[
|
||||||
path('accounts/', include('core.apps.accounts.urls'))
|
path('accounts/', include('core.apps.accounts.urls')),
|
||||||
|
path('common/', include('core.apps.common.urls')),
|
||||||
]
|
]
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ class AboutUsAdmin(TranslationAdmin):
|
|||||||
list_display = ['title', 'description']
|
list_display = ['title', 'description']
|
||||||
inlines = [AboutUsImageInline, AboutUsFeatureInline]
|
inlines = [AboutUsImageInline, AboutUsFeatureInline]
|
||||||
|
|
||||||
|
def has_add_permission(self, request):
|
||||||
|
if self.model.objects.count() > 0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Service)
|
@admin.register(models.Service)
|
||||||
class ServiceAdmin(TranslationAdmin):
|
class ServiceAdmin(TranslationAdmin):
|
||||||
|
|||||||
69
core/apps/common/serializers.py
Normal file
69
core/apps/common/serializers.py
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from core.apps.common import models
|
||||||
|
|
||||||
|
|
||||||
|
class SiteConfigSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.SiteConfig
|
||||||
|
fields = [
|
||||||
|
'telegram', 'instagram', 'youtube', 'facebook'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class AboutUsFeatureListSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.AboutUsFeature
|
||||||
|
fields = [
|
||||||
|
'id', 'text'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class AboutUsImageListSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.AboutUsImage
|
||||||
|
fields = [
|
||||||
|
'id', 'image'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class AboutUsSerializer(serializers.ModelSerializer):
|
||||||
|
images = AboutUsImageListSerializer(many=True)
|
||||||
|
features = AboutUsFeatureListSerializer(many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.AboutUs
|
||||||
|
fields = [
|
||||||
|
'id', 'title', 'description', 'images', 'features'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class BannerListSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.Banner
|
||||||
|
fields = [
|
||||||
|
'id', 'banner'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceListSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.Service
|
||||||
|
fields = [
|
||||||
|
'id', 'title', 'text', 'icon', 'image',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class NewsSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.News
|
||||||
|
fields = ['id', 'image', 'title', 'text']
|
||||||
|
|
||||||
|
|
||||||
|
class ContactUsSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.ContactUs
|
||||||
|
fields = [
|
||||||
|
'first_name', 'last_name', 'phone', 'email', 'service', 'message',
|
||||||
|
]
|
||||||
|
|
||||||
12
core/apps/common/urls.py
Normal file
12
core/apps/common/urls.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from core.apps.common import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('site_config/', views.SiteConfigApiView.as_view()),
|
||||||
|
path('about_us/', views.AboutUsApiView.as_view()),
|
||||||
|
path('banners/', views.BannerListApiView.as_view()),
|
||||||
|
path('services/', views.ServiceListApiView.as_view()),
|
||||||
|
path('news/', views.NewsListApiView.as_view()),
|
||||||
|
path('contact_us/', views.ContactUsApiView.as_view()),
|
||||||
|
]
|
||||||
@@ -1,3 +1,45 @@
|
|||||||
from django.shortcuts import render
|
from rest_framework import generics
|
||||||
|
from rest_framework.response import Response
|
||||||
|
|
||||||
# Create your views here.
|
from core.apps.common import models, serializers
|
||||||
|
|
||||||
|
|
||||||
|
class SiteConfigApiView(generics.GenericAPIView):
|
||||||
|
queryset = models.SiteConfig.objects.all()
|
||||||
|
serializer_class = serializers.SiteConfigSerializer
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
site_config = models.SiteConfig.objects.first()
|
||||||
|
serializer = self.serializer_class(site_config)
|
||||||
|
return Response(serializer.data, status=200)
|
||||||
|
|
||||||
|
|
||||||
|
class AboutUsApiView(generics.GenericAPIView):
|
||||||
|
queryset = models.AboutUs.objects.all()
|
||||||
|
serializer_class = serializers.AboutUsSerializer
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
about_us = models.AboutUs.objects.prefetch_related('images', 'features').first()
|
||||||
|
serializer = self.serializer_class(about_us)
|
||||||
|
return Response(serializer.data, status=200)
|
||||||
|
|
||||||
|
|
||||||
|
class BannerListApiView(generics.ListAPIView):
|
||||||
|
serializer_class = serializers.BannerListSerializer
|
||||||
|
queryset = models.Banner.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceListApiView(generics.ListAPIView):
|
||||||
|
serializer_class = serializers.ServiceListSerializer
|
||||||
|
queryset = models.Service.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
class NewsListApiView(generics.ListAPIView):
|
||||||
|
serializer_class = serializers.NewsSerializer
|
||||||
|
queryset = models.News.objects.all()
|
||||||
|
|
||||||
|
|
||||||
|
class ContactUsApiView(generics.CreateAPIView):
|
||||||
|
serializer_class = serializers.ContactUsSerializer
|
||||||
|
queryset = models.ContactUs.objects.all()
|
||||||
|
|
||||||
Reference in New Issue
Block a user