示例#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_density(self):
     monthly_density = MonthlyDensity(json_data={
         MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'yes',
         MonthlyDensity.FILLED_WEIGHT_FIELD: '20',
         MonthlyDensity.EMPTY_WEIGHT_FIELD: '12',
         MonthlyDensity.VOLUME_FIELD: '20.0'
     })
     self.assertEqual(monthly_density.density, 0.4)
示例#3
0
 def test_calculate_average_density(self):
     average_density = MonthlyDensity.calculate_average_density([
         MonthlyDensity(json_data={
             MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'yes',
             MonthlyDensity.FILLED_WEIGHT_FIELD: '20',
             MonthlyDensity.EMPTY_WEIGHT_FIELD: '12',
             MonthlyDensity.VOLUME_FIELD: '20.0'
         }),
         # density = 0.8
         MonthlyDensity(json_data={
             MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'yes',
             MonthlyDensity.FILLED_WEIGHT_FIELD: '20',
             MonthlyDensity.EMPTY_WEIGHT_FIELD: '12',
             MonthlyDensity.VOLUME_FIELD: '10.0'
         })
         # density = 0.4
     ])
     self.assertAlmostEqual(average_density, 0.6)
示例#4
0
 def test_volume_returns_none_if_skip_not_found(self):
     monthly_density = MonthlyDensity(
         json_data={
             MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'no',
             MonthlyDensity.SKIP_TYPE_FIELD: 'Z',
             MonthlyDensity.WASTE_HEIGHT_FIELD: '20.0'
         },
         municipality_submission=MunicipalitySubmission(
             municipality=self.municipality
         ))
     self.assertIsNone(monthly_density.volume)
示例#5
0
 def test_volume_when_not_compressor(self):
     monthly_density = MonthlyDensity(
         json_data={
             MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'no',
             MonthlyDensity.SKIP_TYPE_FIELD: 'A',
             MonthlyDensity.WASTE_HEIGHT_FIELD: '20.0'
         },
         municipality_submission=MunicipalitySubmission(
             municipality=self.municipality
         ))
     self.assertEqual(monthly_density.volume, 6500.0)
示例#6
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)
示例#7
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)
示例#8
0
 def test_net_weight(self):
     monthly_density = MonthlyDensity(json_data={
         MonthlyDensity.FILLED_WEIGHT_FIELD: '20',
         MonthlyDensity.EMPTY_WEIGHT_FIELD: '12'
     })
     self.assertEqual(monthly_density.net_weight, 8.0)
示例#9
0
 def test_volume_when_compressor(self):
     monthly_density = MonthlyDensity(json_data={
         MonthlyDensity.COMPRESSOR_TRUCK_FIELD: 'yes',
         MonthlyDensity.VOLUME_FIELD: '20.0'
     })
     self.assertEqual(monthly_density.volume, 20.0)
示例#10
0
 def monthly_density(self):
     self._monthly_density = (self._monthly_density or
                              MonthlyDensity.get_average_density(self.date))
     return self._monthly_density