mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
Bugfix for date range filter #569
This commit is contained in:
parent
70b696b4b0
commit
71c894df7e
@ -238,25 +238,39 @@ def fill_event_admin_unit_filter(event_filter, params: EventSearchParams):
|
|||||||
return admin_unit_reference, event_filter
|
return admin_unit_reference, event_filter
|
||||||
|
|
||||||
|
|
||||||
|
def get_event_date_range_filter(params: EventSearchParams):
|
||||||
|
date_filter = EventDate.start >= datetime.min
|
||||||
|
|
||||||
|
if params.date_from:
|
||||||
|
date_filter = or_(
|
||||||
|
EventDate.start >= params.date_from,
|
||||||
|
and_(EventDate.end.isnot(None), EventDate.end >= params.date_from),
|
||||||
|
)
|
||||||
|
|
||||||
|
if params.date_to:
|
||||||
|
date_to_filter = or_(
|
||||||
|
EventDate.start < params.date_to,
|
||||||
|
and_(EventDate.end.isnot(None), EventDate.end < params.date_to),
|
||||||
|
)
|
||||||
|
date_filter = and_(date_filter, date_to_filter)
|
||||||
|
|
||||||
|
# PostgreSQL specific https://stackoverflow.com/a/25597632
|
||||||
|
if params.weekday and type(params.weekday) is list:
|
||||||
|
weekdays = params.weekday
|
||||||
|
date_filter = and_(date_filter, extract("dow", EventDate.start).in_(weekdays))
|
||||||
|
|
||||||
|
return date_filter
|
||||||
|
|
||||||
|
|
||||||
def get_event_dates_query(params: EventSearchParams):
|
def get_event_dates_query(params: EventSearchParams):
|
||||||
event_filter = 1 == 1
|
event_filter = 1 == 1
|
||||||
date_filter = EventDate.start >= datetime.min
|
|
||||||
|
|
||||||
event_filter = fill_event_filter(event_filter, params)
|
event_filter = fill_event_filter(event_filter, params)
|
||||||
admin_unit_reference, event_filter = fill_event_admin_unit_filter(
|
admin_unit_reference, event_filter = fill_event_admin_unit_filter(
|
||||||
event_filter, params
|
event_filter, params
|
||||||
)
|
)
|
||||||
|
|
||||||
if params.date_from:
|
date_filter = get_event_date_range_filter(params)
|
||||||
date_filter = EventDate.start >= params.date_from
|
|
||||||
|
|
||||||
if params.date_to:
|
|
||||||
date_filter = and_(date_filter, EventDate.start < params.date_to)
|
|
||||||
|
|
||||||
# PostgreSQL specific https://stackoverflow.com/a/25597632
|
|
||||||
if params.weekday and type(params.weekday) is list:
|
|
||||||
weekdays = params.weekday
|
|
||||||
date_filter = and_(date_filter, extract("dow", EventDate.start).in_(weekdays))
|
|
||||||
|
|
||||||
result = (
|
result = (
|
||||||
EventDate.query.join(EventDate.event)
|
EventDate.query.join(EventDate.event)
|
||||||
@ -378,19 +392,13 @@ def get_event_with_details_or_404(event_id):
|
|||||||
|
|
||||||
def get_events_query(params: EventSearchParams):
|
def get_events_query(params: EventSearchParams):
|
||||||
event_filter = 1 == 1
|
event_filter = 1 == 1
|
||||||
date_filter = EventDate.start >= datetime.min
|
|
||||||
|
|
||||||
event_filter = fill_event_filter(event_filter, params)
|
event_filter = fill_event_filter(event_filter, params)
|
||||||
admin_unit_reference, event_filter = fill_event_admin_unit_filter(
|
admin_unit_reference, event_filter = fill_event_admin_unit_filter(
|
||||||
event_filter, params
|
event_filter, params
|
||||||
)
|
)
|
||||||
|
|
||||||
if params.date_from:
|
date_filter = get_event_date_range_filter(params)
|
||||||
date_filter = EventDate.start >= params.date_from
|
|
||||||
|
|
||||||
if params.date_to:
|
|
||||||
date_filter = and_(date_filter, EventDate.start < params.date_to)
|
|
||||||
|
|
||||||
event_filter = and_(event_filter, Event.dates.any(date_filter))
|
event_filter = and_(event_filter, Event.dates.any(date_filter))
|
||||||
result = (
|
result = (
|
||||||
Event.query.join(Event.admin_unit)
|
Event.query.join(Event.admin_unit)
|
||||||
|
|||||||
@ -276,8 +276,11 @@ const PlanningList = {
|
|||||||
this.countTitle = "";
|
this.countTitle = "";
|
||||||
}
|
}
|
||||||
const vm = this;
|
const vm = this;
|
||||||
|
const req_data = $("#filter_form :input").filter(function () {
|
||||||
|
return this.value.length > 0
|
||||||
|
}).serialize()
|
||||||
axios
|
axios
|
||||||
.get(`/api/v1/event-dates/search?` + $("#filter_form").serialize(), {
|
.get(`/api/v1/event-dates/search?` + req_data, {
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
handleLoading: this.handleLoading,
|
handleLoading: this.handleLoading,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -127,6 +127,8 @@ def prepare_form_reference_requests(form, admin_unit):
|
|||||||
[(a.id, a.name) for a in admin_unit_choices],
|
[(a.id, a.name) for a in admin_unit_choices],
|
||||||
key=lambda a: a[1],
|
key=lambda a: a[1],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not form.is_submitted():
|
||||||
form.reference_request_admin_unit_id.data = selected_ids
|
form.reference_request_admin_unit_id.data = selected_ids
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user