forked from ScoDoc/DocScoDoc
correction et amélioration module entreprises
This commit is contained in:
parent
f0c342fad5
commit
0bc969946a
@ -29,6 +29,7 @@ from config import Config
|
||||
import re
|
||||
import requests
|
||||
import glob
|
||||
from datetime import date
|
||||
|
||||
from flask import flash
|
||||
from flask_login import current_user
|
||||
@ -117,6 +118,9 @@ def get_dept_id_by_acronym(acronym: str):
|
||||
|
||||
|
||||
def get_dept_acronym_by_id(id: int):
|
||||
"""
|
||||
Retourne l'acronym d'un departement a l'aide de son id
|
||||
"""
|
||||
dept = Departement.query.filter_by(id=id).first()
|
||||
if dept is not None:
|
||||
return dept.acronym
|
||||
@ -137,7 +141,7 @@ def check_offre_depts(depts: list, offre_depts: list):
|
||||
|
||||
def get_offre_files_and_depts(offre: EntrepriseOffre, depts: list):
|
||||
"""
|
||||
Retourne l'offre, les fichiers attachés a l'offre et les département liés
|
||||
Retourne l'offre, les fichiers attachés a l'offre, les département liés a l'offre et le correspondant
|
||||
"""
|
||||
offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all()
|
||||
correspondant = EntrepriseCorrespondant.query.filter_by(
|
||||
@ -162,6 +166,42 @@ def get_offre_files_and_depts(offre: EntrepriseOffre, depts: list):
|
||||
return None
|
||||
|
||||
|
||||
def get_offres_non_expirees_with_files(offres):
|
||||
"""
|
||||
Retourne une liste avec toutes les offres non expirées (offre, files, offre_depts, correspondant)
|
||||
"""
|
||||
depts = get_depts()
|
||||
offres_with_files = []
|
||||
for offre in offres:
|
||||
if not offre.expired and (
|
||||
offre.expiration_date is None
|
||||
or (
|
||||
offre.expiration_date is not None
|
||||
and date.today() < offre.expiration_date
|
||||
)
|
||||
):
|
||||
offre_with_files = get_offre_files_and_depts(offre, depts)
|
||||
if offre_with_files is not None:
|
||||
offres_with_files.append(offre_with_files)
|
||||
return offres_with_files
|
||||
|
||||
|
||||
def get_offres_expirees_with_files(offres):
|
||||
"""
|
||||
Retourne une liste avec toutes les offres expirées (offre, files, offre_depts, correspondant)
|
||||
"""
|
||||
depts = get_depts()
|
||||
offres_with_files = []
|
||||
for offre in offres:
|
||||
if offre.expired or (
|
||||
offre.expiration_date is not None and date.today() > offre.expiration_date
|
||||
):
|
||||
offre_with_files = get_offre_files_and_depts(offre, depts)
|
||||
if offre_with_files is not None:
|
||||
offres_with_files.append(offre_with_files)
|
||||
return offres_with_files
|
||||
|
||||
|
||||
def send_email_notifications_entreprise(subject: str, entreprise: Entreprise):
|
||||
txt = [
|
||||
"Une entreprise est en attente de validation",
|
||||
@ -186,6 +226,7 @@ def send_email_notifications_entreprise(subject: str, entreprise: Entreprise):
|
||||
def get_excel_book_are(export: bool = False):
|
||||
"""
|
||||
Retourne un Excel avec les 3 feuilles "Entreprises", "Sites" et "Correspondants"
|
||||
si export est True, remplit les feuilles avec les données a exporter
|
||||
"""
|
||||
entreprises_titles = ENTREPRISES_KEYS[:]
|
||||
sites_titles = SITES_KEYS[:]
|
||||
@ -450,7 +491,7 @@ def check_sites_import(m):
|
||||
|
||||
def check_site_import(site_data):
|
||||
"""
|
||||
Verifie les données d'une ligne Excel (sites)
|
||||
Verifie les données d'une ligne Excel (site)
|
||||
"""
|
||||
champs_obligatoires = [
|
||||
"siret_entreprise",
|
||||
@ -482,6 +523,9 @@ def check_site_import(site_data):
|
||||
|
||||
|
||||
def check_correspondants_import(m):
|
||||
"""
|
||||
Verifie la feuille Excel "Correspondants" de l'importation données
|
||||
"""
|
||||
ligne = 1
|
||||
if m[0] != CORRESPONDANTS_KEYS:
|
||||
flash(
|
||||
@ -557,6 +601,9 @@ def check_correspondant_import(correspondant_data):
|
||||
|
||||
|
||||
def list_to_dict(m):
|
||||
"""
|
||||
Transforme une liste de liste (matrice) en liste de dictionnaire (key = premiere liste de la matrice)
|
||||
"""
|
||||
l = []
|
||||
for data in m[1:]:
|
||||
new_dict = {title: value.strip() for title, value in zip(m[0], data)}
|
||||
|
@ -66,7 +66,7 @@ from werkzeug.utils import secure_filename
|
||||
@permission_required(Permission.RelationsEntreprisesView)
|
||||
def index():
|
||||
"""
|
||||
Permet d'afficher une page avec la liste des entreprises (visible) et une liste des dernières opérations
|
||||
Permet d'afficher une page avec la liste des entreprises (visible et active) et une liste des dernières opérations
|
||||
"""
|
||||
entreprises = Entreprise.query.filter_by(visible=True, active=True)
|
||||
logs = (
|
||||
@ -81,12 +81,12 @@ def index():
|
||||
if checked[0]:
|
||||
entreprises = Entreprise.query.filter_by(visible=True)
|
||||
if checked[1]:
|
||||
entreprises = Entreprise.query.filter_by(association=True)
|
||||
entreprises = Entreprise.query.filter_by(visible=True, association=True)
|
||||
if checked[2]:
|
||||
entreprises = Entreprise.query.filter_by(siret_provisoire=True)
|
||||
entreprises = Entreprise.query.filter_by(visible=True, siret_provisoire=True)
|
||||
if checked[1] and checked[2]:
|
||||
entreprises = Entreprise.query.filter_by(
|
||||
association=True, siret_provisoire=True
|
||||
visible=True, association=True, siret_provisoire=True
|
||||
)
|
||||
return render_template(
|
||||
"entreprises/entreprises.html",
|
||||
@ -167,19 +167,7 @@ def fiche_entreprise(entreprise_id):
|
||||
entreprise = Entreprise.query.filter_by(
|
||||
id=entreprise_id, visible=True
|
||||
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue")
|
||||
offres_with_files = []
|
||||
depts = are.get_depts()
|
||||
for offre in entreprise.offres:
|
||||
if not offre.expired and (
|
||||
offre.expiration_date is None
|
||||
or (
|
||||
offre.expiration_date is not None
|
||||
and date.today() < offre.expiration_date
|
||||
)
|
||||
):
|
||||
offre_with_files = are.get_offre_files_and_depts(offre, depts)
|
||||
if offre_with_files is not None:
|
||||
offres_with_files.append(offre_with_files)
|
||||
offres_with_files = are.get_offres_non_expirees_with_files(entreprise.offres)
|
||||
logs = (
|
||||
EntrepriseHistorique.query.order_by(EntrepriseHistorique.date.desc())
|
||||
.filter(EntrepriseHistorique.entreprise_id == entreprise.id)
|
||||
@ -298,20 +286,12 @@ def offres_expirees(entreprise_id):
|
||||
entreprise = Entreprise.query.filter_by(
|
||||
id=entreprise_id, visible=True
|
||||
).first_or_404(description=f"fiche entreprise {entreprise_id} inconnue")
|
||||
offres_expirees_with_files = []
|
||||
depts = are.get_depts()
|
||||
for offre in entreprise.offres:
|
||||
if offre.expired or (
|
||||
offre.expiration_date is not None and date.today() > offre.expiration_date
|
||||
):
|
||||
offre_expiree_with_files = are.get_offre_files_and_depts(offre, depts)
|
||||
if offre_expiree_with_files is not None:
|
||||
offres_expirees_with_files.append(offre_expiree_with_files)
|
||||
offres_with_files = are.get_offres_expirees_with_files(entreprise.offres)
|
||||
return render_template(
|
||||
"entreprises/offres_expirees.html",
|
||||
title="Offres expirées",
|
||||
entreprise=entreprise,
|
||||
offres_expirees=offres_expirees_with_files,
|
||||
offres_expirees=offres_with_files,
|
||||
)
|
||||
|
||||
|
||||
@ -956,6 +936,9 @@ def expired(entreprise_id, offre_id):
|
||||
)
|
||||
@permission_required(Permission.RelationsEntreprisesChange)
|
||||
def add_site(entreprise_id):
|
||||
"""
|
||||
Permet d'ajouter un site a une entreprise
|
||||
"""
|
||||
entreprise = Entreprise.query.filter_by(
|
||||
id=entreprise_id, visible=True
|
||||
).first_or_404(description=f"entreprise {entreprise_id} inconnue")
|
||||
@ -998,6 +981,9 @@ def add_site(entreprise_id):
|
||||
methods=["GET", "POST"],
|
||||
)
|
||||
def edit_site(entreprise_id, site_id):
|
||||
"""
|
||||
Permet de modifier une offre
|
||||
"""
|
||||
site = EntrepriseSite.query.filter_by(
|
||||
id=site_id, entreprise_id=entreprise_id
|
||||
).first_or_404(
|
||||
@ -1887,4 +1873,7 @@ def preferences():
|
||||
|
||||
@bp.errorhandler(404)
|
||||
def not_found_error_handler(e):
|
||||
"""
|
||||
Renvoie une page d'erreur pour l'erreur 404
|
||||
"""
|
||||
return render_template("entreprises/error.html", title="Erreur", e=e)
|
||||
|
@ -184,6 +184,10 @@
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#form-entreprise-filter > label {
|
||||
#form-entreprise-filter > div {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#form-entreprise-filter > div > label {
|
||||
margin-right: 20px;
|
||||
}
|
@ -39,9 +39,9 @@
|
||||
{% if form %}
|
||||
<form id="form-entreprise-filter" method="POST" action="">
|
||||
{{ form.hidden_tag() }}
|
||||
<input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked[0] %} checked {% endif %}> {{ form.active.label }}
|
||||
<input id="association" name="association" type="checkbox" onChange="form.submit()" {% if checked[1] %} checked {% endif %}> {{ form.association.label }}
|
||||
<input id="siret_provisoire" name="siret_provisoire" type="checkbox" onChange="form.submit()" {% if checked[2] %} checked {% endif %}> {{ form.siret_provisoire.label }}
|
||||
<div><input id="active" name="active" type="checkbox" onChange="form.submit()" {% if checked[0] %} checked {% endif %}> {{ form.active.label }}</div>
|
||||
<div><input id="association" name="association" type="checkbox" onChange="form.submit()" {% if checked[1] %} checked {% endif %}> {{ form.association.label }}</div>
|
||||
<div><input id="siret_provisoire" name="siret_provisoire" type="checkbox" onChange="form.submit()" {% if checked[2] %} checked {% endif %}> {{ form.siret_provisoire.label }}</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
<table id="table-entreprises">
|
||||
@ -61,7 +61,7 @@
|
||||
<tbody>
|
||||
{% for entreprise in entreprises %}
|
||||
<tr>
|
||||
<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><a href="{{ url_for('entreprises.fiche_entreprise', entreprise_id=entreprise.id) }}" style="{% if not entreprise.active %}color:red;{% endif %}{% if entreprise.siret_provisoire %}font-weight:bold;{% endif %}" >{{ entreprise.siret }}</a></td>
|
||||
<td>{{ entreprise.nom }}</td>
|
||||
<td>{{ entreprise.adresse }}</td>
|
||||
<td>{{ entreprise.codepostal }}</td>
|
||||
|
@ -48,7 +48,7 @@
|
||||
|
||||
<div class="entreprise">
|
||||
<div>
|
||||
SIRET : {{ entreprise.siret }}<br>
|
||||
SIRET {% if entreprise.siret_provisoire %}provisoire{% endif %} : {{ entreprise.siret }}<br>
|
||||
Nom : {{ entreprise.nom }}<br>
|
||||
Adresse : {{ entreprise.adresse }}<br>
|
||||
Code postal : {{ entreprise.codepostal }}<br>
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
<div class="entreprise">
|
||||
<div>
|
||||
SIRET : {{ entreprise.siret }}<br>
|
||||
SIRET {% if entreprise.siret_provisoire %}provisoire{% endif %} : {{ entreprise.siret }}<br>
|
||||
Nom : {{ entreprise.nom }}<br>
|
||||
Adresse : {{ entreprise.adresse }}<br>
|
||||
Code postal : {{ entreprise.codepostal }}<br>
|
||||
|
Loading…
Reference in New Issue
Block a user