Skip to content

Commit

Permalink
Contentando a Codacy Parte 1
Browse files Browse the repository at this point in the history
  • Loading branch information
josjimjim committed Apr 24, 2017
1 parent 1f78d9f commit 6775ea7
Show file tree
Hide file tree
Showing 19 changed files with 84 additions and 66 deletions.
20 changes: 11 additions & 9 deletions Metronus-Project/metronus_app/controllers/employeeController.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,17 @@ def check_metrics_authorized_for_employee(user, employee_id):


def check_metrics_authorized_for_employee_in_project(user, employee_id, project_id):
"""Raises 403 if the current actor is not allowed to obtain metrics for the department"""
"""
Raises 403 if the current actor is not allowed to obtain metrics for the department
Optional at the end:
if logged.user_type == 'E'
If it's not an admin, check that it has role EXECUTIVE (50) or higher for any project in the department
try
ProjectDepartmentEmployeeRole.objects.get(employee_id=logged, role_id__tier__gte=50, projectDepartment_id__project_id=project)
except ObjectDoesNotExist:
raise PermissionDenied
"""
if not user.is_authenticated():
raise PermissionDenied

Expand All @@ -675,14 +685,6 @@ def check_metrics_authorized_for_employee_in_project(user, employee_id, project_

if employee.company_id != project.company_id:
raise PermissionDenied
"""
if logged.user_type == 'E':
# If it's not an admin, check that it has role EXECUTIVE (50) or higher for any project in the department
try:
ProjectDepartmentEmployeeRole.objects.get(employee_id=logged, role_id__tier__gte=50, projectDepartment_id__project_id=project)
except ObjectDoesNotExist:
raise PermissionDenied
"""


def create_employee_user(form):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def create_async(request):
else:
data['repeated_name'] = True
else:
project = create_project(form, admin)
create_project(form, admin)
return JsonResponse(data)

# if a GET (or any other method) we'll create a blank form
Expand Down
2 changes: 1 addition & 1 deletion Metronus-Project/metronus_app/model/actor.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ def __unicode__(self):
return self.identifier

def role(self):
return self.type_choices(self.user_type)
return self.type_choices(self.user_type)
21 changes: 12 additions & 9 deletions Metronus-Project/metronus_app/model/department.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from django.db import models
from metronus_app.model.company import Company


class Department(models.Model):
company_id = models.ForeignKey(Company)
name = models.CharField(max_length=50)
registryDate = models.DateTimeField(auto_now=True)
active=models.BooleanField(default=True)
def __unicode__(self):
return self.name

class Meta:
unique_together = ('name', 'company_id')
company_id = models.ForeignKey(Company)
name = models.CharField(max_length=50)
registryDate = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)

def __unicode__(self):
return self.name

class Meta:
unique_together = ('name', 'company_id')
4 changes: 3 additions & 1 deletion Metronus-Project/metronus_app/model/employee.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from metronus_app.model.actor import Actor
from django.db import models


class Employee(Actor):
price_per_hour=models.FloatField(default=1.0)
price_per_hour = models.FloatField(default=1.0)

def __unicode__(self):
return self.identifier
4 changes: 3 additions & 1 deletion Metronus-Project/metronus_app/model/employeeLog.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from django.db import models
from metronus_app.model.employee import Employee


class EmployeeLog(models.Model):
employee_id = models.ForeignKey(Employee)
event = models.CharField(max_length=1, choices=[('A', 'Alta'), ('B', 'Baja'), ('C', 'Change')], default='A')
event_date = models.DateTimeField(auto_now=True)
price_per_hour=models.FloatField(default=1.0)
price_per_hour = models.FloatField(default=1.0)

def __unicode__(self):
return self.employee_id + "-" + self.event + "-" + self.event_date
13 changes: 7 additions & 6 deletions Metronus-Project/metronus_app/model/goalEvolution.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
from django.db import models
from metronus_app.model.actor import Actor
from metronus_app.model.task import Task
from metronus_app.model.projectDepartment import ProjectDepartment


class GoalEvolution(models.Model):
"""
Each time the goal or the price per unit/hour from a task is changed, a new entry is created in the log
Maybe should have been named TaskLog, but...
"""
task_id = models.ForeignKey(Task)
task_id = models.ForeignKey(Task)

registryDate = models.DateTimeField(auto_now=True)

actor_id = models.ForeignKey(Actor)

production_goal=models.FloatField(blank=True,null=True)
goal_description=models.CharField(blank=True,max_length=100,default="")
production_goal = models.FloatField(blank=True, null=True)
goal_description = models.CharField(blank=True, max_length=100, default="")

