diff --git a/src/agenda_culturel/forms.py b/src/agenda_culturel/forms.py index 3385f73..9c25b46 100644 --- a/src/agenda_culturel/forms.py +++ b/src/agenda_culturel/forms.py @@ -663,7 +663,7 @@ class SelectEventInList(Form): class MergeDuplicates(Form): required_css_class = "required" - checkboxes_fields = ["reference_urls", "description", "tags"] + checkboxes_fields = ["reference_urls", "description", "tags", "organisers"] def __init__(self, *args, **kwargs): self.duplicates = kwargs.pop("duplicates", None) diff --git a/src/agenda_culturel/views/event_duplicate_views.py b/src/agenda_culturel/views/event_duplicate_views.py index f93c6a2..2a29032 100644 --- a/src/agenda_culturel/views/event_duplicate_views.py +++ b/src/agenda_culturel/views/event_duplicate_views.py @@ -48,23 +48,27 @@ def update_duplicate_event(request, pk, epk): if len(values) != 0: if isinstance(values[0], str): setattr(event, f["key"], "\n".join(values)) + elif ( + values[0].__class__.__name__ == "ManyRelatedManager" + ): + rels = set() + for v in values: + rels.update(v.all()) + getattr(event, f["key"]).set(rels) else: setattr(event, f["key"], sum(values, [])) else: - if f["key"] == "organisers": - event.organisers.set(selected.organisers.all()) - else: + setattr( + event, + f["key"], + getattr(selected, f["key"]), + ) + if f["key"] == "image": setattr( event, - f["key"], - getattr(selected, f["key"]), + "local_image", + getattr(selected, "local_image"), ) - if f["key"] == "image": - setattr( - event, - "local_image", - getattr(selected, "local_image"), - ) event.other_versions.fix(event) event.save() @@ -116,6 +120,12 @@ def merge_duplicate(request, pk): else: if isinstance(values[0], str): new_event_data[f["key"]] = "\n".join(values) + elif values[0].__class__.__name__ == "ManyRelatedManager": + new_event_data[f["key"]] = values[0] + rels = set() + for v in values: + rels.update(v.all()) + new_event_data[f["key"]].set(rels) else: new_event_data[f["key"]] = sum(values, []) else: