diff --git a/smash/web/forms.py b/smash/web/forms.py index d3acb5f4b0422f96612ba9749f50e8ca3bd23324..da8682ad36472273abe91ceb797a8267053c59f5 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -46,3 +46,8 @@ class AppointmentDetailForm(ModelForm): class Meta: model = Appointment fields = '__all__' + +class VisitDetailForm(ModelForm): + class Meta: + model = Visit + exclude = ['visitFinished'] diff --git a/smash/web/templates/visits/details.html b/smash/web/templates/visits/details.html new file mode 100644 index 0000000000000000000000000000000000000000..0a609e97ed9c0e856aeaddcad8bc5017a5353bff --- /dev/null +++ b/smash/web/templates/visits/details.html @@ -0,0 +1,172 @@ +{% extends "_base.html" %} +{% load static %} +{% load filters %} + +{% block styles %} +{{ block.super }} + <!-- DataTables --> + <link rel="stylesheet" href="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.css' %}"> +{% endblock styles %} + +{% block page_title %}'visits'{% endblock page_title %} +{% block page_header %}Details of the visit{% endblock page_header %} +{% block page_description %}{% endblock page_description %} + +{% block title %}{{ block.super }} - Details of visit {% endblock %} + +{% block breadcrumb %} +{% include "subjects/breadcrumb.html" %} +{% endblock breadcrumb %} + +{% block maincontent %} + +{% block content %} +<div class="box box-info"> + <div class="box-header with-border"> + <a href="{% url 'web.views.visits' %}" class="btn btn-block btn-default" onclick="history.back()">Back</a> + </div> + + <div class="box-header with-border"> + <h3 class="box-title">Details of visit</h3> + </div> + + <form class="form-horizontal"> + <div class="box-body"> + {% for field in vform %} + <div class="col-md-6 form-group {% if field.errors %}has-error{% endif %}"> + <label for="{# TODO #}" class="col-sm-4 control-label"> + {{ field.label }} + </label> + + <div class="col-sm-8"> + {{ field|add_class:'form-control' }} + </div> + + {% if field.errors %} + <span class="help-block"> + {{ field.errors }} + </span> + {% endif %} + </div> + {% endfor %} + + <td> + Visit finished: {% if visFinished %}<button type="button" class="btn btn-block btn-danger">YES</button> + {% else %}<button type="button" class="btn btn-block btn-success">NO</button> + {% endif %} + </td> + </div><!-- /.box-body --> + + + </form> + + + + + + + + + + + + + + +<div class="box-header with-border"> + <h3 class="box-title">Visit's assignments</h3> +</div> + +{% if loApp %} +<table id="table" class="table table-bordered table-striped"> + <thead> + <tr> + <th>No.</th> + <th>Type</th> + <th>Date</th> + <th>Time</th> + <th>Length [min]</th> + <th>Responsible</th> + <th>Plan/Modify</th> + </tr> + </thead> +<tbody> + {% for app in loApp %} + <tr> + <td>{{ forloop.counter }}</td> + <td>{{ app.appointmentType }}</td> + <td>{{ app.appDateTime | date:"d-M-Y" }}</td> + <td>{{ app.appDateTime | time:"H:i" }}</td> + <td>{{ app.appLength }}</td> + <td> + {% if app.flyingTeam %}{{ app.workerAssigned.firstName }} {{app.workerAssigned.lastName}} + {% else %} {{ app.flyingTeam }} + {% endif %} + </td> + <td> <a href="" type="button" class="btn btn-block btn-default">TODO</a> </td> + </tr> + {% endfor %} + +</tbody> +</table> +{% else %} + <p>No appointments found.</p> +{% endif %} + + + + + + + + + + + +<div class="box-header with-border"> + <h3 class="box-title">Subject's details</h3> +</div> + +<form class="form-horizontal"> + <div class="box-body"> + {% for field in sform %} + <div class="col-md-6 form-group {% if field.errors %}has-error{% endif %}"> + <label for="{# TODO #}" class="col-sm-4 control-label"> + {{ field.label }} + </label> + + <div class="col-sm-8"> + {{ field|add_class:'form-control' }} + </div> + + {% if field.errors %} + <span class="help-block"> + {{ field.errors }} + </span> + {% endif %} + </div> + {% endfor %} + </div><!-- /.box-body --> + + <div class="box-footer"> + <a href="{% url 'web.views.subjects' %}" class="btn btn-block btn-default" onclick="history.back()">Back</a> + </div><!-- /.box-footer --> +</form> +</div> + +</form> +{% endblock %} + + + +</div> + +{% endblock maincontent %} + +{% block scripts %} + {{ block.super }} + + <script src="{% static 'AdminLTE/plugins/datatables/jquery.dataTables.min.js' %}"></script> + <script src="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.min.js' %}"></script> + +{% endblock scripts %} diff --git a/smash/web/templates/visits/index.html b/smash/web/templates/visits/index.html index b83917ebfe5d0cb9855238f5b0e5a0ac4124b6e4..c18b0a5d4eea304922b93303d380337d2e35ca7a 100644 --- a/smash/web/templates/visits/index.html +++ b/smash/web/templates/visits/index.html @@ -1,6 +1,7 @@ {% extends "_base.html" %} {% load static %} + {% block styles %} {{ block.super }} <!-- DataTables --> @@ -41,7 +42,7 @@ <tr> <td>{{ visit.subject.firstName }} {{ visit.subject.lastName }}</td> <td> - <button type="button" class="btn btn-block btn-default btn-xs">See full information</button> + <a href="{% url 'web.views.visit_details' visit.id %}" type="button" class="btn btn-block btn-default">Details</a> </td> <td> {{ visit.visitBegin }} diff --git a/smash/web/urls.py b/smash/web/urls.py index 262a285cd913470e0d7a3565fe405595a1399ef6..9c77915e6af01752a2982d2be3c3e3c0e0e436f8 100644 --- a/smash/web/urls.py +++ b/smash/web/urls.py @@ -21,6 +21,7 @@ urlpatterns = [ url(r'assignments/details/(?P<id>\d+)$', views.assignment_details, name='web.views.assignment_details'), url(r'visits$', views.visits, name='web.views.visits'), + url(r'visits/details/(?P<id>\d+)$', views.visit_details, name='web.views.visit_details'), url(r'subjects$', views.subjects, name='web.views.subjects'), url(r'subjects/add$', views.subject_add, name='web.views.subject_add'), diff --git a/smash/web/views.py b/smash/web/views.py index 81ed49c8911346434d19de9649366c159f1d45fb..52e761632bb7daf669f98365eeca562c743dd986 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -62,6 +62,17 @@ def visits(request): return wrap_response(request, 'visits/index.html', context) +def visit_details(request, id): + displayedVisit = Visit.objects.get(id=id) + visFinished = displayedVisit.visitFinished + displayedSubject = displayedVisit.subject + listOfAppointments = displayedVisit.appointment_set.all() + vform = VisitDetailForm(instance=displayedVisit) + sform = SubjectDetailForm(instance=displayedSubject) + + return wrap_response(request, 'visits/details.html', {'vform': vform, 'sform': sform, 'loApp': listOfAppointments, 'visFinished': visFinished}) + + def subjects(request): subjects_list = Subject.objects.order_by('-lastName') context = {