On garde l'ordre au moment d'intégrer des champs dans un dupliqué

Fix #317
This commit is contained in:
Jean-Marie Favreau 2025-02-19 16:30:25 +01:00
parent d6b8ae1ca6
commit 2ace02a5b7
4 changed files with 37 additions and 20 deletions

View File

@ -574,9 +574,10 @@ class MergeDuplicates(Form):
if self.event:
choices = [("event_" + str(self.event.pk), _("Value of the selected version"))] + \
[
("event_" + str(e.pk), _("Value of version {}").format(e.pk)) for e in self.events if e != self.event
choices = [
("event_" + str(e.pk), _("Value of version {}").format(e.pk)) if e != self.event else
("event_" + str(e.pk), _("Value of the selected version"))
for e in self.events
]
else:
choices = [
@ -603,20 +604,30 @@ class MergeDuplicates(Form):
result += (
'<li><a href="' + e.get_absolute_url() + '">' + e.title + "</a></li>"
)
result += (
"<li>Création&nbsp;: " + localize(e.created_date) + "</li>"
)
result += (
"<li>Dernière modification&nbsp;: "
+ localize(e.modified_date)
+ "</li>"
)
if e.imported_date:
result += (
"<li>Dernière importation&nbsp;: "
+ localize(e.imported_date)
+ "</li>"
)
for step in e.chronology_dates():
if step["data"] == "created_date":
result += '<li><em>Création</em> le ' + localize(step["timestamp"]) + ' par ' + str(step["user"]) + '</li>'
if step["data"] == "modified_date":
result += '<li><em>Dernière modification</em> le ' + localize(step["timestamp"])
if e.modified_by_user:
result += ' par ' + e.modified_by_user.username
else:
result += ' par import récurrent'
result += '</li>'
if step["data"] == "moderated_date":
result += '<li><em>Dernière modération</em> le ' + localize(step["timestamp"])
if e.moderated_by_user:
result += ' par ' + e.moderated_by_user.username
result += '</li>'
if step["data"] == "imported_date":
result += '<li><em>Dernière importation</em> le ' + localize(step["timestamp"])
if e.imported_by_user:
result += ' par ' + e.imported_by_user.username
else:
result += ' par import récurrent'
result += '</li>'
result += "</ul>"
result += "</div>"
result += "</div>"

View File

@ -432,6 +432,12 @@ class DuplicatedEvents(models.Model):
msgs.append(m)
return msgs
def get_event_index(self, event):
for i, e in enumerate(self.get_duplicated()):
if e.pk == event.pk:
return i
return -1
class ReferenceLocation(models.Model):

View File

@ -14,7 +14,7 @@
<article>
<header>
<h1>Mise à jour par sélection de champs</h1>
<p>Vous allez mettre à jour la version <span class="badge-small">A</span> en sélectionnant
<p>Vous allez mettre à jour la version <span class="badge-small">{{ event_id|int_to_abc }}</span> en sélectionnant
pour chaque champ les valeurs des autres versions.</p>
<p>La version ainsi créée mise à jour deviendra la version représentative.</p>

View File

@ -1519,7 +1519,7 @@ def update_duplicate_event(request, pk, epk):
return render(
request,
"agenda_culturel/update_duplicate.html",
context={"form": form, "object": edup, "event": event},
context={"form": form, "object": edup, "event_id": edup.get_event_index(event)},
)
@ -1648,7 +1648,7 @@ def fix_duplicate(request, pk):
else:
form = FixDuplicates(edup=edup)
elif form.is_action_update():
# otherwise, a new event will be created using a merging process
# otherwise, an event will be updated using other elements
event = form.get_selected_event(edup)
if event is None:
messages.error(request, _("The selected item is no longer included in the list of duplicates. Someone else has probably modified the list in the meantime."))