Exemplo n.º 1
0
 def get_efforts(self):
     efforts = {}
     for month in list(interval_months(self.start_date, self.end_date)):
         efforts[month] = self.effort
     prev = self.employee.assignments.filter(start_date__range=(self.start_date, self.end_date))
     if prev:
         for assignment in prev:
             for month in list(interval_months(assignment.start_date, assignment.end_date)):
                 if month in efforts:
                     efforts[month] += assignment.effort
     return efforts
Exemplo n.º 2
0
 def get_efforts_by_month(self):
     efforts = {}
     for assignment in self.assignments.all():
         for month in list(interval_months(assignment.start_date, assignment.end_date)):
             em = EffortMonth(month[0], month[1])
             if em in efforts:
                 new_effort = efforts[em].effort + assignment.effort
                 new_cost = efforts[em].cost + self._calculate_cost_per_month(assignment.effort)
                 efforts[em] = EffortCost(new_effort, new_cost)
             else:
                 efforts[em] = EffortCost(assignment.effort, self._calculate_cost_per_month(assignment.effort))
     return efforts
Exemplo n.º 3
0
 def next_under(self, start_date=None, efforts=None):
     grayspan = '<span style="color: gray">'
     redspan = '<span style="color: red">'
     endspan = '</span>'
     if not start_date:
         start_date = date.today()
     if not efforts:
         efforts = self.get_efforts_by_month()
     if not efforts:
         return redspan + '{}/{}'.format(start_date.month, start_date.year) + endspan
     fte = self.fte * 100
     end_date = start_date + relativedelta(months=+12)
     end_month = EffortMonth(end_date.year, end_date.month)
     for month in list(interval_months(start_date, end_date)):
         if month == end_month:
             break
         if month not in efforts or efforts[month].effort < fte:
             return redspan + '{}/{}'.format(month[1], month[0]) + endspan
     return grayspan + 'OK to {}/{}'.format(end_date.month, end_date.year) + endspan