Skip to content

Commit

Permalink
- Events module fixes
Browse files Browse the repository at this point in the history
- Added new Trait "future" for EventFactory
  • Loading branch information
onstabb committed Jan 13, 2024
1 parent 2c29d33 commit 5bbf844
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 5 deletions.
13 changes: 9 additions & 4 deletions src/events/routers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from fastapi import APIRouter, HTTPException, status, Query

from datehelpers import get_aware_datetime_now

from events import service
from events.schemas import EventOut
from models import PydanticObjectId
Expand All @@ -12,7 +12,7 @@


@router.get("", response_model=list[EventOut])
def get_events(city_id: int, only_future: bool = Query(alias="onlyFuture", default=True)):
def get_events(city_id: int = Query(alias="cityId"), only_future: bool = Query(alias="onlyFuture", default=True)):
return service.get_events_by_city_id(city_id, only_future=only_future)


Expand All @@ -29,5 +29,10 @@ def accept_subscriber(event_id: PydanticObjectId, current_user: CurrentActiveCom


@user_router.get("", response_model=list[EventOut])
def get_my_actual_events(current_user: CurrentActiveCompletedUser):
return [event for event in current_user.events if event.start_at < get_aware_datetime_now()]
def get_my_actual_events(
current_user: CurrentActiveCompletedUser,
only_future: bool = Query(alias="onlyFuture", default=True)
):
return service.get_events_by_user(current_user, only_future=only_future)


19 changes: 19 additions & 0 deletions src/events/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ def get_events_by_city_id(city_id: int, **filters) -> list[Event]:
return list(result)


def get_events_by_user(user: User, *, only_future: bool) -> list[Event]:
if not only_future:
return user.events

return [event for event in user.events if event.start_at < get_aware_datetime_now()]


def accept_subscriber(event: Event, user: User) -> Event:
if event not in user.events:
user.events.append(event)
Expand All @@ -25,5 +32,17 @@ def accept_subscriber(event: Event, user: User) -> Event:
return event


def remove_subscriber(event: Event, user: User) -> Event:
if event in user.events:
user.events.remove(event)

if user in event.subscribers:
event.subscribers.remove(event)

user.save()
event.save()
return event


def get_event_by_id(event_id: ObjectId | str) -> Event | None:
return Event.get_one(id=event_id)
5 changes: 5 additions & 0 deletions tests/factories/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from factory import fuzzy

from contacts.models import Contact, Message, ContactState
from datehelpers import get_aware_datetime_now
from events.models import Event
from location.database import geonames_db
from reports.enums import ReportType
Expand Down Expand Up @@ -124,6 +125,10 @@ def subscribers(self: Event, create: bool, extracted: list[User] | None, **kwarg
self.subscribers.extend(users)
self.save()

class Params:
future = factory.Trait(
start_at=get_aware_datetime_now(delta_days=25)
)

class ReportFactory(_BaseMongoEngineFactory):
class Meta:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_events/test_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def test_get_event_by_id(event_factory):


def test_get_events_by_city_id(event_factory):
event = event_factory.create(start_at=datehelpers.get_aware_datetime_now(delta_days=1))
event = event_factory.create(future=True)
found_events = service.get_events_by_city_id(event.city_id, only_future=True)
assert event in found_events

Expand Down

0 comments on commit 5bbf844

Please sign in to comment.