diff --git a/smash/web/models.py b/smash/web/models.py index fef1d4a2937df8b4794d00f75d3543e3bc1aa602..31442d511f17a5bda478a3a6451fd9d63c3626a2 100644 --- a/smash/web/models.py +++ b/smash/web/models.py @@ -67,11 +67,13 @@ class Subject(models.Model): dead = models.BooleanField( verbose_name='Dead', - default= False + default= False, + editable=False ) resigned = models.BooleanField( verbose_name='Resigned', - default= False + default= False, + editable=False ) default_appointment_location = models.CharField(max_length=1, choices=LOCATION_CHOICES, @@ -467,9 +469,14 @@ class Appointment(models.Model): )#Potentially redundant; but can be used to manually adjust appointment's length is_finished = models.BooleanField( verbose_name='Has the appointment ended?', - default=False + default=False, + editable=False ) + def mark_as_finished(self): + self.is_finished = True + self.save() + def datetime_until(self): if self.datetime_when is None: return None diff --git a/smash/web/templates/appointments/edit.html b/smash/web/templates/appointments/edit.html index 0b53364f4d057564b06d7272fabc28ec384ca9f0..35d60f3c2867725aba99acce1025b07806e50934 100644 --- a/smash/web/templates/appointments/edit.html +++ b/smash/web/templates/appointments/edit.html @@ -53,6 +53,9 @@ {% endif %} </div> {% endfor %} + <div class="col-md-6"> + <a href="{% url 'web.views.appointment_mark' id 'finished' %}" class="btn btn-warning btn-block">Mark as finished</a> + </div> </div><!-- /.box-body --> <div class="box-footer"> diff --git a/smash/web/urls.py b/smash/web/urls.py index 4a71af8d219c17bfc38fc7546edd2bc090122305..00b572e42be0a4b82f7ac23039bde642267fb952 100644 --- a/smash/web/urls.py +++ b/smash/web/urls.py @@ -22,6 +22,7 @@ urlpatterns = [ url(r'appointments/add/(?P<id>\d+)$', views.appointment_add, name='web.views.appointment_add'), url(r'appointments/edit/(?P<id>\d+)$', views.appointment_edit, name='web.views.appointment_edit'), url(r'appointments/edit_datetime/(?P<id>\d+)$', views.appointment_edit_datetime, name='web.views.appointment_edit_datetime'), + url(r'appointments/mark/(?P<id>\d+)/(?P<as_what>[A-z]+)$', views.appointment_mark, name='web.views.appointment_mark'), url(r'visits$', views.visits, name='web.views.visits'), url(r'visits/details/(?P<id>\d+)$', views.visit_details, name='web.views.visit_details'), diff --git a/smash/web/views.py b/smash/web/views.py index 56792a160a5143aa3d0b49b8a4d85d012bc5194f..6a9740caeb17ab9ffb4e36197bb2542332fcaf88 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -173,6 +173,12 @@ def subject_mark(request, id, as_what): who.mark_as_rejected() return redirect(subject_edit, id=id) +def appointment_mark(request, id, as_what): + appointment = get_object_or_404(Appointment, id=id) + if as_what == 'finished': + appointment.mark_as_finished() + return redirect(visit_details, id=appointment.visit.id) + def subject_visit_details(request, id): locsubject = get_object_or_404(Subject, id=id) visits = locsubject.visit_set.all() @@ -350,7 +356,7 @@ def appointment_edit(request, id): return redirect(appointments) else: form = AppointmentEditForm(instance=the_appointment) - return wrap_response(request, 'appointments/edit.html', {'form': form}) + return wrap_response(request, 'appointments/edit.html', {'form': form, 'id':id}) def appointment_edit_datetime(request, id):