From 152b58d9457ca95dc4bc9e87c0d540abf62a3eb0 Mon Sep 17 00:00:00 2001 From: Jacek Lebioda <jacek.lebioda.001@student.uni.lu> Date: Wed, 15 Feb 2017 23:50:16 +0100 Subject: [PATCH] Getting non-existant objects will yield 404 instead of 500 --- smash/web/models.py | 2 +- smash/web/views.py | 50 +++++++++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/smash/web/models.py b/smash/web/models.py index ff0dcb0a..c5b2915b 100644 --- a/smash/web/models.py +++ b/smash/web/models.py @@ -345,7 +345,7 @@ class Worker (models.Model): person = Worker.objects.filter(user=the_user) if len(person) == 0: - return (the_user.get_full_name(), 'Without worker information') + return (the_user.get_full_name(), '<No worker information>') else: # For get_*_display, see: # https://docs.djangoproject.com/en/1.10/topics/db/models/#field-options diff --git a/smash/web/views.py b/smash/web/views.py index 367fc0a2..d48eade1 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals from django.contrib.auth.decorators import login_required -from django.shortcuts import redirect, render +from django.shortcuts import redirect, render, get_object_or_404 from django.http import HttpResponse from django.template import loader from django.views import generic @@ -89,7 +89,7 @@ def visits(request): def visit_details(request, id): - displayedVisit = Visit.objects.get(id=id) + displayedVisit = get_object_or_404(Visit, id=id) visFinished = displayedVisit.is_finished vid = displayedVisit.id displayedSubject = displayedVisit.subject @@ -136,34 +136,37 @@ def subject_add(request): def subject_details(request, id): - form = SubjectDetailForm(instance=Subject.objects.get(id=id)) + the_subject = get_object_or_404(Subject, id=id) + form = SubjectDetailForm(instance=the_subject) sid = id return wrap_response(request, 'subjects/details.html', {'form': form, 'sid': sid}) def subject_edit(request, id): + the_subject = get_object_or_404(Subject, id=id) if request.method == 'POST': - form = SubjectEditForm(request.POST, request.FILES, instance=Subject.objects.get(id=id)) + form = SubjectEditForm(request.POST, request.FILES, instance=the_subject) if form.is_valid(): form.save() return redirect(subjects) else: - form = SubjectEditForm(instance=Subject.objects.get(id=id)) + form = SubjectEditForm(instance=the_subject) return wrap_response(request, 'subjects/edit.html', {'form': form, 'id':id}) def subject_delete(request, id): + the_subject = get_object_or_404(Subject, id=id) if request.method == 'POST': - Subject.objects.get(id=id).delete() - return redirect(subjects) + the_subject.delete() + return redirect(subjects) else: - form = SubjectEditForm(instance=Subject.objects.get(id=id)) + form = SubjectEditForm(instance=the_subject) return wrap_response(request, 'subjects/delete.html', {'form': form}) def subject_mark(request, id, as_what): - who = Subject.objects.get(id=id) + who = get_object_or_404(Subject, id=id) if as_what == 'dead': who.mark_as_dead() elif as_what == 'rejected': @@ -171,8 +174,7 @@ def subject_mark(request, id, as_what): return redirect(subject_edit, id=id) def subject_visit_details(request, id): - - locsubject = Subject.objects.get(id=id) + locsubject = get_object_or_404(Subject, id=id) visits = locsubject.visit_set.all() endlist = [] for vis in visits: @@ -210,18 +212,20 @@ def doctor_add(request): def doctor_edit(request, doctor_id): + the_doctor = get_object_or_404(Worker, id=doctor_id) if request.method == 'POST': - form = WorkerEditForm(request.POST, request.FILES, instance=Worker.objects.get(id=doctor_id)) + form = WorkerEditForm(request.POST, request.FILES, instance=the_doctor) if form.is_valid(): form.save() return redirect(doctors) else: - form = WorkerEditForm(instance=Worker.objects.get(id=doctor_id)) + form = WorkerEditForm(instance=the_doctor) return wrap_response(request, 'doctors/edit.html', {'form': form}) def doctor_details(request, doctor_id): - form = WorkerDetailForm(instance=Worker.objects.get(id=doctor_id)) + the_doctor = get_object_or_404(Worker, id=doctor_id) + form = WorkerDetailForm(instance=the_doctor) return wrap_response(request, 'doctors/details.html', {'form': form}) @@ -311,7 +315,8 @@ def appointments(request): return wrap_response(request, "appointments/index.html",context) def appointment_details(request, id): - form = AppointmentDetailForm(instance=Appointment.objects.get(id=id)) + the_appointment = get_object_or_404(Appointment, id=id) + form = AppointmentDetailForm(instance=the_appointment) return wrap_response(request, 'appointments/details.html', {'form': form}) @@ -329,30 +334,31 @@ def appointment_add(request, id): return wrap_response(request, 'appointments/add.html', {'form': form, 'visitID': id}) def appointment_edit(request, id): + the_appointment = get_object_or_404(Appointment, id=id) if request.method == 'POST': - form = AppointmentEditForm(request.POST, request.FILES, instance=Appointment.objects.get(id=id)) + form = AppointmentEditForm(request.POST, request.FILES, instance=the_appointment) if form.is_valid(): form.save() data = form.cleaned_data vis = data['visit'] - visit = Visit.objects.get(id=vis.id) + visit = get_object_or_404(Visit, id=vis.id) visit.end_if_appointments_were_finished() return redirect(appointments) else: - form = AppointmentEditForm(instance=Appointment.objects.get(id=id)) + form = AppointmentEditForm(instance=the_appointment) return wrap_response(request, 'appointments/edit.html', {'form': form}) def appointment_edit_datetime(request, id): + the_appointment = get_object_or_404(Appointment, id=id) if request.method == 'POST': - form = AppointmentEditForm(request.POST, request.FILES, instance=Appointment.objects.get(id=id)) + form = AppointmentEditForm(request.POST, request.FILES, instance=the_appointment) if form.is_valid(): form.save() return redirect(appointments) else: - obj = Appointment.objects.get(id=id) - obj.datetime_when = obj.visit.datetime_begin - form = AppointmentEditForm(instance=obj) + the_appointment.datetime_when = the_appointment.visit.datetime_begin + form = AppointmentEditForm(instance=the_appointment) return wrap_response(request, 'appointments/edit.html', {'form': form}) -- GitLab