File tree Expand file tree Collapse file tree 5 files changed +46
-7
lines changed
templates/partials/user_profile Expand file tree Collapse file tree 5 files changed +46
-7
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change 16
16
)
17
17
from app .internal .on_this_day_events import get_on_this_day_events
18
18
from app .internal .privacy import PrivacyKinds
19
+ from app .internal .showevent import get_upcoming_events
19
20
20
21
PICTURE_EXTENSION = config .PICTURE_EXTENSION
21
22
PICTURE_SIZE = config .AVATAR_SIZE
23
+ FIVE_EVENTS = 5
24
+ # We are presenting up to five upcoming events on the profile page
22
25
23
26
router = APIRouter (
24
27
prefix = "/profile" ,
@@ -44,13 +47,12 @@ async def profile(
44
47
session = Depends (get_db ),
45
48
new_user = Depends (get_placeholder_user ),
46
49
):
47
- # Get relevant data from database
48
- upcoming_events = range (5 )
49
50
user = session .query (User ).filter_by (id = 1 ).first ()
50
51
if not user :
51
52
session .add (new_user )
52
53
session .commit ()
53
54
user = session .query (User ).filter_by (id = 1 ).first ()
55
+ upcoming_events = get_upcoming_events (session , user .id )[:FIVE_EVENTS ]
54
56
55
57
signs = [
56
58
"Aries" ,
@@ -66,6 +68,7 @@ async def profile(
66
68
"Aquarius" ,
67
69
"Pisces" ,
68
70
]
71
+
69
72
on_this_day_data = get_on_this_day_events (session )
70
73
71
74
return templates .TemplateResponse (
Original file line number Diff line number Diff line change 3
3
</ div >
4
4
<!-- Upcoming events -->
5
5
< div class ="mb-3 ">
6
+ < h1 > Upcoming events</ h1 >
6
7
{% for event in events %}
7
8
<!-- Event card -->
8
9
{% include 'partials/user_profile/middle_content/event_card.html' %}
9
10
10
11
{% include 'partials/user_profile/middle_content/update_event_modal.html' %}
11
12
{% endfor %}
12
13
</ div >
13
- </ div >
14
+ </ div >
Original file line number Diff line number Diff line change 1
1
< div class ="card card-event mb-2 pb-0 ">
2
2
< 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 >
4
4
<!-- Event settings -->
5
5
{% include 'partials/user_profile/middle_content/event_settings.html' %}
6
6
</ div >
7
7
8
8
< div class ="card-body pb-1 ">
9
9
< p class ="card-text ">
10
- The Event {{ event }} - description ...
10
+ {{ event.title }} - {{ event.content if event.content is not none }}
11
11
</ p >
12
12
< 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 >
14
14
</ div >
15
- </ div >
15
+ </ div >
Original file line number Diff line number Diff line change
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 ) == []
You can’t perform that action at this time.
0 commit comments