Project

General

Profile

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

calebasse / calebasse / ressources / models.py @ 01b413fe

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

    
3
from django.db import models
4

    
5
from calebasse.models import PhoneNumberField, ZipCodeField
6

    
7

    
8
class ServiceLinkedManager(models.Manager):
9
    def for_service(self, service, allow_global=True):
10
        '''Allows service local and service global objects'''
11
        return self.filter(models.Q(service=service)
12
                |models.Q(service__isnull=allow_global))
13

    
14
class NamedAbstractModel(models.Model):
15
    name = models.CharField(max_length=80, verbose_name=u'Nom')
16

    
17
    def __unicode__(self):
18
        return self.name
19

    
20
    def __repr__(self):
21
        return '<%s %r>' % (self.__class__.__name__, unicode(self))
22

    
23
    class Meta:
24
        abstract = True
25
        ordering = ['name']
26

    
27
class ServiceLinkedAbstractModel(models.Model):
28
    objects = ServiceLinkedManager()
29
    service = models.ForeignKey('Service', null=True, blank=True)
30

    
31
    class Meta:
32
        abstract = True
33

    
34
# Caisse d'assurance maladie
35
class HealthFund(NamedAbstractModel):
36
    class Meta:
37
        verbose_name = u'Caisse d\'assurances maladie'
38
        verbose_name_plural = u'Caisses d\'assurances maladie'
39

    
40
    abbreviation = models.CharField(max_length=8)
41
    active = models.BooleanField(default=True)
42
    address = models.CharField(max_length=120)
43
    address_complement = models.CharField(max_length=120, blank=True,
44
            null=True, default=None)
45
    zip_code = models.IntegerField(max_length=8)
46
    city = models.CharField(max_length=80)
47
    phone = models.CharField(max_length=30)
48
    fax = models.CharField(max_length=30)
49
    email = models.EmailField()
50
    accounting_number = models.CharField(max_length=30)
51
    correspondant = models.CharField(max_length=80)
52

    
53

    
54
class TransportCompany(NamedAbstractModel):
55
    class Meta:
56
        verbose_name = u'Compagnie de transport'
57
        verbose_name_plural = u'Compagnies de transport'
58

    
59

    
60
class CFTMEACode(NamedAbstractModel):
61
    class Meta:
62
        verbose_name = u'Code CFTMEA'
63
        verbose_name_plural = u'Codes CFTMEA'
64

    
65

    
66
class UninvoicableCode(models.Model):
67
    class Meta:
68
        verbose_name = u'Code de non-facturation'
69
        verbose_name_plural = u'Codes de non-facturation'
70

    
71

    
72
class Office(ServiceLinkedAbstractModel):
73
    class Meta:
74
        verbose_name = u'Établissement'
75
        verbose_name_plural = u'Établissements'
76

    
77
    def __unicode__(self):
78
        return self.slug
79

    
80
    slug = models.SlugField(verbose_name='Label')
81
    description = models.TextField(blank=True, null=True)
82

    
83
    # Contact
84
    phone = PhoneNumberField(verbose_name=u"Téléphone", blank=True, null=True)
85
    fax = PhoneNumberField(verbose_name=u"Fax", blank=True, null=True)
86
    email = models.EmailField(blank=True, null=True)
87

    
88
    # Address
89
    address = models.CharField(max_length=120,
90
            verbose_name=u"Addresse")
91
    address_complement = models.CharField(max_length=120,
92
            blank=True,
93
            null=True,
94
            default=None,
95
            verbose_name=u"Complément d'addresse")
96
    zip_code = ZipCodeField(verbose_name=u"Code postal")
97
            #verbose_name=u"Code postal")
98
    city = models.CharField(max_length=80,
99
            verbose_name=u"Ville")
100

    
101
    # TODO: add this fields : finess, suite, dm, dpa, genre, categorie, statut_juridique, mft, mt, dmt
102

    
103
class School(models.Model):
104
    class Meta:
105
        verbose_name = u'Lieu de scolarisation'
106
        verbose_name_plural = u'Lieux de scolarisation'
107

    
108
    def __unicode__(self):
109
        return self.name
110

    
111
    name = models.CharField(max_length=70, blank=False)
