diff --git a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html index 28cb281..e385d61 100644 --- a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html +++ b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html @@ -39,13 +39,13 @@
  • Adresse naviguable : {{ object.browsable_url }}
  • Valeurs par défaut : diff --git a/src/agenda_culturel/templates/agenda_culturel/tag.html b/src/agenda_culturel/templates/agenda_culturel/tag.html index 354cbaa..c2c3e8b 100644 --- a/src/agenda_culturel/templates/agenda_culturel/tag.html +++ b/src/agenda_culturel/templates/agenda_culturel/tag.html @@ -62,6 +62,12 @@ {% endif %} diff --git a/src/agenda_culturel/templates/agenda_culturel/tag_confirm_delete_by_name.html b/src/agenda_culturel/templates/agenda_culturel/tag_confirm_delete_by_name.html index f385a7b..2dd2d39 100644 --- a/src/agenda_culturel/templates/agenda_culturel/tag_confirm_delete_by_name.html +++ b/src/agenda_culturel/templates/agenda_culturel/tag_confirm_delete_by_name.html @@ -20,6 +20,12 @@ {% else %} sera bien sûr conservé, mais perdra cette étiquette. {% endif %}

    {% endif %} + {% if nbi > 0 %} +

    Remarquez qu'elle est associée à {{ nbi }} import{{ nbs|pluralize }} récurrent{{ nbs|pluralize }}, qui + {% if nbi > 1 %} seront bien sûr conservés, mais perdront cette étiquette. + {% else %} sera bien sûr conservé, mais perdra cette étiquette. + {% endif %}

    + {% endif %} {% if obj %}

    Différentes informations sont associées à cette étiquette (description, suggestion d'inclusion, etc) seront également perdues lors de cette suppression.

    diff --git a/src/agenda_culturel/templates/agenda_culturel/tag_rename_form.html b/src/agenda_culturel/templates/agenda_culturel/tag_rename_form.html index 2690840..6741e5d 100644 --- a/src/agenda_culturel/templates/agenda_culturel/tag_rename_form.html +++ b/src/agenda_culturel/templates/agenda_culturel/tag_rename_form.html @@ -17,7 +17,7 @@

    Renommer l'étiquette {{ tag }}

    -

    En renommant l'étiquette {{ tag }}, vous remplacerez cette étiquette par la nouvelle pour tous les événements concernés.

    +

    En renommant l'étiquette {{ tag }}, vous remplacerez cette étiquette par la nouvelle pour tous les événements et tous les imports récurrents concernés.

    diff --git a/src/agenda_culturel/views.py b/src/agenda_culturel/views.py index f6d4850..bf3e4b1 100644 --- a/src/agenda_culturel/views.py +++ b/src/agenda_culturel/views.py @@ -1971,10 +1971,10 @@ def view_tag(request, t): except EmptyPage: response = paginator.page(paginator.num_pages) - + rimports = RecurrentImport.objects.filter(defaultTags__contains=[t]) tag = Tag.objects.filter(name=t).first() - context = {"tag": t, "paginator_filter": response, "object": tag} + context = {"tag": t, "paginator_filter": response, "object": tag, "rimports": rimports} return render(request, "agenda_culturel/tag.html", context) @@ -2037,11 +2037,21 @@ def rename_tag(request, t): e.tags += [new_name] Event.objects.bulk_update(events, fields=["tags"]) + # find all recurrent imports and fix them + rimports = RecurrentImport.objects.filter(defaultTags__contains=[t]) + for ri in rimports: + ri.tags = [te for te in ri.defaultTags if te != t] + if not new_name in ri.tags: + ri.tags += [new_name] + RecurrentImport.objects.bulk_update(rimports, fields=["defaultTags"]) + # find tag object tag_object = Tag.objects.filter(name=t).first() if tag_object: tag_object.name = new_name tag_object.save() + + messages.success( request, (_( @@ -2060,8 +2070,6 @@ def rename_tag(request, t): @permission_required("agenda_culturel.delete_tag") def delete_tag(request, t): respage = reverse_lazy("view_all_tags") - nb = Event.objects.filter(tags__contains=[t]).count() - obj = Tag.objects.filter(name=t).first() if request.method == "POST": @@ -2071,6 +2079,12 @@ def delete_tag(request, t): e.tags = [te for te in e.tags if te != t] Event.objects.bulk_update(events, fields=["tags"]) + # remove tag from recurrent imports + rimports = RecurrentImport.objects.filter(defaultTags__contains=[t]) + for ri in rimports: + ri.tags = [te for te in ri.defaultTags if te != t] + RecurrentImport.objects.bulk_update(rimports, fields=["defaultTags"]) + # find tag object tag_object = Tag.objects.filter(name=t).first() if tag_object: @@ -2084,11 +2098,14 @@ def delete_tag(request, t): ) return HttpResponseRedirect(respage) else: + nb = Event.objects.filter(tags__contains=[t]).count() + obj = Tag.objects.filter(name=t).first() + nbi = RecurrentImport.objects.filter(defaultTags__contains=[t]).count() cancel_url = request.META.get("HTTP_REFERER", "") if cancel_url == "": cancel_url = respage return render( request, "agenda_culturel/tag_confirm_delete_by_name.html", - {"tag": t, "nb": nb, "cancel_url": cancel_url, "obj": obj}, + {"tag": t, "nb": nb, "nbi": nbi, "cancel_url": cancel_url, "obj": obj}, )