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,47 @@ 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
+
156
+ @login_required
157
+ @deny_restricted
158
+ def modify_club_announcement_view (request , announcement_id ):
159
+ announcement = get_object_or_404 (Announcement , id = announcement_id )
160
+
161
+ if not announcement .is_club_announcement :
162
+ messages .error (request , "This announcement is not a club announcement." )
163
+ return redirect ("club_announcements" )
164
+
165
+ if not announcement .can_modify (request .user ):
166
+ messages .error (request , "You do not have permission to modify this club announcement." )
167
+ return redirect ("club_announcements" )
168
+
169
+ if request .method == "POST" :
170
+ form = ClubAnnouncementForm (request .user , request .POST , instance = announcement )
171
+
172
+ if form .is_valid ():
173
+ obj = form .save (commit = True )
174
+ obj .user = request .user
175
+ obj .activity = announcement .activity
176
+ # SAFE HTML
177
+ obj .content = safe_html (obj .content )
178
+
179
+ obj .save ()
180
+
181
+ messages .success (request , "Successfully modified club announcement." )
182
+ return redirect ("club_announcements" )
183
+ else :
184
+ messages .error (request , "Error modifying club announcement" )
185
+ else :
186
+ form = ClubAnnouncementForm (request .user , instance = announcement )
187
+ return render (request , "announcements/club-request.html" , {"form" : form , "action" : "modify" })
153
188
154
189
155
190
@login_required
@@ -355,7 +390,7 @@ def modify_announcement_view(request, announcement_id=None):
355
390
logger .info ("Admin %s modified announcement: %s (%s)" , request .user , announcement , announcement .id )
356
391
return redirect ("index" )
357
392
else :
358
- messages .error (request , "Error adding announcement" )
393
+ messages .error (request , "Error modifying announcement" )
359
394
else :
360
395
announcement = get_object_or_404 (Announcement , id = announcement_id )
361
396
form = AnnouncementEditForm (instance = announcement )
0 commit comments