Ejemplo n.º 1
0
 def calc(self, interval_start, interval_end):
     projects = Project.projects_active_between(
         interval_start, interval_end)
     total_hours = round(
         sum([p.hours_logged.total_seconds() for p in projects]) / 3600, 2)
     return dict(projects=projects,
                 total_hours=total_hours)
Ejemplo n.º 2
0
 def calc(self, days):
     now = datetime.now()
     end = now
     start = now - timedelta(days=days)
     projects = Project.projects_active_between(start, end)
     total_hours = round(
         sum([p.hours_logged.total_seconds() for p in projects]) / 3600, 2)
     return dict(days=days,
                 projects=projects,
                 total_hours=total_hours)
Ejemplo n.º 3
0
    def calc(self, start, end):
        projects = Project.projects_active_during(start, end, self.groups)
        my_projects = []
        for p in projects:
            d = dict(
                pid=p.pid,
                name=p.name,
                projnum=p.projnum)
            d['group_times'] = [p.group_hours(g.username, start, end)
                                for g in self.groups]
            d['total_time'] = p.interval_total(start, end)
            my_projects.append(d)

        group_totals = [x.total_group_time(start, end) for x in self.groups]
        grand_total = ActualTime.interval_total_time(start, end)

        return dict(groupnames=self.groupnames,
                    project_times=my_projects,
                    group_totals=group_totals,
                    grand_total=grand_total)
Ejemplo n.º 4
0
    def test_projects_active_between(self):
        now = timezone.now()

        # Make 5 ActualTime objects. This will ultimately create
        # 5 different projects (as well as 5 items, 5 milestones).
        for i in range(5):
            # ActualTime uses "completed" (a DateTimeField) as its
            # primary key, so it must be unique :-/. This will be
            # difficult to change because of this model's foreign
            # key relationships.
            now += timedelta(seconds=10)
            ActualTimeFactory(completed=now)

        # Make one of the projects private
        p = Project.objects.first()
        p.pub_view = False
        p.save()

        start = datetime(year=2016, month=1, day=3).replace(tzinfo=utc)
        end = datetime(year=2016, month=1, day=5).replace(tzinfo=utc)
        projects = Project.projects_active_between(start, end)

        self.assertEqual(projects.count(), 4,
                         'Private projects must be hidden from reports.')