112
    description = models.TextField()
113
    address = models.CharField(max_length=120)
114
    address_complement = models.CharField(max_length=120,
115
            blank=True,
116
            null=True,
117
            default=None)
118
    zip_code = ZipCodeField(verbose_name=u"Code postal")
119
    city = models.CharField(max_length=80)
120
    phone = PhoneNumberField(verbose_name=u"Téléphone")
121
    fax = models.CharField(max_length=30)
122
    email = models.EmailField()
123
    director_name = models.CharField(max_length=70)
124

    
125
class SchoolTeacherRole(NamedAbstractModel):
126
    class Meta:
127
        verbose_name = u'Type de rôle des professeurs'
128
        verbose_name_plural = u'Types de rôle des professeurs'
129

    
130
class InscriptionMotive(NamedAbstractModel):
131
    class Meta:
132
        verbose_name = u'Motif d\'inscription'
133
        verbose_name_plural = u'Motifs d\'inscription'
134

    
135

    
136
class Nationality(NamedAbstractModel):
137
    class Meta:
138
        verbose_name = u'Nationalité'
139
        verbose_name_plural = u'Nationalités'
140

    
141

    
142
class Job(NamedAbstractModel):
143
    class Meta:
144
        verbose_name = u'Profession'
145
        verbose_name_plural = u'Professions'
146

    
147

    
148
class RoomManager(models.Manager):
149
    def for_etablissement(self, etablissement):
150
        return self.filter(etablissement=etablissement)
151

    
152
    def for_service(self, service):
153
        return self.filter(etablissement__service=service)
154

    
155

    
156
class Room(NamedAbstractModel):
157
    objects = RoomManager()
158
    etablissement = models.ForeignKey('Office')
159

    
160
    class Meta:
161
        verbose_name = u'Salle'
162
        verbose_name_plural = u'Salles'
163

    
164

    
165
class Service(NamedAbstractModel):
166
    admin_only = True
167

    
168
    slug = models.SlugField()
169
    description = models.TextField()
170

    
171
    # Contact
172
    phone = PhoneNumberField(verbose_name=u"Téléphone")
173
    fax = PhoneNumberField(verbose_name=u"Fax")
174
    email = models.EmailField()
175

    
176
    class Meta:
177
        verbose_name = u'Service'
178
        verbose_name_plural = u'Services'
179

    
180
class ActTypeManager(models.Manager):
181
    def for_service(self, service):
182
        return self.filter(service=service)
183

    
184
class ActType(NamedAbstractModel, ServiceLinkedAbstractModel):
185
    objects = ActTypeManager()
186
    billable = models.BooleanField(default=True)
187

    
188
    class Meta(NamedAbstractModel.Meta):
189
        verbose_name = u'Type d\'actes'
190
        verbose_name_plural = u'Types d\'actes'
191

    
192
class ParentalAuthorityType(NamedAbstractModel):
193
    class Meta:
194
        verbose_name = u'Type d\'autorité parentale'
195
        verbose_name_plural = u'Types d\'autorités parentales'
196

    
197

    
198
class ParentalCustodyType(NamedAbstractModel):
199
    class Meta:
200
        verbose_name = u'Type de gardes parentales'
201
        verbose_name_plural = u'Types de gardes parentales'
202

    
203

    
204
class SessionType(NamedAbstractModel):
205
    class Meta:
206
        verbose_name = u'Type de séance'
207
        verbose_name_plural = u'Types de séances'
208

    
209

    
210
class FamilySituationType(NamedAbstractModel):
211
    class Meta:
212
        verbose_name = u'Type de situation familiale'
213
        verbose_name_plural = u'Types de situations familiales'
214

    
215

    
216
class TransportType(NamedAbstractModel):
217
    class Meta:
218
        verbose_name = u'Type de transport'
219
        verbose_name_plural = u'Types de transports'
220

    
221

    
222
class WorkerType(NamedAbstractModel):
223
    intervene = models.BooleanField(
224
            verbose_name=u'Intervenant',
225
            blank=True)
226

    
227
    class Meta:
228
        verbose_name = u'Type de personnel'
229
        verbose_name_plural = u'Types de personnel'
230

    
(3-3/6)