From 2b32ca4b808f6ab2d38f3e871754c306d293717d Mon Sep 17 00:00:00 2001 From: Gael Le Mignot Date: Wed, 19 Sep 2018 15:05:34 +0200 Subject: [PATCH] Minor fixes --- teleforma/admin.py | 13 ++++++++++--- teleforma/templates/teleforma/appointments.html | 2 +- teleforma/views/appointment.py | 17 +++++++++++------ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/teleforma/admin.py b/teleforma/admin.py index 139c0b27..a926f5fe 100644 --- a/teleforma/admin.py +++ b/teleforma/admin.py @@ -212,13 +212,20 @@ class AppointmentAdmin(admin.ModelAdmin): writer = csv.writer(response) writer.writerow(['date', 'creneau', 'nom', 'prenom', 'iej', 'jury']) + def csv_encode(item): + if isinstance(item, unicode): + return item.encode('utf-8') + else: + return item + for app in queryset: user = app.student student = user.student.all()[0] - writer.writerow([ - app.day, app.start, user.last_name, user.first_name, student.iej, app.jury.name - ]) + row = [ app.day, app.start, user.last_name, user.first_name, student.iej, app.jury.name ] + row = [ csv_encode(col) for col in row ] + + writer.writerow(row) return response export_csv.short_description = "Exporter en CSV" diff --git a/teleforma/templates/teleforma/appointments.html b/teleforma/templates/teleforma/appointments.html index 309247c3..39eed1db 100644 --- a/teleforma/templates/teleforma/appointments.html +++ b/teleforma/templates/teleforma/appointments.html @@ -239,7 +239,7 @@ {% else %} - Reservé + Réservé {% endif %} {% endif %} diff --git a/teleforma/views/appointment.py b/teleforma/views/appointment.py index 269a8125..ade519fe 100644 --- a/teleforma/views/appointment.py +++ b/teleforma/views/appointment.py @@ -25,8 +25,11 @@ class Appointments(View): student = user.student.all().count() if not student: return HttpResponse('Unauthorized', status=401) - periods = [ int(p.id) for p in get_periods(user) ] - if not int(period_id) in periods: + period_id = int(period_id) + periods = [ p for p in get_periods(user) if int(p.id) == period_id ] + if not periods: + return HttpResponse('Unauthorized', status=401) + if not periods[0].enable_appointment: return HttpResponse('Unauthorized', status=401) return @@ -139,14 +142,16 @@ class Appointments(View): def cancel_appointment(request): period_id = request.POST['period_id'] appointment_id = request.POST['appointment_id'] - try: - app = Appointment.objects.get(id=appointment_id) - except Appointment.DoesNotExist: - pass + + app = get_object_or_404(Appointment, id=appointment_id) if app.student != request.user: return HttpResponse('Unauthorized', status=401) + if not app.can_cancel(): + messages.add_message(request, messages.ERROR, ' Il est trop tard pour annuler ce rendez-vous.') + return redirect('teleforma-appointments', period_id=period_id) + app.delete() messages.add_message(request, messages.INFO, 'Votre réservation a été annulé.') return redirect('teleforma-appointments', period_id=period_id) -- 2.39.5