diff --git a/smash/web/models.py b/smash/web/models.py index 1454418ace8f9b0fa689d092a2da0a82ab86db72..18d09a956d97fec61ebcca4e4013a171499d3c95 100644 --- a/smash/web/models.py +++ b/smash/web/models.py @@ -3,8 +3,7 @@ from __future__ import unicode_literals from django.db import models from django.utils import timezone from django.contrib.auth.models import User - - +import datetime class Language (models.Model): @@ -89,14 +88,30 @@ class AppType (models.Model): class Worker (models.Model): languages = models.ManyToManyField(Language) - appointments = models.ManyToManyField('Appointment') + appointments = models.ManyToManyField('Appointment', blank=True) user = models.OneToOneField(User) firstName = models.CharField(max_length=50) lastName = models.CharField(max_length=50) phoneNo = models.CharField(max_length=20) + unit = models.CharField(max_length=50) email = models.EmailField() - role = models.CharField(max_length=20) + ROLE_CHOICES = ( + ('DOCTOR', 'Doctor'), + ('NURSE', 'Nurse'), + ('PSYCHOLOGIST', 'Psychologist'), + ('TECHNICIAN', 'Technician'), + ('SECRETARY', 'Secretary') + ) + role = models.CharField(max_length=20, choices = ROLE_CHOICES) specialization = models.CharField(max_length=20) + def isOnLeave(self): + if len(self.holiday_set.filter(holidayEnd__gt=datetime.datetime.now(), + holidayStart__lt=datetime.datetime.now())): + return True + return False + + def __str__(self): + return self.firstName + " " + self.lastName class FlyingTeam(models.Model): @@ -131,4 +146,6 @@ class Appointment(models.Model): + + # Create your models here. diff --git a/smash/web/templates/_base.html b/smash/web/templates/_base.html index d495471a21c2c8dcb2131a272ae166df3b6fdc69..7b5fbb9e9a18bdff4efcee8cf2682bdb27e52c2b 100644 --- a/smash/web/templates/_base.html +++ b/smash/web/templates/_base.html @@ -5,20 +5,20 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>{% block title %}Scheduling system{% endblock title %}</title> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> - - {% block styles %} + + {% block styles %} <!-- Bootstrap 3.3.6 --> <link rel="stylesheet" href="{% static 'AdminLTE/css/bootstrap.min.css' %}"> - + <!-- Font Awesome --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> - + <!-- Ionicons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css"> - + <!-- Theme style --> <link rel="stylesheet" href="{% static 'AdminLTE/css/AdminLTE.min.css' %}"> - + <link rel="stylesheet" href="{% static 'AdminLTE/css/skins/skin-green.min.css' %}"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> @@ -67,7 +67,7 @@ desired effect <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"> <span class="sr-only">Toggle navigation</span> </a> - + <!-- Navbar Right Menu --> <div class="navbar-custom-menu"> <ul class="nav navbar-nav"> @@ -109,7 +109,7 @@ desired effect </ul> <!-- /.menu --> </li> - {% endcomment %} + {% endcomment %} <li class="footer"><a href="#">See All</a></li> </ul> </li> @@ -244,42 +244,42 @@ desired effect <!-- Sidebar Menu --> <ul class="sidebar-menu"> <li class="header">Pages</li> - + <li data-desc="subjects"> <a href="{% url 'web.views.subjects' %}"> - <i class="fa fa-users"></i> + <i class="fa fa-users"></i> <span>Subjects</span> </a> </li> - + <li data-desc="assignments"> <a href="{% url 'web.views.assignments' %}"> - <i class="fa fa-calendar"></i> + <i class="fa fa-calendar"></i> <span>Assignments</span> </a> </li> - + <li data-desc="doctors"> <a href="{% url 'web.views.doctors' %}"> - <i class="fa fa-user-md"></i> - <span>Doctors</span> + <i class="fa fa-user-md"></i> + <span>Workers</span> </a> </li> - + <li data-desc="equipment_and_rooms"> <a href="{% url 'web.views.equipment_and_rooms' %}"> - <i class="fa fa-building-o"></i> + <i class="fa fa-building-o"></i> <span>Equipment&rooms</span> </a> </li> - + <li data-desc="mail_templates"> <a href="{% url 'web.views.mail_templates' %}"> - <i class="fa fa-envelope-o"></i> + <i class="fa fa-envelope-o"></i> <span>Mail templates</span> </a> </li> - + {% comment "Multi-level" %} <li class="treeview"> <a href="#"><i class="fa fa-link"></i> <span>Multilevel</span> @@ -307,9 +307,9 @@ desired effect {% block page_header %}{% endblock page_header %} <small>{% block page_description %}{% endblock page_description %}</small> </h1> - + <ol class="breadcrumb"> - {% block breadcrumb %} + {% block breadcrumb %} <li><a href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li> <li class="active">Index</li> {% endblock breadcrumb %} @@ -414,7 +414,7 @@ desired effect </div> </aside> <!-- /.control-sidebar --> - + <!-- Add the sidebar's background. This div must be placed immediately after the control sidebar --> <div class="control-sidebar-bg"></div> @@ -430,17 +430,17 @@ desired effect <script src="{% static 'AdminLTE/js/bootstrap.min.js' %}"></script> <!-- AdminLTE App --> <script src="{% static 'AdminLTE/js/app.min.js' %}"></script> - + <script> var activate = function(page_to_activate) { var $e = $(".sidebar-menu > li[data-desc='" + page_to_activate + "']"); $e.addClass("active"); }; - + activate({% block page_title %}{% endblock page_title %}); - + </script> - + {% comment "TODO: Check, and add if works %} <!-- Optionally, you can add Slimscroll and FastClick plugins. Both of these plugins are recommended to enhance the diff --git a/smash/web/templates/doctors/index.html b/smash/web/templates/doctors/index.html index 48940c8604cdbed38571cd730353df82e123122a..6fa6c0bc0c15fbdf184ee41cd28d14fc736f0075 100644 --- a/smash/web/templates/doctors/index.html +++ b/smash/web/templates/doctors/index.html @@ -7,31 +7,32 @@ <link rel="stylesheet" href="{% static 'AdminLTE/plugins/datatables/dataTables.bootstrap.css' %}"> {% endblock styles %} -{% block page_title %}'doctors'{% endblock page_title %} -{% block page_header %}Doctors'{% endblock page_header %} +{% block page_title %}'workers'{% endblock page_title %} +{% block page_header %}Workers{% endblock page_header %} {% block page_description %}information{% endblock page_description %} -{% block breadcrumb %} +{% block breadcrumb %} <li><a href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li> - <li class="active">Doctors</li> + <li class="active">Workers</li> {% endblock breadcrumb %} {% block maincontent %} <div> <a class="btn btn-app"> - <i class="fa fa-plus"></i> Add new doctor + <i class="fa fa-plus"></i> Add new worker </a> </div> <div class="box-body"> + {% if doctors_list %} <table id="table" class="table table-bordered table-striped"> <thead> <tr> <th>No.</th> <th>First name</th> <th>Last name</th> - <th>Language</th> + <th>Languages</th> <th>Unit</th> <th>Details</th> <th>Edit</th> @@ -40,63 +41,43 @@ </tr> </thead> <tbody> + {% for worker in doctors_list %} <tr> - <td>#1</td> - <td>Johny</td> - <td>English</td> - <td><span class="label label-success">english</span></td> - <td>PRC</td> - <td><button type="button" class="btn btn-block btn-default">Details</button></td> - <td><button type="button" class="btn btn-block btn-default">Edit</button></td> - <td><button type="button" class="btn btn-block btn-default">Modify availability</button></td> - <td> - <button type="button" class="btn btn-block btn-success">NO</button> - </td> - </tr> - <tr> - <td>#2</td> - <td>Yves</td> - <td>French</td> + <td>{{ forloop.counter }}</td> + <td>{{ worker.firstName }}</td> + <td>{{ worker.lastName }}</td> <td> - <span class="label label-success">english</span> - <span class="label label-success">french</span> - </td> - <td>PRC</td> + {% autoescape off %} + {% for language in worker.languages.all %} + {{language.image_img}} + {% endfor %} + {% endautoescape %} + </td> + <td>{{ worker.unit }}</td> <td><button type="button" class="btn btn-block btn-default">Details</button></td> <td><button type="button" class="btn btn-block btn-default">Edit</button></td> <td><button type="button" class="btn btn-block btn-default">Modify availability</button></td> <td> - <button type="button" class="btn btn-block btn-warning">YES</button> - </td> - </tr> - <tr> - <td>#3</td> - <td>Hans</td> - <td>Deutsch</td> - <td> - <span class="label label-success">german</span> - <span class="label label-success">english</span> - <span class="label label-success">french</span> - </td> - <td>PRC</td> - <td><button type="button" class="btn btn-block btn-default">Details</button></td> - <td><button type="button" class="btn btn-block btn-default">Edit</button></td> - <td><button type="button" class="btn btn-block btn-default">Modify availability</button></td> - <td> - <button type="button" class="btn btn-block btn-success">NO</button> + {% if worker.isOnLeave %}<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> </tr> + {% endfor %} + </tbody> </table> + {% else %} + <p>No subjects found.</p> + {% endif %} </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> - <script> $(function () { $('#table').DataTable({ diff --git a/smash/web/templates/subjects/index.html b/smash/web/templates/subjects/index.html index f41c1cbf5eb5aa33bea79e6870ada172af5cad20..c940c80e7ab1504b8c8983246888752c658100f8 100644 --- a/smash/web/templates/subjects/index.html +++ b/smash/web/templates/subjects/index.html @@ -55,7 +55,7 @@ {% endfor %} {% endautoescape %} </td> - <td>{{ subject.subjectStatus }}</td> + <td>{{ subject.get_subjectStatus_display }}</td> <td>12-10-2016</td> <td><button type="button" class="btn btn-block btn-default">Details</button></td> <td><button type="button" class="btn btn-block btn-default">Edit</button></td> diff --git a/smash/web/views.py b/smash/web/views.py index 77996d7d7f1f35e8a74fcb08144fc816e0b9a61a..7a890aceedd2ba173bbb99066a6ee8f8317d25ff 100644 --- a/smash/web/views.py +++ b/smash/web/views.py @@ -16,15 +16,15 @@ def login(request): # TODO: Implement return HttpResponse(template.render({ }), request) - - + + def logout(request): template = loader.get_template("login.html") # TODO: Implement return HttpResponse(template.render({ 'logout': 1 }), request) - + def assignments(request): template = loader.get_template("assignments/index.html") @@ -43,9 +43,13 @@ def subjects(request): def doctors(request): + doctors_list = Worker.objects.order_by('-lastName') template = loader.get_template("doctors/index.html") - return HttpResponse(template.render({ - }), request) + context = { + 'doctors_list': doctors_list + } + + return HttpResponse(template.render(context,request)) def equipment_and_rooms(request):