diff --git a/ietf/community/urls.py b/ietf/community/urls.py index 95d2c4494..0f60ba63c 100644 --- a/ietf/community/urls.py +++ b/ietf/community/urls.py @@ -23,7 +23,8 @@ urlpatterns = patterns('ietf.community.views', url(r'^group/(?P[\w.@+-]+)/unsubscribe/$', 'unsubscribe_group_list', {'significant': False}, name='unsubscribe_group_list'), url(r'^group/(?P[\w.@+-]+)/unsubscribe/significant/$', 'unsubscribe_group_list', {'significant': True}, name='unsubscribe_significant_group_list'), - url(r'^add_document/(?P[^/]+)/$', 'add_document', name='community_add_document'), + url(r'^add_track_document/(?P[^/]+)/$', 'add_track_document', name='community_add_track_document'), + url(r'^remove_track_document/(?P[^/]+)/$', 'remove_track_document', name='community_remove_track_document'), url(r'^(?P[\d]+)/remove_document/(?P[^/]+)/$', 'remove_document', name='community_remove_document'), url(r'^(?P[\d]+)/remove_rule/(?P[^/]+)/$', 'remove_rule', name='community_remove_rule'), url(r'^(?P[\d]+)/subscribe/confirm/(?P[\w.@+-]+)/(?P[\d]+)/(?P[a-f0-9]+)/$', 'confirm_subscription', name='confirm_subscription'), diff --git a/ietf/community/views.py b/ietf/community/views.py index fb6644ebc..0e5672236 100644 --- a/ietf/community/views.py +++ b/ietf/community/views.py @@ -75,7 +75,10 @@ def manage_group_list(request, acronym): return _manage_list(request, clist) -def add_document(request, document_name): +def add_track_document(request, document_name): + """supports the "Track this document" functionality + + This is exposed in the document view and in document search results.""" if not request.user.is_authenticated(): path = urlquote(request.get_full_path()) tup = settings.LOGIN_URL, REDIRECT_FIELD_NAME, path @@ -85,6 +88,19 @@ def add_document(request, document_name): clist.update() return add_document_to_list(request, clist, doc) +def remove_track_document(request, document_name): + """supports the "Untrack this document" functionality + + This is exposed in the document view and in document search results.""" + clist = CommunityList.objects.get_or_create(user=request.user)[0] + if not clist.check_manager(request.user): + path = urlquote(request.get_full_path()) + tup = settings.LOGIN_URL, REDIRECT_FIELD_NAME, path + return HttpResponseRedirect('%s?%s=%s' % tup) + doc = get_object_or_404(DocAlias, name=document_name).document + clist.added_ids.remove(doc) + clist.update() + return HttpResponse(json.dumps({'success': True}), content_type='text/plain') def remove_document(request, list_id, document_name): clist = get_object_or_404(CommunityList, pk=list_id) @@ -97,7 +113,6 @@ def remove_document(request, list_id, document_name): clist.update() return HttpResponseRedirect(clist.get_manage_url()) - def add_document_to_list(request, clist, doc): if not clist.check_manager(request.user): path = urlquote(request.get_full_path()) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 9af1fc5fc..061794853 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -326,12 +326,13 @@ def document_main(request, name, rev=None): elif can_edit_stream_info and (not iesg_state or iesg_state.slug == 'watching'): actions.append(("Submit to IESG for Publication", urlreverse('doc_to_iesg', kwargs=dict(name=doc.name)))) - show_add_to_list = False + tracking_document = False if request.user.is_authenticated(): try: clist = CommunityList.objects.get(user=request.user) clist.update() - show_add_to_list = clist.get_documents().filter(name=doc.name).count() == 0 + if clist.get_documents().filter(name=doc.name).count() > 0: + tracking_document = True except ObjectDoesNotExist: pass @@ -387,7 +388,7 @@ def document_main(request, name, rev=None): shepherd_writeup=shepherd_writeup, search_archive=search_archive, actions=actions, - show_add_to_list=show_add_to_list, + tracking_document=tracking_document, ), context_instance=RequestContext(request)) diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index bcf7cd8a4..610d29fa4 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -240,8 +240,12 @@ {% if user|has_role:"Area Director" %} | Search Mailing Lists (ARO) {% endif %} - {% if show_add_to_list and user.is_authenticated %} - | Add to your personal ID listTrack this document + {% if user.is_authenticated %} + {% if tracking_document %} + | Remove from your personal ID listUntrack this document + {% else %} + | Add to your personal ID listTrack this document + {% endif %} {% endif %} diff --git a/ietf/templates/doc/search/search_result_row.html b/ietf/templates/doc/search/search_result_row.html index 8913115a2..2c5cd6ff2 100644 --- a/ietf/templates/doc/search/search_result_row.html +++ b/ietf/templates/doc/search/search_result_row.html @@ -36,7 +36,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. {% if show_add_to_list and user.is_authenticated %} - Add to your personal ID list + Add to your personal ID list {% endif %}