Skip to content

Commit

Permalink
Fixed potential bugs from QuantifiedCode
Browse files Browse the repository at this point in the history
  • Loading branch information
Dionakra committed Apr 24, 2017
1 parent d60627c commit 57a5e05
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 65 deletions.
14 changes: 7 additions & 7 deletions Metronus-Project/metronus/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@
url(r'^$', views.index),
url(r'^index.html/$', views.index, name='home'),
url(r'^app/$', appController.index, name='app_index'),

# Department
url(r'^department/create$', departmentController.create, name='department_create'),
url(r'^department/createAsync$', departmentController.create_async),
url(r'^department/list$', departmentController.list, name='department_list'),
url(r'^department/list$', departmentController.list_departments, name='department_list'),
url(r'^department/edit/(?P<department_id>\w{0,50})/$', departmentController.edit, name='department_edit'),
url(r'^department/view/(?P<department_id>\w{0,50})/$', departmentController.view, name='department_view'),
url(r'^department/delete/(?P<department_id>\w{0,50})/$', departmentController.delete, name='department_delete'),
Expand All @@ -59,7 +59,7 @@
# Task
url(r'^task/create$', taskController.create, name='task_create'),
url(r'^task/createAsync$', taskController.create_async),
url(r'^task/list$', taskController.list, name='task_list'),
url(r'^task/list$', taskController.list_tasks, name='task_list'),
url(r'^task/view/(?P<task_id>\w{0,50})/$', taskController.view, name='task_view'),
url(r'^task/edit/(?P<task_id>\w{0,50})/$', taskController.edit, name='task_edit'),
url(r'^task/delete/(?P<task_id>\w{0,50})/$', taskController.delete, name='task_delete'),
Expand All @@ -68,7 +68,7 @@
url(r'^task/ajaxProfit/(?P<task_id>\w{0,50})/$', taskController.ajax_profit_per_date, name='task_profit_per_date'),

# Project
url(r'^project/list$', projectController.list, name='project_list'),
url(r'^project/list$', projectController.list_projects, name='project_list'),
url(r'^project/edit/(?P<project_id>\w{0,50})/$', projectController.edit, name='project_edit'),
url(r'^project/view/(?P<project_id>\w{0,50})/$', projectController.show, name='project_view'),
url(r'^project/delete/(?P<project_id>\w{0,50})/$', projectController.delete, name='project_delete'),
Expand All @@ -84,12 +84,12 @@

# Project-Department relationship
url(r'^projectdepartment/create$', projectDepartmentController.create, name='projectdepartment_create'),
url(r'^projectdepartment/list$', projectDepartmentController.list, name='projectdepartment_list'),
url(r'^projectdepartment/list$', projectDepartmentController.list_project_department, name='projectdepartment_list'),
url(r'^projectdepartment/delete$', projectDepartmentController.delete, name='projectdepartment_delete'),

# Employee
url(r'^employee/create$', employeeController.create, name='employee_create'),
url(r'^employee/list$', employeeController.list, name='employee_list'),
url(r'^employee/list$', employeeController.list_employees, name='employee_list'),
url(r'^employee/view/(?P<username>\w{0,50})/$', employeeController.view, name='employee_view'),
url(r'^employee/edit/(?P<username>\w{0,50})/$', employeeController.edit, name='employee_edit'),
url(r'^employee/updatePassword/(?P<username>\w{0,50})/$', employeeController.update_password,
Expand Down Expand Up @@ -132,7 +132,7 @@
name='dashboard_departments_per_project'),
url(r'^dashboard/ajaxTasksPerProject$', dashboardController.ajax_tasks_per_project,
name='dashboard_tasks_per_project'),

# Login
url(r'^login/$', loginController.login, {'template_name': 'login.html', }, name="login"),
url(r'^logout/$', loginController.logout, {'next_page': '/', }, name="logout"),
Expand Down
28 changes: 14 additions & 14 deletions Metronus-Project/metronus_app/controllers/departmentController.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def create_async(request):
return JsonResponse(data)


def list(request):
def list_departments(request):

"""
returns:
Expand Down Expand Up @@ -142,7 +142,7 @@ def view(request, department_id):
tasks = Task.objects.filter(active=True, projectDepartment_id__department_id__id=department_id)
employees = Employee.objects.filter(
projectdepartmentemployeerole__projectDepartment_id__department_id=department).distinct()

return render(request, 'department/department_view.html', {'department': department, 'employees': employees,
'tasks': tasks, 'coordinator': coordinator})

Expand Down Expand Up @@ -173,7 +173,7 @@ def edit(request, department_id):
# ...
# redirect to a new URL:
department = get_object_or_404(Department, pk=form.cleaned_data['department_id'])

dep = find_name(form.cleaned_data['name'], admin)
# dep does not exists or it's the same
if dep is None or dep.id == department.id:
Expand Down Expand Up @@ -203,7 +203,7 @@ def delete(request, department_id):
deparment_list.html
"""
department = get_object_or_404(Department, pk=department_id)

