This commit is contained in:
@@ -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__'
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user