1
0
forked from ScoDoc/ScoDoc

offres affichées selon departement, divers

This commit is contained in:
Arthur ZHU 2022-02-14 19:42:17 +01:00
parent 0cef1089b3
commit 82b7791309
5 changed files with 91 additions and 19 deletions

View File

@ -45,6 +45,7 @@ import app.scodoc.sco_utils as scu
from app import db from app import db
from sqlalchemy import text from sqlalchemy import text
from app.models.departements import Departement
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
@ -120,6 +121,21 @@ def contacts():
) )
# temp
def get_dept_id(acronym):
dept = Departement.query.filter_by(acronym=acronym).first()
if dept is not None:
return dept.id
return None
def check_offre_dept(depts, offre_depts):
for offre_dept in offre_depts:
if offre_dept.dept_id in depts:
return True
return False
@bp.route("/fiche_entreprise/<int:id>", methods=["GET"]) @bp.route("/fiche_entreprise/<int:id>", methods=["GET"])
@permission_required(Permission.RelationsEntreprisesView) @permission_required(Permission.RelationsEntreprisesView)
def fiche_entreprise(id): def fiche_entreprise(id):
@ -131,26 +147,32 @@ def fiche_entreprise(id):
""" """
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404() entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
offres_with_files = [] offres_with_files = []
depts = []
for role in current_user.user_roles:
dept_id = get_dept_id(role.dept)
if dept_id is not None:
depts.append(dept_id)
for offre in entreprise.offres: for offre in entreprise.offres:
if date.today() < offre.expiration_date: if date.today() < offre.expiration_date:
files = []
path = os.path.join(
Config.SCODOC_VAR_DIR,
"entreprises",
f"{offre.entreprise_id}",
f"{offre.id}",
)
if os.path.exists(path):
for dir in glob.glob(
f"{path}/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
):
for file in glob.glob(f"{dir}/*"):
file = [os.path.basename(dir), os.path.basename(file)]
files.append(file)
offre_depts = EntrepriseOffreDepartement.query.filter_by( offre_depts = EntrepriseOffreDepartement.query.filter_by(
offre_id=offre.id offre_id=offre.id
).all() ).all()
offres_with_files.append([offre, files, offre_depts]) if not offre_depts or check_offre_dept(depts, offre_depts):
files = []
path = os.path.join(
Config.SCODOC_VAR_DIR,
"entreprises",
f"{offre.entreprise_id}",
f"{offre.id}",
)
if os.path.exists(path):
for dir in glob.glob(
f"{path}/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
):
for file in glob.glob(f"{dir}/*"):
file = [os.path.basename(dir), os.path.basename(file)]
files.append(file)
offres_with_files.append([offre, files, offre_depts])
contacts = entreprise.contacts[:] contacts = entreprise.contacts[:]
logs = ( logs = (
EntrepriseLog.query.order_by(EntrepriseLog.date.desc()) EntrepriseLog.query.order_by(EntrepriseLog.date.desc())
@ -465,6 +487,26 @@ def validate_entreprise(id):
) )
@bp.route("/delete_validation_entreprise/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesValidate)
def delete_validation_entreprise(id):
"""
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
"""
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
form = SuppressionConfirmationForm()
if form.validate_on_submit():
db.session.delete(entreprise)
db.session.commit()
flash("L'entreprise a été supprimé de la liste des entreprise à valider.")
return redirect(url_for("entreprises.validation"))
return render_template(
"entreprises/delete_confirmation.html",
title="Supression entreprise",
form=form,
)
@bp.route("/add_offre/<int:id>", methods=["GET", "POST"]) @bp.route("/add_offre/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange) @permission_required(Permission.RelationsEntreprisesChange)
def add_offre(id): def add_offre(id):
@ -598,6 +640,17 @@ def delete_offre(id):
) )
@bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesView)
def delete_offre_recue(id):
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=id, receiver_id=current_user.id
).first_or_404()
db.session.delete(offre_recue)
db.session.commit()
return redirect(url_for("entreprises.offres_recues"))
@bp.route("/add_contact/<int:id>", methods=["GET", "POST"]) @bp.route("/add_contact/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange) @permission_required(Permission.RelationsEntreprisesChange)
def add_contact(id): def add_contact(id):
@ -954,6 +1007,11 @@ def import_entreprises():
if len(entreprises_import) > 0: if len(entreprises_import) > 0:
for entreprise in entreprises_import: for entreprise in entreprises_import:
db.session.add(entreprise) db.session.add(entreprise)
log = EntrepriseLog(
authenticated_user=current_user.user_name,
text=f"Importation de {len(entreprises_import)} entreprise(s)",
)
db.session.add(log)
db.session.commit() db.session.commit()
flash(f"Importation réussie de {len(entreprises_import)} entreprise(s)") flash(f"Importation réussie de {len(entreprises_import)} entreprise(s)")
return render_template( return render_template(
@ -1113,6 +1171,11 @@ def import_contacts():
if len(contacts_import) > 0: if len(contacts_import) > 0:
for contact in contacts_import: for contact in contacts_import:
db.session.add(contact) db.session.add(contact)
log = EntrepriseLog(
authenticated_user=current_user.user_name,
text=f"Importation de {len(contacts_import)} contact(s)",
)
db.session.add(log)
db.session.commit() db.session.commit()
flash(f"Importation réussie de {len(contacts_import)} contact(s)") flash(f"Importation réussie de {len(contacts_import)} contact(s)")
return render_template( return render_template(

View File

@ -75,9 +75,14 @@
padding-left: 10px; padding-left: 10px;
} }
.offre_depts { .offre-depts {
display: inline-block; display: inline-block;
border: black solid 2px; border: black solid 2px;
border-radius: 5px; border-radius: 5px;
padding: 1px; padding: 1px;
}
.offre-recue {
display: flex;
justify-content: space-between;
} }

View File

@ -7,7 +7,7 @@
Missions : {{ offre[0].missions }}<br> Missions : {{ offre[0].missions }}<br>
Durée : {{ offre[0].duree }}<br> Durée : {{ offre[0].duree }}<br>
{% if offre[2] %} {% if offre[2] %}
Département(s) : {% for offre_dept in offre[2] %} <div class="offre_depts">{{ offre_dept.dept_id|get_dept_acronym }}</div> {% endfor %}<br> Département(s) : {% for offre_dept in offre[2] %} <div class="offre-depts">{{ offre_dept.dept_id|get_dept_acronym }}</div> {% endfor %}<br>
{% endif %} {% endif %}
{% 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>

View File

@ -44,6 +44,7 @@
<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', id=entreprise.id) }}">Valider</a>
<a class="btn btn-danger" href="{{ url_for('entreprises.delete_validation_entreprise', id=entreprise.id) }}">Supprimer</a>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -8,7 +8,7 @@
<h1>Offres reçues</h1> <h1>Offres reçues</h1>
{% if offres_recues %} {% if offres_recues %}
{% for offre in offres_recues %} {% for offre in offres_recues %}
<div class="offre"> <div class="offre offre-recue">
<div> <div>
Envoyé le {{ offre[0].date_envoi.strftime('%d %B %Y à %H:%M') }} par {{ offre[0].sender_id|get_nomcomplet_by_id }}<br> Envoyé le {{ offre[0].date_envoi.strftime('%d %B %Y à %H:%M') }} par {{ offre[0].sender_id|get_nomcomplet_by_id }}<br>
Intitulé : {{ offre[1].intitule }}<br> Intitulé : {{ offre[1].intitule }}<br>
@ -18,9 +18,12 @@
Durée : {{ offre[1].duree }}<br> Durée : {{ offre[1].duree }}<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>
<a href="{{ url_for('entreprises.delete_offre_recue', id=offre[0].id) }}" style="margin-left: 5px;"><img title="Supprimer fichier" alt="supprimer" width="16" height="16" border="0" src="/ScoDoc/static/icons/delete_small_img.png" /></a>
</div>
</div> </div>
{% endfor %} {% endfor %}
{% else %} {% else %}