Skip to content

Commit 31e231c

Browse files
authored
Feature/showevent (#303)
1 parent cb6f048 commit 31e231c

File tree

5 files changed

+46
-7
lines changed

5 files changed

+46
-7
lines changed

app/internal/showevent.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from datetime import datetime
2+
from typing import List
3+
4+
from sqlalchemy.orm import Session
5+
6+
from app.database.models import Event, UserEvent
7+
8+
9+
def get_upcoming_events(session: Session, user_id: int) -> List[Event]:
10+
upcoming_events = (
11+
session.query(Event)
12+
.join(UserEvent)
13+
.filter(UserEvent.user_id == user_id)
14+
.filter(Event.start >= datetime.now())
15+
.order_by(Event.start)
16+
)
17+
return upcoming_events

app/routers/profile.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
)
1717
from app.internal.on_this_day_events import get_on_this_day_events
1818
from app.internal.privacy import PrivacyKinds
19+
from app.internal.showevent import get_upcoming_events
1920

2021
PICTURE_EXTENSION = config.PICTURE_EXTENSION
2122
PICTURE_SIZE = config.AVATAR_SIZE
23+
FIVE_EVENTS = 5
24+
# We are presenting up to five upcoming events on the profile page
2225

2326
router = APIRouter(
2427
prefix="/profile",
@@ -44,13 +47,12 @@ async def profile(
4447
session=Depends(get_db),
4548
new_user=Depends(get_placeholder_user),
4649
):
47-
# Get relevant data from database
48-
upcoming_events = range(5)
4950
user = session.query(User).filter_by(id=1).first()
5051
if not user:
5152
session.add(new_user)
5253
session.commit()
5354
user = session.query(User).filter_by(id=1).first()
55+
upcoming_events = get_upcoming_events(session, user.id)[:FIVE_EVENTS]
5456

5557
signs = [
5658
"Aries",
@@ -66,6 +68,7 @@ async def profile(
6668
"Aquarius",
6769
"Pisces",
6870
]
71+
6972
on_this_day_data = get_on_this_day_events(session)
7073

7174
return templates.TemplateResponse(

app/templates/partials/user_profile/middle_content.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
</div>
44
<!-- Upcoming events -->
55
<div class="mb-3">
6+
<h1>Upcoming events</h1>
67
{% for event in events %}
78
<!-- Event card -->
89
{% include 'partials/user_profile/middle_content/event_card.html' %}
910

1011
{% include 'partials/user_profile/middle_content/update_event_modal.html' %}
1112
{% endfor %}
1213
</div>
13-
</div>
14+
</div>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<div class="card card-event mb-2 pb-0">
22
<div class="card-header d-flex justify-content-between">
3-
<small><i>{{ gettext("Upcoming event on (date)", date=event.start) }}</i></small>
3+
<small><i>Upcoming event on {{ event.start.strftime("%d/%m/%Y %H:%M") }}</i></small>
44
<!-- Event settings -->
55
{% include 'partials/user_profile/middle_content/event_settings.html' %}
66
</div>
77

88
<div class="card-body pb-1">
99
<p class="card-text">
10-
The Event {{ event }} - description ...
10+
{{ event.title }} - {{ event.content if event.content is not none }}
1111
</p>
1212
<hr class="mb-0">
13-
<small class="event-posted-time text-muted">Last updated {{time}} ago</small>
13+
<a href="{{ url_for('eventview', event_id=event.id) }}">{{ event.title }} details</a>
1414
</div>
15-
</div>
15+
</div>

tests/test_showevent.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from app.internal.showevent import get_upcoming_events
2+
3+
4+
class TestShowview:
5+
6+
def test_get_events_success(self, next_week_event, session):
7+
events = get_upcoming_events(
8+
session=session,
9+
user_id=next_week_event.owner_id,
10+
)
11+
assert list(events) == [next_week_event]
12+
13+
def test_only_events_from_now_on(self, yesterday_event, session):
14+
events = get_upcoming_events(
15+
session=session,
16+
user_id=yesterday_event.owner_id,
17+
)
18+
assert list(events) == []

0 commit comments

Comments
 (0)