add announcement delete api
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from utils.api.tests import APITestCase, APIClient
|
||||
from utils.api.tests import APITestCase
|
||||
|
||||
from .models import Announcement
|
||||
|
||||
|
||||
class AnnouncementAdminTest(APITestCase):
|
||||
@@ -16,6 +18,7 @@ class AnnouncementAdminTest(APITestCase):
|
||||
def test_create_announcement(self):
|
||||
resp = self.create_announcement()
|
||||
self.assertSuccess(resp)
|
||||
return resp
|
||||
|
||||
def test_edit_announcement(self):
|
||||
data = {"id": self.create_announcement().data["data"]["id"], "title": "ahaha", "content": "test content",
|
||||
@@ -26,3 +29,9 @@ class AnnouncementAdminTest(APITestCase):
|
||||
self.assertEqual(resp_data["title"], "ahaha")
|
||||
self.assertEqual(resp_data["content"], "test content")
|
||||
self.assertEqual(resp_data["visible"], False)
|
||||
|
||||
def test_delete_announcemen(self):
|
||||
id = self.test_create_announcement().data["data"]["id"]
|
||||
resp = self.client.delete(self.url, data={'id': id})
|
||||
self.assertSuccess(resp)
|
||||
self.assertFalse(Announcement.objects.filter(id=id).exists())
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from account.decorators import super_admin_required
|
||||
from utils.api import APIView
|
||||
from utils.api import APIView, validate_serializer, IDOnlySerializer
|
||||
|
||||
from .models import Announcement
|
||||
from .serializers import (CreateAnnouncementSerializer, AnnouncementSerializer,
|
||||
@@ -9,42 +9,36 @@ from .serializers import (CreateAnnouncementSerializer, AnnouncementSerializer,
|
||||
|
||||
|
||||
class AnnouncementAdminAPI(APIView):
|
||||
@validate_serializer(CreateAnnouncementSerializer)
|
||||
@super_admin_required
|
||||
def post(self, request):
|
||||
"""
|
||||
publish announcement
|
||||
"""
|
||||
serializer = CreateAnnouncementSerializer(data=request.data)
|
||||
if serializer.is_valid():
|
||||
data = serializer.data
|
||||
announcement = Announcement.objects.create(title=data["title"],
|
||||
content=data["content"],
|
||||
created_by=request.user)
|
||||
return self.success(AnnouncementSerializer(announcement).data)
|
||||
else:
|
||||
return self.invalid_serializer(serializer)
|
||||
data = request.data
|
||||
announcement = Announcement.objects.create(title=data["title"],
|
||||
content=data["content"],
|
||||
created_by=request.user)
|
||||
return self.success(AnnouncementSerializer(announcement).data)
|
||||
|
||||
@validate_serializer(EditAnnouncementSerializer)
|
||||
@super_admin_required
|
||||
def put(self, request):
|
||||
"""
|
||||
edit announcement
|
||||
"""
|
||||
serializer = EditAnnouncementSerializer(data=request.data)
|
||||
if serializer.is_valid():
|
||||
data = serializer.data
|
||||
try:
|
||||
announcement = Announcement.objects.get(id=data["id"])
|
||||
except Announcement.DoesNotExist:
|
||||
return self.error(_("Announcement does not exist"))
|
||||
data = request.data
|
||||
try:
|
||||
announcement = Announcement.objects.get(id=data["id"])
|
||||
except Announcement.DoesNotExist:
|
||||
return self.error(_("Announcement does not exist"))
|
||||
|
||||
announcement.title = data["title"]
|
||||
announcement.content = data["content"]
|
||||
announcement.visible = data["visible"]
|
||||
announcement.save()
|
||||
announcement.title = data["title"]
|
||||
announcement.content = data["content"]
|
||||
announcement.visible = data["visible"]
|
||||
announcement.save()
|
||||
|
||||
return self.success(AnnouncementSerializer(announcement).data)
|
||||
else:
|
||||
return self.invalid_serializer(serializer)
|
||||
return self.success(AnnouncementSerializer(announcement).data)
|
||||
|
||||
@super_admin_required
|
||||
def get(self, request):
|
||||
@@ -62,3 +56,9 @@ class AnnouncementAdminAPI(APIView):
|
||||
if request.GET.get("visible") == "true":
|
||||
announcement = announcement.filter(visible=True)
|
||||
return self.success(self.paginate_data(request, announcement, AnnouncementSerializer))
|
||||
|
||||
@validate_serializer(IDOnlySerializer)
|
||||
@super_admin_required
|
||||
def delete(self, request):
|
||||
Announcement.objects.filter(id=request.data["id"]).delete()
|
||||
return self.success()
|
||||
|
||||
Reference in New Issue
Block a user