Skip to content

Commit bac40b8

Browse files
mifeillejoshuaocero
authored andcommitted
CV3-69-story(event): implement refactor filter events (#513)
- refactor filter events model to merge the two filter functions [Delivers CV3-69]
1 parent 6b5bb6e commit bac40b8

File tree

2 files changed

+33
-49
lines changed

2 files changed

+33
-49
lines changed

api/events/models.py

Lines changed: 28 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -31,54 +31,40 @@ class Events(Base, Utility):
3131
app_booking = Column(Boolean, nullable=True, default=False)
3232

3333

34-
def filter_events_by_date_range(query, start_date, end_date):
34+
def filter_event(start_date, end_date, room_id=None):
3535
"""
36-
Returns events that fall within the date range supplied
36+
Returns events filtered by room id,
37+
start date and end date if provided,
38+
or returns all events otherwise.
3739
"""
38-
validate_date_input(start_date, end_date)
39-
if not start_date and not end_date:
40-
events = query.filter(
41-
Events.state == 'active'
42-
).all()
43-
if not events:
44-
raise GraphQLError('Events do not exist')
45-
return events
46-
47-
start_date, end_date = format_range_dates(start_date, end_date)
40+
def error_message(error):
41+
raise GraphQLError(error)
4842

49-
events = query.filter(
50-
Events.state == 'active',
51-
Events.start_time >= start_date,
52-
Events.end_time <= end_date
53-
).all()
54-
if not events:
55-
raise GraphQLError('Events do not exist for the date range')
56-
return events
43+
validate_date_input(start_date, end_date)
5744

45+
if room_id and start_date:
46+
start_date, end_date = format_range_dates(start_date, end_date)
47+
return Events.query.filter(
48+
Events.room_id == room_id,
49+
Events.state == 'active',
50+
Events.start_time >= start_date,
51+
Events.end_time <= end_date
52+
).all() or error_message('Events do not exist for the date range')
5853

59-
def filter_event_by_room(room_id, start_date, end_date):
60-
"""
61-
Returns all events in a room using the calendar id as the filter field.
62-
If the start and end dates are provided, it considers them as well.
63-
"""
64-
validate_date_input(start_date, end_date)
65-
if not start_date and not end_date:
66-
events = Events.query.filter_by(
54+
if room_id:
55+
return Events.query.filter_by(
6756
room_id=room_id,
6857
state='active'
69-
).all()
70-
if not events:
71-
raise GraphQLError('Events do not exist')
72-
return events
58+
).all() or error_message('Events do not exist')
7359

74-
start_date, end_date = format_range_dates(start_date, end_date)
60+
if start_date:
61+
start_date, end_date = format_range_dates(start_date, end_date)
62+
return Events.query.filter(
63+
Events.state == 'active',
64+
Events.start_time >= start_date,
65+
Events.end_time <= end_date
66+
).all() or error_message('Events do not exist for the date range')
7567

76-
events = Events.query.filter(
77-
Events.room_id == room_id,
78-
Events.state == 'active',
79-
Events.start_time >= start_date,
80-
Events.end_time <= end_date
81-
).all()
82-
if not events:
83-
raise GraphQLError('Events do not exist for the date range')
84-
return events
68+
return Events.query.filter(
69+
Events.state == 'active'
70+
).all() or error_message('Events do not exist')

api/events/schema.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
from api.events.models import Events as EventsModel
1010
from api.room.models import Room as RoomModel
1111
from api.events.models import (
12-
filter_event_by_room,
13-
filter_events_by_date_range
12+
filter_event
1413
)
1514
from helpers.calendar.events import RoomSchedules, CalendarEvents
1615
from helpers.email.email import notification
@@ -389,9 +388,8 @@ def resolve_all_events(self, info, **kwargs):
389388
page = kwargs.get('page')
390389
per_page = kwargs.get('per_page')
391390
page, per_page = validate_page_and_per_page(page, per_page)
392-
query = Events.get_query(info)
393-
response = filter_events_by_date_range(
394-
query, start_date, end_date
391+
response = filter_event(
392+
start_date, end_date
395393
)
396394
sort_events_by_date(response)
397395

@@ -425,8 +423,8 @@ def resolve_all_events_by_room(self, info, **kwargs):
425423
).first()
426424
if not room:
427425
raise GraphQLError("No rooms with the given CalendarId")
428-
response = filter_event_by_room(
429-
room.id, start_date, end_date
426+
response = filter_event(
427+
start_date, end_date, room.id
430428
)
431429
sort_events_by_date(response)
432430

0 commit comments

Comments
 (0)