Prévention des doublons de lieux de stage

This commit is contained in:
Evarin 2017-10-06 10:29:00 +02:00
parent 0c70d1b76b
commit db8b92f7ed
3 changed files with 24 additions and 3 deletions

View file

@ -117,6 +117,14 @@
console.log(lieu); console.log(lieu);
console.log(lieu_focus); console.log(lieu_focus);
if(lieu_focus === undefined) { if(lieu_focus === undefined) {
// Élimination des doublons
var candidates = $("input.lieu-hidden");
for (var i=0; i<candidates.length; i++) {
if($(candidates[i]).val() == lieu.id) {
lieu_select.closeWidget();
return;
}
}
// Créer un nouveau lieu // Créer un nouveau lieu
var cnt = $("#id_lieux-TOTAL_FORMS"); var cnt = $("#id_lieux-TOTAL_FORMS");
var i_form = cnt.val()*1; var i_form = cnt.val()*1;

View file

@ -29,7 +29,9 @@ def typonazisme(value):
def avis_len(value): def avis_len(value):
if value < 5: if value < 5:
return "vide" return "vide"
elif value < 50: elif value < 30:
return "court" return "court"
elif value < 100:
return "moyen"
else: else:
return "fourni" return "long"

View file

@ -174,7 +174,7 @@ def save_lieu(request):
# Validation et enregistrement # Validation et enregistrement
if form.is_valid(): if form.is_valid():
lieu = form.save() lieu = form.save(commit=False)
if jitter: if jitter:
cdx, cdy = lieu.coord.get_coords() cdx, cdy = lieu.coord.get_coords()
ang = random.random() * 6.29; ang = random.random() * 6.29;
@ -183,6 +183,17 @@ def save_lieu(request):
cdy += math.sin(ang) * rad; cdy += math.sin(ang) * rad;
lieu.coord.set_coords((cdx, cdy)) lieu.coord.set_coords((cdx, cdy))
lieu.save() lieu.save()
# Élimination des doublons
if pk is None or pk == "":
olieux = Lieu.objects.filter(nom=lieu.nom, coord__distance_lte=(lieu.coord, 10))
for olieu in olieux:
if olieu.type_lieu == lieu.type_lieu and \
olieu.ville == lieu.ville and \
olieu.pays == lieu.pays:
return JsonResponse({"success": True, "id": olieu.id})
lieu.save()
return JsonResponse({"success": True, "id": lieu.id}) return JsonResponse({"success": True, "id": lieu.id})
else: else:
return JsonResponse({"success": False, return JsonResponse({"success": False,