Compare commits

...

2 Commits

Author SHA1 Message Date
Arthur ZHU 94eedcc6e8 Export des annotations 2022-03-02 17:56:58 +01:00
Arthur ZHU 37fa253950 ajout message info, doc 2022-03-02 15:27:35 +01:00
4 changed files with 49 additions and 9 deletions

View File

@ -53,7 +53,7 @@ from werkzeug.utils import secure_filename
@permission_required(Permission.RelationsEntreprisesView)
def index():
"""
Permet d'afficher une page avec la liste des entreprises et une liste des dernières opérations
Permet d'afficher une page avec la liste des entreprises (visible) et une liste des dernières opérations
"""
entreprises = Entreprise.query.filter_by(visible=True)
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
@ -86,7 +86,7 @@ def logs():
@permission_required(Permission.RelationsEntreprisesValidate)
def validation():
"""
Permet d'afficher une page avec la liste des entreprises a valider
Permet d'afficher une page avec la liste des entreprises a valider (non visible)
"""
entreprises = Entreprise.query.filter_by(visible=False).all()
return render_template(
@ -100,7 +100,7 @@ def validation():
@permission_required(Permission.RelationsEntreprisesView)
def contacts():
"""
Permet d'afficher une page la liste des contacts et une liste des dernières opérations
Permet d'afficher une page avec la liste des contacts des entreprises visibles et une liste des dernières opérations
"""
contacts = (
db.session.query(EntrepriseContact, Entreprise)
@ -170,7 +170,7 @@ def fiche_entreprise(id):
@permission_required(Permission.RelationsEntreprisesView)
def logs_entreprise(id):
"""
Permet d'afficher les logs (toutes les entreprises)
Permet d'afficher les logs d'une entreprise
"""
page = request.args.get("page", 1, type=int)
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
@ -211,7 +211,7 @@ def fiche_entreprise_validation(id):
@permission_required(Permission.RelationsEntreprisesView)
def offres_recues():
"""
Permet d'afficher la page où l'on recoit les offres
Permet d'afficher la page où l'on peut voir les offres reçues
"""
offres_recues = (
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
@ -624,6 +624,9 @@ def delete_offre(id):
@bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesView)
def delete_offre_recue(id):
"""
Permet de supprimer une offre reçue
"""
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
id=id, receiver_id=current_user.id
).first_or_404(description=f"offre recu {id} inconnue")
@ -635,11 +638,18 @@ def delete_offre_recue(id):
@bp.route("/expired/<int:id>", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesChange)
def expired(id):
"""
Permet de rendre expirée et non expirée une offre
"""
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnue"
)
offre.expired = not offre.expired
db.session.commit()
if offre.expired:
flash("L'offre a été rendu expirée")
else:
flash("L'offre a été rendu non expirée")
return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id))
@ -815,7 +825,7 @@ def add_historique(id):
@permission_required(Permission.RelationsEntreprisesSend)
def envoyer_offre(id):
"""
Permet d'envoyer une offre à un utilisateur
Permet d'envoyer une offre à un utilisateur ScoDoc
"""
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
description=f"offre {id} inconnue"
@ -877,7 +887,7 @@ def json_etudiants():
@permission_required(Permission.RelationsEntreprisesChange)
def json_responsables():
"""
Permet de récuperer un JSON avec tous les étudiants
Permet de récuperer un JSON avec tous les utilisateurs ScoDoc
"""
if request.args.get("term") is None:
abort(400)
@ -921,7 +931,7 @@ def export_entreprises():
@permission_required(Permission.RelationsEntreprisesExport)
def get_import_entreprises_file_sample():
"""
Permet de récupérer un fichier pour pouvoir importer des entreprises
Permet de récupérer un fichier exemple vide pour pouvoir importer des entreprises
"""
keys = [
"siret",
@ -1052,7 +1062,7 @@ def export_contacts():
@permission_required(Permission.RelationsEntreprisesExport)
def get_import_contacts_file_sample():
"""
Permet de récupérer un fichier pour pouvoir importer des contacts
Permet de récupérer un fichier exemple vide pour pouvoir importer des contacts
"""
keys = [
"nom",
@ -1254,6 +1264,9 @@ def delete_offre_file(offre_id, filedir):
@bp.route("/preferences", methods=["GET", "POST"])
@permission_required(Permission.RelationsEntreprisesValidate)
def preferences():
"""
Permet d'afficher la page des préférences du module gestion des relations entreprises
"""
form = PreferencesForm()
if form.validate_on_submit():
EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip())

View File

@ -60,6 +60,7 @@ from app.scodoc import sco_cache
from app.scodoc import sco_etud
from app.scodoc import sco_permissions_check
from app.scodoc import sco_xml
from app.scodoc import sco_excel
from app.scodoc.sco_exceptions import ScoException, AccessDenied, ScoValueError
from app.scodoc.sco_permissions import Permission
from app.scodoc.TrivialFormulator import TrivialFormulator
@ -1609,6 +1610,27 @@ def make_query_groups(group_ids):
return ""
def exportAnnotation(group_ids):
cnx = ndb.GetDBConnexion()
cursor = cnx.cursor()
cursor.execute(
"""SELECT i.nom, i.prenom, ea.date, ea.comment
FROM group_membership gm, identite i, etud_annotations ea
WHERE gm.group_id=%(group_ids)s
AND gm.etudid=i.id
AND i.id=ea.etudid
""",
{"group_ids": group_ids},
)
titles = ["nom", "prenom", "date", "annotation"]
title = "annotations"
xlsx = sco_excel.excel_simple_table(
titles=titles, lines=cursor.fetchall(), sheet_name=title
)
filename = title
return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE)
class GroupIdInferer(object):
"""Sert à retrouver l'id d'un groupe dans un semestre donné
à partir de son nom.

View File

@ -826,6 +826,8 @@ def tab_absences_html(groups_infos, etat=None):
% groups_infos.groups_query_args,
"""<li><a class="stdlink" href="trombino?%s&format=pdflist">Liste d'appel avec photos</a></li>"""
% groups_infos.groups_query_args,
"""<li><a class="stdlink" href="exportAnnotations?%s">Feuille annotations</a></li>"""
% groups_infos.groups_query_args,
"</ul>",
]
)

View File

@ -2193,3 +2193,6 @@ def stat_bac(formsemestre_id):
sco_publish(
"/sco_dump_and_send_db", sco_dump_db.sco_dump_and_send_db, Permission.ScoView
)
# --- Export annotations
sco_publish("/exportAnnotations", sco_groups.exportAnnotation, Permission.ScoView)