Commit 02118cc944b163f0fb1c8264c89e89b5c5b1dd9d
1 parent
b6c0e3c1
Exists in
master
and in
4 other branches
Show projects category/labels in table
Showing
2 changed files
with
31 additions
and
9 deletions
Show diff stats
app/db_mgr.py
1 | -from app.models import db, Period | |
1 | +from app.models import db, Period, Project, Category | |
2 | 2 | |
3 | 3 | # TODO: make this configurable, and choose another place to use it, |
4 | 4 | # in 'routes.py' maybe |
... | ... | @@ -15,7 +15,7 @@ def projects(): |
15 | 15 | """ |
16 | 16 | current_period_id = get_current_period() |
17 | 17 | sql_txt = """ |
18 | - select p.id, p.name, IFNULL(sum(tc.charge_rate), 0) as total_charge | |
18 | + select p.id, IFNULL(sum(tc.charge_rate), 0) as total_charge | |
19 | 19 | from project as p left join |
20 | 20 | ( select c.project_id, c.charge_rate from charge c where c.period_id = {}) |
21 | 21 | tc |
... | ... | @@ -23,7 +23,25 @@ def projects(): |
23 | 23 | group by p.id |
24 | 24 | order by total_charge desc; |
25 | 25 | """.format(current_period_id) |
26 | - all_projects = db.session.execute(sql_txt).fetchall() | |
26 | + projects_charges = db.session.execute(sql_txt).fetchall() | |
27 | + # First row is table titles | |
28 | + all_projects = [["Id", "Projet"]] | |
29 | + # Add all categories as last table titles | |
30 | + for c in Category.query.all(): | |
31 | + all_projects[0].append(c.name) | |
32 | + all_projects[0].append("Charge") | |
33 | + # Build the table row by row | |
34 | + for pc in projects_charges: | |
35 | + p_id = pc[0] | |
36 | + p = Project.query.get(int(p_id)) | |
37 | + p_labels = p.labels | |
38 | + # adding 3 first columns: id, name and total charge | |
39 | + project_row = [p.id, p.name] | |
40 | + # then labels, one for each category | |
41 | + for pl in p_labels: | |
42 | + project_row.append(pl.label.name) | |
43 | + project_row.append(pc[1]) | |
44 | + all_projects.append(project_row) | |
27 | 45 | return all_projects |
28 | 46 | |
29 | 47 | ... | ... |
app/main/templates/projects.html
... | ... | @@ -7,17 +7,21 @@ |
7 | 7 | <table class="table table-hover"> |
8 | 8 | <thead> |
9 | 9 | <tr> |
10 | - <th scope="col">Projet</th> | |
11 | - <th scope="col">Charge</th> | |
10 | + {% for c_title in projects[0][1:] %} | |
11 | + <th scope="col">{{c_title}}</th> | |
12 | + {% endfor %} | |
12 | 13 | </tr> |
13 | 14 | </thead> |
14 | 15 | <tbody> |
15 | - {% for project in projects %} | |
16 | + {% for project in projects[1:] %} | |
16 | 17 | <tr> |
17 | - <td><a href="{{url_for('main.project', project_id=project.id)}}"> | |
18 | - {{ project.name }}</a> | |
18 | + <td><a href="{{url_for('main.project', project_id=project[0])}}"> | |
19 | + {{ project[1] }}</a> | |
19 | 20 | </td> |
20 | - <td>{{ project.total_charge }} % </td> | |
21 | + {% for c in project[2:-1] %} | |
22 | + <td>{{c}}</td> | |
23 | + {% endfor %} | |
24 | + <td>{{ project[-1] }} %</td> | |
21 | 25 | </tr> |
22 | 26 | {% endfor %} |
23 | 27 | </tbody> | ... | ... |