OnlineJudge/announcement/views/admin.py

63 lines
2.4 KiB
Python
Raw Normal View History

from account.decorators import super_admin_required
2017-01-24 12:53:22 +00:00
from utils.api import APIView, validate_serializer
2016-11-19 04:32:23 +00:00
2017-10-30 07:07:52 +00:00
from announcement.models import Announcement
from announcement.serializers import (AnnouncementSerializer, CreateAnnouncementSerializer,
EditAnnouncementSerializer)
2016-11-19 04:37:27 +00:00
class AnnouncementAdminAPI(APIView):
2016-12-03 12:22:14 +00:00
@validate_serializer(CreateAnnouncementSerializer)
@super_admin_required
def post(self, request):
"""
2016-08-02 14:02:51 +00:00
publish announcement
"""
2016-12-03 12:22:14 +00:00
data = request.data
announcement = Announcement.objects.create(title=data["title"],
content=data["content"],
created_by=request.user,
visible=data["visible"])
2016-12-03 12:22:14 +00:00
return self.success(AnnouncementSerializer(announcement).data)
2016-12-03 12:22:14 +00:00
@validate_serializer(EditAnnouncementSerializer)
@super_admin_required
def put(self, request):
"""
2016-08-02 14:02:51 +00:00
edit announcement
"""
2016-12-03 12:22:14 +00:00
data = request.data
try:
2017-11-06 13:45:52 +00:00
announcement = Announcement.objects.get(id=data.pop("id"))
2016-12-03 12:22:14 +00:00
except Announcement.DoesNotExist:
2017-04-18 18:03:48 +00:00
return self.error("Announcement does not exist")
2017-11-06 13:45:52 +00:00
for k, v in data.items():
setattr(announcement, k, v)
2016-12-03 12:22:14 +00:00
announcement.save()
2016-12-03 12:22:14 +00:00
return self.success(AnnouncementSerializer(announcement).data)
@super_admin_required
def get(self, request):
"""
2016-08-02 14:02:51 +00:00
get announcement list / get one announcement
"""
2017-01-26 05:45:39 +00:00
announcement_id = request.GET.get("id")
2016-08-02 12:50:44 +00:00
if announcement_id:
try:
announcement = Announcement.objects.get(id=announcement_id)
2016-10-29 18:17:35 +00:00
return self.success(AnnouncementSerializer(announcement).data)
2016-08-02 12:50:44 +00:00
except Announcement.DoesNotExist:
2017-04-18 18:03:48 +00:00
return self.error("Announcement does not exist")
announcement = Announcement.objects.all().order_by("-create_time")
2016-10-30 15:29:47 +00:00
if request.GET.get("visible") == "true":
announcement = announcement.filter(visible=True)
2016-11-19 04:32:23 +00:00
return self.success(self.paginate_data(request, announcement, AnnouncementSerializer))
2016-12-03 12:22:14 +00:00
@super_admin_required
def delete(self, request):
2017-01-24 12:53:22 +00:00
if request.GET.get("id"):
Announcement.objects.filter(id=request.GET["id"]).delete()
2016-12-03 12:22:14 +00:00
return self.success()