# Check that the current user is an administrator
check_department(department, request)
delete_department(department)
Expand Down Expand Up @@ -250,7 +250,7 @@ def ajax_time_per_task(request):
# Parámetros obligatorios:
# department_id - ID del departamento
# Parámetros opcionales:
# Parámetros opcionales:
# start_date - fecha en formato YYYY-MM-DD que indica el inicio de la medición. Por defecto, 30 días antes de la fecha actual.
# end_date - fecha en formato YYYY-MM-DD que indica el final de la medición. Por defecto, fecha actual.
# offset - desplazamiento (huso) horario en formato +/-HH:MM - Por defecto +02:00
Expand Down Expand Up @@ -293,7 +293,7 @@ def ajax_time_per_task(request):
task_id=task,
workDate__range=[start_date, end_date]).aggregate(Sum('duration'))["duration__sum"]

if time_total is None:
if time_total is None:
time_total = 0

data['names'].append(task.name)
Expand All @@ -311,7 +311,7 @@ def ajax_profit_per_date(request, department_id):
# Parámetro obligatorio:
ninguno
# Parámetros opcionales:
# Parámetros opcionales:
# start_date - fecha en formato YYYY-MM-DD que indica el inicio de la medición. Por defecto, 30 días antes de la fecha actual.
# end_date - fecha en formato YYYY-MM-DD que indica el final de la medición. Por defecto, fecha actual.
# offset - desplazamiento (huso) horario en formato +/-HH:MM - Por defecto +00:00
Expand All @@ -320,12 +320,12 @@ def ajax_profit_per_date(request, department_id):
#Ejemplo
#/department/ajaxAcumProfit/1/
#devuelve lo siguiente
#{"acumExpenses": [0, 1457.18015695298, 3071.32603956358, 4438.9463044226895, 6465.819587171869, 7912.658013249849, 9791.46399488711, 11615.32872003681, 13494.726436052111, 15102.72092592163, 16718.442225021892, 18327.93613617256, 20841.87940297534, 22953.949544558982, 24314.625169466122, 25683.231076691303, 27287.16055422502, 28760.84364198999, 31104.25163724206, 32808.89759982555, 34747.27999087272, 36150.9847742294, 37523.6098087571, 38600.05927001698, 40953.76583717958, 42469.88703139726, 44081.49130458021, 45420.3135021882, 47945.57927018715, 49368.262834629466, 51133.932803674485],
"acumIncome": [0, 155861.848663544, 262457.90948135697, 396454.85575838294, 572637.4741922909, 703418.0032829699, 889130.2419483919, 1057821.248373874, 1259349.275922576, 1393310.956579081, 1539441.608896949, 1700420.3827038072, 1955067.034572835, 2187486.6539142523, 2300530.309442004, 2429378.038836404, 2615789.2939997134, 2742614.2371285204, 3004214.3219032744, 3205025.4834073624, 3363963.7766520614, 3552325.908039063, 3718850.184141958, 3833661.86021891, 4044009.6991582112, 4159278.365569177, 4285423.634163346, 4417334.086840815, 4692230.750316469, 4819759.243153938, 4997733.5628708275],
"dates": ["2017-03-21", "2017-03-22", "2017-03-23", "2017-03-24", "2017-03-25", "2017-03-26", "2017-03-27", "2017-03-28", "2017-03-29", "2017-03-30", "2017-03-31", "2017-04-01", "2017-04-02", "2017-04-03", "2017-04-04", "2017-04-05", "2017-04-06", "2017-04-07", "2017-04-08", "2017-04-09", "2017-04-10", "2017-04-11", "2017-04-12", "2017-04-13", "2017-04-14", "2017-04-15", "2017-04-16", "2017-04-17", "2017-04-18", "2017-04-19", "2017-04-20"],
"income": [0, 155861.848663544, 106596.060817813, 133996.946277026, 176182.618433908, 130780.529090679, 185712.238665422, 168691.006425482, 201528.027548702, 133961.680656505, 146130.652317868, 160978.773806858, 254646.651869028, 232419.619341417, 113043.655527752, 128847.7293944, 186411.255163309, 126824.943128807, 261600.084774754, 200811.161504088, 158938.293244699, 188362.131387002, 166524.276102895, 114811.676076952, 210347.838939301, 115268.666410966, 126145.268594169, 131910.452677469, 274896.663475654, 127528.492837469, 177974.319716889],
#{"acumExpenses": [0, 1457.18015695298, 3071.32603956358, 4438.9463044226895, 6465.819587171869, 7912.658013249849, 9791.46399488711, 11615.32872003681, 13494.726436052111, 15102.72092592163, 16718.442225021892, 18327.93613617256, 20841.87940297534, 22953.949544558982, 24314.625169466122, 25683.231076691303, 27287.16055422502, 28760.84364198999, 31104.25163724206, 32808.89759982555, 34747.27999087272, 36150.9847742294, 37523.6098087571, 38600.05927001698, 40953.76583717958, 42469.88703139726, 44081.49130458021, 45420.3135021882, 47945.57927018715, 49368.262834629466, 51133.932803674485],
"acumIncome": [0, 155861.848663544, 262457.90948135697, 396454.85575838294, 572637.4741922909, 703418.0032829699, 889130.2419483919, 1057821.248373874, 1259349.275922576, 1393310.956579081, 1539441.608896949, 1700420.3827038072, 1955067.034572835, 2187486.6539142523, 2300530.309442004, 2429378.038836404, 2615789.2939997134, 2742614.2371285204, 3004214.3219032744, 3205025.4834073624, 3363963.7766520614, 3552325.908039063, 3718850.184141958, 3833661.86021891, 4044009.6991582112, 4159278.365569177, 4285423.634163346, 4417334.086840815, 4692230.750316469, 4819759.243153938, 4997733.5628708275],
"dates": ["2017-03-21", "2017-03-22", "2017-03-23", "2017-03-24", "2017-03-25", "2017-03-26", "2017-03-27", "2017-03-28", "2017-03-29", "2017-03-30", "2017-03-31", "2017-04-01", "2017-04-02", "2017-04-03", "2017-04-04", "2017-04-05", "2017-04-06", "2017-04-07", "2017-04-08", "2017-04-09", "2017-04-10", "2017-04-11", "2017-04-12", "2017-04-13", "2017-04-14", "2017-04-15", "2017-04-16", "2017-04-17", "2017-04-18", "2017-04-19", "2017-04-20"],
"income": [0, 155861.848663544, 106596.060817813, 133996.946277026, 176182.618433908, 130780.529090679, 185712.238665422, 168691.006425482, 201528.027548702, 133961.680656505, 146130.652317868, 160978.773806858, 254646.651869028, 232419.619341417, 113043.655527752, 128847.7293944, 186411.255163309, 126824.943128807, 261600.084774754, 200811.161504088, 158938.293244699, 188362.131387002, 166524.276102895, 114811.676076952, 210347.838939301, 115268.666410966, 126145.268594169, 131910.452677469, 274896.663475654, 127528.492837469, 177974.319716889],
"expenses": [0, 1457.18015695298, 1614.1458826106, 1367.62026485911, 2026.87328274918, 1446.83842607798, 1878.80598163726, 1823.8647251497, 1879.3977160153, 1607.99448986952, 1615.72129910026, 1609.49391115067, 2513.94326680278, 2112.07014158364, 1360.67562490714, 1368.60590722518, 1603.92947753372, 1473.68308776497, 2343.40799525207, 1704.64596258349, 1938.38239104717, 1403.70478335668, 1372.6250345277, 1076.44946125988, 2353.7065671626, 1516.12119421768, 1611.60427318295, 1338.82219760799, 2525.26576799895, 1422.68356444232, 1765.66996904502]} "expected_productivity": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 4.0, 4.0, 2.0, 2.0, 2.0]}}
"""

Expand Down Expand Up @@ -373,7 +373,7 @@ def ajax_profit_per_date(request, department_id):
expenses = expenses if expenses is not None else 0
income = logs.aggregate(total_income=Sum(F("task_id__price_per_unit")*F("produced_units")))["total_income"]
income = income if income is not None else 0

data['expenses'].append(expenses)
data['income'].append(income)
if index == 0:
Expand Down Expand Up @@ -527,7 +527,7 @@ def get_list_for_role(request):
else:
departments = Department.objects.filter(company_id=actor.company_id, active=True)

return departments
return departments


def get_coordinator(department):
Expand Down
36 changes: 18 additions & 18 deletions Metronus-Project/metronus_app/controllers/employeeController.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def create(request):
formNotValid: el formulario contiene errores
priceNotValid: el precio debe ser mayor que 0
emailNotUnique:si el correo no es úinco
template:
employee_register.html
"""
Expand Down Expand Up @@ -106,7 +106,7 @@ def create(request):
raise PermissionDenied


