-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathadmin.py
More file actions
104 lines (90 loc) · 3.59 KB
/
Copy pathadmin.py
File metadata and controls
104 lines (90 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from account.decorators import super_admin_required
from utils.api import APIView, validate_serializer
from announcement.models import Announcement, AboutUs
from announcement.serializers import (AnnouncementSerializer, CreateAnnouncementSerializer, EditAnnouncementSerializer,
AboutUsSerializer, CreateAboutUsSerializer, EditAboutUsSerializer)
class AnnouncementAdminAPI(APIView):
@validate_serializer(CreateAnnouncementSerializer)
@super_admin_required
def post(self, request):
"""
publish announcement
"""
data = request.data
announcement = Announcement.objects.create(title=data["title"],
content=data["content"],
created_by=request.user,
visible=data["visible"])
return self.success(AnnouncementSerializer(announcement).data)
@validate_serializer(EditAnnouncementSerializer)
@super_admin_required
def put(self, request):
"""
edit announcement
"""
data = request.data
try:
announcement = Announcement.objects.get(id=data.pop("id"))
except Announcement.DoesNotExist:
return self.error("Announcement does not exist")
for k, v in data.items():
setattr(announcement, k, v)
announcement.save()
return self.success(AnnouncementSerializer(announcement).data)
@super_admin_required
def get(self, request):
"""
get announcement list / get one announcement
"""
announcement_id = request.GET.get("id")
if announcement_id:
try:
announcement = Announcement.objects.get(id=announcement_id)
return self.success(AnnouncementSerializer(announcement).data)
except Announcement.DoesNotExist:
return self.error("Announcement does not exist")
announcement = Announcement.objects.all().order_by("-create_time")
if request.GET.get("visible") == "true":
announcement = announcement.filter(visible=True)
return self.success(self.paginate_data(request, announcement, AnnouncementSerializer))
@super_admin_required
def delete(self, request):
if request.GET.get("id"):
Announcement.objects.filter(id=request.GET["id"]).delete()
return self.success()
class AboutUsAdminAPI(APIView):
@validate_serializer(CreateAboutUsSerializer)
@super_admin_required
def post(self, request):
"""
publish aboutus
"""
data = request.data
aboutus = AboutUs.objects.create(content=data["content"])
return self.success(AboutUsSerializer(aboutus).data)
@validate_serializer(EditAboutUsSerializer)
@super_admin_required
def put(self, request):
"""
edit aboutus
"""
data = request.data
try:
aboutus = AboutUs.objects.get(id=1)
except AboutUs.DoesNotExist:
return self.error("About Us does not exist")
for k, v in data.items():
setattr(aboutus, k, v)
aboutus.save()
return self.success(AboutUsSerializer(aboutus).data)
@super_admin_required
def get(self, request):
"""
get about_us list / get about_us
"""
aboutus_id = 1
try:
aboutus = AboutUs.objects.get(id=aboutus_id)
return self.success(AboutUsSerializer(aboutus).data)
except AboutUs.DoesNotExist:
return self.success(None)