Compare commits

...

3 Commits

Author SHA1 Message Date
bad6bfb4c0 * Updated field naming in some serializers
* Admin tweaks
* Settings editing only for admin
2024-05-30 21:02:07 +04:00
849457a051 * SimpleRouter for non-debug environment 2024-05-30 20:59:46 +04:00
8f0096946f * Make API schema visible only for admins 2024-05-30 20:58:13 +04:00
9 changed files with 28 additions and 20 deletions

View File

@ -1,9 +1,9 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from account import views
from poizonstore.utils import get_drf_router
router = DefaultRouter()
router = get_drf_router()
router.register("users", views.UserViewSet)
urlpatterns = [

View File

@ -7,13 +7,14 @@ from poizonstore.utils import PriceField
class GlobalSettingsSerializer(serializers.ModelSerializer):
yuan_rate = PriceField(source='full_yuan_rate', read_only=True)
yuan_rate_commission = PriceField()
chinadelivery = PriceField(source='delivery_price_CN')
commission = PriceField(source='commission_rub')
pickup = serializers.CharField(source='pickup_address')
delivery_price_CN = PriceField()
commission_rub = PriceField()
pickup_address = serializers.CharField()
class Meta:
model = GlobalSettings
fields = ('yuan_rate', 'yuan_rate_last_updated', 'yuan_rate_commission', 'commission', 'chinadelivery', 'pickup', 'time_to_buy')
fields = ('yuan_rate', 'yuan_rate_last_updated', 'yuan_rate_commission',
'commission_rub', 'delivery_price_CN', 'pickup_address', 'time_to_buy')
read_only_fields = ('yuan_rate_last_updated',)

View File

@ -1,9 +1,9 @@
from django.urls import path
from rest_framework.routers import DefaultRouter
from poizonstore.utils import get_drf_router
from . import views
router = DefaultRouter()
router = get_drf_router()
urlpatterns = [

View File

@ -1,13 +1,13 @@
from rest_framework import generics
from account.permissions import IsManager, ReadOnly
from account.permissions import ReadOnly, IsAdmin
from core.models import GlobalSettings
from core.serializers import GlobalSettingsSerializer, AnonymousGlobalSettingsSerializer
class GlobalSettingsAPI(generics.RetrieveUpdateAPIView):
serializer_class = GlobalSettingsSerializer
permission_classes = [IsManager | ReadOnly]
permission_classes = [IsAdmin | ReadOnly]
def get_serializer_class(self):
if getattr(self.request.user, 'is_manager', False):

View File

@ -17,9 +17,11 @@ Including another URLconf
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.auth.decorators import permission_required
from django.urls import path, include
from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView
from account.permissions import IsAdmin
urlpatterns = [
path('admin/', admin.site.urls),
@ -31,8 +33,7 @@ urlpatterns = [
+ static(settings.STATIC_URL)
# API schema
if settings.DEBUG:
urlpatterns += [
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]
urlpatterns += [
path('api/schema/', permission_required([IsAdmin])(SpectacularAPIView.as_view()), name='schema'),
path('api/redoc/', permission_required([IsAdmin])(SpectacularRedocView.as_view(url_name='schema')), name='redoc'),
]

View File

@ -1,7 +1,9 @@
from functools import reduce
from django.conf import settings
from django_filters import DateFromToRangeFilter as _DateFromToRangeFilter
from rest_framework.fields import DecimalField
from rest_framework.routers import SimpleRouter, DefaultRouter
class PriceField(DecimalField):
@ -20,3 +22,7 @@ class DateFromToRangeFilter(_DateFromToRangeFilter):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.field.widget.suffixes = ['from', 'to']
def get_drf_router():
return DefaultRouter() if settings.DEBUG else SimpleRouter()

View File

@ -18,7 +18,7 @@ class ImageAdmin(admin.ModelAdmin):
@admin.register(Checklist)
class ChecklistAdmin(admin.ModelAdmin):
list_display = ('id', 'brand', 'model', 'price_rub', 'commission_rub', 'full_price', 'date', 'status_display')
list_display = ('id', 'brand', 'model', 'price_rub', 'commission_rub', 'full_price', 'date', 'status_display', 'customer')
ordering = ('-status_updated_at', '-created_at')
@display(description='Статус')

View File

@ -38,11 +38,11 @@ class CategoryChecklistSerializer(serializers.ModelSerializer):
class CategorySerializer(serializers.ModelSerializer):
chinarush = PriceField(source='delivery_price_CN_RU')
delivery_price_CN_RU = PriceField()
class Meta:
model = Category
fields = ('id', 'name', 'chinarush', 'commission')
fields = ('id', 'name', 'delivery_price_CN_RU', 'commission')
class CategoryFullSerializer(CategorySerializer):

View File

@ -1,9 +1,9 @@
from django.urls import path
from rest_framework.routers import DefaultRouter
from poizonstore.utils import get_drf_router
from store import views
router = DefaultRouter()
router = get_drf_router()
router.register(r'checklist', views.ChecklistAPI, basename='checklist')