diff --git a/announcement/models.py b/announcement/models.py index 49f57b82..c7252e90 100644 --- a/announcement/models.py +++ b/announcement/models.py @@ -15,3 +15,4 @@ class Announcement(models.Model): class Meta: db_table = "announcement" + ordering = ('-create_time',) diff --git a/announcement/urls/admin.py b/announcement/urls/admin.py index 6b9ce0f8..09673e63 100644 --- a/announcement/urls/admin.py +++ b/announcement/urls/admin.py @@ -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"), diff --git a/announcement/urls/oj.py b/announcement/urls/oj.py new file mode 100644 index 00000000..71bcf3ae --- /dev/null +++ b/announcement/urls/oj.py @@ -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"), +] diff --git a/announcement/views/__init__.py b/announcement/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/announcement/views.py b/announcement/views/admin.py similarity index 91% rename from announcement/views.py rename to announcement/views/admin.py index f607a7d2..86d54303 100644 --- a/announcement/views.py +++ b/announcement/views/admin.py @@ -1,9 +1,9 @@ from account.decorators import super_admin_required from utils.api import APIView, validate_serializer -from .models import Announcement -from .serializers import (AnnouncementSerializer, CreateAnnouncementSerializer, - EditAnnouncementSerializer) +from announcement.models import Announcement +from announcement.serializers import (AnnouncementSerializer, CreateAnnouncementSerializer, + EditAnnouncementSerializer) class AnnouncementAdminAPI(APIView): diff --git a/announcement/views/oj.py b/announcement/views/oj.py new file mode 100644 index 00000000..1176c368 --- /dev/null +++ b/announcement/views/oj.py @@ -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)) diff --git a/contest/views/admin.py b/contest/views/admin.py index 37244fad..58e8c7b0 100644 --- a/contest/views/admin.py +++ b/contest/views/admin.py @@ -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) diff --git a/oj/urls.py b/oj/urls.py index 5eda6283..3a2570bc 100644 --- a/oj/urls.py +++ b/oj/urls.py @@ -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")),