price_per_unit=models.FloatField(null=True,blank=True)
price_per_hour=models.FloatField(null=True,blank=True)
price_per_unit = models.FloatField(null=True, blank=True)
price_per_hour = models.FloatField(null=True, blank=True)

def __unicode__(self):
return self.production_goal
3 changes: 2 additions & 1 deletion Metronus-Project/metronus_app/model/projectDepartment.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from metronus_app.model.department import Department
from metronus_app.model.project import Project


class ProjectDepartment(models.Model):
"""
Relates a department and a project so departments can work on the projects
Expand All @@ -11,4 +12,4 @@ class ProjectDepartment(models.Model):
project_id = models.ForeignKey(Project)

def __unicode__(self):
return self.department_id.name +" - "+ self.project_id.name
return self.department_id.name + " - " + self.project_id.name
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
from metronus_app.model.role import Role
from metronus_app.model.employee import Employee
from metronus_app.model.projectDepartment import ProjectDepartment


class ProjectDepartmentEmployeeRole(models.Model):
"""
Assigns a role to an employee
"""
projectDepartment_id=models.ForeignKey(ProjectDepartment, on_delete=models.CASCADE);
employee_id=models.ForeignKey(Employee);
role_id=models.ForeignKey(Role);
roleDate=models.DateTimeField(auto_now=True);
projectDepartment_id = models.ForeignKey(ProjectDepartment, on_delete=models.CASCADE)
employee_id = models.ForeignKey(Employee)
role_id = models.ForeignKey(Role)
roleDate = models.DateTimeField(auto_now=True)

class Meta:
unique_together = ('projectDepartment_id', 'employee_id','role_id')
1 change: 1 addition & 0 deletions Metronus-Project/metronus_app/model/role.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.db import models


class Role(models.Model):
"""
A role, depending on the tier you can or not access some parts of Metronus
Expand Down
14 changes: 8 additions & 6 deletions Metronus-Project/metronus_app/model/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,22 @@
from metronus_app.model.actor import Actor
from metronus_app.model.projectDepartment import ProjectDepartment


class Task(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=200)
name = models.CharField(max_length=30)
description = models.CharField(max_length=200)
registryDate = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)

actor_id = models.ForeignKey(Actor)
projectDepartment_id = models.ForeignKey(ProjectDepartment)

production_goal=models.FloatField(null=True,blank=True)
goal_description=models.CharField(blank=True,max_length=100,default="")
production_goal = models.FloatField(null=True, blank=True)
goal_description = models.CharField(blank=True, max_length=100, default="")

price_per_unit = models.FloatField(null=True, blank=True)
price_per_hour = models.FloatField(null=True, blank=True)

price_per_unit=models.FloatField(null=True,blank=True)
price_per_hour=models.FloatField(null=True,blank=True)
def __unicode__(self):
return self.name

Expand Down
5 changes: 3 additions & 2 deletions Metronus-Project/metronus_app/model/timeLog.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from metronus_app.model.task import Task
from metronus_app.model.employee import Employee


