# coding=utf-8 from django.contrib import messages from django.shortcuts import get_object_or_404, redirect from . import wrap_response from ..forms import AppointmentDetailForm, AppointmentAddForm, AppointmentEditForm, SubjectEditForm from ..models import Appointment, Subject, MailTemplate APPOINTMENT_LIST_GENERIC = "GENERIC" APPOINTMENT_LIST_UNFINISHED = "UNFINISHED" APPOINTMENT_LIST_APPROACHING = "APPROACHING" def appointments(request): context = { 'approaching_list': APPOINTMENT_LIST_APPROACHING, 'full_list': APPOINTMENT_LIST_GENERIC } return wrap_response(request, "appointments/index.html", context) def unfinished_appointments(request): context = { 'list_type': APPOINTMENT_LIST_UNFINISHED, } return wrap_response(request, "appointments/list.html", context) def appointment_details(request, id): the_appointment = get_object_or_404(Appointment, id=id) form = AppointmentDetailForm(instance=the_appointment) return wrap_response(request, 'appointments/details.html', {'form': form}) def appointment_add(request, visit_id=None): if request.method == 'POST': form = AppointmentAddForm(request.POST, request.FILES, user=request.user) if form.is_valid(): form.instance.visit_id = visit_id form.save() if visit_id is None: return redirect('web.views.appointments') else: return redirect('web.views.visit_details', id=visit_id) else: form = AppointmentAddForm(user=request.user) return wrap_response(request, 'appointments/add.html', {'form': form, 'visitID': visit_id, 'full_list': APPOINTMENT_LIST_GENERIC}) def appointment_edit(request, id): the_appointment = get_object_or_404(Appointment, id=id) subject_form = None if request.method == 'POST': appointment_form = AppointmentEditForm(request.POST, request.FILES, instance=the_appointment, user=request.user, prefix="appointment") is_valid_form = True if the_appointment.visit is not None: subject_form = SubjectEditForm(request.POST, instance=the_appointment.visit.subject, prefix="subject") if not subject_form.is_valid(): is_valid_form = False if not appointment_form.is_valid(): is_valid_form = False if is_valid_form: appointment_form.save() if subject_form is not None: subject_form.save() the_appointment = get_object_or_404(Appointment, id=id) if the_appointment.status == Appointment.APPOINTMENT_STATUS_FINISHED: subject = Subject.objects.get(id=the_appointment.visit.subject.id) subject.information_sent = True subject.save() messages.success(request, "Modifications saved") if '_continue' in request.POST: return redirect('web.views.appointment_edit', id=the_appointment.id) if (the_appointment.status != Appointment.APPOINTMENT_STATUS_SCHEDULED) and ( the_appointment.visit is not None): return redirect('web.views.visit_details', id=the_appointment.visit.id) else: return redirect('web.views.appointments') else: appointment_form = AppointmentEditForm(instance=the_appointment, user=request.user, prefix="appointment") if the_appointment.visit is not None: subject_form = SubjectEditForm(instance=the_appointment.visit.subject, prefix="subject") languages = [] if the_appointment.visit is not None: subject = the_appointment.visit.subject if subject.default_written_communication_language: languages.append(subject.default_written_communication_language) languages.extend(subject.languages.all()) return wrap_response(request, 'appointments/edit.html', { 'form': appointment_form, 'subject_form': subject_form, 'id': id, 'appointment': the_appointment, 'mail_templates': MailTemplate.get_appointment_mail_templates(languages) })