15
15
from ..groups .models import Group
16
16
from .forms import AnnouncementAdminForm , AnnouncementEditForm , AnnouncementForm , AnnouncementRequestForm , ClubAnnouncementForm
17
17
from .models import Announcement , AnnouncementRequest
18
- from .notifications import (
19
- admin_request_announcement_email ,
20
- announcement_approved_email ,
21
- announcement_posted_email ,
22
- announcement_posted_twitter ,
23
- request_announcement_email ,
24
- )
18
+ from .notifications import (admin_request_announcement_email , announcement_approved_email , announcement_posted_email , announcement_posted_twitter ,
19
+ request_announcement_email )
25
20
26
21
logger = logging .getLogger (__name__ )
27
22
@@ -131,7 +126,13 @@ def request_announcement_view(request):
131
126
return render (request , "announcements/request.html" , {"form" : form , "action" : "add" })
132
127
133
128
134
- def post_club_announcement_view (request ):
129
+ @login_required
130
+ @deny_restricted
131
+ def add_club_announcement_view (request ):
132
+ if not (request .user .is_announcements_admin or request .user .is_club_officer or request .user .is_club_sponsor ):
133
+ messages .error (request , "You do not have permission to post club announcements." )
134
+ return redirect ("club_announcements" )
135
+
135
136
if request .method == "POST" :
136
137
form = ClubAnnouncementForm (request .user , request .POST )
137
138
@@ -143,13 +144,46 @@ def post_club_announcement_view(request):
143
144
144
145
obj .save ()
145
146
146
- messages .success (request , "Successfully posted announcement." )
147
+ messages .success (request , "Successfully posted club announcement." )
147
148
return redirect ("club_announcements" )
148
149
else :
149
- messages .error (request , "Error adding announcement" )
150
+ messages .error (request , "Error adding club announcement" )
150
151
else :
151
152
form = ClubAnnouncementForm (request .user )
152
- return render (request , "announcements/club-request.html" , {"form" : form , "action" : "add" })
153
+ return render (request , "announcements/club-request.html" , {"form" : form , "action" : "post" })
154
+
155
+ @login_required
156
+ @deny_restricted
157
+ def modify_club_announcement_view (request , announcement_id ):
158
+ announcement = get_object_or_404 (Announcement , id = announcement_id )
159
+
160
+ if not announcement .is_club_announcement :
161
+ messages .error (request , "This announcement is not a club announcement." )
162
+ return redirect ("club_announcements" )
163
+
164
+ if not announcement .can_modify (request .user ):
165
+ messages .error (request , "You do not have permission to modify this club announcement." )
166
+ return redirect ("club_announcements" )
167
+
168
+ if request .method == "POST" :
169
+ form = ClubAnnouncementForm (request .user , request .POST , instance = announcement )
170
+
171
+ if form .is_valid ():
172
+ obj = form .save (commit = True )
173
+ obj .user = request .user
174
+ obj .activity = announcement .activity
175
+ # SAFE HTML
176
+ obj .content = safe_html (obj .content )
177
+
178
+ obj .save ()
179
+
180
+ messages .success (request , "Successfully modified club announcement." )
181
+ return redirect ("club_announcements" )
182
+ else :
183
+ messages .error (request , "Error modifying club announcement" )
184
+ else :
185
+ form = ClubAnnouncementForm (request .user , instance = announcement )
186
+ return render (request , "announcements/club-request.html" , {"form" : form , "action" : "modify" })
153
187
154
188
155
189
@login_required
@@ -355,7 +389,7 @@ def modify_announcement_view(request, announcement_id=None):
355
389
logger .info ("Admin %s modified announcement: %s (%s)" , request .user , announcement , announcement .id )
356
390
return redirect ("index" )
357
391
else :
358
- messages .error (request , "Error adding announcement" )
392
+ messages .error (request , "Error modifying announcement" )
359
393
else :
360
394
announcement = get_object_or_404 (Announcement , id = announcement_id )
361
395
form = AnnouncementEditForm (instance = announcement )
0 commit comments