活动发布
All checks were successful
Deploy to Server / deploy (push) Successful in 24s

This commit is contained in:
jeremygan2021
2026-03-04 13:26:05 +08:00
parent f4a50196d4
commit 1ebcc1d1e1
2 changed files with 23 additions and 4 deletions

View File

@@ -165,3 +165,18 @@ class AnnouncementSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Announcement model = Announcement
fields = '__all__' 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__'

View File

@@ -11,7 +11,7 @@ from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
from shop.models import WeChatUser, Order from shop.models import WeChatUser, Order
from shop.views import get_wechat_pay_client from shop.views import get_wechat_pay_client
from .models import Activity, ActivitySignup, Topic, Reply, TopicMedia, Announcement 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 .utils import get_current_wechat_user
from .permissions import IsAuthorOrReadOnly from .permissions import IsAuthorOrReadOnly
@@ -441,6 +441,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
@extend_schema( @extend_schema(
summary="API发布活动", summary="API发布活动",
request=AdminActivitySerializer,
parameters=[ parameters=[
OpenApiParameter( OpenApiParameter(
name='apikey', name='apikey',
@@ -469,7 +470,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
return Response({'error': 'Admin user not found with this phone number'}, status=404) return Response({'error': 'Admin user not found with this phone number'}, status=404)
data = request.data.copy() data = request.data.copy()
serializer = ActivitySerializer(data=data) serializer = AdminActivitySerializer(data=data)
if serializer.is_valid(): if serializer.is_valid():
activity = serializer.save(author=user) activity = serializer.save(author=user)
return Response(serializer.data, status=201) return Response(serializer.data, status=201)
@@ -477,6 +478,7 @@ class AdminPublishViewSet(viewsets.ViewSet):
@extend_schema( @extend_schema(
summary="API发布帖子", summary="API发布帖子",
request=AdminTopicSerializer,
parameters=[ parameters=[
OpenApiParameter( OpenApiParameter(
name='apikey', name='apikey',
@@ -505,8 +507,10 @@ class AdminPublishViewSet(viewsets.ViewSet):
return Response({'error': 'Admin user not found with this phone number'}, status=404) return Response({'error': 'Admin user not found with this phone number'}, status=404)
data = request.data.copy() data = request.data.copy()
serializer = TopicSerializer(data=data) serializer = AdminTopicSerializer(data=data)
if serializer.is_valid(): 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.data, status=201)
return Response(serializer.errors, status=400) return Response(serializer.errors, status=400)