예제 #1
0
    def monthly_density_list(self):
        municipality = self.request.context

        # parse date from request if any
        date_string = self.request.GET.get('period')
        if date_string:
            try:
                date = datetime.datetime.strptime(date_string, '%Y-%m')
            except ValueError:
                return HTTPBadRequest("Couldn't understand the date format")
        else:
            date = datetime.datetime.now()

        # determine the date ranges
        start, end = get_month_start_end(date)
        criterion = and_(MonthlyDensity.date >= start,
                         MonthlyDensity.date <= end)
        municipality_submissions = MunicipalitySubmission.get_items(
            municipality, MonthlyDensity, criterion)
        monthly_densities = [s for ms, s in municipality_submissions]
        average_density = MonthlyDensity.get_average_density(date)

        return {
            'municipality': municipality,
            'items': monthly_densities,
            'average_density': average_density,
            'date': date
        }
예제 #2
0
 def test_get_average_density_returns_none_if_below_threshold(self):
     # this also checks that PENDING and REJECTED submissions are not
     # considered
     date = datetime.date(2014, 05, 07)
     average_density = MonthlyDensity.get_average_density(date)
     self.assertIsNone(average_density)
예제 #3
0
 def test_get_average_density_returns_avg_if_above_threshold(self):
     MonthlyDensity.THRESHOLD_MIN = 2
     date = datetime.date(2014, 04, 07)
     average_density = MonthlyDensity.get_average_density(date)
     self.assertAlmostEqual(average_density, 0.000226923)
예제 #4
0
 def monthly_density(self):
     self._monthly_density = (self._monthly_density or
                              MonthlyDensity.get_average_density(self.date))
     return self._monthly_density