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 |
|
|
|
|
88
|
|
|
sprint_accepted = 0 |
|
|
|
|
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 |