This commit is contained in:
Emmanuel Viennet 2022-07-13 17:13:55 +02:00
commit 9480e15b83
28 changed files with 715 additions and 396 deletions

View File

@ -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()

View File

@ -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,6 +348,7 @@ 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
else:
try: try:
req = requests.get( req = requests.get(
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}" f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
@ -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,10 +544,11 @@ 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
if correspondant_data["id_site"] != "":
correspondant = EntrepriseCorrespondant.query.filter_by( correspondant = EntrepriseCorrespondant.query.filter_by(
nom=correspondant_data["nom"], nom=correspondant_data["nom"],
prenom=correspondant_data["prenom"], prenom=correspondant_data["prenom"],
entreprise_id=entreprise.id, site_id=correspondant_data["id_site"],
).first() ).first()
if correspondant is not None: if correspondant is not None:
return False return False

View File

@ -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()

View File

@ -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

View File

@ -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;
@ -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;
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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 %}

View 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 %}

View File

@ -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>

View File

@ -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 %}

View File

@ -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 %}

View File

@ -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 %}">
&laquo; &laquo;
</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 %}">
&raquo; &raquo;
</a> </a>
</div> </div>

View File

@ -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>

View File

@ -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>

View File

@ -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 %}

View File

@ -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 ###

View File

@ -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."""