class TimeLog(models.Model):
"""
When an employee works on a task, he may specify how many hours has he/she spent and how many units have he/she produced.
Expand All @@ -11,10 +12,10 @@ class TimeLog(models.Model):
registryDate = models.DateTimeField(auto_now=True)
workDate = models.DateTimeField()

#duration in minutes
# duration in minutes
duration = models.PositiveSmallIntegerField(default=1, blank=False, null=False)

#produced units in task_id__goal_description units
# produced units in task_id__goal_description units
produced_units = models.FloatField(null=True, blank=True)

task_id = models.ForeignKey(Task)
Expand Down
12 changes: 6 additions & 6 deletions Metronus-Project/metronus_app/test/testDepartmentMetrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ def test_random_data_emppertask(self):
for project in projects:

# Create between 1 and 5 tasks for the current project and the department
for x in range(random.randint(1, 5)):
for _ in range(random.randint(1, 5)):
create_task_in_projdept(project, department)

for task in Task.objects.filter(projectDepartment_id__department_id=department,
Expand All @@ -343,11 +343,11 @@ def test_random_data_emppertask(self):
true_data['names'].append(task.name)
true_data['values'].append(num_employees)

for y in range(num_employees):
for _ in range(num_employees):
employee = create_employee_in_projdept(project, department)

# Make them create time logs
for z in range(random.randint(1, 3)):
for _ in range(random.randint(1, 3)):
create_timelog_in_task(task, 100, "2016-01-01 10:00+00:00", employee)

response = c.get("/department/ajaxEmployeesPerTask?department_id={0}" .format(
Expand Down Expand Up @@ -429,7 +429,7 @@ def test_random_data_timepertask(self):
for project in projects:

# Create between 1 and 5 tasks for the current project and the department
for x in range(random.randint(1, 5)):
for _ in range(random.randint(1, 5)):
create_task_in_projdept(project, department)

for task in Task.objects.filter(projectDepartment_id__department_id=department,
Expand All @@ -438,11 +438,11 @@ def test_random_data_timepertask(self):
num_employees = random.randint(2, 10)
used_time = 0

for y in range(num_employees):
for _ in range(num_employees):
employee = create_employee_in_projdept(project, department)

# Make them create time logs (between 1 and 3)
for z in range(random.randint(1, 3)):
for _ in range(random.randint(1, 3)):
# 25% chance of being outside of the requested time margin
count = random.choice([True, True, True, False])
date_worked = "2016-06-01 10:00+01:00" if count else "2014-01-01 10:00+00:00"
Expand Down
20 changes: 11 additions & 9 deletions Metronus-Project/metronus_app/test/testProjectDepartment.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from metronus_app.model.department import Department
from metronus_app.model.projectDepartment import ProjectDepartment
from metronus_app.model.administrator import Administrator
from django.contrib.auth.models import User
from django.contrib.auth.models import User
from django.test import TestCase, Client


Expand Down Expand Up @@ -41,14 +41,16 @@ def setUp(self):
first_name="Nimad",
last_name="Rotartis")

# Admin
Administrator.objects.create(
user=admin_user1,
user_type="A",
identifier="adm01",
phone="999999999",
company_id=company124)

admin2 = Administrator.objects.create(
# Admin2
Administrator.objects.create(
user=admin_user2,
user_type="A",
identifier="adm02",
Expand All @@ -60,17 +62,17 @@ def setUp(self):
deleted=False,
company_id=company124)

proj2 = Project.objects.create(
Project.objects.create(
name="TestProject2",
deleted=False,
company_id=company124)

proj3 = Project.objects.create(
Project.objects.create(
name="TestProjectC2",
deleted=False,
company_id=company123)

proj4 = Project.objects.create(
Project.objects.create(
name="TestProjectDeleted",
deleted=True,
company_id=company124)
Expand All @@ -84,21 +86,21 @@ def setUp(self):
active=True,
company_id=company124)

dep3 = Department.objects.create(
Department.objects.create(
name="DepartamentoC2",
active=True,
company_id=company123)

dep3 = Department.objects.create(
Department.objects.create(
name="DepartamentoInactivo",
active=False,
company_id=company124)

pd = ProjectDepartment.objects.create(
ProjectDepartment.objects.create(
project_id = proj1,
department_id = dep2)

pd = ProjectDepartment.objects.create(
ProjectDepartment.objects.create(
project_id = proj1,
department_id = dep1)

Expand Down
2 changes: 1 addition & 1 deletion Metronus-Project/metronus_app/test/testProjectMetrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ def create_employee_in_projdept(project, department):
n_dep = len(departments)

# Do the random test 5 times
for k in range(5):
for _ in range(5):
ProjectDepartmentEmployeeRole.objects.all().delete()

employees_per_dpmt = [random.choice(range(11)) for _ in range(n_dep)]
Expand Down
3 changes: 1 addition & 2 deletions Metronus-Project/metronus_app/test/testTask.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
from metronus_app.model.department import Department
from metronus_app.model.task import Task
from django.contrib.auth.models import User
from django.test import TestCase, Client
from metronus_app.model.project import Project
from metronus_app.model.goalEvolution import GoalEvolution
from django.core.exceptions import PermissionDenied
from populate_database import populate_database
import json


class TaskTestCase(TestCase):
"""This class provides a test case for using and managing tasks"""
@classmethod
Expand Down
6 changes: 3 additions & 3 deletions Metronus-Project/metronus_app/test/testTimeLog.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from metronus_app.model.task import Task
from django.contrib.auth.models import User
from metronus_app.model.timeLog import TimeLog
from django.test import TestCase, Client
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from populate_database import populate_database
from datetime import date,datetime
from datetime import datetime


class TimeLogTestCase(TestCase):
"""This class provides a test case for using and managing employee timelogs"""
@classmethod
Expand Down
Loading

0 comments on commit 6775ea7

Please sign in to comment.