diff --git a/smash/web/forms.py b/smash/web/forms.py index 5df96b139a5ce82909d37a17021ccff7dca13724..663f68869f6d81e87e02507d16b2f308474919bf 100644 --- a/smash/web/forms.py +++ b/smash/web/forms.py @@ -1,5 +1,5 @@ from django import forms -from django.forms import ModelForm +from django.forms import ModelForm, Form from .models import * from datetime import datetime @@ -156,3 +156,14 @@ class VisitAddForm(ModelForm): if (self.cleaned_data['datetime_begin']>=self.cleaned_data['datetime_end']): self.add_error('datetime_begin', "Start date must be before end date") self.add_error('datetime_end', "Start date must be before end date") + +class KitRequestForm(Form): + start_date = forms.DateField(label="From date", + widget=forms.DateInput(DATEPICKER_DATE_ATTRS, "%Y-%m-%d"), + required=False + ) + + end_date = forms.DateField(label="End date", + widget=forms.DateInput(DATEPICKER_DATE_ATTRS, "%Y-%m-%d"), + required=False + ) diff --git a/smash/web/templates/equipment_and_rooms/kit_requests.html b/smash/web/templates/equipment_and_rooms/kit_requests.html index 6f5154b8aed715cbc0d5e27d200cd85ac8814898..b9881bd23f51782703c9782bd84cf63f094082e3 100644 --- a/smash/web/templates/equipment_and_rooms/kit_requests.html +++ b/smash/web/templates/equipment_and_rooms/kit_requests.html @@ -2,21 +2,58 @@ {% block ui_active_tab %}'equipment_and_rooms'{% endblock ui_active_tab %} {% block page_header %} - Kits required between {{ start_date | date:"Y-m-d" }} and {% ifequal end_date '' %} end of time {% else %} {{ end_date | date:"Y-m-d" }} {% endifequal %} + Kits required between {{ start_date | date:"Y-m-d" }} and {% if end_date %} {{ end_date | date:"Y-m-d" }} {% else %} end of time {% endif %} {% endblock page_header %} {% block page_description %} {% endblock page_description %} +{% block styles %} +{{ block.super }} + {% include "includes/datepicker.css.html" %} +{% endblock styles %} + {% block breadcrumb %} {% include "equipment_and_rooms/breadcrumb.html" %} {% endblock breadcrumb %} {% block maincontent %} -<div class="row"> +{% block content %} +<div class="box box-info"> + <form method="post" action="" class="form-horizontal"> + {% csrf_token %} + + <div class="box-body"> + <div class="col-sm-6"> + {% for field in form %} + <div class="form-group {% if field.errors %}has-error{% endif %}"> + <label class="col-sm-4 control-label"> + {{ field.label }} + </label> + + <div class="col-sm-8"> + {{ field }} + </div> + + {% if field.errors %} + <span class="help-block"> + {{ field.errors }} + </span> + {% endif %} + </div> + {% endfor %} + </div> + </div> + + <div class="box-footer"> + <div class="col-sm-6"> + <button type="submit" class="btn btn-block btn-success">Search</button> + </div> + </div><!-- /.box-footer --> + </form> - <div class="col-md-12"> + <div class="box col-md-12"> <table id="visit_table" class="table table-bordered table-striped"> <thead> <tr> @@ -41,8 +78,26 @@ {% endfor %} </tbody> </table> + + <div class="box-footer"> + <div class="col-sm-12"> + {% if end_date == None %} + <a href="{% url 'web.views.kit_requests_send_mail' start_date|date:"Y-m-d" %}" class="btn btn-block btn-default">Show email content</a> + {% else %} + <a href="{% url 'web.views.kit_requests_send_mail' start_date|date:"Y-m-d" end_date|date:"Y-m-d" %}" class="btn btn-block btn-default">Show email content</a> + {% endif %} + </div> + </div><!-- /.box-footer --> + </div> </div> +{% endblock %} {% endblock maincontent %} + +{% block scripts %} + {{ block.super }} + + {% include "includes/datepicker.js.html" %} +{% endblock scripts %} diff --git a/smash/web/templates/equipment_and_rooms/kit_requests_send_mail.html b/smash/web/templates/equipment_and_rooms/kit_requests_send_mail.html new file mode 100644 index 0000000000000000000000000000000000000000..1c89a616bcb4c2e997d28b80d126e91908109cec --- /dev/null +++ b/smash/web/templates/equipment_and_rooms/kit_requests_send_mail.html @@ -0,0 +1,26 @@ +<h1>Kits required between {{ start_date }} and {% if end_date %} {{ end_date }} {% else %} end of time {% endif %}</h1> +<table> + <thead> + <tr> + <th>Date</th> + <th>Kits</th> + </tr> + </thead> + <tbody> + + {% for appointment in appointments %} + <tr> + <td>{{ appointment.datetime_when | date:"Y-m-d H:i"}} </td> + <td> + {% for type in appointment.appointment_types.all %} + {% for item in type.required_equipment.all %} + {% if item.disposable %} + {{ item.name }}, + {% endif %} + {% endfor %} + {% endfor %} + </td> + </tr> + {% endfor %} + </tbody> +</table> diff --git a/smash/web/urls.py b/smash/web/urls.py index e2dadb712d672e226dad1a5c978287a28e2aa345..6712d2a4c1420c5ff8a9376b3af970c1653209fa 100644 --- a/smash/web/urls.py +++ b/smash/web/urls.py @@ -57,7 +57,8 @@ urlpatterns = [ url(r'^equipment_and_rooms$', views.equipment_and_rooms, name='web.views.equipment_and_rooms'), url(r'^equipment_and_rooms/eqdef$', views.equipment_def, name='web.views.equipment_def'), url(r'^equipment_and_rooms/kit_requests$', views.kit_requests, name='web.views.kit_requests'), - url(r'^equipment_and_rooms/kit_requests/(?P<start_date>\w+)/(?P<end_date>\w+)/$', views.kit_requests, name='web.views.kit_requests'), + url(r'^equipment_and_rooms/kit_requests/(?P<start_date>[\w-]+)/$', views.kit_requests_send_mail, name='web.views.kit_requests_send_mail'), + url(r'^equipment_and_rooms/kit_requests/(?P<start_date>[\w-]+)/(?P<end_date>[\w-]+)/$', views.kit_requests_send_mail, name='web.views.kit_requests_send_mail'), url(r'^mail_templates$', views.mail_templates, name='web.views.mail_templates'), diff --git a/smash/web/views.py b/smash/web/views.py index fe3d78c268b7d988cf8db26efef5091c2dce7469..f86045232d1fe15512965d84493e010f7308d156 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -704,13 +704,14 @@ def write_appointments_to_csv(writer): def export(request): return wrap_response(request, 'export/index.html',{}) -def get_kit_requests(user, start_date = '', end_date = ''): - if start_date =='': +def get_kit_requests(user, start_date = None, end_date = None): + if start_date == None: start_date = get_today_midnight_date() + datetime.timedelta(days=1) end_date = start_date + datetime.timedelta(days=7) else : - start_date = parse_datetime(start_date) - if end_date != '': + if isinstance(start_date, str): + start_date = parse_datetime(start_date) + if (end_date != None) and (isinstance(end_date, str)): end_date = parse_datetime(end_date) appointment_types = AppointmentType.objects.filter(required_equipment__disposable=True) @@ -721,7 +722,7 @@ def get_kit_requests(user, start_date = '', end_date = ''): location__in = get_filter_locations(user), status = Appointment.APPOINTMENT_STATUS_SCHEDULED, ) - if end_date!='': + if end_date!=None: appointments = appointments.filter(datetime_when__lt = end_date) result = { @@ -731,6 +732,26 @@ def get_kit_requests(user, start_date = '', end_date = ''): } return result -def kit_requests(request,start_date = '', end_date = ''): +def get_kit_requests_data(request, start_date = None, end_date = None): + form = KitRequestForm() + if request.method=='POST': + form = KitRequestForm(request.POST) + if form.is_valid(): + form_data = form.cleaned_data + start_date = form_data.get('start_date') + end_date = form_data.get('end_date') + + params = get_kit_requests(request.user, start_date, end_date) + params.update({ + 'form': form + }) + print "\n\n\n\n" + print params['start_date'] + print "\n\n\n\n" + return params + +def kit_requests(request): + return wrap_response(request, 'equipment_and_rooms/kit_requests.html', get_kit_requests_data(request)) - return wrap_response(request, 'equipment_and_rooms/kit_requests.html', get_kit_requests(request.user, start_date, end_date)) +def kit_requests_send_mail(request, start_date, end_date = None): + return wrap_response(request, 'equipment_and_rooms/kit_requests_send_mail.html', get_kit_requests_data(request, start_date, end_date))