diff --git a/src/agenda_culturel/filters.py b/src/agenda_culturel/filters.py index 1ed030d..1418814 100644 --- a/src/agenda_culturel/filters.py +++ b/src/agenda_culturel/filters.py @@ -63,7 +63,6 @@ class EventFilter(django_filters.FilterSet): label="À proximité de", method="no_filter", empty_label=_("Select a location"), - field_name='attr__slug', to_field_name='slug', queryset=ReferenceLocation.objects.filter(main__gt=0).order_by("-main", "name__unaccent") ) @@ -112,6 +111,13 @@ class EventFilter(django_filters.FilterSet): fields = ["tags", "exclude_tags", "status", "recurrences"] def __init__(self, *args, **kwargs): + # urls were using pk, now we moved to slug + if len(args) > 0 and "position" in args[0] and args[0]["position"].isdigit(): + args[0]._mutable = True + el = ReferenceLocation.objects.filter(pk=int(args[0]["position"])).values("slug").first() + args[0]["position"] = None if el is None else el["slug"] + args[0]._mutable = False + super().__init__(*args, **kwargs) if not kwargs["request"].user.is_authenticated: self.form.fields.pop("status") @@ -314,7 +320,7 @@ class EventFilter(django_filters.FilterSet): def get_url_add_suggested_position(self, location): result = self.request.get_full_path() - return result + ('&' if '?' in result else '?') + 'position=' + str(location.pk) + "&radius=" + str(location.suggested_distance) + return result + ('&' if '?' in result else '?') + 'position=' + str(location.slug) + "&radius=" + str(location.suggested_distance) class EventFilterAdmin(django_filters.FilterSet): diff --git a/src/agenda_culturel/migrations/0151_referencelocation_slug.py b/src/agenda_culturel/migrations/0151_referencelocation_slug.py index 8741443..f31fd62 100644 --- a/src/agenda_culturel/migrations/0151_referencelocation_slug.py +++ b/src/agenda_culturel/migrations/0151_referencelocation_slug.py @@ -25,4 +25,8 @@ class Migration(migrations.Migration): name='slug', field=autoslug.fields.AutoSlugField(default=None, editable=False, null=True, populate_from='name', unique=True), ), + migrations.RunPython( + code=migrate_data_slug_forward, + reverse_code=migrate_data_slug_backward, + ), ]