ScoDoc/app/entreprises/models.py

282 lines
9.5 KiB
Python
Raw Permalink Normal View History

from app import db, models
2021-12-23 19:28:25 +01:00
class Entreprise(models.ScoDocModel):
__tablename__ = "are_entreprises"
2021-12-23 19:28:25 +01:00
id = db.Column(db.Integer, primary_key=True)
2022-07-13 16:53:54 +02:00
siret = db.Column(db.Text, index=True, unique=True)
2022-07-12 10:32:23 +02:00
siret_provisoire = db.Column(db.Boolean, default=False)
2021-12-23 19:28:25 +01:00
nom = db.Column(db.Text)
adresse = db.Column(db.Text)
codepostal = db.Column(db.Text)
ville = db.Column(db.Text)
pays = db.Column(db.Text)
association = db.Column(db.Boolean, default=False)
2022-01-25 19:42:17 +01:00
visible = db.Column(db.Boolean, default=False)
active = db.Column(db.Boolean, default=True)
notes_active = db.Column(db.Text)
sites = db.relationship(
"EntrepriseSite",
backref="entreprise",
lazy="dynamic",
cascade="all, delete-orphan",
)
offres = db.relationship(
"EntrepriseOffre",
backref="entreprise",
lazy="dynamic",
cascade="all, delete-orphan",
)
2021-12-23 19:28:25 +01:00
def to_dict(self):
2021-12-24 18:10:19 +01:00
return {
"siret": self.siret,
2022-02-22 21:52:32 +01:00
"nom_entreprise": self.nom,
2021-12-24 18:10:19 +01:00
"adresse": self.adresse,
2022-02-10 21:17:22 +01:00
"code_postal": self.codepostal,
2021-12-27 11:48:58 +01:00
"ville": self.ville,
"pays": self.pays,
"association": self.association,
"visible": self.visible,
"active": self.active,
"notes_active": self.notes_active,
2021-12-24 18:10:19 +01:00
}
class EntrepriseSite(models.ScoDocModel):
__tablename__ = "are_sites"
id = db.Column(db.Integer, primary_key=True)
entreprise_id = db.Column(
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
)
nom = db.Column(db.Text)
adresse = db.Column(db.Text)
codepostal = db.Column(db.Text)
ville = db.Column(db.Text)
pays = db.Column(db.Text)
correspondants = db.relationship(
"EntrepriseCorrespondant",
backref="site",
lazy="dynamic",
cascade="all, delete-orphan",
)
def to_dict(self):
entreprise = Entreprise.get_or_404(self.entreprise_id)
return {
"siret_entreprise": entreprise.siret,
2022-06-10 17:55:59 +02:00
"id_site": self.id,
"nom_site": self.nom,
"adresse": self.adresse,
"code_postal": self.codepostal,
"ville": self.ville,
"pays": self.pays,
}
class EntrepriseCorrespondant(models.ScoDocModel):
__tablename__ = "are_correspondants"
2021-12-23 19:28:25 +01:00
id = db.Column(db.Integer, primary_key=True)
site_id = db.Column(db.Integer, db.ForeignKey("are_sites.id", ondelete="cascade"))
civilite = db.Column(db.String(1))
2021-12-23 19:28:25 +01:00
nom = db.Column(db.Text)
prenom = db.Column(db.Text)
telephone = db.Column(db.Text)
mail = db.Column(db.Text)
2021-12-24 10:43:12 +01:00
poste = db.Column(db.Text)
service = db.Column(db.Text)
origine = db.Column(db.Text)
notes = db.Column(db.Text)
def to_dict(self):
site = EntrepriseSite.get_or_404(self.site_id)
2021-12-27 11:48:58 +01:00
return {
"id": self.id,
"civilite": self.civilite,
2021-12-27 11:48:58 +01:00
"nom": self.nom,
"prenom": self.prenom,
"telephone": self.telephone,
"mail": self.mail,
"poste": self.poste,
"service": self.service,
"origine": self.origine,
"notes": self.notes,
"nom_site": site.nom,
2021-12-29 19:40:57 +01:00
}
class EntrepriseContact(models.ScoDocModel):
2022-04-05 02:26:43 +02:00
__tablename__ = "are_contacts"
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.DateTime(timezone=True))
user = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
entreprise = db.Column(
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
)
notes = db.Column(db.Text)
class EntrepriseOffre(models.ScoDocModel):
2022-03-01 18:45:04 +01:00
__tablename__ = "are_offres"
2021-12-23 19:28:25 +01:00
id = db.Column(db.Integer, primary_key=True)
entreprise_id = db.Column(
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
)
2021-12-23 19:28:25 +01:00
date_ajout = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
intitule = db.Column(db.Text)
description = db.Column(db.Text)
type_offre = db.Column(db.Text)
missions = db.Column(db.Text)
duree = db.Column(db.Text)
2022-01-24 18:07:54 +01:00
expiration_date = db.Column(db.Date)
2022-03-01 18:45:04 +01:00
expired = db.Column(db.Boolean, default=False)
correspondant_id = db.Column(
db.Integer, db.ForeignKey("are_correspondants.id", ondelete="cascade")
2022-03-04 17:10:07 +01:00
)
2021-12-30 19:37:46 +01:00
def to_dict(self):
return {
"intitule": self.intitule,
"description": self.description,
"type_offre": self.type_offre,
"missions": self.missions,
"duree": self.duree,
}
2021-12-23 19:28:25 +01:00
class EntrepriseHistorique(models.ScoDocModel):
__tablename__ = "are_historique"
2021-12-23 19:28:25 +01:00
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
authenticated_user = db.Column(db.Text) # user_name login sans contrainte
2022-05-06 18:50:12 +02:00
entreprise_id = db.Column(db.Integer)
object = db.Column(db.Text)
object_id = db.Column(db.Integer)
2021-12-23 19:28:25 +01:00
text = db.Column(db.Text)
class EntrepriseStageApprentissage(models.ScoDocModel):
__tablename__ = "are_stages_apprentissages"
2021-12-23 19:28:25 +01:00
id = db.Column(db.Integer, primary_key=True)
2022-02-04 17:12:56 +01:00
entreprise_id = db.Column(
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
)
etudid = db.Column(
db.Integer,
db.ForeignKey("identite.id", ondelete="CASCADE"),
)
2021-12-23 19:28:25 +01:00
type_offre = db.Column(db.Text)
date_debut = db.Column(db.Date)
date_fin = db.Column(db.Date)
formation_text = db.Column(db.Text)
formation_scodoc = db.Column(db.Integer)
notes = db.Column(db.Text)
2021-12-24 10:43:12 +01:00
class EntrepriseTaxeApprentissage(models.ScoDocModel):
2022-05-04 18:59:29 +02:00
__tablename__ = "are_taxe_apprentissage"
id = db.Column(db.Integer, primary_key=True)
entreprise_id = db.Column(
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
)
annee = db.Column(db.Integer)
2023-06-01 18:25:54 +02:00
montant = db.Column(db.Float)
2022-05-04 18:59:29 +02:00
notes = db.Column(db.Text)
class EntrepriseEnvoiOffre(models.ScoDocModel):
2022-03-01 18:45:04 +01:00
__tablename__ = "are_envoi_offre"
2021-12-24 10:43:12 +01:00
id = db.Column(db.Integer, primary_key=True)
2022-02-04 17:12:56 +01:00
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
receiver_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
2022-03-01 18:45:04 +01:00
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
2021-12-30 19:37:46 +01:00
class EntrepriseEnvoiOffreEtudiant(models.ScoDocModel):
2022-03-01 18:45:04 +01:00
__tablename__ = "are_envoi_offre_etudiant"
2021-12-30 19:37:46 +01:00
id = db.Column(db.Integer, primary_key=True)
2022-02-04 17:12:56 +01:00
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
receiver_id = db.Column(
db.Integer, db.ForeignKey("identite.id", ondelete="cascade")
)
2022-03-01 18:45:04 +01:00
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
2021-12-30 19:37:46 +01:00
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
2022-02-03 16:53:59 +01:00
class EntrepriseOffreDepartement(models.ScoDocModel):
2022-03-01 18:45:04 +01:00
__tablename__ = "are_offre_departement"
2022-02-03 16:53:59 +01:00
id = db.Column(db.Integer, primary_key=True)
2022-03-01 18:45:04 +01:00
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
2022-02-04 17:12:56 +01:00
dept_id = db.Column(db.Integer, db.ForeignKey("departement.id", ondelete="cascade"))
2022-02-22 21:52:32 +01:00
class EntreprisePreferences(models.ScoDocModel):
2022-02-22 21:52:32 +01:00
__tablename__ = "are_preferences"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text)
value = db.Column(db.Text)
@classmethod
def get_email_notifications(cls):
mail = EntreprisePreferences.query.filter_by(
name="mail_notifications_entreprise"
).first()
if mail is None:
return ""
else:
return mail.value
@classmethod
def set_email_notifications(cls, mail: str):
if mail != cls.get_email_notifications():
m = EntreprisePreferences.query.filter_by(
name="mail_notifications_entreprise"
).first()
if m is None:
prefs = EntreprisePreferences(
name="mail_notifications_entreprise",
value=mail,
)
db.session.add(prefs)
else:
m.value = mail
db.session.commit()
@classmethod
def get_check_siret(cls):
check_siret = EntreprisePreferences.query.filter_by(name="check_siret").first()
if check_siret is None:
return 1
else:
return int(check_siret.value)
@classmethod
def set_check_siret(cls, check_siret: int):
cs = EntreprisePreferences.query.filter_by(name="check_siret").first()
if cs is None:
prefs = EntreprisePreferences(name="check_siret", value=check_siret)
db.session.add(prefs)
else:
cs.value = check_siret
db.session.commit()
def entreprises_reset_database():
db.session.query(EntrepriseContact).delete()
db.session.query(EntrepriseStageApprentissage).delete()
db.session.query(EntrepriseTaxeApprentissage).delete()
db.session.query(EntrepriseCorrespondant).delete()
db.session.query(EntrepriseSite).delete()
db.session.query(EntrepriseEnvoiOffre).delete()
db.session.query(EntrepriseEnvoiOffreEtudiant).delete()
db.session.query(EntrepriseOffreDepartement).delete()
db.session.query(EntrepriseOffre).delete()
db.session.query(Entreprise).delete()
db.session.query(EntrepriseHistorique).delete()
db.session.query(EntreprisePreferences).delete()
db.session.commit()