This commit is contained in:
@@ -165,3 +165,18 @@ class AnnouncementSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Announcement
|
||||
fields = '__all__'
|
||||
|
||||
class AdminActivitySerializer(serializers.ModelSerializer):
|
||||
signup_form_config = serializers.JSONField(required=False)
|
||||
description = serializers.CharField(style={'base_template': 'textarea.html'})
|
||||
|
||||
class Meta:
|
||||
model = Activity
|
||||
fields = '__all__'
|
||||
|
||||
class AdminTopicSerializer(serializers.ModelSerializer):
|
||||
content = serializers.CharField(style={'base_template': 'textarea.html'})
|
||||
|
||||
class Meta:
|
||||
model = Topic
|
||||
fields = '__all__'
|
||||
|
||||
@@ -11,7 +11,7 @@ from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
|
||||
from shop.models import WeChatUser, Order
|
||||
from shop.views import get_wechat_pay_client
|
||||
from .models import Activity, ActivitySignup, Topic, Reply, TopicMedia, Announcement
|
||||
from .serializers import ActivitySerializer, ActivitySignupSerializer, TopicSerializer, ReplySerializer, TopicMediaSerializer, AnnouncementSerializer
|
||||
from .serializers import ActivitySerializer, ActivitySignupSerializer, TopicSerializer, ReplySerializer, TopicMediaSerializer, AnnouncementSerializer, AdminActivitySerializer, AdminTopicSerializer
|
||||
from .utils import get_current_wechat_user
|
||||
from .permissions import IsAuthorOrReadOnly
|
||||
|
||||
@@ -441,6 +441,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
|
||||
|
||||
@extend_schema(
|
||||
summary="API发布活动",
|
||||
request=AdminActivitySerializer,
|
||||
parameters=[
|
||||
OpenApiParameter(
|
||||
name='apikey',
|
||||
@@ -469,7 +470,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
|
||||
return Response({'error': 'Admin user not found with this phone number'}, status=404)
|
||||
|
||||
data = request.data.copy()
|
||||
serializer = ActivitySerializer(data=data)
|
||||
serializer = AdminActivitySerializer(data=data)
|
||||
if serializer.is_valid():
|
||||
activity = serializer.save(author=user)
|
||||
return Response(serializer.data, status=201)
|
||||
@@ -477,6 +478,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
|
||||
|
||||
@extend_schema(
|
||||
summary="API发布帖子",
|
||||
request=AdminTopicSerializer,
|
||||
parameters=[
|
||||
OpenApiParameter(
|
||||
name='apikey',
|
||||
@@ -505,8 +507,10 @@ class AdminPublishViewSet(viewsets.ViewSet):
|
||||
return Response({'error': 'Admin user not found with this phone number'}, status=404)
|
||||
|
||||
data = request.data.copy()
|
||||
serializer = TopicSerializer(data=data)
|
||||
serializer = AdminTopicSerializer(data=data)
|
||||
if serializer.is_valid():
|
||||
topic = serializer.save(author=user, status='published')
|
||||
# Only set status to published if not provided, otherwise respect the input
|
||||
status = data.get('status', 'published')
|
||||
topic = serializer.save(author=user, status=status)
|
||||
return Response(serializer.data, status=201)
|
||||
return Response(serializer.errors, status=400)
|
||||
|
||||
Reference in New Issue
Block a user