Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# coding=utf-8
import datetime
from django.contrib.auth.models import User
from django.db import models
class Worker(models.Model):
class Meta:
app_label = 'web'
languages = models.ManyToManyField("web.Language",
verbose_name='Known languages'
)
locations = models.ManyToManyField("web.Location",
verbose_name='Locations'
)
appointments = models.ManyToManyField('web.Appointment', blank=True,
verbose_name='Appointments'
)
user = models.OneToOneField(User, blank=True, null=True,
verbose_name='Username'
)
first_name = models.CharField(max_length=50,
verbose_name='First name'
)
last_name = models.CharField(max_length=50,
verbose_name='Last name'
)
phone_number = models.CharField(max_length=20,
verbose_name='Phone number'
)
unit = models.CharField(max_length=50,
verbose_name='Unit'
)
email = models.EmailField(
verbose_name='E-mail'
)
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
ROLE_CHOICES_SECRETARY = "SECRETARY"
ROLE_CHOICES = (
('DOCTOR', 'Doctor'),
('NURSE', 'Nurse'),
('PSYCHOLOGIST', 'Psychologist'),
('TECHNICIAN', 'Technician'),
(ROLE_CHOICES_SECRETARY, 'Secretary')
)
role = models.CharField(max_length=20, choices=ROLE_CHOICES,
verbose_name='Role'
)
specialization = models.CharField(max_length=20,
verbose_name='Specialization'
)
def is_on_leave(self):
if len(self.holiday_set.filter(datetime_end__gt=datetime.datetime.now(),
datetime_start__lt=datetime.datetime.now())):
return True
return False
@staticmethod
def get_by_user(the_user):
if isinstance(the_user, User):
workers = Worker.objects.filter(user=the_user)
if len(workers) > 0:
return workers[0]
else:
return None
elif isinstance(the_user, Worker):
return the_user
elif the_user is not None:
raise TypeError("Unknown class type: " + the_user.__class__.__name__)
else:
return None
@staticmethod
def get_details(the_user):
if not the_user.is_authenticated:
return 'Guest', 'Test account'
person = Worker.objects.filter(user=the_user)
if len(person) == 0:
return the_user.get_full_name(), '<No worker information>'
else:
# For get_*_display, see:
# https://docs.djangoproject.com/en/1.10/topics/db/models/#field-options
return unicode(person[0]), person[0].get_role_display()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
def __unicode__(self):
return "%s %s" % (self.first_name, self.last_name)