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 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.')