mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
[Add] ForumPost Top/Light/Nice
This commit is contained in:
parent
65ba399966
commit
60e8910adf
@ -10,9 +10,9 @@ class CreateEditForumPostSerializer(serializers.Serializer):
|
||||
sort = serializers.IntegerField(min_value=0, max_value=20)
|
||||
son_sort = serializers.IntegerField(min_value=0, max_value=20)
|
||||
content = serializers.CharField(max_length=1024 * 1024 * 8)
|
||||
# is_top = serializers.BooleanField()
|
||||
# is_nice = serializers.BooleanField()
|
||||
# is_light = serializers.BooleanField()
|
||||
is_top = serializers.BooleanField()
|
||||
is_nice = serializers.BooleanField()
|
||||
is_light = serializers.BooleanField()
|
||||
|
||||
|
||||
class ForumPostSerializer(serializers.ModelSerializer):
|
||||
@ -26,7 +26,6 @@ class ForumPostSerializer(serializers.ModelSerializer):
|
||||
class CreateEditForumReplySerializer(serializers.Serializer):
|
||||
fa_id = serializers.IntegerField()
|
||||
content = serializers.CharField(max_length=1024 * 1024 * 8)
|
||||
# floor = serializers.IntegerField()
|
||||
is_top = serializers.BooleanField()
|
||||
|
||||
|
||||
@ -42,5 +41,4 @@ class EditForumReplySerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
fa_id = serializers.IntegerField()
|
||||
content = serializers.CharField(max_length=1024 * 1024 * 8)
|
||||
# floor = serializers.IntegerField()
|
||||
is_top = serializers.BooleanField()
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
from django.db.models import Q
|
||||
from utils.api import APIView, validate_serializer
|
||||
from account.models import User
|
||||
from account.decorators import login_required
|
||||
from account.serializers import UserProfileSerializer
|
||||
from forum.models import ForumPost, ForumReply
|
||||
from forum.serializers import (CreateEditForumPostSerializer, ForumPostSerializer,
|
||||
CreateEditForumReplySerializer, EditForumReplySerializer, ForumReplySerializer)
|
||||
@ -18,8 +20,15 @@ class ForumPostAPI(APIView):
|
||||
try:
|
||||
forumpost = ForumPost.objects.get(id=data.pop("id"))
|
||||
username = request.user.username
|
||||
user = User.objects.get(username=str(username), is_disabled=False)
|
||||
admin_type = UserProfileSerializer(user.userprofile, show_real_name=False).data["user"]["admin_type"]
|
||||
if str(username) != str(forumpost.author):
|
||||
return self.error("Username doesn't match")
|
||||
if admin_type != "Super Admin":
|
||||
return self.error("Username doesn't match")
|
||||
if admin_type != "Super Admin":
|
||||
if data["is_top"] or data["is_light"] or data["is_nice"]:
|
||||
return self.error("User doesn't have permission")
|
||||
|
||||
except ForumPost.DoesNotExist:
|
||||
return self.error("ForumPost does not exist")
|
||||
|
||||
@ -28,13 +37,14 @@ class ForumPostAPI(APIView):
|
||||
forumpost.save()
|
||||
|
||||
return self.success(ForumPostSerializer(forumpost).data)
|
||||
|
||||
forumpost = ForumPost.objects.create(title=data["title"],
|
||||
content=data["content"],
|
||||
sort=data["sort"],
|
||||
son_sort=data["son_sort"],
|
||||
is_top=False,
|
||||
is_nice=False,
|
||||
is_light=False,
|
||||
is_top=data["is_top"],
|
||||
is_nice=data["is_light"],
|
||||
is_light=data["is_light"],
|
||||
author=request.user)
|
||||
return self.success(ForumPostSerializer(forumpost).data)
|
||||
|
||||
@ -55,16 +65,12 @@ class ForumPostAPI(APIView):
|
||||
if not limit:
|
||||
return self.error("Limit is needed")
|
||||
|
||||
forumposts = ForumPost.objects.select_related("author").filter()
|
||||
forumposts = ForumPost.objects.select_related("author").filter().order_by("-is_top", "-create_time",)
|
||||
|
||||
# 按照分区筛选
|
||||
sort_text = request.GET.get("sort")
|
||||
if sort_text:
|
||||
forumposts = forumposts.filter(sort=sort_text)
|
||||
# 按照子分区筛选
|
||||
son_sort_text = request.GET.get("son_sort")
|
||||
if son_sort_text:
|
||||
forumposts = forumposts.filter(son_sort=son_sort_text)
|
||||
|
||||
# 搜索的情况
|
||||
keyword = request.GET.get("keyword", "").strip()
|
||||
@ -79,11 +85,11 @@ class ForumPostAPI(APIView):
|
||||
"""
|
||||
delete ForumPost
|
||||
"""
|
||||
if request.GET.get("id"):
|
||||
if request.GET.get("forumpost_id"):
|
||||
username = request.user.username
|
||||
forumpost = ForumPost.objects.get(id=request.GET["id"])
|
||||
forumpost = ForumPost.objects.get(id=request.GET["forumpost_id"])
|
||||
if str(username) == str(forumpost.author):
|
||||
ForumPost.objects.filter(id=request.GET["id"]).delete()
|
||||
ForumPost.objects.filter(id=request.GET["forumpost_id"]).delete()
|
||||
else:
|
||||
return self.error("Username doesn't match")
|
||||
return self.success()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user