Project

General

Profile

Download (2.7 KB) Statistics
| Branch: | Tag: | Revision:

calebasse / calebasse / personnes / models.py @ 0f0cacbb

1
# -*- coding: utf-8 -*-
2

    
3
from django.db import models
4
from django.contrib.auth.models import User
5

    
6
from calebasse.ressources.models import WorkerType
7
from calebasse.models import WeekdayField, BaseModelMixin
8

    
9
class People(BaseModelMixin, models.Model):
10
    last_name = models.CharField(max_length=128, verbose_name=u'Nom')
11
    first_name = models.CharField(max_length=128, verbose_name=u'Prénom(s)')
12
    display_name = models.CharField(max_length=256,
13
            verbose_name=u'Nom complet', editable=False)
14

    
15
    def save(self, **kwargs):
16
        self.display_name = self.first_name + ' ' + self.last_name
17
        super(People, self).save(**kwargs)
18

    
19
    def __unicode__(self):
20
        return self.display_name
21

    
22
class WorkerManager(models.Manager):
23

    
24
    def for_service(self, service, type=None):
25
        if type:
26
            return self.filter(services__in=[service]).filter(type=type)
27
        else:
28
            return self.filter(services__in=[service])
29
    
30

    
31
class Worker(People):
32
    objects = WorkerManager()
33
    # TODO : use manytomany here ?
34
    type = models.ForeignKey('ressources.WorkerType',
35
            verbose_name=u'Type de personnel')
36
    services = models.ManyToManyField('ressources.Service')
37

    
38
    class Meta:
39
        verbose_name = u'Personnel'
40
        verbose_name_plural = u'Personnels'
41

    
42
class UserWorker(BaseModelMixin, User):
43
    worker = models.ForeignKey('Worker',
44
            verbose_name=u'Personnel')
45

    
46
    def __unicode__(self):
47
        return u'Lien entre la personne %s et l\'utilisateur %s' % (
48
                self.people, super(UserPeople, self).__unicode__())
49

    
50
class SchoolTeacher(People):
51
    schools = models.ManyToManyField('ressources.School')
52
    role = models.ForeignKey('ressources.SchoolTeacherRole')
53

    
54
class TimeTable(BaseModelMixin, models.Model):
55
    worker = models.ForeignKey(Worker,
56
            verbose_name=u'Intervenant')
57
    service = models.ForeignKey('ressources.Service')
58
    weekday = WeekdayField(
59
            verbose_name=u'Jour')
60
    start_time = models.TimeField(
61
        verbose_name=u'Heure de début')
62
    end_time = models.TimeField(
63
        verbose_name=u'Heure de fin')
64
    start_date = models.DateField(
65
        verbose_name=u'Début')
66
    end_date = models.DateField(
67
        verbose_name=u'Fin', blank=True, null=True)
68

    
69
    def __unicode__(self):
70
        s = u'%s pour le %s le %s de %s à %s' % \
71
                (self.worker, self.service, self.weekday, self.start_time,
72
                        self.end_time)
73
        if self.end_time:
74
            s += u' à partir du %s' % self.start_date
75
        else:
76
            s += u' du %s au %s' % (self.start_data, self.end_date)
77
        return s
78

    
79
    class Meta:
80
        verbose_name = u'Emploi du temps'
81
        verbose_name_plural = u'Emplois du temps'
(3-3/6)