Fix attaching of threads whe not logged in
authorMagnus Hagander <magnus@hagander.net>
Wed, 4 Feb 2015 20:01:17 +0000 (21:01 +0100)
committerMagnus Hagander <magnus@hagander.net>
Wed, 4 Feb 2015 20:01:17 +0000 (21:01 +0100)
This needs to redirect to the login page and back, so the user is
actually logged in when attaching. This was only partially ipmlemented
before, it turns out.

pgcommitfest/commitfest/static/commitfest/js/commitfest.js
pgcommitfest/commitfest/templates/patch.html
pgcommitfest/commitfest/views.py

index 1ac3bc29a13f526e58f414ab5286daad3dd9d125..ca49f6183c0c8fd61be2bba41222911cafc01d25 100644 (file)
@@ -25,9 +25,13 @@ function findLatestThreads() {
    return false;
 }
 
-function browseThreads(attachfunc) {
+function browseThreads(attachfunc, closefunc) {
    $('#attachThreadList').find('option').remove();
    $('#attachThreadMessageId').val('');
+   $('#attachModal').off('hidden.bs.modal');
+   $('#attachModal').on('hidden.bs.modal', function(e) {
+       if (closefunc) closefunc();
+   });
    $('#attachModal').modal();
    findLatestThreads();
 
@@ -52,9 +56,16 @@ function browseThreads(attachfunc) {
 
 }
 
-function attachThread(cfid, patchid) {
+function attachThread(cfid, patchid, closefunc) {
    browseThreads(function(msgid) {
-      doAttachThread(cfid, patchid, msgid);
+      doAttachThread(cfid, patchid, msgid, !closefunc);
+      if (closefunc) {
+         /* We don't really care about closing it, we just reload immediately */
+         closefunc();
+      }
+   },
+   function() {
+      if (closefunc) closefunc();
    });
 }
 
@@ -81,13 +92,14 @@ function attachThreadChanged() {
    }
 }
 
-function doAttachThread(cfid, patchid, msgid) {
+function doAttachThread(cfid, patchid, msgid, reloadonsuccess) {
    $.post('/ajax/attachThread/', {
       'cf': cfid,
       'p': patchid,
       'msg': msgid,
    }).success(function(data) {
-      location.reload();
+      if (reloadonsuccess)
+         location.reload();
       return true;
    }).fail(function(data) {
       if (data.status == 404) {
index d09a1752b9d15acfddc040e04bd5dbb58e074239..2c504cf83ae0732760ae873c85b1adfa2cd4ff2e 100644 (file)
@@ -58,7 +58,7 @@
 {%if user.is_authenticated%}
        <div style="float:right"><button class="btn btn-default" onclick="attachThread({{cf.id}},{{patch.id}})">Attach thread</button></div>
 {%else%}
-       <div style="float:right"><button class="btn btn-default" onclick="location.href='/login_and_redirect_back'">Attach thread</button></div>
+       <div style="float:right"><button class="btn btn-default" onclick="location.href='/account/login/?next=/{{cf.id}}/{{patch.id}}/%3Fattachthreadnow'">Attach thread</button></div>
 {%endif%}
        <dl>
        {%for t in patch.mailthread_set.all%}
@@ -147,5 +147,12 @@ $(document).ready(function() {
       $(o).tooltip();
    });
 });
+{%if attachnow%}
+$(document).ready(function() {
+   attachThread({{cf.id}},{{patch.id}}, function() {
+      document.location.replace('/{{cf.id}}/{{patch.id}}/');
+   });
+});
+{%endif%}
 </script>
 {%endblock%}
index b11ee88db7adb8ae9b6fb70c0abf7031e84c51a6..3e0dcd1c7d8b4ee570e2e8a2a107e4490c1833f4 100644 (file)
@@ -207,6 +207,7 @@ def patch(request, cfid, patchid):
                'is_this_committer': is_this_committer,
                'is_reviewer': is_reviewer,
                'committers': committers,
+               'attachnow': request.GET.has_key('attachthreadnow'),
                'title': patch.name,
                'breadcrumbs': [{'title': cf.title, 'href': '/%s/' % cf.pk},],
                }, context_instance=RequestContext(request))