def list(request):
def list_employees(request):
"""
parameters/returns:
employees: lista de objetos employee a los que tiene acceso el administrador (los que están en su empresa)
Expand Down Expand Up @@ -184,7 +184,7 @@ def edit(request, username):

elif request.method == "POST":
# Process the received form

form = EmployeeEditForm(request.POST)
if form.is_valid():
errors = []
Expand All @@ -197,7 +197,7 @@ def edit(request, username):
employee.phone = form.cleaned_data["phone"]
# New log if the salary has changed
new_log = employee.price_per_hour != form.cleaned_data["price_per_hour"]

employee.price_per_hour = form.cleaned_data["price_per_hour"]

# Update user data
Expand All @@ -208,7 +208,7 @@ def edit(request, username):

user.save()
employee.save()

# New log if the salary has changed
if new_log:
EmployeeLog.objects.create(employee_id=employee, event="C",
Expand Down Expand Up @@ -272,7 +272,7 @@ def update_password(request, username):
else:
# Invalid form
return JsonResponse({'success': False, 'errors': ['employeeCreation_formNotValid']})


def delete(request, username):
"""
Expand Down Expand Up @@ -303,12 +303,12 @@ def delete(request, username):
def ajax_productivity_per_task(request, username):
"""
# url = employee/ajax_productivity_per_task/<username>
# Devuelve un objeto cuyas claves son las ID de los proyectos y sus valores un objeto
# Devuelve un objeto cuyas claves son las ID de los proyectos y sus valores un objeto
#{'name': ..., 'total_productivity': X,'expected_productivity':Y} (X e Y en unidades goal_description/hora)
#Ejemplo:
#/employee/ajax_productivity_per_task/JoseGavilan
#devuelve lo siguiente
#{"3": {"total_productivity": 0.7125, "expected_productivity": 2.0, "name": "Hacer cosas de front"}}
"""
Expand All @@ -329,7 +329,7 @@ def ajax_productivity_per_task(request, username):
data = {}
# Save productivity for each task
for task in tasks:

total_produced_units = task.total_produced_units
total_duration = task.total_duration
if total_duration is None or total_produced_units is None or total_duration == 0:
Expand All @@ -356,7 +356,7 @@ def ajax_productivity_per_task_and_date(request, username):
# Parámetro obligatorio:
# task_id: el id de la tarea en cuestión
# Parámetros opcionales:
# Parámetros opcionales:
# start_date - fecha en formato YYYY-MM-DD que indica el inicio de la medición. Por defecto, 30 días antes de la fecha actual.
# end_date - fecha en formato YYYY-MM-DD que indica el final de la medición. Por defecto, fecha actual.
# offset - desplazamiento (huso) horario en formato +/-HH:MM - Por defecto +00:00
Expand All @@ -365,13 +365,13 @@ def ajax_productivity_per_task_and_date(request, username):
#Ejemplo
#/employee/ajax_productivity_per_task_and_date/JoseGavilan?task_id=3&start_date=2017-02-05&end_date=2017-02-16
#devuelve lo siguiente
#{"dates":
# ["2017-02-05", "2017-02-06", "2017-02-07", "2017-02-08", "2017-02-09", "2017-02-10", "2017-02-11", "2017-02-12", "2017-02-13", "2017-02-14", "2017-02-15", "2017-02-16"],
#"task": {"name": "Hacer cosas de front",
# "real_productivity": [0, 0, 0, 0, 0, 0, 0, 1.2, 0, 0.225, 0, 0],
# "task_id": 3,
#{"dates":
# ["2017-02-05", "2017-02-06", "2017-02-07", "2017-02-08", "2017-02-09", "2017-02-10", "2017-02-11", "2017-02-12", "2017-02-13", "2017-02-14", "2017-02-15", "2017-02-16"],
#"task": {"name": "Hacer cosas de front",
# "real_productivity": [0, 0, 0, 0, 0, 0, 0, 1.2, 0, 0.225, 0, 0],
# "task_id": 3,
# "expected_productivity": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 4.0, 4.0, 2.0, 2.0, 2.0]}}
"""

Expand Down Expand Up @@ -443,7 +443,7 @@ def ajax_productivity_per_task_and_date(request, username):
else:
# Duration is in minutes, so we multiply by 60 (duration is in the denominator)
total_productivity = 60*total_produced_units/total_duration

# Find the registry date of production goal evolution which is closest to the date
expected_productivity = GoalEvolution.objects.filter(task_id_id=task.id,
registryDate__gte=logDate).first()
Expand Down
Loading

0 comments on commit 57a5e05

Please sign in to comment.