forked from ScoDoc/ScoDoc
offre expiration automatique, enlever espaces siret, changement formulaires ...
This commit is contained in:
parent
73b46b11dc
commit
77eefbe483
@ -107,9 +107,7 @@ def get_offre_files_and_depts(offre: EntrepriseOffre, depts: list):
|
||||
return None
|
||||
|
||||
|
||||
def send_email_notifications_entreprise(
|
||||
subject, entreprise: Entreprise, correspondant: EntrepriseCorrespondant
|
||||
):
|
||||
def send_email_notifications_entreprise(subject, entreprise: Entreprise):
|
||||
txt = [
|
||||
"Une entreprise est en attente de validation",
|
||||
"Entreprise:",
|
||||
@ -119,14 +117,6 @@ def send_email_notifications_entreprise(
|
||||
f"\tcode postal: {entreprise.codepostal}",
|
||||
f"\tville: {entreprise.ville}",
|
||||
f"\tpays: {entreprise.pays}",
|
||||
"",
|
||||
"Correspondant:",
|
||||
f"nom: {correspondant.nom}",
|
||||
f"prenom: {correspondant.prenom}",
|
||||
f"telephone: {correspondant.telephone}",
|
||||
f"mail: {correspondant.mail}",
|
||||
f"poste: {correspondant.poste}",
|
||||
f"service: {correspondant.service}",
|
||||
]
|
||||
txt = "\n".join(txt)
|
||||
email.send_email(
|
||||
@ -192,7 +182,7 @@ def verif_entreprise_data(entreprise_data):
|
||||
if data == "":
|
||||
return False
|
||||
if EntreprisePreferences.get_check_siret():
|
||||
siret = entreprise_data[0].strip() # vérification sur le siret
|
||||
siret = entreprise_data[0].replace(" ", "") # vérification sur le siret
|
||||
if re.match("^\d{14}$", siret) is None:
|
||||
return False
|
||||
try:
|
||||
|
@ -72,7 +72,7 @@ def _build_string_field(label, required=True, render_kw=None):
|
||||
class EntrepriseCreationForm(FlaskForm):
|
||||
siret = _build_string_field(
|
||||
"SIRET (*)",
|
||||
render_kw={"placeholder": "Numéro composé de 14 chiffres", "maxlength": "14"},
|
||||
render_kw={"placeholder": "Numéro composé de 14 chiffres"},
|
||||
)
|
||||
nom_entreprise = _build_string_field("Nom de l'entreprise (*)")
|
||||
adresse = _build_string_field("Adresse de l'entreprise (*)")
|
||||
@ -80,15 +80,6 @@ class EntrepriseCreationForm(FlaskForm):
|
||||
ville = _build_string_field("Ville de l'entreprise (*)")
|
||||
pays = _build_string_field("Pays de l'entreprise", required=False)
|
||||
|
||||
nom_correspondant = _build_string_field("Nom du correspondant (*)")
|
||||
prenom_correspondant = _build_string_field("Prénom du correspondant (*)")
|
||||
telephone = _build_string_field("Téléphone du correspondant (*)", required=False)
|
||||
mail = StringField(
|
||||
"Mail du correspondant (*)",
|
||||
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
||||
)
|
||||
poste = _build_string_field("Poste du correspondant", required=False)
|
||||
service = _build_string_field("Service du correspondant", required=False)
|
||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||
|
||||
def validate(self):
|
||||
@ -96,29 +87,23 @@ class EntrepriseCreationForm(FlaskForm):
|
||||
if not FlaskForm.validate(self):
|
||||
validate = False
|
||||
|
||||
if not self.telephone.data and not self.mail.data:
|
||||
self.telephone.errors.append(
|
||||
"Saisir un moyen de contact (mail ou téléphone)"
|
||||
)
|
||||
self.mail.errors.append("Saisir un moyen de contact (mail ou téléphone)")
|
||||
validate = False
|
||||
|
||||
return validate
|
||||
|
||||
def validate_siret(self, siret):
|
||||
if EntreprisePreferences.get_check_siret():
|
||||
siret = siret.data.strip()
|
||||
if re.match("^\d{14}$", siret) is None:
|
||||
siret_data = siret.data.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}"
|
||||
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret_data}"
|
||||
)
|
||||
if req.status_code != 200:
|
||||
raise ValidationError("SIRET inexistant")
|
||||
except requests.ConnectionError:
|
||||
print("no internet")
|
||||
entreprise = Entreprise.query.filter_by(siret=siret).first()
|
||||
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(
|
||||
|
@ -295,23 +295,12 @@ def add_entreprise():
|
||||
)
|
||||
db.session.add(entreprise)
|
||||
db.session.commit()
|
||||
db.session.refresh(entreprise)
|
||||
correspondant = EntrepriseCorrespondant(
|
||||
entreprise_id=entreprise.id,
|
||||
nom=form.nom_correspondant.data.strip(),
|
||||
prenom=form.prenom_correspondant.data.strip(),
|
||||
telephone=form.telephone.data.strip(),
|
||||
mail=form.mail.data.strip(),
|
||||
poste=form.poste.data.strip(),
|
||||
service=form.service.data.strip(),
|
||||
)
|
||||
db.session.add(correspondant)
|
||||
if current_user.has_permission(Permission.RelationsEntreprisesValidate, None):
|
||||
entreprise.visible = True
|
||||
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
|
||||
log = EntrepriseLog(
|
||||
authenticated_user=current_user.user_name,
|
||||
text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom}) avec un correspondant",
|
||||
text=f"{nom_entreprise} - Création de la fiche entreprise ({entreprise.nom})",
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
@ -322,7 +311,7 @@ def add_entreprise():
|
||||
db.session.commit()
|
||||
if EntreprisePreferences.get_email_notifications():
|
||||
are.send_email_notifications_entreprise(
|
||||
"entreprise en attente de validation", entreprise, correspondant
|
||||
"entreprise en attente de validation", entreprise
|
||||
)
|
||||
flash("L'entreprise a été ajouté à la liste pour la validation.")
|
||||
return redirect(url_for("entreprises.index"))
|
||||
@ -759,29 +748,18 @@ def delete_correspondant(id):
|
||||
)
|
||||
form = SuppressionConfirmationForm()
|
||||
if form.validate_on_submit():
|
||||
correspondant_count = EntrepriseCorrespondant.query.filter_by(
|
||||
entreprise_id=correspondant.entreprise_id
|
||||
).count()
|
||||
if correspondant_count == 1:
|
||||
flash(
|
||||
"Le correspondant n'a pas été supprimé de la fiche entreprise. (1 correspondant minimum)"
|
||||
)
|
||||
return redirect(
|
||||
url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id)
|
||||
)
|
||||
else:
|
||||
db.session.delete(correspondant)
|
||||
log = EntrepriseLog(
|
||||
authenticated_user=current_user.user_name,
|
||||
object=correspondant.entreprise_id,
|
||||
text="Suppression d'un correspondant",
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
flash("Le correspondant a été supprimé de la fiche entreprise.")
|
||||
return redirect(
|
||||
url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id)
|
||||
)
|
||||
db.session.delete(correspondant)
|
||||
log = EntrepriseLog(
|
||||
authenticated_user=current_user.user_name,
|
||||
object=correspondant.entreprise_id,
|
||||
text="Suppression d'un correspondant",
|
||||
)
|
||||
db.session.add(log)
|
||||
db.session.commit()
|
||||
flash("Le correspondant a été supprimé de la fiche entreprise.")
|
||||
return redirect(
|
||||
url_for("entreprises.fiche_entreprise", id=correspondant.entreprise_id)
|
||||
)
|
||||
return render_template(
|
||||
"entreprises/delete_confirmation.html",
|
||||
title="Supression correspondant",
|
||||
@ -842,7 +820,11 @@ def edit_contact(id):
|
||||
|
||||
|
||||
@bp.route("/fiche_entreprise/contacts/<int:id>")
|
||||
@permission_required(Permission.RelationsEntreprisesView)
|
||||
def contacts(id):
|
||||
"""
|
||||
Permet d'afficher une page avec la liste des contacts d'une entreprise
|
||||
"""
|
||||
contacts = EntrepriseContact.query.filter_by(entreprise=id).all()
|
||||
return render_template(
|
||||
"entreprises/contacts.html",
|
||||
@ -955,6 +937,7 @@ def edit_stage_apprentissage(id):
|
||||
|
||||
|
||||
@bp.route("/delete_stage_apprentissage/<int:id>", methods=["GET", "POST"])
|
||||
@permission_required(Permission.RelationsEntreprisesChange)
|
||||
def delete_stage_apprentissage(id):
|
||||
"""
|
||||
Permet de supprimer un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise
|
||||
@ -1083,7 +1066,8 @@ def export_entreprises():
|
||||
filename = title
|
||||
return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE)
|
||||
else:
|
||||
abort(404)
|
||||
flash("Aucune entreprise dans la base.")
|
||||
return redirect(url_for("entreprises.index"))
|
||||
|
||||
|
||||
@bp.route("/get_import_entreprises_file_sample")
|
||||
@ -1141,7 +1125,7 @@ def import_entreprises():
|
||||
):
|
||||
siret_list.append(entreprise_data[0])
|
||||
entreprise = Entreprise(
|
||||
siret=entreprise_data[0],
|
||||
siret=entreprise_data[0].replace(" ", ""),
|
||||
nom=entreprise_data[1],
|
||||
adresse=entreprise_data[2],
|
||||
ville=entreprise_data[3],
|
||||
@ -1217,7 +1201,8 @@ def export_correspondants():
|
||||
filename = title
|
||||
return scu.send_file(xlsx, filename, scu.XLSX_SUFFIX, scu.XLSX_MIMETYPE)
|
||||
else:
|
||||
abort(404)
|
||||
flash("Aucun correspondant dans la base.")
|
||||
return redirect(url_for("entreprises.correspondants"))
|
||||
|
||||
|
||||
@bp.route("/get_import_correspondants_file_sample")
|
||||
|
@ -3,7 +3,7 @@
|
||||
{% import 'bootstrap/wtf.html' as wtf %}
|
||||
|
||||
{% block app_content %}
|
||||
<h1>Ajout entreprise avec correspondant</h1>
|
||||
<h1>Ajout entreprise</h1>
|
||||
<br>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
@ -16,45 +16,36 @@
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.onload = function(e){
|
||||
document.getElementById("siret").addEventListener("keyup", autocomplete);
|
||||
document.getElementById("siret").addEventListener("keyup", autocomplete);
|
||||
|
||||
function autocomplete() {
|
||||
var input = document.getElementById("siret").value;
|
||||
if(input.length == 14) {
|
||||
fetch("https://entreprise.data.gouv.fr/api/sirene/v1/siret/" + input)
|
||||
.then(response => {
|
||||
if(response.ok)
|
||||
return response.json()
|
||||
else {
|
||||
emptyForm()
|
||||
}
|
||||
})
|
||||
.then(response => fillForm(response))
|
||||
.catch(err => err)
|
||||
function autocomplete() {
|
||||
var input = document.getElementById("siret").value.replaceAll(" ", "")
|
||||
if(input.length >= 14) {
|
||||
fetch("https://entreprise.data.gouv.fr/api/sirene/v1/siret/" + input)
|
||||
.then(response => {
|
||||
if(response.ok)
|
||||
return response.json()
|
||||
else {
|
||||
emptyForm()
|
||||
}
|
||||
}
|
||||
|
||||
function fillForm(response) {
|
||||
document.getElementById("nom_entreprise").value = response.etablissement.l1_normalisee
|
||||
document.getElementById("adresse").value = response.etablissement.l4_normalisee
|
||||
document.getElementById("codepostal").value = response.etablissement.code_postal
|
||||
document.getElementById("ville").value = response.etablissement.libelle_commune
|
||||
}
|
||||
|
||||
function emptyForm() {
|
||||
document.getElementById("nom_entreprise").value = ''
|
||||
document.getElementById("adresse").value = ''
|
||||
document.getElementById("codepostal").value = ''
|
||||
document.getElementById("ville").value = ''
|
||||
})
|
||||
.then(response => fillForm(response))
|
||||
.catch(err => err)
|
||||
}
|
||||
}
|
||||
|
||||
{# ajout margin-bottom sur le champ pays #}
|
||||
var champ_pays = document.getElementById("pays")
|
||||
if (champ_pays !== null) {
|
||||
var closest_form_group = champ_pays.closest(".form-group")
|
||||
closest_form_group.style.marginBottom = "50px"
|
||||
function fillForm(response) {
|
||||
document.getElementById("nom_entreprise").value = response.etablissement.l1_normalisee
|
||||
document.getElementById("adresse").value = response.etablissement.l4_normalisee
|
||||
document.getElementById("codepostal").value = response.etablissement.code_postal
|
||||
document.getElementById("ville").value = response.etablissement.libelle_commune
|
||||
}
|
||||
|
||||
function emptyForm() {
|
||||
document.getElementById("nom_entreprise").value = ''
|
||||
document.getElementById("adresse").value = ''
|
||||
document.getElementById("codepostal").value = ''
|
||||
document.getElementById("ville").value = ''
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
@ -95,7 +95,7 @@
|
||||
<tr>
|
||||
<td>{{ data[0].date_debut.strftime('%d/%m/%Y') }}</td>
|
||||
<td>{{ data[0].date_fin.strftime('%d/%m/%Y') }}</td>
|
||||
<td>{{(data[0].date_fin-data[0].date_debut).days//7}} semaines</td>
|
||||
<td>{{ (data[0].date_fin-data[0].date_debut).days//7 }} semaines</td>
|
||||
<td>{{ data[0].type_offre }}</td>
|
||||
<td>{{ data[1].nom|format_nom }} {{ data[1].prenom|format_prenom }}</td>
|
||||
<td>{% if data[0].formation_text %}{{ data[0].formation_text }}{% endif %}</td>
|
||||
@ -118,13 +118,13 @@
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td data-priority="">Date début</td>
|
||||
<td data-priority="">Date fin</td>
|
||||
<td data-priority="">Durée</td>
|
||||
<td data-priority="">Type</td>
|
||||
<td data-priority="">Étudiant</td>
|
||||
<td data-priority="">Formation</td>
|
||||
<td data-priority="">Notes</td>
|
||||
<td>Date début</td>
|
||||
<td>Date fin</td>
|
||||
<td>Durée</td>
|
||||
<td>Type</td>
|
||||
<td>Étudiant</td>
|
||||
<td>Formation</td>
|
||||
<td>Notes</td>
|
||||
{% if current_user.has_permission(current_user.Permission.RelationsEntreprisesChange, None) %}
|
||||
<td>Action</td>
|
||||
{% endif %}
|
||||
|
@ -16,32 +16,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if correspondants %}
|
||||
<div>
|
||||
{% for correspondant in correspondants %}
|
||||
<div>
|
||||
<h3>Correspondant</h3>
|
||||
<div class="correspondant">
|
||||
Nom : {{ correspondant.nom }}<br>
|
||||
Prénom : {{ correspondant.prenom }}<br>
|
||||
{% if correspondant.telephone %}
|
||||
Téléphone : {{ correspondant.telephone }}<br>
|
||||
{% endif %}
|
||||
{% if correspondant.mail %}
|
||||
Mail : {{ correspondant.mail }}<br>
|
||||
{% endif %}
|
||||
{% if correspondant.poste %}
|
||||
Poste : {{ correspondant.poste }}<br>
|
||||
{% endif %}
|
||||
{% if correspondant.service %}
|
||||
Service : {{ correspondant.service }}<br>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
<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>
|
||||
|
@ -25,5 +25,21 @@
|
||||
var closest_form_control = champ_depts.closest(".form-control")
|
||||
closest_form_control.classList.remove("form-control")
|
||||
}
|
||||
|
||||
document.getElementById("type_offre").addEventListener("change", expiration);
|
||||
|
||||
function expiration() {
|
||||
var date = new Date()
|
||||
var expiration = document.getElementById("expiration_date")
|
||||
var type_offre = document.getElementById("type_offre").value
|
||||
if (type_offre == "Alternance") {
|
||||
expiration.value = `${date.getFullYear() + 1}-01-01`
|
||||
} else {
|
||||
if(date.getMonth() + 1 < 7)
|
||||
expiration.value = `${date.getFullYear()}-07-01`
|
||||
else
|
||||
expiration.value = `${date.getFullYear() + 1}-07-01`
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user