Project

General

Profile

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

calebasse / calebasse / personnes / models.py @ 5f372104

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

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

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

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

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

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

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

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