Skip to content
Snippets Groups Projects
Commit 64442952 authored by Bidot-Naude Thomas's avatar Bidot-Naude Thomas
Browse files

Add conext_sheet for visits

parent f60ee13c
No related branches found
No related tags found
4 merge requests!39Solve public permission files on AWS,!41Rectification Exportation excel sorties,!37Add context_sheet for visits,!38Add context sheet for visits V4
...@@ -59,13 +59,3 @@ class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin, ExportCsvMixin): ...@@ -59,13 +59,3 @@ class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin, ExportCsvMixin):
model = Student model = Student
ordering = ['-updated_date'] ordering = ['-updated_date']
actions = ["export_as_csv"] actions = ["export_as_csv"]
"""def post_event_on_telegram(event):
#message_html = render_to_string('telegram_message.html', {
# 'event': event
#})
telegram_settings = settings.TELEGRAM
bot = telegram.Bot(token=telegram_settings['bot_token'])
bot.send_message(chat_id="@%s" % telegram_settings['channel_name'],
text="test", parse_mode=telegram.ParseMode.HTML)"""
...@@ -7,6 +7,10 @@ from dynamicforms.models import Form ...@@ -7,6 +7,10 @@ from dynamicforms.models import Form
from .models import Edition, Participation, Project, EditionForm from .models import Edition, Participation, Project, EditionForm
from django.contrib.admin import SimpleListFilter from django.contrib.admin import SimpleListFilter
from profiles.models import Student from profiles.models import Student
from django.http import HttpResponse
import csv
from users.models import User
import codecs
@admin.register(Project) @admin.register(Project)
...@@ -106,6 +110,36 @@ class EditionFormAdmin(admin.ModelAdmin): ...@@ -106,6 +110,36 @@ class EditionFormAdmin(admin.ModelAdmin):
class ParticipationAdmin(admin.ModelAdmin): class ParticipationAdmin(admin.ModelAdmin):
"""Participation admin panel.""" """Participation admin panel."""
def export_as_csv(self, request, queryset):
meta = self.model._meta
field_names = [field.name for field in meta.fields]
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
meta)
response.write(codecs.BOM_UTF8) # force response to be UTF-8
writer = csv.writer(response, delimiter=';')
writer.writerow(['first_name', 'last_name', 'school', 'grade',
'phone_number', 'scholarship'] + field_names)
list_email = queryset.values_list("user__email", flat=True)
nb_user = 0
for obj in queryset:
name = User.objects.filter(
email=str(list_email[nb_user])).values('first_name', 'last_name', 'phone_number')
school = Student.objects.filter(
user__email=str(list_email[nb_user])).values('school', 'grade', 'scholarship')
row = writer.writerow([name[0]['first_name'], name[0]['last_name'], school[0]['school'], school[0]['grade'], name[0]['phone_number'], school[0]['scholarship']] + [getattr(obj, field)
for field in field_names])
nb_user += 1
return response
export_as_csv.short_description = "Exporter sélection (en .csv)"
actions = ["export_as_csv"]
list_display = ('user', 'edition', 'submitted', 'state') list_display = ('user', 'edition', 'submitted', 'state')
list_filter = (SchoolFilter, list_filter = (SchoolFilter,
'edition', 'submitted', 'state',) 'edition', 'submitted', 'state',)
......
...@@ -182,7 +182,7 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -182,7 +182,7 @@ class ParticipationAdmin(admin.ModelAdmin):
response.write(codecs.BOM_UTF8) # force response to be UTF-8 response.write(codecs.BOM_UTF8) # force response to be UTF-8
writer = csv.writer(response, delimiter=';') writer = csv.writer(response, delimiter=';')
writer.writerow(['first_name', 'last_name', 'school', writer.writerow(['first_name', 'last_name', 'school', 'grade',
'phone_number', 'scholarship'] + field_names) 'phone_number', 'scholarship'] + field_names)
list_email = queryset.values_list("user__email", flat=True) list_email = queryset.values_list("user__email", flat=True)
...@@ -192,9 +192,9 @@ class ParticipationAdmin(admin.ModelAdmin): ...@@ -192,9 +192,9 @@ class ParticipationAdmin(admin.ModelAdmin):
name = User.objects.filter( name = User.objects.filter(
email=str(list_email[nb_user])).values('first_name', 'last_name', 'phone_number') email=str(list_email[nb_user])).values('first_name', 'last_name', 'phone_number')
school = Student.objects.filter( school = Student.objects.filter(
user__email=str(list_email[nb_user])).values('school', 'scholarship') user__email=str(list_email[nb_user])).values('school', 'grade', 'scholarship')
row = writer.writerow([name[0]['first_name'], name[0]['last_name'], school[0]['school'], name[0]['phone_number'], school[0]['scholarship']] + [getattr(obj, field) row = writer.writerow([name[0]['first_name'], name[0]['last_name'], school[0]['school'], school[0]['grade'], name[0]['phone_number'], school[0]['scholarship']] + [getattr(obj, field)
for field in field_names]) for field in field_names])
nb_user += 1 nb_user += 1
return response return response
......
# Generated by Django 2.2 on 2021-05-14 16:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('visits', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='visit',
name='context_sheet',
field=models.FileField(blank=True, help_text='Informe le lycéen de détails sur le contexte. Tout format supporté, PDF recommandé.', null=True, upload_to='visits/context_sheets/', verbose_name='fiche contexte'),
),
]
...@@ -169,11 +169,17 @@ class Visit(models.Model): ...@@ -169,11 +169,17 @@ class Visit(models.Model):
upload_to='visits/fact_sheets/', upload_to='visits/fact_sheets/',
help_text=('Informe le lycéen de détails sur la sortie. ' help_text=('Informe le lycéen de détails sur la sortie. '
'Tous formats supportés, PDF recommandé.')) 'Tous formats supportés, PDF recommandé.'))
context_sheet = models.FileField(
'fiche contexte', blank=True, null=True,
upload_to='visits/context_sheets/',
help_text=('Informe le lycéen de détails sur le contexte. '
'Tout format supporté, PDF recommandé.'))
permission = models.FileField( permission = models.FileField(
'autorisation de sortie', blank=True, null=True, 'autorisation de sortie', blank=True, null=True,
upload_to='visits/visit_permissions/', upload_to='visits/visit_permissions/',
help_text=('À mettre à disposition pour que le lycéen la remplisse. ' help_text=('À mettre à disposition pour que le lycéen la remplisse. '
'Tout format supporté, PDF recommandé.')) 'Tout format supporté, PDF recommandé.'))
participants = models.ManyToManyField('users.User', participants = models.ManyToManyField('users.User',
through='Participation') through='Participation')
organizers = models.ManyToManyField('profiles.Tutor', organizers = models.ManyToManyField('profiles.Tutor',
......
...@@ -94,7 +94,7 @@ class VisitSerializer(VisitListSerializer): ...@@ -94,7 +94,7 @@ class VisitSerializer(VisitListSerializer):
'place', 'date', 'start_time', 'end_time', 'meeting', 'place', 'date', 'start_time', 'end_time', 'meeting',
'deadline', 'passed', 'registrations_open', 'deadline', 'passed', 'registrations_open',
'participants', 'organizers', 'participants', 'organizers',
'image', 'fact_sheet', 'permission', 'image', 'fact_sheet', 'context_sheet', 'permission',
'url',) 'url',)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment