Add a general student export
This commit is contained in:
parent
d7af54c57d
commit
a52beb29d2
4 changed files with 76 additions and 1 deletions
|
|
@ -22,6 +22,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'),
|
||||
|
||||
# AJAX/JSON urls
|
||||
url(r'^section/(?P<pk>\d+)/periods/', views.section_periods, name='section_periods'),
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class StagesTest(TestCase):
|
|||
def setUp(self):
|
||||
self.client.login(username='me', password='mepassword')
|
||||
|
||||
def test_export(self):
|
||||
def test_export_stages(self):
|
||||
response1 = self.client.get(reverse('stages_export', args=['all']))
|
||||
self.assertEqual(response1.status_code, 200)
|
||||
|
||||
|
|
@ -91,6 +91,10 @@ class StagesTest(TestCase):
|
|||
response3 = self.client.get(reverse('stages_export'), {'period': '1', 'non_attr': '1'})
|
||||
self.assertEqual(response2.status_code, 200)
|
||||
|
||||
def test_export_students(self):
|
||||
response = self.client.get(reverse('general-export'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_attribution_view(self):
|
||||
response = self.client.get(reverse('attribution'))
|
||||
# Section select
|
||||
|
|
|
|||
|
|
@ -687,3 +687,72 @@ def print_update_form(request):
|
|||
response = HttpResponse(fh.read(), content_type='application/zip')
|
||||
response['Content-Disposition'] = 'attachment; filename="modification.zip"'
|
||||
return response
|
||||
|
||||
|
||||
GENERAL_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'),
|
||||
('NOAVS_Ele', 'avs'),
|
||||
('Canton_Ele', 'district'),
|
||||
('Email_Ele', 'email'),
|
||||
('Mobile_Ele', 'mobile'),
|
||||
('DispenseCG_Ele', 'dispense_ecg'),
|
||||
('DispenseEPS_Ele', 'dispense_eps'),
|
||||
('SoutienDYS_Ele', 'soutien_dys'),
|
||||
|
||||
('Classe_Ele', 'klass__name'),
|
||||
('Filiere_Ele', 'klass__section__name'),
|
||||
('MaitreDeClasse_Ele', 'klass__teacher'),
|
||||
|
||||
('Num_Emp', 'corporation__ext_id'),
|
||||
('Nom_Emp', 'corporation__name'),
|
||||
('Rue_Emp', 'corporation__street'),
|
||||
('NPA_Emp', 'corporation__pcode'),
|
||||
('Ville_Emp', 'corporation__city'),
|
||||
('Canton_Emp', 'corporation__district'),
|
||||
('Secteur_Emp', 'corporation__sector'),
|
||||
('Type_EMP', 'corporation__typ'),
|
||||
('Tel_Emp', 'corporation__tel'),
|
||||
|
||||
('Num_Form', 'instructor__ext_id'),
|
||||
('Titre_Form', 'instructor__title'),
|
||||
('Prenom_Form', 'instructor__first_name'),
|
||||
('Nom_Form', 'instructor__last_name'),
|
||||
('Tel_Form', 'instructor__tel'),
|
||||
('Email_Form', 'instructor__email'),
|
||||
('EmailCopie_Form', None),
|
||||
]
|
||||
|
||||
|
||||
def general_export(request):
|
||||
"""
|
||||
Export all current students data
|
||||
"""
|
||||
export_fields = OrderedDict(GENERAL_EXPORT_FIELDS)
|
||||
wb = Workbook()
|
||||
ws = wb.get_active_sheet()
|
||||
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(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' % (
|
||||
'general_export_', date.strftime(date.today(), '%Y-%m-%d'))
|
||||
return response
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@
|
|||
<li><a href="{% url 'stages_export' 'all' %}">Exporter les données de stages</a> (toutes)</li>
|
||||
<li><a href="{% url 'imputations_export' %}">Exporter les données comptables</a></li>
|
||||
<li><a href="{% url 'print_update_form' %}">Imprimer les formulaires de MAJ</a></li>
|
||||
<li><a href="{% url 'general-export' %}">Exportation générale des élèves</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue