forked from Multiposting/interview
/
factory.py
34 lines (30 loc) · 1.21 KB
/
factory.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
import random
from developer import Developer
from projectmanager import ProjectManager
from sales import Sales
from support import Support
class EmployeeFactory:
@staticmethod
def random_employee(employee_type):
if employee_type == 'developer':
return Developer(**Developer.random_attrs())
if employee_type == 'sales':
return Sales(**Sales.random_attrs())
if employee_type == 'project_manager':
return ProjectManager(**ProjectManager.random_attrs())
if employee_type == 'support':
return Support(**Support.random_attrs())
err_msg = (
'{} employee type is not supported.\n'.format(type),
'Allowed values are: \'developer\', \'project_manager\', \'sales\' or \'support\'',
)
raise ValueError(err_msg)
@staticmethod
def generate_workforce(n_employees, ratios):
workforce = []
for employee_type, ratio in ratios.items():
n_employees_current_type = int(ratio * n_employees)
for i in range(n_employees_current_type):
workforce.append(EmployeeFactory.random_employee(employee_type))
random.shuffle(workforce)
return workforce