77from django .db import IntegrityError
88from django .conf import settings
99from django .contrib .auth import REDIRECT_FIELD_NAME
10- from django .http import HttpResponse , Http404 , HttpResponseRedirect
11- from django .shortcuts import get_object_or_404 , render_to_response
12- from django .template import RequestContext
10+ from django .http import HttpResponse , HttpResponseForbidden , Http404 , HttpResponseRedirect
11+ from django .shortcuts import get_object_or_404 , render , redirect
1312from django .utils .http import urlquote
13+ from django .contrib .auth .decorators import login_required
1414
1515from ietf .community .models import CommunityList , Rule , EmailSubscription
1616from ietf .community .forms import RuleForm , DisplayForm , SubscribeForm , UnSubscribeForm
1717from ietf .group .models import Group
18- from ietf .doc .models import DocEvent , DocAlias
18+ from ietf .doc .models import DocEvent , Document
1919
2020
2121def _manage_list (request , clist ):
@@ -41,12 +41,11 @@ def _manage_list(request, clist):
4141 rule_form = RuleForm (clist = clist )
4242 display_form = DisplayForm (instance = display_config )
4343 clist = CommunityList .objects .get (id = clist .id )
44- return render_to_response ( 'community/manage_clist.html' ,
44+ return render ( request , 'community/manage_clist.html' ,
4545 {'cl' : clist ,
4646 'dc' : display_config ,
4747 'display_form' : display_form ,
48- 'rule_form' : rule_form },
49- context_instance = RequestContext (request ))
48+ 'rule_form' : rule_form })
5049
5150
5251def manage_personal_list (request ):
@@ -74,52 +73,49 @@ def manage_group_list(request, acronym):
7473 return HttpResponseRedirect ('%s?%s=%s' % tup )
7574 return _manage_list (request , clist )
7675
77-
78- def add_track_document (request , document_name ):
79- """supports the "Track this document" functionality
80-
81- This is exposed in the document view and in document search results."""
82- if not request .user .is_authenticated ():
83- path = urlquote (request .get_full_path ())
84- tup = settings .LOGIN_URL , REDIRECT_FIELD_NAME , path
85- return HttpResponseRedirect ('%s?%s=%s' % tup )
86- doc = get_object_or_404 (DocAlias , name = document_name ).document
87- clist = CommunityList .objects .get_or_create (user = request .user )[0 ]
88- clist .update ()
89- return add_document_to_list (request , clist , doc )
90-
91- def remove_track_document (request , document_name ):
92- """supports the "Untrack this document" functionality
93-
94- This is exposed in the document view and in document search results."""
95- clist = CommunityList .objects .get_or_create (user = request .user )[0 ]
96- if not clist .check_manager (request .user ):
97- path = urlquote (request .get_full_path ())
98- tup = settings .LOGIN_URL , REDIRECT_FIELD_NAME , path
99- return HttpResponseRedirect ('%s?%s=%s' % tup )
100- doc = get_object_or_404 (DocAlias , name = document_name ).document
101- clist .added_ids .remove (doc )
102- clist .update ()
103- return HttpResponse (json .dumps ({'success' : True }), content_type = 'text/plain' )
104-
105- def remove_document (request , list_id , document_name ):
76+ @login_required
77+ def track_document (request , name ):
78+ doc = get_object_or_404 (Document , docalias__name = name )
79+
80+ if request .method == "POST" :
81+ clist = CommunityList .objects .get_or_create (user = request .user )[0 ]
82+ clist .added_ids .add (doc )
83+ if request .is_ajax ():
84+ return HttpResponse (json .dumps ({ 'success' : True }), content_type = 'text/plain' )
85+ else :
86+ return redirect ("manage_personal_list" )
87+
88+ return render (request , "community/track_document.html" , {
89+ "name" : doc .name ,
90+ })
91+
92+ @login_required
93+ def untrack_document (request , name ):
94+ doc = get_object_or_404 (Document , docalias__name = name )
95+ clist = get_object_or_404 (CommunityList , user = request .user )
96+
97+ if request .method == "POST" :
98+ clist = CommunityList .objects .get_or_create (user = request .user )[0 ]
99+ clist .added_ids .remove (doc )
100+ if request .is_ajax ():
101+ return HttpResponse (json .dumps ({ 'success' : True }), content_type = 'text/plain' )
102+ else :
103+ return redirect ("manage_personal_list" )
104+
105+ return render (request , "community/untrack_document.html" , {
106+ "name" : doc .name ,
107+ })
108+
109+ @login_required
110+ def remove_document (request , list_id , name ):
106111 clist = get_object_or_404 (CommunityList , pk = list_id )
107112 if not clist .check_manager (request .user ):
108- path = urlquote (request .get_full_path ())
109- tup = settings .LOGIN_URL , REDIRECT_FIELD_NAME , path
110- return HttpResponseRedirect ('%s?%s=%s' % tup )
111- doc = get_object_or_404 (DocAlias , name = document_name ).document
113+ return HttpResponseForbidden ("You do not have permission to access this view" )
114+
115+ doc = get_object_or_404 (Document , docalias__name = name )
112116 clist .added_ids .remove (doc )
113- clist .update ()
114- return HttpResponseRedirect (clist .get_manage_url ())
115117
116- def add_document_to_list (request , clist , doc ):
117- if not clist .check_manager (request .user ):
118- path = urlquote (request .get_full_path ())
119- tup = settings .LOGIN_URL , REDIRECT_FIELD_NAME , path
120- return HttpResponseRedirect ('%s?%s=%s' % tup )
121- clist .added_ids .add (doc )
122- return HttpResponse (json .dumps ({'success' : True }), content_type = 'text/plain' )
118+ return HttpResponseRedirect (clist .get_manage_url ())
123119
124120
125121def remove_rule (request , list_id , rule_id ):
@@ -135,11 +131,10 @@ def remove_rule(request, list_id, rule_id):
135131
136132def _view_list (request , clist ):
137133 display_config = clist .get_display_config ()
138- return render_to_response ( 'community/public/view_list.html' ,
134+ return render ( request , 'community/public/view_list.html' ,
139135 {'cl' : clist ,
140136 'dc' : display_config ,
141- },
142- context_instance = RequestContext (request ))
137+ })
143138
144139
145140def view_personal_list (request , secret ):
@@ -172,16 +167,15 @@ def _atom_view(request, clist, significant=False):
172167 else :
173168 subtitle = 'Document changes'
174169
175- return render_to_response ( 'community/public/atom.xml' ,
170+ return render ( request , 'community/public/atom.xml' ,
176171 {'cl' : clist ,
177172 'entries' : notifications ,
178173 'title' : title ,
179174 'subtitle' : subtitle ,
180175 'id' : feed_id .get_urn (),
181176 'updated' : datetime .datetime .today (),
182177 },
183- content_type = 'text/xml' ,
184- context_instance = RequestContext (request ))
178+ content_type = 'text/xml' )
185179
186180
187181def changes_personal_list (request , secret ):
@@ -264,12 +258,11 @@ def _subscribe_list(request, clist, significant):
264258 success = True
265259 else :
266260 form = SubscribeForm (clist = clist , significant = significant )
267- return render_to_response ( 'community/public/subscribe.html' ,
261+ return render ( request , 'community/public/subscribe.html' ,
268262 {'cl' : clist ,
269263 'form' : form ,
270264 'success' : success ,
271- },
272- context_instance = RequestContext (request ))
265+ })
273266
274267
275268def _unsubscribe_list (request , clist , significant ):
@@ -281,13 +274,12 @@ def _unsubscribe_list(request, clist, significant):
281274 success = True
282275 else :
283276 form = UnSubscribeForm (clist = clist , significant = significant )
284- return render_to_response ( 'community/public/unsubscribe.html' ,
277+ return render ( request , 'community/public/unsubscribe.html' ,
285278 {'cl' : clist ,
286279 'form' : form ,
287280 'success' : success ,
288281 'significant' : significant ,
289- },
290- context_instance = RequestContext (request ))
282+ })
291283
292284
293285def subscribe_personal_list (request , secret , significant = False ):
@@ -321,11 +313,10 @@ def confirm_subscription(request, list_id, email, date, confirm_hash, significan
321313 community_list = clist ,
322314 email = email ,
323315 significant = significant )
324- return render_to_response ( 'community/public/subscription_confirm.html' ,
316+ return render ( request , 'community/public/subscription_confirm.html' ,
325317 {'cl' : clist ,
326318 'significant' : significant ,
327- },
328- context_instance = RequestContext (request ))
319+ })
329320
330321
331322def confirm_significant_subscription (request , list_id , email , date , confirm_hash ):
@@ -341,11 +332,10 @@ def confirm_unsubscription(request, list_id, email, date, confirm_hash, signific
341332 community_list = clist ,
342333 email = email ,
343334 significant = significant ).delete ()
344- return render_to_response ( 'community/public/unsubscription_confirm.html' ,
335+ return render ( request , 'community/public/unsubscription_confirm.html' ,
345336 {'cl' : clist ,
346337 'significant' : significant ,
347- },
348- context_instance = RequestContext (request ))
338+ })
349339
350340
351341def confirm_significant_unsubscription (request , list_id , email , date , confirm_hash ):
0 commit comments