Completed
Branch rebuild (faa607)
by Glenn
08:28
created

stats_project()   A

Complexity

Conditions 2

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
dl 0
loc 23
rs 9.0856
c 0
b 0
f 0
1
import datetime
2
from skf.database import db
3
from sqlalchemy import desc
4
from skf.database.projects import projects 
5
from skf.database.groupmembers import groupmembers
6
from skf.database.project_sprints import project_sprints 
7
from skf.database.checklists_results import checklists_results
8
from skf.api.security import log, val_num, val_alpha_num
9
10
11
def get_project_items():
12
    log("User requested list projects", "MEDIUM", "PASS")
13
    result = projects.query.filter(projects.groupID == groupmembers.groupID).paginate(1, 500, False)
14
    return result
15
16
17
def get_project_item(project_id, user_id):
18
    log("User requested specific project", "MEDIUM", "PASS")
19
    val_num(project_id)
20
    val_num(user_id)
21
    result = projects.query.filter(projects.projectID == project_id).filter(projects.userID == user_id).one()
22
    return result
23
24
25
def update_project(project_id, user_id, data):
26
    log("User updated project", "MEDIUM", "PASS")
27
    val_num(project_id)
28
    val_num(user_id)
29
    val_alpha_num(data.get('name'))
30
    val_alpha_num(data.get('version'))
31
    val_alpha_num(data.get('description'))
32
    val_num(data.get('level'))
33
    project = projects.query.filter(projects.projectID == project_id).one()
34
    project.projectName = data.get('name')
35
    project.projectVersion = data.get('version')
36
    project.projectDesc = data.get('description')
37
    project.level = data.get('level')
38
    project.userID = user_id
39
    #groupmember = groupmembers.query.filter(groupmembers.userID == user_id).one()
40
    #ownerID = groupmember.ownerID
41
    #groupID = groupmember.groupID
42
    now = datetime.datetime.now()
43
    project.timestamp = now.strftime("%Y-%m-%d %H:%M")
44
    db.session.add(project) 
45
    db.session.commit()
46
    return {'message': 'Project successfully updated'}
47
48
49
def new_project(user_id, data):
50
    log("User created new project", "MEDIUM", "PASS")
51
    val_num(user_id)
52
    val_alpha_num(data.get('name'))
53
    val_alpha_num(data.get('version'))
54
    val_alpha_num(data.get('description'))
55
    val_num(data.get('level'))
56
    projectName = data.get('name')
57
    projectVersion = data.get('version')
58
    projectDesc = data.get('description')
59
    projectLevel = data.get('level')
60
    userID = user_id
61
    groupmember = groupmembers.query.filter(groupmembers.userID == userID).one()
62
    ownerID = groupmember.ownerID
63
    groupID = groupmember.groupID
64
    now = datetime.datetime.now()
65
    timestamp = now.strftime("%Y-%m-%d %H:%M")
66
    project = projects(userID, groupID, projectName, projectVersion, projectDesc, ownerID, timestamp, projectLevel)
67
    db.session.add(project)
68
    db.session.commit()
69
    result = projects.query.filter(projects.userID == user_id).order_by(desc(projects.projectID)).first()
70
    return {'projectID': result.projectID, 'message': 'Project successfully created'}
71
72
73
def delete_project(project_id, user_id):
74
    log("User deleted project", "MEDIUM", "PASS")
75
    val_num(project_id)
76
    val_num(user_id)
77
    project = (projects.query.filter(projects.projectID == project_id).filter(projects.userID == user_id).one())
78
    db.session.delete(project)
79
    db.session.commit()
80
    return {'message': 'Project successfully deleted'}
81
82
83
def stats_project(project_id):
84
    log("User requested specific project stats", "MEDIUM", "PASS")
85
    sprint_info = (project_sprints.query.filter(project_sprints.projectID == project_id).all())
86
    sprint_open = 0
87
    sprint_closed = 0
0 ignored issues
show
Unused Code introduced by
The variable sprint_closed seems to be unused.
Loading history...
88
    sprint_accepted = 0
0 ignored issues
show
Unused Code introduced by
The variable sprint_accepted seems to be unused.
Loading history...
89
    for result in sprint_info:
90
        sprint_id = result.sprintID
91
        sprint_open_add = (checklists_results.query.filter(checklists_results.sprintID == sprint_id).filter(checklists_results.status == 1).group_by(checklists_results.checklistID).count())
92
        sprint_open += sprint_open_add
93
        sprint_closed_add = (checklists_results.query.filter(checklists_results.sprintID == sprint_id).filter(checklists_results.status == 2).group_by(checklists_results.checklistID).count())
94
        sprint_closed += sprint_closed_add
95
        sprint_accepted_add = (checklists_results.query.filter(checklists_results.sprintID == sprint_id).filter(checklists_results.status == 3).group_by(checklists_results.checklistID).count())    
96
        sprint_accepted += sprint_accepted_add
97
    project_info = (projects.query.filter(projects.projectID == project_id).one())
98
    project_name = project_info.projectName
99
    project_desc = project_info.projectDesc
100
    project_lvl = project_info.level
101
    project_open = sprint_open
102
    project_closed = (checklists_results.query.filter(checklists_results.projectID == project_id).filter(checklists_results.status == 2).count())
103
    project_accepted = (checklists_results.query.filter(checklists_results.projectID == project_id).filter(checklists_results.status == 3).count())
104
    result = {'project_id': project_id, 'project_name': project_name, 'project_desc': project_desc, 'project_lvl': project_lvl, 'project_open': project_open, 'project_closed': project_closed, 'project_accepted': project_accepted}
105
    return result