Amélioration relation imports récurrents / étiquettes
- les imports récurrents sont mis à jour quand on renomme ou supprime une étiquette - ajout de liens pour naviguer entre deux de ces objets
This commit is contained in:
parent
c9275c5ea0
commit
41f6dbc352
@ -39,13 +39,13 @@
|
|||||||
<li><strong>Adresse naviguable :</strong> <a href="{{ object.browsable_url }}">{{ object.browsable_url }}</a></li>
|
<li><strong>Adresse naviguable :</strong> <a href="{{ object.browsable_url }}">{{ object.browsable_url }}</a></li>
|
||||||
<li><strong>Valeurs par défaut :</strong>
|
<li><strong>Valeurs par défaut :</strong>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Publié :</strong> {{ object.defaultPublished }}</li>
|
<li><strong>Publié :</strong> {{ object.defaultPublished|yesno:"Oui,Non" }}</li>
|
||||||
<li><strong>Localisation :</strong> {{ object.defaultLocation }}</li>
|
{% if object.defaultLocation %}<li><strong>Localisation :</strong> {{ object.defaultLocation }}</li>{% endif %}
|
||||||
<li><strong>Catégorie :</strong> {{ object.defaultCategory }}</li>
|
<li><strong>Catégorie :</strong> {{ object.defaultCategory }}</li>
|
||||||
<li><strong>Organisateur :</strong> <a href="{{ object.defaultOrganiser.get_absolute_url }}">{{ object.defaultOrganiser }}</a></li>
|
{% if object.defaultOrganiser %}<li><strong>Organisateur :</strong> <a href="{{ object.defaultOrganiser.get_absolute_url }}">{{ object.defaultOrganiser }}</a></li>{% endif %}
|
||||||
<li><strong>Étiquettes :</strong>
|
<li><strong>Étiquettes :</strong>
|
||||||
{% for tag in object.defaultTags %}
|
{% for tag in object.defaultTags %}
|
||||||
{{ tag|tw_highlight }}{% if not forloop.last %}, {% endif %}
|
<a href="{% url 'view_tag' tag %}">{{ tag|tw_highlight }}</a>{% if not forloop.last %}, {% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -62,6 +62,12 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
|
{% if user.is_authenticated and rimports %}
|
||||||
|
<p>Cette étiquette est ajoutée par défaut {% if rimports.count == 1 %}à l'import récurrent{% else %}aux imports récurrents :{% endif %}
|
||||||
|
{% for ri in rimports %}
|
||||||
|
<a href="{{ ri.get_absolute_url }}">{{ ri.name }}</a>{% if not forloop.last %}, {% endif %}
|
||||||
|
{% endfor %}</p>
|
||||||
|
{% endif %}
|
||||||
{% include 'agenda_culturel/paginator.html' %}
|
{% include 'agenda_culturel/paginator.html' %}
|
||||||
</footer>
|
</footer>
|
||||||
</article>
|
</article>
|
||||||
|
@ -20,6 +20,12 @@
|
|||||||
{% else %} sera bien sûr conservé, mais perdra cette étiquette.
|
{% else %} sera bien sûr conservé, mais perdra cette étiquette.
|
||||||
{% endif %}</p>
|
{% endif %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if nbi > 0 %}
|
||||||
|
<p>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 %}</p>
|
||||||
|
{% endif %}
|
||||||
{% if obj %}
|
{% if obj %}
|
||||||
<p>Différentes informations sont associées à cette étiquette (description, suggestion d'inclusion, etc)
|
<p>Différentes informations sont associées à cette étiquette (description, suggestion d'inclusion, etc)
|
||||||
seront également perdues lors de cette suppression.</p>
|
seront également perdues lors de cette suppression.</p>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>Renommer l'étiquette {{ tag }}</em></h1>
|
<h1>Renommer l'étiquette {{ tag }}</em></h1>
|
||||||
<p>En renommant l'étiquette {{ tag }}, vous remplacerez cette étiquette par la nouvelle pour tous les événements concernés.</p>
|
<p>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.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1971,10 +1971,10 @@ def view_tag(request, t):
|
|||||||
except EmptyPage:
|
except EmptyPage:
|
||||||
response = paginator.page(paginator.num_pages)
|
response = paginator.page(paginator.num_pages)
|
||||||
|
|
||||||
|
rimports = RecurrentImport.objects.filter(defaultTags__contains=[t])
|
||||||
|
|
||||||
tag = Tag.objects.filter(name=t).first()
|
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)
|
return render(request, "agenda_culturel/tag.html", context)
|
||||||
|
|
||||||
|
|
||||||
@ -2037,11 +2037,21 @@ def rename_tag(request, t):
|
|||||||
e.tags += [new_name]
|
e.tags += [new_name]
|
||||||
Event.objects.bulk_update(events, fields=["tags"])
|
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
|
# find tag object
|
||||||
tag_object = Tag.objects.filter(name=t).first()
|
tag_object = Tag.objects.filter(name=t).first()
|
||||||
if tag_object:
|
if tag_object:
|
||||||
tag_object.name = new_name
|
tag_object.name = new_name
|
||||||
tag_object.save()
|
tag_object.save()
|
||||||
|
|
||||||
|
|
||||||
messages.success(
|
messages.success(
|
||||||
request,
|
request,
|
||||||
(_(
|
(_(
|
||||||
@ -2060,8 +2070,6 @@ def rename_tag(request, t):
|
|||||||
@permission_required("agenda_culturel.delete_tag")
|
@permission_required("agenda_culturel.delete_tag")
|
||||||
def delete_tag(request, t):
|
def delete_tag(request, t):
|
||||||
respage = reverse_lazy("view_all_tags")
|
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":
|
if request.method == "POST":
|
||||||
|
|
||||||
@ -2071,6 +2079,12 @@ def delete_tag(request, t):
|
|||||||
e.tags = [te for te in e.tags if te != t]
|
e.tags = [te for te in e.tags if te != t]
|
||||||
Event.objects.bulk_update(events, fields=["tags"])
|
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
|
# find tag object
|
||||||
tag_object = Tag.objects.filter(name=t).first()
|
tag_object = Tag.objects.filter(name=t).first()
|
||||||
if tag_object:
|
if tag_object:
|
||||||
@ -2084,11 +2098,14 @@ def delete_tag(request, t):
|
|||||||
)
|
)
|
||||||
return HttpResponseRedirect(respage)
|
return HttpResponseRedirect(respage)
|
||||||
else:
|
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", "")
|
cancel_url = request.META.get("HTTP_REFERER", "")
|
||||||
if cancel_url == "":
|
if cancel_url == "":
|
||||||
cancel_url = respage
|
cancel_url = respage
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
"agenda_culturel/tag_confirm_delete_by_name.html",
|
"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},
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user