Skip to content
Snippets Groups Projects
Commit 3669107c authored by Piotr Gawron's avatar Piotr Gawron
Browse files

list of equipment added (without customized dates)

parent 0983f6b8
No related branches found
No related tags found
1 merge request!6Resolve "IBBL technician view"
...@@ -214,6 +214,12 @@ class Item (models.Model): ...@@ -214,6 +214,12 @@ class Item (models.Model):
default=False, default=False,
verbose_name='Is the item fixed?' verbose_name='Is the item fixed?'
) )
disposable = models.BooleanField(
default=False,
verbose_name='Disposable set'
)
name = models.CharField(max_length=255, name = models.CharField(max_length=255,
verbose_name='Name' verbose_name='Name'
) )
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
{% endblock breadcrumb %} {% endblock breadcrumb %}
{% block maincontent %} {% block maincontent %}
{% comment %}
<div class="box box-danger box-solid"> <div class="box box-danger box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title">Not yet implemented</h3> <h3 class="box-title">Not yet implemented</h3>
...@@ -27,8 +28,12 @@ ...@@ -27,8 +28,12 @@
<!-- /.box-body --> <!-- /.box-body -->
</div> </div>
{% endcomment %}
<div class="row"> <div class="row">
{% comment %}
<div class="col-md-3"> <div class="col-md-3">
<div class="bg-red-active small-box"> <div class="bg-red-active small-box">
<div class="inner"> <div class="inner">
<h4>Types of equipment</h4> <h4>Types of equipment</h4>
...@@ -71,22 +76,24 @@ ...@@ -71,22 +76,24 @@
</a> </a>
</div> </div>
</div> </div>
{% endcomment %}
<div class="col-md-3"> <div class="col-md-3">
<div class="bg-yellow-active small-box"> <div class="bg-yellow-active small-box">
<div class="inner"> <div class="inner">
<h4>Equipment requests</h4> <h4>Kit requests</h4>
<p>&nbsp;</p> <p>&nbsp;</p>
</div> </div>
<div class="icon"> <div class="icon">
<i class="ion ion-compose"></i> <i class="ion ion-compose"></i>
</div> </div>
<a href="#" class="small-box-footer"> <a href="{% url 'web.views.kit_requests' %}" class="small-box-footer">
Edit <i class="fa fa-arrow-circle-right"></i> See <i class="fa fa-arrow-circle-right"></i>
</a> </a>
</div> </div>
{% comment %}
<div class="bg-yellow small-box"> <div class="bg-yellow small-box">
<div class="inner"> <div class="inner">
<h4>Equipment in rooms</h4> <h4>Equipment in rooms</h4>
...@@ -100,8 +107,10 @@ ...@@ -100,8 +107,10 @@
Edit <i class="fa fa-arrow-circle-right"></i> Edit <i class="fa fa-arrow-circle-right"></i>
</a> </a>
</div> </div>
{% endcomment %}
</div> </div>
{% comment %}
<div class="col-md-3"> <div class="col-md-3">
<div class="bg-green-active small-box"> <div class="bg-green-active small-box">
<div class="inner"> <div class="inner">
...@@ -145,5 +154,7 @@ ...@@ -145,5 +154,7 @@
</a> </a>
</div> </div>
</div> </div>
{% endcomment %}
</div> </div>
{% endblock maincontent %} {% endblock maincontent %}
{% extends "_base.html" %}
{% 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 %}
{% endblock page_header %}
{% block page_description %}
{% endblock page_description %}
{% block breadcrumb %}
{% include "equipment_and_rooms/breadcrumb.html" %}
{% endblock breadcrumb %}
{% block maincontent %}
<div class="row">
<div class="col-md-12">
<table id="visit_table" class="table table-bordered table-striped">
<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>
</div>
</div>
{% endblock maincontent %}
...@@ -40,13 +40,17 @@ def create_worker(): ...@@ -40,13 +40,17 @@ def create_worker():
email='jacob@bla', email='jacob@bla',
) )
def create_visit(subject): def create_visit(subject = None):
if subject == None:
subject= create_subject()
return Visit.objects.create(datetime_begin=get_today_midnight_date()+datetime.timedelta(days=-31), return Visit.objects.create(datetime_begin=get_today_midnight_date()+datetime.timedelta(days=-31),
datetime_end=get_today_midnight_date()+datetime.timedelta(days=31), datetime_end=get_today_midnight_date()+datetime.timedelta(days=31),
subject =subject, subject =subject,
is_finished = False) is_finished = False)
def create_appointment(visit): def create_appointment(visit= None):
if visit == None:
visit = create_visit()
return Appointment.objects.create( return Appointment.objects.create(
visit = visit, visit = visit,
length = 30, length = 30,
......
from django.test import TestCase, RequestFactory
from django.urls import reverse
from web.views import *
from web.tests.functions import *
class ViewFunctionsTests(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = create_user()
def test_kit_requests(self):
request = self.factory.get(reverse('web.views.kit_requests'));
request.user = self.user
response = kit_requests(request);
self.assertEqual(response.status_code, 200)
def test_kit_requests_2(self):
item_name = "Test item to be ordered"
item = Item.objects.create(disposable=True, name=item_name)
appointment_type = create_appointment_type()
appointment_type.required_equipment.add(item)
appointment_type.save()
appointment = create_appointment()
appointment.datetime_when = get_today_midnight_date() + datetime.timedelta(days=2)
appointment.appointment_types.add(appointment_type)
appointment.save()
request = self.factory.get(reverse('web.views.kit_requests'));
request.user = self.user
response = kit_requests(request);
self.assertEqual(response.status_code, 200)
self.assertTrue(item_name in response.content)
def test_kit_requests_4(self):
item_name = "Test item to be ordered"
item = Item.objects.create(disposable=True, name=item_name)
appointment_type = create_appointment_type()
appointment_type.required_equipment.add(item)
appointment_type.save()
appointment = create_appointment()
appointment.datetime_when = get_today_midnight_date() + datetime.timedelta(days=2)
appointment.appointment_types.add(appointment_type)
appointment.status = Appointment.APPOINTMENT_STATUS_CANCELLED
appointment.save()
request = self.factory.get(reverse('web.views.kit_requests'));
request.user = self.user
response = kit_requests(request);
self.assertEqual(response.status_code, 200)
self.assertFalse(item_name in response.content)
def test_kit_requests_3(self):
item_name = "Test item to be ordered"
item = Item.objects.create(disposable=True, name=item_name)
appointment_type = create_appointment_type()
appointment_type.required_equipment.add(item)
appointment_type.save()
appointment = create_appointment()
appointment.datetime_when = get_today_midnight_date() + datetime.timedelta(days=2)
appointment.appointment_types.add(appointment_type)
appointment.location = create_location("other_loc")
appointment.save()
request = self.factory.get(reverse('web.views.kit_requests'));
request.user = self.user
response = kit_requests(request);
self.assertEqual(response.status_code, 200)
self.assertFalse(not item_name in response.content)
...@@ -56,6 +56,9 @@ urlpatterns = [ ...@@ -56,6 +56,9 @@ urlpatterns = [
url(r'^equipment_and_rooms$', views.equipment_and_rooms, name='web.views.equipment_and_rooms'), 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/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'^mail_templates$', views.mail_templates, name='web.views.mail_templates'), url(r'^mail_templates$', views.mail_templates, name='web.views.mail_templates'),
......
...@@ -15,6 +15,7 @@ import datetime ...@@ -15,6 +15,7 @@ import datetime
from django.db.models import Count from django.db.models import Count
from django.db.models import Case from django.db.models import Case
from django.db.models import When from django.db.models import When
from django.utils.dateparse import parse_datetime
import csv import csv
...@@ -76,12 +77,15 @@ class NotificationCount(object): ...@@ -76,12 +77,15 @@ class NotificationCount(object):
def get_filter_locations(user): def get_filter_locations(user):
worker = None worker = None
if isinstance(user, User): if isinstance(user, User):
workers = Worker.objects.filter(user=user) workers = Worker.objects.filter(user=user)
if len(workers)>0: if len(workers)>0:
worker = workers[0] worker = workers[0]
else: elif isinstance(user, Worker):
worker = user worker = user
elif user!=None:
raise TypeError("Unknown class type: "+user.__class__.__name__)
if worker==None or worker.locations.count() == 0: if worker==None or worker.locations.count() == 0:
return Location.objects.all() return Location.objects.all()
...@@ -699,3 +703,34 @@ def write_appointments_to_csv(writer): ...@@ -699,3 +703,34 @@ def write_appointments_to_csv(writer):
def export(request): def export(request):
return wrap_response(request, 'export/index.html',{}) return wrap_response(request, 'export/index.html',{})
def get_kit_requests(user, start_date = '', end_date = ''):
if start_date =='':
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 != '':
end_date = parse_datetime(end_date)
appointment_types = AppointmentType.objects.filter(required_equipment__disposable=True)
appointments = Appointment.objects.filter(
appointment_types__in = appointment_types,
datetime_when__gt = start_date,
location__in = get_filter_locations(user),
status = Appointment.APPOINTMENT_STATUS_SCHEDULED,
)
if end_date!='':
appointments = appointments.filter(datetime_when__lt = end_date)
result = {
'start_date' : start_date,
'end_date' : end_date,
'appointments' : appointments,
}
return result
def kit_requests(request,start_date = '', end_date = ''):
return wrap_response(request, 'equipment_and_rooms/kit_requests.html', get_kit_requests(request.user, start_date, end_date))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment