diff --git a/reports/migrations/0003_auto_20170323_1517.py b/reports/migrations/0003_auto_20170323_1517.py
new file mode 100644
index 0000000..acc5e55
--- /dev/null
+++ b/reports/migrations/0003_auto_20170323_1517.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-03-23 18:17
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reports', '0002_reportxls'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='reportxls',
+ name='xls_data',
+ field=models.TextField(null=True),
+ ),
+ ]
diff --git a/reports/migrations/0004_auto_20170323_1520.py b/reports/migrations/0004_auto_20170323_1520.py
new file mode 100644
index 0000000..40d79f5
--- /dev/null
+++ b/reports/migrations/0004_auto_20170323_1520.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-03-23 18:20
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reports', '0003_auto_20170323_1517'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='reportxls',
+ name='xls_data',
+ field=models.TextField(),
+ ),
+ ]
diff --git a/reports/migrations/0005_auto_20170323_1603.py b/reports/migrations/0005_auto_20170323_1603.py
new file mode 100644
index 0000000..9ec26c5
--- /dev/null
+++ b/reports/migrations/0005_auto_20170323_1603.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-03-23 19:03
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reports', '0004_auto_20170323_1520'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='reportxls',
+ name='xls_data',
+ field=models.FileField(upload_to='excel/'),
+ ),
+ ]
diff --git a/reports/migrations/0006_auto_20170323_1629.py b/reports/migrations/0006_auto_20170323_1629.py
new file mode 100644
index 0000000..56abdbb
--- /dev/null
+++ b/reports/migrations/0006_auto_20170323_1629.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.4 on 2017-03-23 19:29
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('reports', '0005_auto_20170323_1603'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='reportxls',
+ name='xls_data',
+ field=models.FileField(upload_to='files/'),
+ ),
+ ]
diff --git a/reports/models.py b/reports/models.py
index 7ba761b..f0d678c 100644
--- a/reports/models.py
+++ b/reports/models.py
@@ -17,7 +17,7 @@ class ReportCSV(models.Model):
class ReportXLS(models.Model):
user = models.ForeignKey(User)
- xls_data = models.TextField()
+ xls_data = models.FileField(upload_to = 'files/')
class Meta:
verbose_name = "ReportCSV"
diff --git a/reports/templates/reports/view.html b/reports/templates/reports/view.html
index 3445ae3..16251e6 100644
--- a/reports/templates/reports/view.html
+++ b/reports/templates/reports/view.html
@@ -65,10 +65,11 @@
diff --git a/reports/urls.py b/reports/urls.py
index 7c1ac54..f30311f 100644
--- a/reports/urls.py
+++ b/reports/urls.py
@@ -8,4 +8,5 @@ urlpatterns = [
url(r'^get/resources/$', views.get_resources, name='get_resource_and_tags'),
url(r'^get/tags/$', views.get_tags, name='get_tags'),
url(r'^post/download_report/$', views.download_report_csv, name="download_report_csv"),
+ url(r'^post/download_report/excel$', views.download_report_xls, name="download_report_xls"),
]
\ No newline at end of file
diff --git a/reports/views.py b/reports/views.py
index 0922826..8dce2f5 100644
--- a/reports/views.py
+++ b/reports/views.py
@@ -4,9 +4,9 @@ from django.utils.translation import ugettext_lazy as _
from django import forms
from django.core.urlresolvers import reverse_lazy
-
+from amadeus import settings
from django.contrib import messages
-
+from os.path import join
import django.views.generic as generic
from mural.models import SubjectPost, Comment, MuralVisualizations
from django.db.models import Q
@@ -20,6 +20,7 @@ from collections import OrderedDict
from django.forms import formset_factory
from .models import ReportCSV, ReportXLS
import pandas as pd
+from io import BytesIO
class ReportView(LoginRequiredMixin, generic.FormView):
template_name = "reports/create.html"
@@ -156,27 +157,32 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
report.save()
#for excel files
- """ if ReportXLS.objects.filter(user= self.request.user).count() > 0:
+ if ReportXLS.objects.filter(user= self.request.user).count() > 0:
report = ReportXLS.objects.get(user=self.request.user)
report.delete()
- df.drop(df.columns[[0]], axis=1, inplace=True)
- writer = pd.ExcelWriter('pandas_simple.xlsx')
- report = ReportXLS(user= self.request.user, xls_data = df.to_excel(writer))
- report.save()"""
-
+ path = join(settings.MEDIA_ROOT, 'files' , 'report'+str(self.request.user.id)+'.xls')
+ writer = pd.ExcelWriter(path)
+ df.to_excel(writer, sheet_name='first_sheet')
+ writer.save()
+ report = ReportXLS(user= self.request.user )
+ report.xls_data.name = path
+ report.save()
return context
- """
- Subject: subject where the report is being created
- topics_query: it's either one of the topics or all of them
- init_date: When the reports filter of dates stars
- end_date: When the reports filter of dates end
- resources_type_names: resources subclasses name that were selected
- tags_id = ID of tag objects that were selected
- """
+
def get_mural_data(self, subject, topics_query, init_date, end_date, resources_type_names, tags_id):
+ """
+
+ Process all the data to be brough by the report
+ Subject: subject where the report is being created
+ topics_query: it's either one of the topics or all of them
+ init_date: When the reports filter of dates stars
+ end_date: When the reports filter of dates end
+ resources_type_names: resources subclasses name that were selected
+ tags_id = ID of tag objects that were selected
+ """
data = {}
students = subject.students.all()
formats = ["%d/%m/%Y", "%m/%d/%Y", "%Y-%m-%d"] #so it accepts english and portuguese date formats
@@ -199,9 +205,9 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
#For each student in the subject
for student in students:
- data[student] = []
+ data[student.id] = []
- data[student].append(student.social_name)
+ data[student.id].append(student.social_name)
interactions = OrderedDict()
@@ -289,7 +295,7 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView):
interactions[_("Class")] = ""
interactions[_("Performance")] = ""
for value in interactions.values():
- data[student].append(value)
+ data[student.id].append(value)
for key in interactions.keys():
@@ -404,4 +410,12 @@ def download_report_csv(request):
response = HttpResponse(report.csv_data,content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="report.csv"'
+ return response
+
+def download_report_xls(request):
+ report = ReportXLS.objects.get(user= request.user)
+
+ response = HttpResponse(report.xls_data,content_type='application/ms-excel')
+ response['Content-Disposition'] = 'attachment; filename="report.xls"'
+
return response
\ No newline at end of file
--
libgit2 0.21.2