From ab5b287ce943b5a32970655e0c3119a69593a98a Mon Sep 17 00:00:00 2001 From: alazo Date: Tue, 5 Sep 2017 14:57:55 +0200 Subject: [PATCH] Add export for ORTRA --- common/urls.py | 1 + stages/views.py | 69 +++++++++++++++++++++++++++++++++++++- templates/admin/index.html | 2 ++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/common/urls.py b/common/urls.py index bd2a1ce..e0a6b33 100644 --- a/common/urls.py +++ b/common/urls.py @@ -23,6 +23,7 @@ urlpatterns = [ url(r'^imputations/export/$', views.imputations_export, name='imputations_export'), url(r'^print/update_form/$', views.print_update_form, name='print_update_form'), url(r'^general_export/$', views.general_export, name='general-export'), + url(r'^ortra_export/$', views.ortra_export, name='ortra-export'), # AJAX/JSON urls url(r'^section/(?P\d+)/periods/', views.section_periods, name='section_periods'), diff --git a/stages/views.py b/stages/views.py index 64a2db9..81ba162 100644 --- a/stages/views.py +++ b/stages/views.py @@ -14,7 +14,7 @@ from openpyxl.writer.excel import save_virtual_workbook from django.conf import settings from django.contrib import messages from django.core.files import File -from django.db.models import Case, Count, When +from django.db.models import Case, Count, When, Q from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.urls import reverse @@ -789,3 +789,70 @@ def general_export(request): response['Content-Disposition'] = 'attachment; filename=%s%s.xlsx' % ( 'general_export_', date.strftime(date.today(), '%Y-%m-%d')) return response + + +ORTRA_EXPORT_FIELDS = [ + ('Num_Ele', 'ext_id'), + ('Nom_Ele', 'last_name'), + ('Prenom_Ele', 'first_name'), + ('Genre_Ele', 'gender'), + ('Rue_Ele', 'street'), + ('NPA_Ele', 'pcode'), + ('Ville_Ele', 'city'), + ('DateNaissance_Ele', 'birth_date'), + ('Email_Ele', 'email'), + ('Mobile_Ele', 'mobile'), + + ('Classe_Ele', 'klass__name'), + ('Filiere_Ele', 'klass__section__name'), + ('MaitreDeClasseNom_Ele', 'klass__teacher__last_name'), + ('MaitreDeClassePrenom_Ele', 'klass__teacher__first_name'), + ('OptionASE_Ele', 'option_ase__name'), + + ('Num_Emp', 'corporation__ext_id'), + ('Nom_Emp', 'corporation__name'), + ('Rue_Emp', 'corporation__street'), + ('NPA_Emp', 'corporation__pcode'), + ('Ville_Emp', 'corporation__city'), + ('Tel_Emp', 'corporation__tel'), + + ('Titre_Form', 'instructor__title'), + ('Prenom_Form', 'instructor__first_name'), + ('Nom_Form', 'instructor__last_name'), + ('Tel_Form', 'instructor__tel'), + ('Email_Form', 'instructor__email'), +] + + +def ortra_export(request): + """ + Export students data from sections ASAFE, ASEFE and ASSCFE + """ + export_fields = OrderedDict(ORTRA_EXPORT_FIELDS) + wb = Workbook() + ws = wb.active + ws.title = 'Exportation' + bold = Style(font=Font(bold=True)) + for col_idx, header in enumerate(export_fields.keys(), start=1): + cell = ws.cell(row=1, column=col_idx) + cell.value = header + cell.style = bold + # Data + query_keys = [f for f in export_fields.values() if f is not None] + query = Student.objects.filter(Q(klass__name__contains='ASAFE') | + Q(klass__name__contains='ASEFE') | + Q(klass__name__contains='ASSCFE'), + archived=False).order_by('klass__name', + 'last_name', + 'first_name') + + for row_idx, tr in enumerate(query.values(*query_keys), start=2): + for col_idx, field in enumerate(query_keys, start=1): + if field == 'gender': + tr[field] = ('Madame', 'Monsieur')[tr[field] == 'M'] + ws.cell(row=row_idx, column=col_idx).value = tr[field] + + response = HttpResponse(save_virtual_workbook(wb), content_type=openxml_contenttype) + response['Content-Disposition'] = 'attachment; filename=%s%s.xlsx' % ( + 'ortra_export_', date.strftime(date.today(), '%Y-%m-%d')) + return response \ No newline at end of file diff --git a/templates/admin/index.html b/templates/admin/index.html index f86a996..a85222f 100644 --- a/templates/admin/index.html +++ b/templates/admin/index.html @@ -81,7 +81,9 @@
  • Exporter les données comptables
  • Imprimer les formulaires de MAJ
  • Exportation générale des élèves
  • +
  • Exportation pour ORTRA
  • {% endblock %} +