全局的announcement api

This commit is contained in:
zema1 2017-10-30 15:07:52 +08:00
parent 728373a5ff
commit f0655ee305
8 changed files with 28 additions and 6 deletions

View File

@ -15,3 +15,4 @@ class Announcement(models.Model):
class Meta:
db_table = "announcement"
ordering = ('-create_time',)

View File

@ -1,6 +1,6 @@
from django.conf.urls import url
from ..views import AnnouncementAdminAPI
from ..views.admin import AnnouncementAdminAPI
urlpatterns = [
url(r"^announcement/?$", AnnouncementAdminAPI.as_view(), name="announcement_admin_api"),

7
announcement/urls/oj.py Normal file
View File

@ -0,0 +1,7 @@
from django.conf.urls import url
from ..views.oj import AnnouncementAPI
urlpatterns = [
url(r"^announcement/?$", AnnouncementAPI.as_view(), name="announcement_admin_api"),
]

View File

View File

@ -1,8 +1,8 @@
from account.decorators import super_admin_required
from utils.api import APIView, validate_serializer
from .models import Announcement
from .serializers import (AnnouncementSerializer, CreateAnnouncementSerializer,
from announcement.models import Announcement
from announcement.serializers import (AnnouncementSerializer, CreateAnnouncementSerializer,
EditAnnouncementSerializer)

10
announcement/views/oj.py Normal file
View File

@ -0,0 +1,10 @@
from utils.api import APIView
from announcement.models import Announcement
from announcement.serializers import AnnouncementSerializer
class AnnouncementAPI(APIView):
def get(self, request):
announcements = Announcement.objects.filter(visible=True)
return self.success(self.paginate_data(request, announcements, AnnouncementSerializer))

View File

@ -110,10 +110,13 @@ class ContestAnnouncementAPI(APIView):
except ContestAnnouncement.DoesNotExist:
return self.error("Contest announcement does not exist")
contest_announcements = ContestAnnouncement.objects.all().order_by("-create_time")
contest_id = request.GET.get("contest_id")
if not contest_id:
return self.error("Paramater error")
contest_announcements = ContestAnnouncement.objects.filter(contest_id=contest_id)
if request.user.is_admin():
contest_announcements = contest_announcements.filter(created_by=request.user)
keyword = request.GET.get("keyword")
if keyword:
contest_announcements = contest_announcements.filter(title__contains=keyword)
return self.success(self.paginate_data(request, contest_announcements, ContestAnnouncementSerializer))
return self.success(ContestAnnouncementSerializer(contest_announcements, many=True).data)

View File

@ -3,6 +3,7 @@ from django.conf.urls import include, url
urlpatterns = [
url(r"^api/", include("account.urls.oj")),
url(r"^api/admin/", include("account.urls.admin")),
url(r"^api/", include("announcement.urls.oj")),
url(r"^api/admin/", include("announcement.urls.admin")),
url(r"^api/", include("conf.urls.oj")),
url(r"^api/admin/", include("conf.urls.admin")),