aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorMitch Riedstra <Mitch@riedstra.us>2017-10-23 12:40:44 -0400
committerMitch Riedstra <Mitch@riedstra.us>2017-10-23 12:40:44 -0400
commit3b2a4153f14c76b085eea9ed4da0b3272a92fd98 (patch)
tree3c61352b82805e0ebd1ca2f1eb5c7a8ddd26bbed /app
parentf00cac032670c0a0db578b0d055b4d787dccea8a (diff)
downloaddispatch-tracker-3b2a4153f14c76b085eea9ed4da0b3272a92fd98.tar.gz
dispatch-tracker-3b2a4153f14c76b085eea9ed4da0b3272a92fd98.tar.xz
Name files properly on download
Diffstat (limited to 'app')
-rw-r--r--app/dispatch/templates/dispatch/loads/detail.html3
-rw-r--r--app/dispatch/urls.py2
-rw-r--r--app/dispatch/views.py30
3 files changed, 33 insertions, 2 deletions
diff --git a/app/dispatch/templates/dispatch/loads/detail.html b/app/dispatch/templates/dispatch/loads/detail.html
index fff9cf2..d8feea3 100644
--- a/app/dispatch/templates/dispatch/loads/detail.html
+++ b/app/dispatch/templates/dispatch/loads/detail.html
@@ -72,7 +72,8 @@
<td>{{p.description}}</td>
<td class="right-align">
<a class="btn red" href="{% url 'paperwork_delete' object.id p.id %}">Delete</a>
- <a class="btn green" target="_blank" href="{{p.document.url}}">Download</a>
+ <!-- <a class="btn green" target="_blank" href="{{p.document.url}}">Download</a> -->
+ <a class="btn green" href="{% url 'paperwork_download' load.id p.id %}">Download</a>
</td>
</tr>
{% endfor %}
diff --git a/app/dispatch/urls.py b/app/dispatch/urls.py
index 816faae..c0723e2 100644
--- a/app/dispatch/urls.py
+++ b/app/dispatch/urls.py
@@ -30,5 +30,7 @@ urlpatterns = [
url(r'^loads/upload/(?P<load_id>\d+)$', views.PaperworkUpload, name='paperwork_upload'),
url(r'^loads/(?P<load_id>\d+)/paperwork/delete/(?P<pk>\d+)$', \
views.PaperworkDelete, name='paperwork_delete'),
+ url(r'^loads/(?P<load_id>\d+)/paperwork/dl/(?P<pk>\d+)$', \
+ views.PaperworkDownload, name='paperwork_download'),
]
diff --git a/app/dispatch/views.py b/app/dispatch/views.py
index 05a8c2c..4a8a18b 100644
--- a/app/dispatch/views.py
+++ b/app/dispatch/views.py
@@ -1,5 +1,6 @@
from django.shortcuts import render, redirect
-# from django.http import HttpResponse
+from django.http import HttpResponse
+from django.utils.encoding import smart_str
# from django.template import loader
from django.core.urlresolvers import reverse
# import django.contrib.auth as auth
@@ -17,6 +18,7 @@ from django.contrib.auth.mixins import UserPassesTestMixin
from datetime import datetime, timedelta
from django.utils import formats
from dateutil import rrule
+import re, os
def home(request):
return redirect(reverse('load_list'))
@@ -272,3 +274,29 @@ def PaperworkDelete(request, load_id, pk):
print(e)
return redirect(reverse('load_detail', kwargs={'pk': load_id}))
+
+# Specifically for downloading with the filename set to the description of the
+# load
+def PaperworkDownload(request, load_id, pk):
+ try:
+ load = Load.objects.get(pk=load_id)
+ paperwork = Paperwork.objects.get(pk=pk)
+
+ if os.path.exists(paperwork.document.path):
+ with open(paperwork.document.path, 'rb') as fh:
+ try:
+ exp = re.compile('\.[^.]*$', re.IGNORECASE)
+ ext = exp.findall(paperwork.document.path)
+ ext = ext[0]
+ except Exception as e:
+ print(e)
+ ext = '.pdf'
+
+ desc = load.description.replace('"', '')
+
+ response = HttpResponse(fh.read(), content_type='application/force-download')
+ response['Content-Disposition'] = 'attachment; filename="{}"'.format(smart_str(desc + ext))
+ response['X-Sendfile'] = smart_str(paperwork.document.path)
+ return response
+ except Exception as e:
+ print(e)