2015-08-04 09:38:04 +00:00
|
|
|
# coding=utf-8
|
|
|
|
from rest_framework.views import APIView
|
|
|
|
|
2015-08-10 07:01:40 +00:00
|
|
|
from django.shortcuts import render
|
2015-08-04 09:38:04 +00:00
|
|
|
from utils.shortcuts import serializer_invalid_response, error_response, success_response
|
|
|
|
|
2015-08-14 02:22:32 +00:00
|
|
|
from utils.shortcuts import paginate, error_page
|
2015-08-18 08:03:49 +00:00
|
|
|
from account.models import SUPER_ADMIN, ADMIN
|
2015-10-16 12:43:34 +00:00
|
|
|
from account.decorators import super_admin_required
|
2015-08-18 08:03:49 +00:00
|
|
|
from group.models import Group
|
2015-08-04 09:38:04 +00:00
|
|
|
from .models import Announcement
|
2015-08-06 11:07:46 +00:00
|
|
|
from .serializers import (CreateAnnouncementSerializer, AnnouncementSerializer,
|
|
|
|
EditAnnouncementSerializer)
|
2015-08-04 09:38:04 +00:00
|
|
|
|
|
|
|
|
2015-08-10 07:01:40 +00:00
|
|
|
def announcement_page(request, announcement_id):
|
2015-10-16 12:43:34 +00:00
|
|
|
"""
|
|
|
|
公告的详情页面
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
announcement = Announcement.objects.get(id=announcement_id, visible=True)
|
|
|
|
except Announcement.DoesNotExist:
|
|
|
|
return error_page(request, u"公告不存在")
|
2015-09-21 04:32:50 +00:00
|
|
|
return render(request, "oj/announcement/announcement.html", {"announcement": announcement})
|
2015-08-10 07:01:40 +00:00
|
|
|
|
|
|
|
|
2015-08-06 08:28:59 +00:00
|
|
|
class AnnouncementAdminAPIView(APIView):
|
2015-10-16 12:43:34 +00:00
|
|
|
@super_admin_required
|
2015-08-04 09:38:04 +00:00
|
|
|
def post(self, request):
|
|
|
|
"""
|
|
|
|
公告发布json api接口
|
|
|
|
---
|
2015-08-06 08:28:59 +00:00
|
|
|
request_serializer: CreateAnnouncementSerializer
|
2015-08-04 09:38:04 +00:00
|
|
|
"""
|
2015-08-07 14:01:16 +00:00
|
|
|
serializer = CreateAnnouncementSerializer(data=request.data)
|
2015-08-04 09:38:04 +00:00
|
|
|
if serializer.is_valid():
|
|
|
|
data = serializer.data
|
2015-10-16 12:43:34 +00:00
|
|
|
Announcement.objects.create(title=data["title"], content=data["content"], created_by=request.user)
|
2015-08-04 09:38:04 +00:00
|
|
|
return success_response(u"公告发布成功!")
|
|
|
|
else:
|
2015-08-06 08:28:59 +00:00
|
|
|
return serializer_invalid_response(serializer)
|
|
|
|
|
2015-10-16 12:43:34 +00:00
|
|
|
@super_admin_required
|
2015-08-06 11:07:46 +00:00
|
|
|
def put(self, request):
|
|
|
|
"""
|
|
|
|
公告编辑json api接口
|
|
|
|
---
|
|
|
|
request_serializer: EditAnnouncementSerializer
|
|
|
|
response_serializer: AnnouncementSerializer
|
|
|
|
"""
|
2015-08-07 14:01:16 +00:00
|
|
|
serializer = EditAnnouncementSerializer(data=request.data)
|
2015-08-06 11:07:46 +00:00
|
|
|
if serializer.is_valid():
|
|
|
|
data = serializer.data
|
|
|
|
try:
|
2015-10-16 12:43:34 +00:00
|
|
|
announcement = Announcement.objects.get(id=data["id"])
|
2015-08-06 11:07:46 +00:00
|
|
|
except Announcement.DoesNotExist:
|
2015-08-18 08:03:49 +00:00
|
|
|
return error_response(u"公告不存在")
|
2015-10-16 12:43:34 +00:00
|
|
|
|
2015-08-06 11:07:46 +00:00
|
|
|
announcement.title = data["title"]
|
|
|
|
announcement.content = data["content"]
|
|
|
|
announcement.visible = data["visible"]
|
|
|
|
announcement.save()
|
2015-08-18 08:03:49 +00:00
|
|
|
|
2015-08-06 11:07:46 +00:00
|
|
|
return success_response(AnnouncementSerializer(announcement).data)
|
|
|
|
else:
|
|
|
|
return serializer_invalid_response(serializer)
|
|
|
|
|
2015-10-16 12:43:34 +00:00
|
|
|
@super_admin_required
|
2015-08-06 08:28:59 +00:00
|
|
|
def get(self, request):
|
|
|
|
"""
|
|
|
|
公告分页json api接口
|
|
|
|
---
|
2015-08-06 08:49:48 +00:00
|
|
|
response_serializer: AnnouncementSerializer
|
2015-08-06 08:28:59 +00:00
|
|
|
"""
|
2015-10-16 12:43:34 +00:00
|
|
|
announcement = Announcement.objects.all().order_by("-create_time")
|
2015-08-07 12:25:06 +00:00
|
|
|
visible = request.GET.get("visible", None)
|
|
|
|
if visible:
|
|
|
|
announcement = announcement.filter(visible=(visible == "true"))
|
2015-08-06 08:28:59 +00:00
|
|
|
return paginate(request, announcement, AnnouncementSerializer)
|