]> www.vanbest.org Git - tweet-django-debian/commitdiff
Working on better handling of exporting (streaming) tweets
authorJan-Pascal van Best <janpascal@vanbest.org>
Sat, 20 Feb 2016 20:38:21 +0000 (21:38 +0100)
committerJan-Pascal van Best <janpascal@vanbest.org>
Sat, 20 Feb 2016 20:38:21 +0000 (21:38 +0100)
tweet/templates/tweet/export_stream.html [new file with mode: 0644]
tweet/templates/tweet/index.html
tweet/urls.py
tweet/views.py

diff --git a/tweet/templates/tweet/export_stream.html b/tweet/templates/tweet/export_stream.html
new file mode 100644 (file)
index 0000000..b78fb70
--- /dev/null
@@ -0,0 +1,45 @@
+{% extends "tweet/base.html" %}
+
+{% block title %}Download continu{% endblock %}   
+
+{% block content %}
+    <div class="page-header">
+    <h1>Download Excel voor continu zoeken</h1> 
+    </div>
+
+    <h2>Voortgang</h2>
+    <p>Het Excel-bestand wordt nu voor je gemaakt, even geduld aub...</p>
+    <div class="progress">
+      <div class="progress-bar" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: 2%;">
+        2%
+      </div>
+    </div>
+    <a class="btn btn-success" disabled="disabled" href="{% url 'tweet:download_stream' %}">Download Excel</a>
+   </div>
+
+<script type="text/javascript" charset="utf-8">
+var updateProgress=function() {
+  $(".progress-bar").each(function(){
+    //alert("id: " + id);
+    url="{% url 'tweet:export_stream_progress' %}"
+    $.ajax({
+        url: url,
+        success: function(data) {
+          bar=$(".progress-bar")
+          bar.html(data.progress+"%");
+          bar.css('width', data.progress+'%');
+          bar.attr("aria-valuenow", data.progress);
+          if(data.finished) {
+            $(".btn").removeAttr("disabled");
+          }
+        },
+        error: function() {
+          // ignore alert("Error!")
+        }
+    })
+  });
+}
+
+setInterval(function(){updateProgress()},1000);
+</script>
+{% endblock %}   
index 659743dd4993ab4dd70e3cd2fa781e99cad5aab1..41e55d16c2aacfc3865815057bf5e32acaa0d34a 100644 (file)
    <a class="btn btn-success" href="{% url 'tweet:list_jobs' %}">Toon resultaten </a>
 
 <h2>Continue zoekactie</h2>
-   <a class="btn btn-success" href="/tweet/stream/edit_terms">Stel zoektermen in</a>
+   <a class="btn btn-success" href="{% url 'tweet:edit_stream_terms' %}">Stel zoektermen in</a>
 <br>
 <br>
-   <a class="btn btn-success" href="/tweet/stream/download_results">Download resultaten</a>
+   <a class="btn btn-success" href="{% url 'tweet:list_stream' %}">Overzicht resultaten</a>
+<br>
+<br>
+   <a class="btn btn-success" href="{% url 'tweet:download_stream' %}">Download resultaten</a>
 
 {% endblock %}   
index e38624118fb1a81bb7bfe5630bfc7b923ae10588..f32401b0aff246ab779fbf3fdfd7382c5716b3d4 100644 (file)
@@ -19,5 +19,7 @@ urlpatterns = [
     url(r'^stream/list$', views.list_stream, name='list_stream'),
     url(r'^stream/edit_terms$', views.edit_stream_terms, name='edit_stream_terms'),
     url(r'^stream/download$', views.download_stream, name='download_stream'),
+    url(r'^stream/export$', views.export_stream, name='export_stream'),
+    url(r'^stream/export/progress$', views.export_stream_progress, name='export_stream_progress'),
     url(r'^stream/(?P<tweet_id>[0-9]+)/delete$', views.delete_tweet, name='delete_tweet'),
 ]
index 4ef0bc0bc2cbf5533a82455f8c9cde9c2f9fd8d1..52e8fe69d732d5fd66a1e7c0dabe9e0b959098e6 100644 (file)
@@ -5,6 +5,7 @@ import logging
 import os
 import os.path
 import tempfile
+import threading
 import time
 
 from django.conf import settings
@@ -157,7 +158,24 @@ def download_stream(request):
     logger.info("Exporting stream tweets to excel...")
     base_path = settings.TWEET_BASEPATH
     filename = os.path.join(base_path, "tmp.xlsx")
-    streamrunner.export_tweets(filename)
+    #streamrunner.export_tweets(filename)
     response = FileResponse(open(filename, 'rb'), content_type='application/vnd.ms-excel')
     response['Content-Disposition'] = 'attachment; filename="stream.xlsx"'
     return response
+
+def export_stream(request):
+    logger.info("Exporting stream tweets to excel...")
+    base_path = settings.TWEET_BASEPATH
+    filename = os.path.join(base_path, "tmp.xlsx")
+    #streamrunner.export_tweets(filename)
+    thread = threading.Thread(target=streamrunner.export_tweets, name="Stream exporter thread",
+            kwargs={'filename':filename}) 
+    thread.start()
+    return render(request, "tweet/export_stream.html")
+
+def export_stream_progress(request):
+    result = {
+        "progress": 33,
+        "finished": True
+    }
+    return JsonResponse(result)