|
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