generated from hexmod/hash-code-helper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Project.py
65 lines (50 loc) · 1.97 KB
/
Project.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Project:
def __init__(self, name, daysToComplete, score, bestBefore, numRoles):
self.name = name
self.numRoles = numRoles
self.daysToComplete = daysToComplete
self.score = score
self.bestBefore = bestBefore
self.roles = [] # tuple (role, reqSkill) in order
self.assignedRoles = {} # num -> contributor
def add_role(self, name, reqLevel):
self.roles.append((name, reqLevel))
def is_role_filled(self, role):
count = 0
for a_role, skill in self.roles:
if a_role == role:
return count in self.assignedRoles
def has_mentor_for_role(self, aRole, required_skill):
for cont in self.assignedRoles.values():
return cont.has_skill_for_role(aRole, required_skill)
def print(self):
print(self.name, self.roles)
def add_contributor(self, contributor, roleIndex):
self.assignedRoles[roleIndex] = contributor
def is_contributor_assigned(self, contributor):
return contributor in self.assignedRoles.values()
def get_roles(self):
return map(lambda x: x[0], self.roles)
def get_skill_for_role(self, roleIndex):
return self.roles[roleIndex][1]
def is_completed(self):
return len(self.roles) == len(self.assignedRoles)
def get_name(self):
return self.name
def get_ordered_roles(self):
res = ""
for contributor in self.assignedRoles.values():
res += contributor.get_name()
res += " "
return res[:-1]
def train_contributors(self):
count = 0
for role, skill in self.roles:
self.assignedRoles[count].update_skill(role, skill)
count += 1
def get_shortest_completion_difference(self):
if self.bestBefore - self.daysToComplete < 0:
return 9999999
return self.bestBefore - self.daysToComplete
def unassign_contributors(self):
self.assignedRoles = {}