|
1 | 1 | import io |
2 | 2 | import zipfile |
| 3 | +import itertools |
3 | 4 | from typing import cast |
4 | 5 |
|
5 | 6 | import databases |
|
16 | 17 |
|
17 | 18 | from . import auth, utils, config |
18 | 19 | from .auth import User, BLUESHIRT_SCOPE |
19 | | -from .tables import Archive, Session, ChoiceHistory |
| 20 | +from .tables import Archive, Session, ChoiceHistory, ChoiceForSession |
20 | 21 |
|
21 | 22 | database = databases.Database(config.DATABASE_URL, force_rollback=config.TESTING) |
22 | 23 | templates = Jinja2Templates(directory='templates') |
@@ -52,11 +53,33 @@ async def homepage(request: Request) -> Response: |
52 | 53 | sessions = await database.fetch_all( |
53 | 54 | Session.select().order_by(Session.c.created.desc()), |
54 | 55 | ) |
| 56 | + sessions_and_archives = await database.fetch_all( |
| 57 | + select([ |
| 58 | + Archive.c.id, |
| 59 | + Session.c.name, |
| 60 | + ]).select_from( |
| 61 | + Archive.join(ChoiceHistory).join(ChoiceForSession).join(Session), |
| 62 | + ).where( |
| 63 | + Archive.c.id.in_(x['id'] for x in uploads), |
| 64 | + ).order_by( |
| 65 | + Archive.c.id, |
| 66 | + ), |
| 67 | + ) |
| 68 | + print(sessions_and_archives) |
| 69 | + sessions_by_upload = { |
| 70 | + grouper: [x['name'] for x in items] |
| 71 | + for grouper, items in itertools.groupby( |
| 72 | + sessions_and_archives, |
| 73 | + key=lambda y: cast(int, y['id']), |
| 74 | + ) |
| 75 | + } |
| 76 | + print(sessions_by_upload) |
55 | 77 | return templates.TemplateResponse('index.html', { |
56 | 78 | 'request': request, |
57 | 79 | 'chosen': chosen, |
58 | 80 | 'uploads': uploads, |
59 | 81 | 'sessions': sessions, |
| 82 | + 'sessions_by_upload': sessions_by_upload, |
60 | 83 | 'BLUESHIRT_SCOPE': BLUESHIRT_SCOPE, |
61 | 84 | }) |
62 | 85 |
|
|
0 commit comments