|
| 1 | +from sqlalchemy import desc, func |
1 | 2 | import structlog |
2 | 3 | from flask import Blueprint, request |
3 | 4 |
|
4 | | -from conditional import start_of_year, auth |
5 | | -from conditional.models.models import Conditional |
| 5 | +from conditional import db, start_of_year, auth |
| 6 | +from conditional.models.models import Conditional, MajorProjectSkill |
6 | 7 | from conditional.models.models import HouseMeeting |
7 | 8 | from conditional.models.models import MajorProject |
8 | 9 | from conditional.models.models import MemberHouseMeetingAttendance |
@@ -82,15 +83,38 @@ def display_dashboard(user_dict=None): |
82 | 83 |
|
83 | 84 | data['housing'] = housing |
84 | 85 |
|
| 86 | + proj_list = db.session.query( |
| 87 | + MajorProject.id, |
| 88 | + MajorProject.date, |
| 89 | + MajorProject.uid, |
| 90 | + MajorProject.name, |
| 91 | + MajorProject.tldr, |
| 92 | + MajorProject.timeSpent, |
| 93 | + MajorProject.description, |
| 94 | + MajorProject.links, |
| 95 | + MajorProject.status, |
| 96 | + func.array_agg(MajorProjectSkill.skill).label("skills") |
| 97 | + ).outerjoin(MajorProjectSkill, |
| 98 | + MajorProject.id == MajorProjectSkill.project_id |
| 99 | + ).group_by(MajorProject.id |
| 100 | + ).where(MajorProject.date >= start_of_year() |
| 101 | + ).order_by(desc(MajorProject.date), desc(MajorProject.id)) |
| 102 | + |
85 | 103 | data['major_projects'] = [ |
86 | 104 | { |
87 | | - 'id': p.id, |
88 | | - 'name': p.name, |
89 | | - 'status': p.status, |
90 | | - 'description': p.description |
91 | | - } for p in |
92 | | - MajorProject.query.filter(MajorProject.uid == uid, |
93 | | - MajorProject.date > start_of_year())] |
| 105 | + "id": p.id, |
| 106 | + "date": p.date, |
| 107 | + "name": p.name, |
| 108 | + "proj_name": p.name, |
| 109 | + "tldr": p.tldr, |
| 110 | + "time_spent": p.timeSpent, |
| 111 | + "skills": p.skills, |
| 112 | + "desc": p.description, |
| 113 | + "links": list(filter(None, p.links.split("\n"))), |
| 114 | + "status": p.status, |
| 115 | + } |
| 116 | + for p in proj_list |
| 117 | + ] |
94 | 118 |
|
95 | 119 | data['major_projects_count'] = len(data['major_projects']) |
96 | 120 |
|
|
0 commit comments