50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
|
|
from django.contrib.auth.models import User
|
||
|
|
from django.db import models
|
||
|
|
|
||
|
|
class Departement(models.Model):
|
||
|
|
"""Modèle représentant un département de l'entreprise."""
|
||
|
|
nom = models.CharField(max_length=100)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.nom
|
||
|
|
|
||
|
|
class Employe(models.Model):
|
||
|
|
"""Modèle représentant un employé de l'entreprise."""
|
||
|
|
FONCTION_LISTE = [
|
||
|
|
('directeur', 'Directeur'),
|
||
|
|
('assistant_direction', 'Assistante de direction'),
|
||
|
|
('assistant_technique_recherche', 'Assistant technique de recherche'),
|
||
|
|
('comptable', 'Comptable'),
|
||
|
|
('raf', 'RAF'),
|
||
|
|
('data_manager', 'Data Manager'),
|
||
|
|
('logisticien', 'Logisticien'),
|
||
|
|
('post_doctorant', 'Post-Doctorant'),
|
||
|
|
('qualiticien', 'Qualiticien'),
|
||
|
|
('technicien_surface', 'Technicien de surface'),
|
||
|
|
('chauffeur', 'Chauffeur'),
|
||
|
|
]
|
||
|
|
|
||
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||
|
|
matricule = models.CharField(max_length=10, unique=True, null=True, blank=True)
|
||
|
|
departement = models.ForeignKey(Departement, on_delete=models.SET_NULL, null=True, blank=True)
|
||
|
|
fonction = models.CharField(max_length=50, blank=True, null=True, choices=FONCTION_LISTE)
|
||
|
|
date_embauche = models.DateField(blank=True, null=True)
|
||
|
|
adresse = models.CharField(max_length=100, null=True, blank=True)
|
||
|
|
telephone = models.CharField(max_length=15, null=True, blank=True)
|
||
|
|
sexe = models.CharField(max_length=1, null=True, blank=True, choices=[('m', 'Masculin'), ('f', 'Féminin')])
|
||
|
|
date_naissance = models.DateField(blank=True, null=True)
|
||
|
|
|
||
|
|
CV = models.FileField(upload_to='cv/', blank=True, null=True)
|
||
|
|
diplome = models.FileField(upload_to='diplomes/', blank=True, null=True)
|
||
|
|
rib = models.FileField(upload_to='rib/', blank=True, null=True)
|
||
|
|
photo = models.ImageField(upload_to='photos/', blank=True, null=True)
|
||
|
|
casier_judiciaire = models.FileField(upload_to='casier/', blank=True, null=True)
|
||
|
|
|
||
|
|
chef = models.BooleanField(
|
||
|
|
default=False,
|
||
|
|
verbose_name="Cet utilisateur est-il chef de ce département ?"
|
||
|
|
)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return f"{self.user.first_name or 'N/A'} {self.user.last_name or ' '} ({self.matricule or ' '})"
|