forked from ScoDoc/ScoDoc
correction modèle
This commit is contained in:
parent
51076574ee
commit
3a31317e48
@ -239,7 +239,8 @@ def get_excel_book_are(export: bool = False):
|
||||
)
|
||||
correspondants = (
|
||||
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)
|
||||
.all()
|
||||
)
|
||||
@ -391,7 +392,6 @@ def check_sites_import(m):
|
||||
sites_import.append(site_import)
|
||||
else:
|
||||
correspondant_import = EntrepriseCorrespondant(
|
||||
entreprise_id=entreprise.id,
|
||||
civilite=site_data["civilite"],
|
||||
nom=site_data["nom"],
|
||||
prenom=site_data["prenom"],
|
||||
@ -414,7 +414,6 @@ def check_sites_import(m):
|
||||
|
||||
if site_data["civilite"] != "":
|
||||
correspondant_import = EntrepriseCorrespondant(
|
||||
entreprise_id=entreprise.id,
|
||||
site_id=site.id,
|
||||
civilite=site_data["civilite"],
|
||||
nom=site_data["nom"],
|
||||
@ -527,7 +526,7 @@ def check_correspondant_import(correspondant_data):
|
||||
return False
|
||||
|
||||
# civilite entre H ou F
|
||||
if correspondant_data["civilite"] not in ["H", "F"]:
|
||||
if correspondant_data["civilite"].upper() not in ["H", "F"]:
|
||||
return False
|
||||
|
||||
if (
|
||||
@ -544,13 +543,14 @@ def check_correspondant_import(correspondant_data):
|
||||
return False
|
||||
|
||||
# correspondant possède le meme nom et prénom dans la meme entreprise
|
||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||
nom=correspondant_data["nom"],
|
||||
prenom=correspondant_data["prenom"],
|
||||
entreprise_id=entreprise.id,
|
||||
).first()
|
||||
if correspondant is not None:
|
||||
return False
|
||||
if correspondant_data["id_site"] != "":
|
||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||
nom=correspondant_data["nom"],
|
||||
prenom=correspondant_data["prenom"],
|
||||
site_id=correspondant_data["id_site"],
|
||||
).first()
|
||||
if correspondant is not None:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
@ -99,7 +99,7 @@ class EntrepriseCreationForm(FlaskForm):
|
||||
|
||||
civilite = SelectField(
|
||||
"Civilité du correspondant",
|
||||
choices=[("M", "Monsieur"), ("F", "Madame")],
|
||||
choices=[("H", "Monsieur"), ("F", "Madame")],
|
||||
validators=[DataRequired(message=CHAMP_REQUIS)],
|
||||
)
|
||||
nom_correspondant = _build_string_field("Nom du correspondant", required=False)
|
||||
@ -163,10 +163,13 @@ class EntrepriseCreationForm(FlaskForm):
|
||||
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}")
|
||||
)
|
||||
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 EntrepriseModificationForm(FlaskForm):
|
||||
@ -393,7 +396,7 @@ class CorrespondantCreationForm(FlaskForm):
|
||||
|
||||
|
||||
class CorrespondantsCreationForm(FlaskForm):
|
||||
hidden_entreprise_id = HiddenField()
|
||||
hidden_site_id = HiddenField()
|
||||
correspondants = FieldList(FormField(CorrespondantCreationForm), min_entries=1)
|
||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||
|
||||
@ -418,7 +421,7 @@ class CorrespondantsCreationForm(FlaskForm):
|
||||
(entry.nom.data.strip(), entry.prenom.data.strip())
|
||||
)
|
||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||
entreprise_id=self.hidden_entreprise_id.data,
|
||||
site_id=self.hidden_site_id.data,
|
||||
nom=entry.nom.data,
|
||||
prenom=entry.prenom.data,
|
||||
).first()
|
||||
@ -433,7 +436,7 @@ class CorrespondantsCreationForm(FlaskForm):
|
||||
|
||||
class CorrespondantModificationForm(FlaskForm):
|
||||
hidden_correspondant_id = HiddenField()
|
||||
hidden_entreprise_id = HiddenField()
|
||||
hidden_site_id = HiddenField()
|
||||
civilite = SelectField(
|
||||
"Civilité (*)",
|
||||
choices=[("H", "Monsieur"), ("F", "Madame")],
|
||||
@ -459,7 +462,7 @@ class CorrespondantModificationForm(FlaskForm):
|
||||
|
||||
correspondant = EntrepriseCorrespondant.query.filter(
|
||||
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.prenom == self.prenom.data,
|
||||
).first()
|
||||
|
@ -79,9 +79,6 @@ class EntrepriseSite(db.Model):
|
||||
class EntrepriseCorrespondant(db.Model):
|
||||
__tablename__ = "are_correspondants"
|
||||
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"))
|
||||
civilite = db.Column(db.String(1))
|
||||
nom = db.Column(db.Text)
|
||||
|
@ -354,7 +354,6 @@ def add_entreprise():
|
||||
if form.nom_correspondant.data.strip():
|
||||
db.session.refresh(site)
|
||||
correspondant = EntrepriseCorrespondant(
|
||||
entreprise_id=entreprise.id,
|
||||
site_id=site.id,
|
||||
civilite=form.civilite.data,
|
||||
nom=form.nom_correspondant.data.strip(),
|
||||
@ -989,11 +988,11 @@ def add_correspondant(entreprise_id, site_id):
|
||||
).first_or_404(
|
||||
description=f"site {site_id} inconnue pour l'entreprise {entreprise_id}"
|
||||
)
|
||||
form = CorrespondantsCreationForm(hidden_entreprise_id=site.entreprise_id)
|
||||
print(site.entreprise_id)
|
||||
form = CorrespondantsCreationForm(hidden_site_id=site.id)
|
||||
if form.validate_on_submit():
|
||||
for correspondant_entry in form.correspondants.entries:
|
||||
correspondant = EntrepriseCorrespondant(
|
||||
entreprise_id=site.entreprise_id,
|
||||
site_id=site.id,
|
||||
civilite=correspondant_entry.civilite.data,
|
||||
nom=correspondant_entry.nom.data.strip(),
|
||||
@ -1010,7 +1009,7 @@ def add_correspondant(entreprise_id, site_id):
|
||||
db.session.refresh(correspondant)
|
||||
log = EntrepriseHistorique(
|
||||
authenticated_user=current_user.user_name,
|
||||
entreprise_id=correspondant.entreprise_id,
|
||||
entreprise_id=correspondant.site.entreprise.id,
|
||||
object="correspondant",
|
||||
object_id=correspondant.id,
|
||||
text="Création d'un correspondant",
|
||||
@ -1039,14 +1038,23 @@ def edit_correspondant(entreprise_id, site_id, correspondant_id):
|
||||
"""
|
||||
correspondant = (
|
||||
db.session.query(EntrepriseCorrespondant)
|
||||
.join(Entreprise, EntrepriseCorrespondant.entreprise_id == Entreprise.id)
|
||||
.filter(
|
||||
EntrepriseCorrespondant.id == correspondant_id, Entreprise.visible == True
|
||||
.join(
|
||||
EntrepriseSite,
|
||||
EntrepriseCorrespondant.site_id == EntrepriseSite.id,
|
||||
)
|
||||
.join(Entreprise, EntrepriseSite.entreprise_id == Entreprise.id)
|
||||
.filter(
|
||||
EntrepriseCorrespondant.id == correspondant_id,
|
||||
EntrepriseCorrespondant.site_id == site_id,
|
||||
EntrepriseSite.entreprise_id == entreprise_id,
|
||||
Entreprise.visible == True,
|
||||
)
|
||||
.first_or_404(
|
||||
description=f"correspondant {correspondant_id} inconnu pour l'entreprise {entreprise_id} et le site {site_id}"
|
||||
)
|
||||
.first_or_404(description=f"correspondant {correspondant_id} inconnu")
|
||||
)
|
||||
form = CorrespondantModificationForm(
|
||||
hidden_entreprise_id=correspondant.entreprise_id,
|
||||
hidden_site_id=correspondant.site.id,
|
||||
hidden_correspondant_id=correspondant.id,
|
||||
)
|
||||
if form.validate_on_submit():
|
||||
@ -1061,7 +1069,7 @@ def edit_correspondant(entreprise_id, site_id, correspondant_id):
|
||||
correspondant.notes = form.notes.data.strip()
|
||||
log = EntrepriseHistorique(
|
||||
authenticated_user=current_user.user_name,
|
||||
entreprise_id=correspondant.entreprise_id,
|
||||
entreprise_id=correspondant.site.entreprise.id,
|
||||
object="correspondant",
|
||||
object_id=correspondant.id,
|
||||
text="Modification d'un correspondant",
|
||||
@ -1072,7 +1080,7 @@ def edit_correspondant(entreprise_id, site_id, correspondant_id):
|
||||
return redirect(
|
||||
url_for(
|
||||
"entreprises.fiche_entreprise",
|
||||
entreprise_id=correspondant.entreprise_id,
|
||||
entreprise_id=correspondant.site.entreprise.id,
|
||||
)
|
||||
)
|
||||
elif request.method == "GET":
|
||||
@ -1103,18 +1111,27 @@ def delete_correspondant(entreprise_id, site_id, correspondant_id):
|
||||
"""
|
||||
correspondant = (
|
||||
db.session.query(EntrepriseCorrespondant)
|
||||
.join(Entreprise, EntrepriseCorrespondant.entreprise_id == Entreprise.id)
|
||||
.filter(
|
||||
EntrepriseCorrespondant.id == correspondant_id, Entreprise.visible == True
|
||||
.join(
|
||||
EntrepriseSite,
|
||||
EntrepriseCorrespondant.site_id == EntrepriseSite.id,
|
||||
)
|
||||
.join(Entreprise, EntrepriseSite.entreprise_id == Entreprise.id)
|
||||
.filter(
|
||||
EntrepriseCorrespondant.id == correspondant_id,
|
||||
EntrepriseCorrespondant.site_id == site_id,
|
||||
EntrepriseSite.entreprise_id == entreprise_id,
|
||||
Entreprise.visible == True,
|
||||
)
|
||||
.first_or_404(
|
||||
description=f"correspondant {correspondant_id} inconnu pour l'entreprise {entreprise_id} et le site {site_id}"
|
||||
)
|
||||
.first_or_404(description=f"correspondant {correspondant_id} inconnu")
|
||||
)
|
||||
form = SuppressionConfirmationForm()
|
||||
if form.validate_on_submit():
|
||||
db.session.delete(correspondant)
|
||||
log = EntrepriseHistorique(
|
||||
authenticated_user=current_user.user_name,
|
||||
entreprise_id=correspondant.entreprise_id,
|
||||
entreprise_id=correspondant.site.entreprise.id,
|
||||
object="correspondant",
|
||||
object_id=correspondant.id,
|
||||
text="Suppression d'un correspondant",
|
||||
@ -1125,7 +1142,7 @@ def delete_correspondant(entreprise_id, site_id, correspondant_id):
|
||||
return redirect(
|
||||
url_for(
|
||||
"entreprises.fiche_entreprise",
|
||||
entreprise_id=correspondant.entreprise_id,
|
||||
entreprise_id=correspondant.site.entreprise.id,
|
||||
)
|
||||
)
|
||||
return render_template(
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||
<div class="parent-btn">
|
||||
<a class="btn btn-primary" href="{{ url_for('entreprises.edit_correspondant', entreprise_id=correspondant.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', entreprise_id=correspondant.entreprise_id, site_id=correspondant.site_id, correspondant_id=correspondant.id) }}">Supprimer 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', entreprise_id=correspondant.site.entreprise.id, site_id=correspondant.site_id, correspondant_id=correspondant.id) }}">Supprimer correspondant</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
@ -45,7 +45,7 @@
|
||||
<td>{{ correspondant[0].mail }}</td>
|
||||
<td>{{ correspondant[0].poste}}</td>
|
||||
<td>{{ correspondant[0].service}}</td>
|
||||
<td><a href="{{ url_for('entreprises.fiche_entreprise', 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>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
@ -139,7 +139,7 @@
|
||||
{% if correspondant.notes %}
|
||||
Notes : {{ correspondant.notes }}<br>
|
||||
{% endif %}
|
||||
<a href="{{ url_for('entreprises.fiche_entreprise', 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>
|
||||
{% endfor %}
|
||||
|
@ -0,0 +1,30 @@
|
||||
"""suppression colonne are_correspondants
|
||||
|
||||
Revision ID: ec4f4f4ae9db
|
||||
Revises: 0b337376e9f7
|
||||
Create Date: 2022-07-11 17:56:19.608275
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'ec4f4f4ae9db'
|
||||
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')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
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 ###
|
Loading…
Reference in New Issue
Block a user