Commit 0d6506cbbf6e000e4d76f5d3298de7c92a956944
1 parent
709006af
Exists in
master
and in
4 other branches
New project_charges to fill project's charges table
Showing
3 changed files
with
57 additions
and
1 deletions
Show diff stats
app/db_mgr.py
@@ -18,6 +18,7 @@ def projects(): | @@ -18,6 +18,7 @@ def projects(): | ||
18 | all_projects = db.session.execute(sql_txt).fetchall() | 18 | all_projects = db.session.execute(sql_txt).fetchall() |
19 | return all_projects | 19 | return all_projects |
20 | 20 | ||
21 | + | ||
21 | def agents(): | 22 | def agents(): |
22 | """ | 23 | """ |
23 | Build the list of all agents, with their charges summed up in one total | 24 | Build the list of all agents, with their charges summed up in one total |
@@ -37,6 +38,41 @@ def agents(): | @@ -37,6 +38,41 @@ def agents(): | ||
37 | return all_agents | 38 | return all_agents |
38 | 39 | ||
39 | 40 | ||
41 | +def charges_by_project(project_id): | ||
42 | + """ | ||
43 | + Build the flatten list of charges for one project, period by period | ||
44 | + :param project_id: | ||
45 | + :return: | ||
46 | + """ | ||
47 | + | ||
48 | + req_sql = f""" | ||
49 | + select p.name as period_name, | ||
50 | + a.firstname ||" "|| a.secondname as agent_name, | ||
51 | + s.name as service_name, | ||
52 | + c2.name as capacity_name, | ||
53 | + c.charge_rate as charge_rate | ||
54 | + from charge as c | ||
55 | + join period p on c.period_id = p.id | ||
56 | + join project p2 on c.project_id = p2.id | ||
57 | + join service s on c.service_id = s.id | ||
58 | + join agent a on a.id = c.agent_id | ||
59 | + join capacity c2 on c2.id = c.capacity_id | ||
60 | + where project_id = {project_id} | ||
61 | + order by c.period_id | ||
62 | + """ | ||
63 | + print(req_sql) | ||
64 | + req_res = db.session.execute(req_sql) | ||
65 | + results = list(req_res) | ||
66 | + # Remove comma | ||
67 | + nocomma_results = [] | ||
68 | + for line in results: | ||
69 | + nocomma_line = [str(cell) for cell in line] | ||
70 | + nocomma_results.append(nocomma_line) | ||
71 | + headers = ["Period", "Agent", "Service", "Capacity", "Charge"] | ||
72 | + nocomma_results.insert(0, headers) | ||
73 | + return nocomma_results | ||
74 | + | ||
75 | + | ||
40 | def charges_by_agent_tabled(agent_id): | 76 | def charges_by_agent_tabled(agent_id): |
41 | """ | 77 | """ |
42 | Build the flatten list of charges for one agent, period by period | 78 | Build the flatten list of charges for one agent, period by period |
app/main/routes.py
@@ -98,9 +98,10 @@ def charge_add(): | @@ -98,9 +98,10 @@ def charge_add(): | ||
98 | def project(project_id): | 98 | def project(project_id): |
99 | # TODO: am i the project manager ? | 99 | # TODO: am i the project manager ? |
100 | this_project = Project.query.get(int(project_id)) | 100 | this_project = Project.query.get(int(project_id)) |
101 | - # charges_table=db_mgr.charges_by_agent_tabled(agent_id) | 101 | + charges_table = db_mgr.charges_by_project(project_id) |
102 | return render_template('project.html', | 102 | return render_template('project.html', |
103 | project=this_project, | 103 | project=this_project, |
104 | + charges=charges_table, | ||
104 | subtitle="{}".format(this_project.name)) | 105 | subtitle="{}".format(this_project.name)) |
105 | 106 | ||
106 | @bp.route('/agent/<agent_id>') | 107 | @bp.route('/agent/<agent_id>') |
app/main/templates/project.html
1 | {% extends "base_page.html" %} | 1 | {% extends "base_page.html" %} |
2 | 2 | ||
3 | {% block more_heads %} | 3 | {% block more_heads %} |
4 | +<link href="{{ url_for('main.static', filename='css/style.css') }}" rel="stylesheet" type="text/css"/> | ||
4 | {% endblock %} | 5 | {% endblock %} |
5 | 6 | ||
6 | {% block content %} | 7 | {% block content %} |
8 | +<table id="charge_table"> | ||
9 | + <thead> | ||
10 | + <tr> | ||
11 | + {% for header in charges[0] %} | ||
12 | + <td>{{header}}</td> | ||
13 | + {% endfor %} | ||
14 | + </tr> | ||
15 | + </thead> | ||
16 | + <tbody> | ||
17 | + {% for line in charges[1:] %} | ||
18 | + <tr> | ||
19 | + {% for cell in line %} | ||
20 | + <td>{{cell}}</td> | ||
21 | + {% endfor %} | ||
22 | + </tr> | ||
23 | + {% endfor %} | ||
24 | + </tbody> | ||
25 | +</table> | ||
7 | {% endblock %} | 26 | {% endblock %} |
8 | 27 | ||
9 | {% block more_scripts %} | 28 | {% block more_scripts %} |