Commit b10e1ae1e94969e8999a5d29608e01d5fdca9a90
1 parent
e88be4ef
Exists in
master
and in
2 other branches
Changing the way that goals xls file are disponibilized for download in bulletin form
Showing
4 changed files
with
24 additions
and
6 deletions
Show diff stats
No preview for this file type
bulletin/templates/bulletin/_form.html
... | ... | @@ -70,9 +70,7 @@ |
70 | 70 | |
71 | 71 | <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput"> |
72 | 72 | <label for="{{ form.file_content.auto_id }}">{{ form.file_content.label }} <span>*</span></label> |
73 | - {% with 'xls/'|add:goal_file as file_static %} | |
74 | - <a href="{% static file_static %}"> {% trans "Click to download a xls file with the data of the goals" %}</a> | |
75 | - {% endwith %} | |
73 | + <a href="{% url 'bulletin:download_file' file=goal_file %}"> {% trans "Click to download a xls file with the data of the goals" %}</a> | |
76 | 74 | {% render_field form.file_content class='file-selector' %} |
77 | 75 | |
78 | 76 | <div class="input-group common-file-input"> | ... | ... |
bulletin/urls.py
... | ... | @@ -11,4 +11,5 @@ urlpatterns = [ |
11 | 11 | url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), |
12 | 12 | url(r'^chart/(?P<slug>[\w_-]+)/$', views.StatisticsView.as_view(), name = 'get_chart'), |
13 | 13 | url(r'^send-message/(?P<slug>[\w_-]+)/$', views.SendMessage.as_view(), name = 'send_message'), |
14 | + url(r'^download_file/(?P<file>[\w_-]+)/$', views.download_excel, name = 'download_file'), | |
14 | 15 | ] | ... | ... |
bulletin/views.py
... | ... | @@ -6,6 +6,8 @@ from django.utils.translation import ugettext_lazy as _ |
6 | 6 | from django.contrib.auth.mixins import LoginRequiredMixin |
7 | 7 | from django.http import JsonResponse |
8 | 8 | |
9 | +from os import path | |
10 | + | |
9 | 11 | from amadeus.permissions import has_subject_permissions, has_resource_permissions |
10 | 12 | from .utils import brodcast_dificulties |
11 | 13 | from goals.models import Goals,GoalItem,MyGoals |
... | ... | @@ -386,7 +388,7 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): |
386 | 388 | itens_da_meta = sorted(list(metas), key = lambda met: met.id) |
387 | 389 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) |
388 | 390 | create_excel_file(alunos, itens_da_meta,meta_geral) |
389 | - context['goal_file'] = str(meta_geral.slug)+".xls" | |
391 | + context['goal_file'] = str(meta_geral.slug) | |
390 | 392 | |
391 | 393 | |
392 | 394 | return context |
... | ... | @@ -405,6 +407,23 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): |
405 | 407 | |
406 | 408 | return success_url |
407 | 409 | |
410 | +def download_excel(request, file): | |
411 | + filepath = 'bulletin/sheets/xls/' + file + '.xls' | |
412 | + | |
413 | + if not path.exists(filepath): | |
414 | + raise Http404() | |
415 | + | |
416 | + response = HttpResponse(open(filepath, 'rb').read()) | |
417 | + response['Content-Type'] = 'application/force-download' | |
418 | + response['Pragma'] = 'public' | |
419 | + response['Expires'] = '0' | |
420 | + response['Cache-Control'] = 'must-revalidate, post-check=0, pre-check=0' | |
421 | + response['Content-Disposition'] = 'attachment; filename=%s' % (file + '.xls') | |
422 | + response['Content-Transfer-Encoding'] = 'binary' | |
423 | + response['Content-Length'] = str(path.getsize(filepath)) | |
424 | + | |
425 | + return response | |
426 | + | |
408 | 427 | def create_excel_file(estudantes,metas,meta): |
409 | 428 | workbook = xlwt.Workbook() |
410 | 429 | worksheet = workbook.add_sheet(u'Bulletin') |
... | ... | @@ -426,7 +445,7 @@ def create_excel_file(estudantes,metas,meta): |
426 | 445 | contador_estudante += 1 |
427 | 446 | |
428 | 447 | path1 = os.path.join(settings.BASE_DIR,'bulletin') |
429 | - path2 = os.path.join(path1,'static') | |
448 | + path2 = os.path.join(path1,'sheets') | |
430 | 449 | path3 = os.path.join(path2,'xls') |
431 | 450 | |
432 | 451 | nome = str(meta.slug) + ".xls" |
... | ... | @@ -576,7 +595,7 @@ class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView): |
576 | 595 | itens_da_meta = sorted(list(metas), key = lambda met: met.id) |
577 | 596 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) |
578 | 597 | create_excel_file(alunos, itens_da_meta,meta_geral) |
579 | - context['goal_file'] = str(meta_geral.slug)+".xls" | |
598 | + context['goal_file'] = str(meta_geral.slug) | |
580 | 599 | |
581 | 600 | return context |
582 | 601 | ... | ... |