forked from ScoDoc/ScoDoc
Merge branch 'entreprises' of https://scodoc.org/git/viennet/ScoDoc
This commit is contained in:
commit
9480e15b83
@ -10,6 +10,7 @@ from app.models import Departement
|
|||||||
bp = Blueprint("entreprises", __name__)
|
bp = Blueprint("entreprises", __name__)
|
||||||
|
|
||||||
LOGS_LEN = 5
|
LOGS_LEN = 5
|
||||||
|
SIRET_PROVISOIRE_START = "xx"
|
||||||
|
|
||||||
|
|
||||||
@bp.app_template_filter()
|
@bp.app_template_filter()
|
||||||
|
@ -239,7 +239,8 @@ def get_excel_book_are(export: bool = False):
|
|||||||
)
|
)
|
||||||
correspondants = (
|
correspondants = (
|
||||||
db.session.query(EntrepriseCorrespondant)
|
db.session.query(EntrepriseCorrespondant)
|
||||||
.join(Entreprise, EntrepriseCorrespondant.entreprise_id == Entreprise.id)
|
.join(EntrepriseSite, EntrepriseCorrespondant.site_id == EntrepriseSite.id)
|
||||||
|
.join(Entreprise, EntrepriseSite.entreprise_id == Entreprise.id)
|
||||||
.filter_by(visible=True)
|
.filter_by(visible=True)
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
@ -347,14 +348,15 @@ def check_entreprise_import(entreprise_data):
|
|||||||
if EntreprisePreferences.get_check_siret():
|
if EntreprisePreferences.get_check_siret():
|
||||||
if re.match("^\d{14}$", siret) is None:
|
if re.match("^\d{14}$", siret) is None:
|
||||||
return False
|
return False
|
||||||
try:
|
else:
|
||||||
req = requests.get(
|
try:
|
||||||
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
|
req = requests.get(
|
||||||
)
|
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
|
||||||
if req.status_code != 200:
|
)
|
||||||
|
if req.status_code != 200:
|
||||||
|
return False
|
||||||
|
except requests.ConnectionError:
|
||||||
return False
|
return False
|
||||||
except requests.ConnectionError:
|
|
||||||
return False
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -391,7 +393,6 @@ def check_sites_import(m):
|
|||||||
sites_import.append(site_import)
|
sites_import.append(site_import)
|
||||||
else:
|
else:
|
||||||
correspondant_import = EntrepriseCorrespondant(
|
correspondant_import = EntrepriseCorrespondant(
|
||||||
entreprise_id=entreprise.id,
|
|
||||||
civilite=site_data["civilite"],
|
civilite=site_data["civilite"],
|
||||||
nom=site_data["nom"],
|
nom=site_data["nom"],
|
||||||
prenom=site_data["prenom"],
|
prenom=site_data["prenom"],
|
||||||
@ -414,7 +415,6 @@ def check_sites_import(m):
|
|||||||
|
|
||||||
if site_data["civilite"] != "":
|
if site_data["civilite"] != "":
|
||||||
correspondant_import = EntrepriseCorrespondant(
|
correspondant_import = EntrepriseCorrespondant(
|
||||||
entreprise_id=entreprise.id,
|
|
||||||
site_id=site.id,
|
site_id=site.id,
|
||||||
civilite=site_data["civilite"],
|
civilite=site_data["civilite"],
|
||||||
nom=site_data["nom"],
|
nom=site_data["nom"],
|
||||||
@ -527,7 +527,7 @@ def check_correspondant_import(correspondant_data):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# civilite entre H ou F
|
# civilite entre H ou F
|
||||||
if correspondant_data["civilite"] not in ["H", "F"]:
|
if correspondant_data["civilite"].upper() not in ["H", "F"]:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -544,13 +544,14 @@ def check_correspondant_import(correspondant_data):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# correspondant possède le meme nom et prénom dans la meme entreprise
|
# correspondant possède le meme nom et prénom dans la meme entreprise
|
||||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
if correspondant_data["id_site"] != "":
|
||||||
nom=correspondant_data["nom"],
|
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||||
prenom=correspondant_data["prenom"],
|
nom=correspondant_data["nom"],
|
||||||
entreprise_id=entreprise.id,
|
prenom=correspondant_data["prenom"],
|
||||||
).first()
|
site_id=correspondant_data["id_site"],
|
||||||
if correspondant is not None:
|
).first()
|
||||||
return False
|
if correspondant is not None:
|
||||||
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ import re
|
|||||||
import requests
|
import requests
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
from flask import url_for
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
||||||
from markupsafe import Markup
|
from markupsafe import Markup
|
||||||
@ -62,8 +63,10 @@ from app.entreprises.models import (
|
|||||||
EntrepriseSite,
|
EntrepriseSite,
|
||||||
EntrepriseTaxeApprentissage,
|
EntrepriseTaxeApprentissage,
|
||||||
)
|
)
|
||||||
|
from app import db
|
||||||
from app.models import Identite, Departement
|
from app.models import Identite, Departement
|
||||||
from app.auth.models import User
|
from app.auth.models import User
|
||||||
|
from app.entreprises import SIRET_PROVISOIRE_START
|
||||||
|
|
||||||
CHAMP_REQUIS = "Ce champ est requis"
|
CHAMP_REQUIS = "Ce champ est requis"
|
||||||
SUBMIT_MARGE = {"style": "margin-bottom: 10px;"}
|
SUBMIT_MARGE = {"style": "margin-bottom: 10px;"}
|
||||||
@ -86,9 +89,11 @@ class EntreprisesFilterForm(FlaskForm):
|
|||||||
|
|
||||||
|
|
||||||
class EntrepriseCreationForm(FlaskForm):
|
class EntrepriseCreationForm(FlaskForm):
|
||||||
siret = _build_string_field(
|
siret = StringField(
|
||||||
"SIRET (*)",
|
"SIRET",
|
||||||
|
validators=[Optional()],
|
||||||
render_kw={"placeholder": "Numéro composé de 14 chiffres"},
|
render_kw={"placeholder": "Numéro composé de 14 chiffres"},
|
||||||
|
description="Laissez vide pour générer un SIRET provisoire",
|
||||||
)
|
)
|
||||||
association = BooleanField("Association")
|
association = BooleanField("Association")
|
||||||
nom_entreprise = _build_string_field("Nom de l'entreprise (*)")
|
nom_entreprise = _build_string_field("Nom de l'entreprise (*)")
|
||||||
@ -99,7 +104,7 @@ class EntrepriseCreationForm(FlaskForm):
|
|||||||
|
|
||||||
civilite = SelectField(
|
civilite = SelectField(
|
||||||
"Civilité du correspondant",
|
"Civilité du correspondant",
|
||||||
choices=[("M", "Monsieur"), ("F", "Madame")],
|
choices=[("H", "Monsieur"), ("F", "Madame")],
|
||||||
validators=[DataRequired(message=CHAMP_REQUIS)],
|
validators=[DataRequired(message=CHAMP_REQUIS)],
|
||||||
)
|
)
|
||||||
nom_correspondant = _build_string_field("Nom du correspondant", required=False)
|
nom_correspondant = _build_string_field("Nom du correspondant", required=False)
|
||||||
@ -123,6 +128,39 @@ class EntrepriseCreationForm(FlaskForm):
|
|||||||
if not FlaskForm.validate(self):
|
if not FlaskForm.validate(self):
|
||||||
validate = False
|
validate = False
|
||||||
|
|
||||||
|
if EntreprisePreferences.get_check_siret() and self.siret.data != "":
|
||||||
|
siret_data = self.siret.data.strip().replace(" ", "")
|
||||||
|
self.siret.data = siret_data
|
||||||
|
if re.match("^\d{14}$", siret_data) is None:
|
||||||
|
self.siret.errors.append("Format incorrect")
|
||||||
|
validate = False
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
req = requests.get(
|
||||||
|
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret_data}"
|
||||||
|
)
|
||||||
|
if req.status_code != 200:
|
||||||
|
self.siret.errors.append("SIRET inexistant")
|
||||||
|
validate = False
|
||||||
|
except requests.ConnectionError:
|
||||||
|
self.siret.errors.append(
|
||||||
|
"Impossible de vérifier l'existance du SIRET"
|
||||||
|
)
|
||||||
|
validate = False
|
||||||
|
entreprise = Entreprise.query.filter_by(siret=siret_data).first()
|
||||||
|
if entreprise is not None:
|
||||||
|
if entreprise.visible is True:
|
||||||
|
lien = f"<a href='{url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id)}'>ici</a>"
|
||||||
|
self.siret.errors.append(
|
||||||
|
Markup(
|
||||||
|
f"Entreprise déjà présent, lien vers la fiche : {lien}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
validate = False
|
||||||
|
else:
|
||||||
|
self.siret.errors.append("Entreprise en phase de validation")
|
||||||
|
validate = False
|
||||||
|
|
||||||
if (
|
if (
|
||||||
self.nom_correspondant.data.strip()
|
self.nom_correspondant.data.strip()
|
||||||
or self.prenom_correspondant.data.strip()
|
or self.prenom_correspondant.data.strip()
|
||||||
@ -147,30 +185,13 @@ class EntrepriseCreationForm(FlaskForm):
|
|||||||
|
|
||||||
return validate
|
return validate
|
||||||
|
|
||||||
def validate_siret(self, siret):
|
|
||||||
if EntreprisePreferences.get_check_siret():
|
|
||||||
siret_data = siret.data.strip().replace(" ", "")
|
|
||||||
self.siret.data = siret_data
|
|
||||||
if re.match("^\d{14}$", siret_data) is None:
|
|
||||||
raise ValidationError("Format incorrect")
|
|
||||||
try:
|
|
||||||
req = requests.get(
|
|
||||||
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret_data}"
|
|
||||||
)
|
|
||||||
if req.status_code != 200:
|
|
||||||
raise ValidationError("SIRET inexistant")
|
|
||||||
except requests.ConnectionError:
|
|
||||||
raise ValidationError("Impossible de vérifier l'existance du SIRET")
|
|
||||||
entreprise = Entreprise.query.filter_by(siret=siret_data).first()
|
|
||||||
if entreprise is not None:
|
|
||||||
lien = f'<a href="/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}">ici</a>'
|
|
||||||
raise ValidationError(
|
|
||||||
Markup(f"Entreprise déjà présent, lien vers la fiche : {lien}")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class EntrepriseModificationForm(FlaskForm):
|
class EntrepriseModificationForm(FlaskForm):
|
||||||
siret = StringField("SIRET (*)")
|
siret = StringField("SIRET (*)")
|
||||||
|
new_siret = StringField(
|
||||||
|
"Modification du SIRET provisoire (*)",
|
||||||
|
description="Activé uniquement pour les entreprises avec SIRET provisoire",
|
||||||
|
)
|
||||||
association = BooleanField("Association")
|
association = BooleanField("Association")
|
||||||
nom = _build_string_field("Nom de l'entreprise (*)")
|
nom = _build_string_field("Nom de l'entreprise (*)")
|
||||||
adresse = _build_string_field("Adresse (*)")
|
adresse = _build_string_field("Adresse (*)")
|
||||||
@ -182,6 +203,37 @@ class EntrepriseModificationForm(FlaskForm):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.siret.render_kw = {"disabled": ""}
|
self.siret.render_kw = {"disabled": ""}
|
||||||
|
if self.siret.data.startswith(SIRET_PROVISOIRE_START) is True:
|
||||||
|
self.new_siret.validators = [Optional()]
|
||||||
|
else:
|
||||||
|
self.new_siret.render_kw = {"disabled": ""}
|
||||||
|
|
||||||
|
def validate_new_siret(self, new_siret):
|
||||||
|
if EntreprisePreferences.get_check_siret() and new_siret.data is not None:
|
||||||
|
siret_data = new_siret.data.strip().replace(" ", "")
|
||||||
|
self.new_siret.data = siret_data
|
||||||
|
if re.match("^\d{14}$", siret_data) is None:
|
||||||
|
raise ValidationError("Format incorrect")
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
req = requests.get(
|
||||||
|
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret_data}"
|
||||||
|
)
|
||||||
|
if req.status_code != 200:
|
||||||
|
raise ValidationError("SIRET inexistant")
|
||||||
|
except requests.ConnectionError:
|
||||||
|
raise ValidationError("Impossible de vérifier l'existance du SIRET")
|
||||||
|
entreprise = Entreprise.query.filter_by(siret=siret_data).first()
|
||||||
|
if entreprise is not None:
|
||||||
|
if entreprise.visible is True:
|
||||||
|
lien = f'<a href="/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}">ici</a>'
|
||||||
|
raise ValidationError(
|
||||||
|
Markup(
|
||||||
|
f"Entreprise déjà présent, lien vers la fiche : {lien}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise ValidationError("Entreprise en phase de validation")
|
||||||
|
|
||||||
|
|
||||||
class SiteCreationForm(FlaskForm):
|
class SiteCreationForm(FlaskForm):
|
||||||
@ -274,9 +326,10 @@ class OffreCreationForm(FlaskForm):
|
|||||||
|
|
||||||
self.correspondant.choices = [("", "")] + [
|
self.correspondant.choices = [("", "")] + [
|
||||||
(correspondant.id, f"{correspondant.nom} {correspondant.prenom}")
|
(correspondant.id, f"{correspondant.nom} {correspondant.prenom}")
|
||||||
for correspondant in EntrepriseCorrespondant.query.filter_by(
|
for correspondant in db.session.query(EntrepriseCorrespondant)
|
||||||
entreprise_id=self.hidden_entreprise_id.data
|
.join(EntrepriseSite, EntrepriseCorrespondant.site_id == EntrepriseSite.id)
|
||||||
)
|
.filter(EntrepriseSite.entreprise_id == self.hidden_entreprise_id.data)
|
||||||
|
.all()
|
||||||
]
|
]
|
||||||
|
|
||||||
self.depts.choices = [
|
self.depts.choices = [
|
||||||
@ -320,9 +373,10 @@ class OffreModificationForm(FlaskForm):
|
|||||||
|
|
||||||
self.correspondant.choices = [("", "")] + [
|
self.correspondant.choices = [("", "")] + [
|
||||||
(correspondant.id, f"{correspondant.nom} {correspondant.prenom}")
|
(correspondant.id, f"{correspondant.nom} {correspondant.prenom}")
|
||||||
for correspondant in EntrepriseCorrespondant.query.filter_by(
|
for correspondant in db.session.query(EntrepriseCorrespondant)
|
||||||
entreprise_id=self.hidden_entreprise_id.data
|
.join(EntrepriseSite, EntrepriseCorrespondant.site_id == EntrepriseSite.id)
|
||||||
)
|
.filter(EntrepriseSite.entreprise_id == self.hidden_entreprise_id.data)
|
||||||
|
.all()
|
||||||
]
|
]
|
||||||
|
|
||||||
self.depts.choices = [
|
self.depts.choices = [
|
||||||
@ -393,7 +447,7 @@ class CorrespondantCreationForm(FlaskForm):
|
|||||||
|
|
||||||
|
|
||||||
class CorrespondantsCreationForm(FlaskForm):
|
class CorrespondantsCreationForm(FlaskForm):
|
||||||
hidden_entreprise_id = HiddenField()
|
hidden_site_id = HiddenField()
|
||||||
correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1)
|
correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1)
|
||||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
@ -418,7 +472,7 @@ class CorrespondantsCreationForm(FlaskForm):
|
|||||||
(entry.nom.data.strip(), entry.prenom.data.strip())
|
(entry.nom.data.strip(), entry.prenom.data.strip())
|
||||||
)
|
)
|
||||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||||
entreprise_id=self.hidden_entreprise_id.data,
|
site_id=self.hidden_site_id.data,
|
||||||
nom=entry.nom.data,
|
nom=entry.nom.data,
|
||||||
prenom=entry.prenom.data,
|
prenom=entry.prenom.data,
|
||||||
).first()
|
).first()
|
||||||
@ -433,7 +487,7 @@ class CorrespondantsCreationForm(FlaskForm):
|
|||||||
|
|
||||||
class CorrespondantModificationForm(FlaskForm):
|
class CorrespondantModificationForm(FlaskForm):
|
||||||
hidden_correspondant_id = HiddenField()
|
hidden_correspondant_id = HiddenField()
|
||||||
hidden_entreprise_id = HiddenField()
|
hidden_site_id = HiddenField()
|
||||||
civilite = SelectField(
|
civilite = SelectField(
|
||||||
"Civilité (*)",
|
"Civilité (*)",
|
||||||
choices=[("H", "Monsieur"), ("F", "Madame")],
|
choices=[("H", "Monsieur"), ("F", "Madame")],
|
||||||
@ -459,7 +513,7 @@ class CorrespondantModificationForm(FlaskForm):
|
|||||||
|
|
||||||
correspondant = EntrepriseCorrespondant.query.filter(
|
correspondant = EntrepriseCorrespondant.query.filter(
|
||||||
EntrepriseCorrespondant.id != self.hidden_correspondant_id.data,
|
EntrepriseCorrespondant.id != self.hidden_correspondant_id.data,
|
||||||
EntrepriseCorrespondant.entreprise_id == self.hidden_entreprise_id.data,
|
EntrepriseCorrespondant.site_id == self.hidden_site_id.data,
|
||||||
EntrepriseCorrespondant.nom == self.nom.data,
|
EntrepriseCorrespondant.nom == self.nom.data,
|
||||||
EntrepriseCorrespondant.prenom == self.prenom.data,
|
EntrepriseCorrespondant.prenom == self.prenom.data,
|
||||||
).first()
|
).first()
|
||||||
|
@ -4,7 +4,8 @@ from app import db
|
|||||||
class Entreprise(db.Model):
|
class Entreprise(db.Model):
|
||||||
__tablename__ = "are_entreprises"
|
__tablename__ = "are_entreprises"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
siret = db.Column(db.Text)
|
siret = db.Column(db.Text, index=True, unique=True)
|
||||||
|
siret_provisoire = db.Column(db.Boolean, default=False)
|
||||||
nom = db.Column(db.Text)
|
nom = db.Column(db.Text)
|
||||||
adresse = db.Column(db.Text)
|
adresse = db.Column(db.Text)
|
||||||
codepostal = db.Column(db.Text)
|
codepostal = db.Column(db.Text)
|
||||||
@ -79,9 +80,6 @@ class EntrepriseSite(db.Model):
|
|||||||
class EntrepriseCorrespondant(db.Model):
|
class EntrepriseCorrespondant(db.Model):
|
||||||
__tablename__ = "are_correspondants"
|
__tablename__ = "are_correspondants"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
entreprise_id = db.Column(
|
|
||||||
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
|
||||||
)
|
|
||||||
site_id = db.Column(db.Integer, db.ForeignKey("are_sites.id", ondelete="cascade"))
|
site_id = db.Column(db.Integer, db.ForeignKey("are_sites.id", ondelete="cascade"))
|
||||||
civilite = db.Column(db.String(1))
|
civilite = db.Column(db.String(1))
|
||||||
nom = db.Column(db.Text)
|
nom = db.Column(db.Text)
|
||||||
@ -262,3 +260,19 @@ class EntreprisePreferences(db.Model):
|
|||||||
else:
|
else:
|
||||||
cs.value = check_siret
|
cs.value = check_siret
|
||||||
db.session.commit()
|
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()
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,37 +1,85 @@
|
|||||||
.nav-entreprise {
|
/* nav */
|
||||||
|
|
||||||
|
.nav_entreprise {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-entreprise ul {
|
.nav_entreprise > ul {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-entreprise li{
|
.nav_entreprise_item {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
margin: 2px;
|
||||||
border: 2px black solid;
|
border: 2px black solid;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-entreprise li:hover{
|
.nav_entreprise_item:hover {
|
||||||
background-color: rgb(212, 212, 212);
|
background-color: rgb(212, 212, 212);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-entreprise>ul>li>a {
|
.nav_entreprise_link {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: black;
|
color: black;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-entreprise>ul>li>a:hover {
|
.nav_entreprise_link:hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav_entreprise_link-active {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* breadcrumbs */
|
||||||
|
|
||||||
|
.breadcrumbs {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs_item {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs_item:not(:last-of-type)::after {
|
||||||
|
content: '\203a';
|
||||||
|
margin: 0 5px;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs_link {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs_link:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs_link-active {
|
||||||
|
color: #333;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* form error */
|
||||||
|
|
||||||
|
.title-form-error {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #a94442;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-error {
|
.form-error {
|
||||||
color: #a94442;
|
color: #a94442;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* entreprises */
|
||||||
|
|
||||||
.boutons .btn {
|
.boutons .btn {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
@ -90,7 +138,7 @@
|
|||||||
flex: 1 0 0;
|
flex: 1 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.taxe-apprentissage{
|
.taxe-apprentissage {
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
}
|
}
|
||||||
@ -139,37 +187,3 @@
|
|||||||
#form-entreprise-filter > label {
|
#form-entreprise-filter > label {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-form-error {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #a94442;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs_item {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs_item:not(:last-of-type)::after {
|
|
||||||
content: '\203a';
|
|
||||||
margin: 0 5px;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs_link {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs_link:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumbs_link-active {
|
|
||||||
color: #333;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
@ -26,8 +26,8 @@
|
|||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<div class="parent-btn">
|
<div class="parent-btn">
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_correspondant', id=correspondant.id) }}">Modifier correspondant</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_correspondant', entreprise_id=correspondant.site.entreprise.id, site_id=correspondant.site_id, correspondant_id=correspondant.id) }}">Modifier correspondant</a>
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_correspondant', id=correspondant.id) }}">Supprimer correspondant</a>
|
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_correspondant', entreprise_id=correspondant.site.entreprise.id, site_id=correspondant.site_id, correspondant_id=correspondant.id) }}">Supprimer correspondant</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
@ -23,31 +23,31 @@
|
|||||||
{% for fichier in offre[1] %}
|
{% for fichier in offre[1] %}
|
||||||
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=entreprise.id, offre_id=offre[0].id, filedir=fichier[0], filename=fichier[1] )}}">{{ fichier[1] }}</a>
|
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=entreprise.id, offre_id=offre[0].id, filedir=fichier[0], filename=fichier[1] )}}">{{ fichier[1] }}</a>
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a href="{{ url_for('entreprises.delete_offre_file', offre_id=offre[0].id, filedir=fichier[0] )}}" style="margin-left: 5px;"><img title="Supprimer fichier" alt="supprimer" width="10" height="9" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
<a href="{{ url_for('entreprises.delete_offre_file', entreprise_id=entreprise.id, offre_id=offre[0].id, filedir=fichier[0] )}}" style="margin-left: 5px;"><img title="Supprimer fichier" alt="supprimer" width="10" height="9" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br>
|
<br>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a href="{{ url_for('entreprises.add_offre_file', offre_id=offre[0].id) }}">Ajoutez un fichier</a>
|
<a href="{{ url_for('entreprises.add_offre_file', entreprise_id=entreprise.id, offre_id=offre[0].id) }}">Ajoutez un fichier</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="parent-btn">
|
<div class="parent-btn">
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_offre', id=offre[0].id) }}">Modifier l'offre</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_offre', entreprise_id=offre[0].entreprise_id, offre_id=offre[0].id) }}">Modifier l'offre</a>
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_offre', id=offre[0].id) }}">Supprimer l'offre</a>
|
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_offre', entreprise_id=offre[0].entreprise_id, offre_id=offre[0].id) }}">Supprimer l'offre</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesSend, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesSend, None) %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.envoyer_offre', id=offre[0].id) }}">Envoyer l'offre</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.envoyer_offre', entreprise_id=entreprise.id, offre_id=offre[0].id) }}">Envoyer l'offre</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
{% if not offre[0].expired %}
|
{% if not offre[0].expired %}
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.expired', id=offre[0].id) }}">Rendre expirée</a>
|
<a class="btn btn-danger" href="{{ url_for('entreprises.expired', entreprise_id=offre[0].entreprise_id, offre_id=offre[0].id) }}">Rendre expirée</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-success" href="{{ url_for('entreprises.expired', id=offre[0].id) }}">Rendre non expirée</a>
|
<a class="btn btn-success" href="{{ url_for('entreprises.expired', entreprise_id=offre[0].entreprise_id, offre_id=offre[0].id) }}">Rendre non expirée</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise_id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Contacts</a>
|
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Contacts</a>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<div class="container" style="margin-bottom: 10px;">
|
<div class="container" style="margin-bottom: 10px;">
|
||||||
<h1>Liste des contacts</h1>
|
<h1>Liste des contacts</h1>
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a class="btn btn-primary" style="margin-bottom:10px;" href="{{ url_for('entreprises.add_contact', id=entreprise_id) }}">Ajouter contact</a>
|
<a class="btn btn-primary" style="margin-bottom:10px;" href="{{ url_for('entreprises.add_contact', entreprise_id=entreprise.id) }}">Ajouter contact</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<table id="table-contacts">
|
<table id="table-contacts">
|
||||||
<thead>
|
<thead>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu pull-left">
|
<ul class="dropdown-menu pull-left">
|
||||||
<li><a href="{{ url_for('entreprises.edit_contact', id=contact.id) }}">Modifier</a></li>
|
<li><a href="{{ url_for('entreprises.edit_contact', entreprise_id=entreprise.id, contact_id=contact.id) }}">Modifier</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
<td>{{ correspondant[0].mail }}</td>
|
<td>{{ correspondant[0].mail }}</td>
|
||||||
<td>{{ correspondant[0].poste}}</td>
|
<td>{{ correspondant[0].poste}}</td>
|
||||||
<td>{{ correspondant[0].service}}</td>
|
<td>{{ correspondant[0].service}}</td>
|
||||||
<td><a href="{{ url_for('entreprises.fiche_entreprise', id=correspondant[1].entreprise_id) }}">{{ correspondant[1].nom }}</a></td>
|
<td><a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=correspondant[1].entreprise.id) }}">{{ correspondant[1].nom }}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for entreprise in entreprises %}
|
{% for entreprise in entreprises %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}" {% if not entreprise.active %} style="color:red" {% endif %}>{{ entreprise.siret }}</a></td>
|
<td><a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" {% if not entreprise.active %} style="color:red" {% endif %}>{{ entreprise.siret }}</a></td>
|
||||||
<td>{{ entreprise.nom }}</td>
|
<td>{{ entreprise.nom }}</td>
|
||||||
<td>{{ entreprise.adresse }}</td>
|
<td>{{ entreprise.adresse }}</td>
|
||||||
<td>{{ entreprise.codepostal }}</td>
|
<td>{{ entreprise.codepostal }}</td>
|
||||||
@ -73,11 +73,11 @@
|
|||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu pull-left">
|
<ul class="dropdown-menu pull-left">
|
||||||
<li><a href="{{ url_for('entreprises.edit_entreprise', id=entreprise.id) }}">Modifier</a></li>
|
<li><a href="{{ url_for('entreprises.edit_entreprise', entreprise_id=entreprise.id) }}">Modifier</a></li>
|
||||||
{% if entreprise.active %}
|
{% if entreprise.active %}
|
||||||
<li><a href="{{ url_for('entreprises.fiche_entreprise_desactiver', id=entreprise.id)}}" style="color:red">Désactiver</a></li>
|
<li><a href="{{ url_for('entreprises.fiche_entreprise_desactiver', entreprise_id=entreprise.id)}}" style="color:red">Désactiver</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a href="{{ url_for('entreprises.fiche_entreprise_activer', id=entreprise.id)}}" style="color:lightgreen">Activer</a></li>
|
<li><a href="{{ url_for('entreprises.fiche_entreprise_activer', entreprise_id=entreprise.id)}}" style="color:lightgreen">Activer</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,14 +39,14 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for entreprise in entreprises %}
|
{% for entreprise in entreprises %}
|
||||||
<tr class="table-row active">
|
<tr class="table-row active">
|
||||||
<th><a href="{{ url_for('entreprises.fiche_entreprise_validation', id=entreprise.id) }}">{{ entreprise.siret }}</a></th>
|
<th><a href="{{ url_for('entreprises.fiche_entreprise_validation', entreprise_id=entreprise.id) }}">{{ entreprise.siret }}</a></th>
|
||||||
<th>{{ entreprise.nom }}</th>
|
<th>{{ entreprise.nom }}</th>
|
||||||
<th>{{ entreprise.adresse }}</th>
|
<th>{{ entreprise.adresse }}</th>
|
||||||
<th>{{ entreprise.codepostal }}</th>
|
<th>{{ entreprise.codepostal }}</th>
|
||||||
<th>{{ entreprise.ville }}</th>
|
<th>{{ entreprise.ville }}</th>
|
||||||
<th>{{ entreprise.pays }}</th>
|
<th>{{ entreprise.pays }}</th>
|
||||||
<th>
|
<th>
|
||||||
<a class="btn btn-default" href="{{ url_for('entreprises.fiche_entreprise_validation', id=entreprise.id) }}">Voir</a>
|
<a class="btn btn-default" href="{{ url_for('entreprises.fiche_entreprise_validation', entreprise_id=entreprise.id) }}">Voir</a>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
14
app/templates/entreprises/error.html
Normal file
14
app/templates/entreprises/error.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{# -*- mode: jinja-html -*- #}
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block app_content %}
|
||||||
|
|
||||||
|
<h2>Erreur !</h2>
|
||||||
|
|
||||||
|
{{ e }}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="{{ url_for('entreprises.index') }}">Retour</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
{% if logs %}
|
{% if logs %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h3>Dernières opérations sur cette fiche <a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id) }}">Voir tout</a></h3>
|
<h3>Dernières opérations sur cette fiche <a href="{{ url_for('entreprises.logs_entreprise', entreprise_id=entreprise.id) }}">Voir tout</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
{% for log in logs %}
|
{% for log in logs %}
|
||||||
<li>
|
<li>
|
||||||
@ -62,7 +62,7 @@
|
|||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<div>
|
<div>
|
||||||
Taxe d'apprentissage<br>
|
Taxe d'apprentissage<br>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_taxe_apprentissage', id=entreprise.id) }}">Ajouter taxe apprentissage</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_taxe_apprentissage', entreprise_id=entreprise.id) }}">Ajouter taxe apprentissage</a>
|
||||||
<div class="taxe-apprentissage">
|
<div class="taxe-apprentissage">
|
||||||
<ul id="liste-taxes-apprentissages">
|
<ul id="liste-taxes-apprentissages">
|
||||||
{% if not taxes|check_taxe_now %}
|
{% if not taxes|check_taxe_now %}
|
||||||
@ -70,8 +70,8 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% for taxe in taxes %}
|
{% for taxe in taxes %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ url_for('entreprises.delete_taxe_apprentissage', id_entreprise=entreprise.id, id_taxe=taxe.id) }}"><img title="Supprimer taxe d'apprentissage" alt="supprimer" width="10" height="9" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
<a href="{{ url_for('entreprises.delete_taxe_apprentissage', entreprise_id=entreprise.id, taxe_id=taxe.id) }}"><img title="Supprimer taxe d'apprentissage" alt="supprimer" width="10" height="9" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
||||||
<a href="{{ url_for('entreprises.edit_taxe_apprentissage', id_entreprise=entreprise.id, id_taxe=taxe.id) }}">{{ taxe.annee }}</a> : {{ taxe.montant }} euros {% if taxe.notes %}- {{ taxe.notes}} {% endif %}
|
<a href="{{ url_for('entreprises.edit_taxe_apprentissage', entreprise_id=entreprise.id, taxe_id=taxe.id) }}">{{ taxe.annee }}</a> : {{ taxe.montant }} euros {% if taxe.notes %}- {{ taxe.notes}} {% endif %}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
@ -82,17 +82,17 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_entreprise', id=entreprise.id) }}">Modifier</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_entreprise', entreprise_id=entreprise.id) }}">Modifier</a>
|
||||||
{% if entreprise.active %}
|
{% if entreprise.active %}
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.fiche_entreprise_desactiver', id=entreprise.id) }}">Désactiver</a>
|
<a class="btn btn-danger" href="{{ url_for('entreprises.fiche_entreprise_desactiver', entreprise_id=entreprise.id) }}">Désactiver</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-success" href="{{ url_for('entreprises.fiche_entreprise_activer', id=entreprise.id) }}">Activer</a>
|
<a class="btn btn-success" href="{{ url_for('entreprises.fiche_entreprise_activer', entreprise_id=entreprise.id) }}">Activer</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_site', id=entreprise.id) }}">Ajouter site</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_site', entreprise_id=entreprise.id) }}">Ajouter site</a>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_offre', id=entreprise.id) }}">Ajouter offre</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_offre', entreprise_id=entreprise.id) }}">Ajouter offre</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.contacts', id=entreprise.id) }}">Liste contacts</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.contacts', entreprise_id=entreprise.id) }}">Liste contacts</a>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.offres_expirees', entreprise_id=entreprise.id) }}">Voir les offres expirées</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -109,8 +109,8 @@
|
|||||||
Pays : {{ site.pays }}
|
Pays : {{ site.pays }}
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<div>
|
<div>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_site', id_entreprise=entreprise.id, id_site=site.id) }}">Modifier</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_site', entreprise_id=entreprise.id, site_id=site.id) }}">Modifier</a>
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_correspondant', id_entreprise=entreprise.id, id_site=site.id) }}">Ajouter correspondant</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_correspondant', entreprise_id=entreprise.id, site_id=site.id) }}">Ajouter correspondant</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesCorrespondants, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesCorrespondants, None) %}
|
||||||
@ -125,7 +125,7 @@
|
|||||||
|
|
||||||
{% if offres %}
|
{% if offres %}
|
||||||
<div>
|
<div>
|
||||||
<h3>Offres - <a href="{{ url_for('entreprises.offres_expirees', id=entreprise.id) }}">Voir les offres expirées</a></h3>
|
<h3>Offres - <a href="{{ url_for('entreprises.offres_expirees', entreprise_id=entreprise.id) }}">Voir les offres expirées</a></h3>
|
||||||
{% for offre in offres %}
|
{% for offre in offres %}
|
||||||
{% include 'entreprises/_offre.html' %}
|
{% include 'entreprises/_offre.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@ -137,7 +137,7 @@
|
|||||||
<div style="margin-bottom: 10px;">
|
<div style="margin-bottom: 10px;">
|
||||||
<h3>Liste des stages et apprentissages réalisés au sein de l'entreprise</h3>
|
<h3>Liste des stages et apprentissages réalisés au sein de l'entreprise</h3>
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||||
<a class="btn btn-primary" href="{{ url_for('entreprises.add_stage_apprentissage', id=entreprise.id) }}" style="margin-bottom:10px;">Ajouter stage ou apprentissage</a>
|
<a class="btn btn-primary" href="{{ url_for('entreprises.add_stage_apprentissage', entreprise_id=entreprise.id) }}" style="margin-bottom:10px;">Ajouter stage ou apprentissage</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<table id="table-stages-apprentissages">
|
<table id="table-stages-apprentissages">
|
||||||
<thead>
|
<thead>
|
||||||
@ -171,8 +171,8 @@
|
|||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu pull-left">
|
<ul class="dropdown-menu pull-left">
|
||||||
<li><a href="{{ url_for('entreprises.edit_stage_apprentissage', id=data[0].id) }}">Modifier</a></li>
|
<li><a href="{{ url_for('entreprises.edit_stage_apprentissage', entreprise_id=entreprise.id, stage_apprentissage_id=data[0].id) }}">Modifier</a></li>
|
||||||
<li><a href="{{ url_for('entreprises.delete_stage_apprentissage', id=data[0].id) }}" style="color:red">Supprimer</a></li>
|
<li><a href="{{ url_for('entreprises.delete_stage_apprentissage', entreprise_id=entreprise.id, stage_apprentissage_id=data[0].id) }}" style="color:red">Supprimer</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -66,8 +66,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<a class="btn btn-success" href="{{ url_for('entreprises.validate_entreprise', id=entreprise.id) }}">Valider</a>
|
<a class="btn btn-success" href="{{ url_for('entreprises.validate_entreprise', entreprise_id=entreprise.id) }}">Valider</a>
|
||||||
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_validation_entreprise', id=entreprise.id) }}">Supprimer</a>
|
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_validation_entreprise', entreprise_id=entreprise.id) }}">Supprimer</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -84,7 +84,7 @@
|
|||||||
Code postal : {{ entreprise.codepostal }}<br>
|
Code postal : {{ entreprise.codepostal }}<br>
|
||||||
Ville : {{ entreprise.ville }}<br>
|
Ville : {{ entreprise.ville }}<br>
|
||||||
Pays : {{ entreprise.pays }}<br>
|
Pays : {{ entreprise.pays }}<br>
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}" target="_blank">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" target="_blank">Fiche entreprise</a>
|
||||||
</div>
|
</div>
|
||||||
{% for site in entreprise.sites %}
|
{% for site in entreprise.sites %}
|
||||||
<div class="site">
|
<div class="site">
|
||||||
@ -108,7 +108,7 @@
|
|||||||
Code postal : {{ site.codepostal }}<br>
|
Code postal : {{ site.codepostal }}<br>
|
||||||
Ville : {{ site.ville }}<br>
|
Ville : {{ site.ville }}<br>
|
||||||
Pays : {{ site.pays }}<br>
|
Pays : {{ site.pays }}<br>
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=site.entreprise_id) }}" target="_blank">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=site.entreprise_id) }}" target="_blank">Fiche entreprise</a>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -139,7 +139,7 @@
|
|||||||
{% if correspondant.notes %}
|
{% if correspondant.notes %}
|
||||||
Notes : {{ correspondant.notes }}<br>
|
Notes : {{ correspondant.notes }}<br>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=correspondant.entreprise_id) }}" target="_blank">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=correspondant.site.entreprise.id) }}" target="_blank">Fiche entreprise</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Dernières opérations</a>
|
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Dernières opérations</a>
|
||||||
@ -26,21 +26,21 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=logs.prev_num) }}" class="btn btn-default {% if logs.page == 1 %}disabled{% endif %}">
|
<a href="{{ url_for('entreprises.logs_entreprise', entreprise_id=entreprise.id, page=logs.prev_num) }}" class="btn btn-default {% if logs.page == 1 %}disabled{% endif %}">
|
||||||
«
|
«
|
||||||
</a>
|
</a>
|
||||||
{% for page_num in logs.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
|
{% for page_num in logs.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
|
||||||
{% if page_num %}
|
{% if page_num %}
|
||||||
{% if logs.page == page_num %}
|
{% if logs.page == page_num %}
|
||||||
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
|
<a href="{{ url_for('entreprises.logs_entreprise', entreprise_id=entreprise.id, page=page_num) }}" class="btn btn-inverse">{{ page_num }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
|
<a href="{{ url_for('entreprises.logs_entreprise', entreprise_id=entreprise.id, page=page_num) }}" class="btn btn-default">{{ page_num }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
...
|
...
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<a href="{{ url_for('entreprises.logs_entreprise', id=entreprise.id, page=logs.next_num) }}" class="btn btn-default {% if logs.page == logs.pages %}disabled{% endif %}">
|
<a href="{{ url_for('entreprises.logs_entreprise', entreprise_id=entreprise.id, page=logs.next_num) }}" class="btn btn-default {% if logs.page == logs.pages %}disabled{% endif %}">
|
||||||
»
|
»
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,15 +1,28 @@
|
|||||||
{# -*- mode: jinja-html -*- #}
|
{# -*- mode: jinja-html -*- #}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<nav class="nav-entreprise">
|
<nav class="nav_entreprise">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ url_for('entreprises.index') }}">Entreprises</a></li>
|
<li class="nav_entreprise_item">
|
||||||
|
<a href="{{ url_for('entreprises.index') }}" class="nav_entreprise_link {% if title=='Entreprises' %}nav_entreprise_link-active{% endif %}">Entreprises</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesCorrespondants, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesCorrespondants, None) %}
|
||||||
<li><a href="{{ url_for('entreprises.correspondants') }}">Correspondants</a></li>
|
<li class="nav_entreprise_item">
|
||||||
|
<a href="{{ url_for('entreprises.correspondants') }}" class="nav_entreprise_link {% if title=='Correspondants' %}nav_entreprise_link-active{% endif %}">Correspondants</a>
|
||||||
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="{{ url_for('entreprises.offres_recues') }}">Offres reçues</a></li>
|
|
||||||
|
<li class="nav_entreprise_item">
|
||||||
|
<a href="{{ url_for('entreprises.offres_recues') }}" class="nav_entreprise_link {% if title=='Offres reçues' %}nav_entreprise_link-active{% endif %}">Offres reçues</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesValidate, None) %}
|
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesValidate, None) %}
|
||||||
<li><a href="{{ url_for('entreprises.validation') }}">Entreprises à valider</a></li>
|
<li class="nav_entreprise_item">
|
||||||
<li><a href="{{ url_for('entreprises.preferences') }}">Préférences</a></li>
|
<a href="{{ url_for('entreprises.validation') }}" class="nav_entreprise_link {% if title=='Validation entreprises' %}nav_entreprise_link-active{% endif %}">Entreprises à valider</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav_entreprise_item">
|
||||||
|
<a href="{{ url_for('entreprises.preferences') }}" class="nav_entreprise_link {% if title=='Préférences' %}nav_entreprise_link-active{% endif %}">Préférences</a>
|
||||||
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
<a href="{{ url_for('entreprises.index') }}" class="breadcrumbs_link">Entreprises</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=entreprise.id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" class="breadcrumbs_link">Fiche entreprise</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="breadcrumbs_item">
|
<li class="breadcrumbs_item">
|
||||||
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Offres expirées</a>
|
<a href="" class="breadcrumbs_link breadcrumbs_link-active">Offres expirées</a>
|
||||||
|
@ -34,14 +34,14 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<a href="{{ url_for('entreprises.fiche_entreprise', id=offre[1].entreprise_id) }}">lien vers l'entreprise</a><br>
|
<a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=offre[1].entreprise_id) }}">lien vers l'entreprise</a><br>
|
||||||
|
|
||||||
{% for fichier in offre[2] %}
|
{% for fichier in offre[2] %}
|
||||||
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=offre[1].entreprise_id, offre_id=offre[1].id, filedir=fichier[0], filename=fichier[1]) }}">{{ fichier[1] }}</a><br>
|
<a href="{{ url_for('entreprises.get_offre_file', entreprise_id=offre[1].entreprise_id, offre_id=offre[1].id, filedir=fichier[0], filename=fichier[1]) }}">{{ fichier[1] }}</a><br>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a href="{{ url_for('entreprises.delete_offre_recue', id=offre[0].id) }}" style="margin-left: 5px;"><img title="Supprimer" alt="supprimer" width="16" height="16" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
<a href="{{ url_for('entreprises.delete_offre_recue', envoi_offre_id=offre[0].id) }}" style="margin-left: 5px;"><img title="Supprimer" alt="supprimer" width="16" height="16" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
"""suppression colonne are_correspondants, ajout siret provisoire, siret cle unique
|
||||||
|
|
||||||
|
Revision ID: cb360caa3dac
|
||||||
|
Revises: 0b337376e9f7
|
||||||
|
Create Date: 2022-07-13 15:52:14.113530
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = 'cb360caa3dac'
|
||||||
|
down_revision = '0b337376e9f7'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_constraint('are_correspondants_entreprise_id_fkey', 'are_correspondants', type_='foreignkey')
|
||||||
|
op.drop_column('are_correspondants', 'entreprise_id')
|
||||||
|
op.add_column('are_entreprises', sa.Column('siret_provisoire', sa.Boolean(), nullable=True))
|
||||||
|
op.create_index(op.f('ix_are_entreprises_siret'), 'are_entreprises', ['siret'], unique=True)
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_index(op.f('ix_are_entreprises_siret'), table_name='are_entreprises')
|
||||||
|
op.drop_column('are_entreprises', 'siret_provisoire')
|
||||||
|
op.add_column('are_correspondants', sa.Column('entreprise_id', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||||
|
op.create_foreign_key('are_correspondants_entreprise_id_fkey', 'are_correspondants', 'are_entreprises', ['entreprise_id'], ['id'], ondelete='CASCADE')
|
||||||
|
# ### end Alembic commands ###
|
16
scodoc.py
16
scodoc.py
@ -31,6 +31,7 @@ from app.models import ModuleImpl, ModuleImplInscription
|
|||||||
from app.models import Identite
|
from app.models import Identite
|
||||||
from app.models import departements
|
from app.models import departements
|
||||||
from app.models.evaluations import Evaluation
|
from app.models.evaluations import Evaluation
|
||||||
|
from app.entreprises.models import entreprises_reset_database
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.views import notes, scolar
|
from app.views import notes, scolar
|
||||||
import tools
|
import tools
|
||||||
@ -518,6 +519,21 @@ def recursive_help(cmd, parent=None):
|
|||||||
recursive_help(sub, ctx)
|
recursive_help(sub, ctx)
|
||||||
|
|
||||||
|
|
||||||
|
@app.cli.command()
|
||||||
|
def entreprises_reset_db():
|
||||||
|
"""Remet a zéro les tables du module relations entreprises"""
|
||||||
|
click.confirm(
|
||||||
|
"This will erase all data from the blueprint 'entreprises'.\nAre you sure you want to continue?",
|
||||||
|
abort=True,
|
||||||
|
)
|
||||||
|
db.reflect()
|
||||||
|
try:
|
||||||
|
entreprises_reset_database()
|
||||||
|
except:
|
||||||
|
db.session.rollback()
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
@app.cli.command()
|
@app.cli.command()
|
||||||
def dumphelp():
|
def dumphelp():
|
||||||
"""Génère la page d'aide complète pour la doc."""
|
"""Génère la page d'aide complète pour la doc."""
|
||||||
|
Loading…
Reference in New Issue
Block a user