def test_midend_doesnt_sum_if_no_endline_data(self):
     self.indicator.target_frequency = Indicator.MID_END
     self.indicator.save()
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=500,
         period=PeriodicTarget.MIDLINE,
         customsort=0)
     end_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=800,
         period=PeriodicTarget.ENDLINE,
         customsort=1)
     self.targets.extend([mid_target, end_target])
     mid_data = i_factories.ResultFactory(
         indicator=self.indicator,
         periodic_target=mid_target,
         achieved=350,
         date_collected=self.program.reporting_period_start +
         datetime.timedelta(days=1))
     self.data.append(mid_data)
     program = ProgramWithMetrics.home_page.with_annotations('scope').get(
         pk=self.program.id)
     self.assertEqual(
         program.scope_counts['low'], 1,
         "should show under (350/500), got {0}".format(
             program.scope_counts))
     self.indicator.direction_of_change = Indicator.DIRECTION_OF_CHANGE_NEGATIVE
     self.indicator.save()
     program = ProgramWithMetrics.home_page.with_annotations('scope').get(
         pk=self.program.id)
     self.assertEqual(
         program.scope_counts['high'], 1,
         "should show over (350/500), got {0}".format(program.scope_counts))
Beispiel #2
0
 def setUp(self):
     program = get_open_program()
     indicator = i_factories.IndicatorFactory(
         program=program,
         target_frequency=Indicator.MID_END,
         unit_of_measure_type=Indicator.PERCENTAGE,
         lop_target=60)
     targets = [
         i_factories.PeriodicTargetFactory(indicator=indicator,
                                           customsort=0,
                                           start_date=None,
                                           end_date=None,
                                           target=80),
         i_factories.PeriodicTargetFactory(indicator=indicator,
                                           customsort=1,
                                           start_date=None,
                                           end_date=None,
                                           target=65)
     ]
     results = [
         i_factories.ResultFactory(indicator=indicator,
                                   periodic_target=targets[0],
                                   date_collected=datetime.date(2018, 1, 1),
                                   achieved=75),
         i_factories.ResultFactory(indicator=indicator,
                                   periodic_target=targets[0],
                                   date_collected=datetime.date(2018, 2, 1),
                                   achieved=70)
     ]
     self.results_indicator = ResultsIndicator.results_view.get(
         pk=indicator.pk)
     self.metrics_indicator = MetricsIndicator.objects.with_annotations(
         'scope').get(pk=indicator.pk)
 def add_good_indicator(self):
     indicator = self.get_indicator(Indicator.MID_END)
     target_mid = i_factories.PeriodicTargetFactory(
         indicator=indicator, period=PeriodicTarget.MIDLINE, target=400)
     target_end = i_factories.PeriodicTargetFactory(
         indicator=indicator, period=PeriodicTarget.ENDLINE, target=800)
     self.targets.extend([target_mid, target_end])
Beispiel #4
0
 def test_program_with_multiple_indicators_returns_correct_date(self):
     program = w_factories.ProgramFactory(
         reporting_period_start=datetime.date(2015, 1, 1),
         reporting_period_end=datetime.date(2015, 12, 31)
     )
     indicator1 = i_factories.IndicatorFactory(
         target_frequency=Indicator.ANNUAL,
         program=program
     )
     i_factories.PeriodicTargetFactory(
         indicator=indicator1,
         start_date=datetime.date(2015, 1, 1),
         end_date=datetime.date(2015, 12, 31)
     )
     indicator2 = i_factories.IndicatorFactory(
         target_frequency=Indicator.TRI_ANNUAL,
         program=program
     )
     for start, end in [(datetime.date(2015, 1, 1), datetime.date(2015, 4, 30)),
                        (datetime.date(2015, 5, 1), datetime.date(2015, 8, 31)),
                        (datetime.date(2015, 9, 1), datetime.date(2015, 12, 31))]:
         i_factories.PeriodicTargetFactory(
             indicator=indicator2,
             start_date=start,
             end_date=end
         )
     self.assertEqual(program.last_time_aware_indicator_start_date, datetime.date(2015, 9, 1))
 def test_lop_and_midend_just_mid_reporting(self):
     self.get_closed_program()
     indicator_lop = i_factories.IndicatorFactory(
         target_frequency=Indicator.LOP,
         lop_target=1000,
         program=self.program)
     lop_target = i_factories.PeriodicTargetFactory(
         indicator=indicator_lop,
         target=1000,
         start_date=self.program.reporting_period_start,
         end_date=self.program.reporting_period_end)
     lop_data = i_factories.ResultFactory(
         indicator=indicator_lop,
         periodic_target=lop_target,
         achieved=400,
         date_collected=self.program.reporting_period_end -
         datetime.timedelta(days=10))
     indicator_midend = i_factories.IndicatorFactory(
         target_frequency=Indicator.MID_END, program=self.program)
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=indicator_midend,
         period=PeriodicTarget.MIDLINE,
         target=1000)
     mid_data = i_factories.ResultFactory(
         indicator=indicator_midend,
         periodic_target=mid_target,
         achieved=400,
         date_collected=self.program.reporting_period_start +
         datetime.timedelta(days=20))
     for indicator in MetricsIndicator.objects.with_annotations(
             'reporting').all():
         self.assertTrue(indicator.reporting)
def do_add_defined_target(indicator):
    indicator.target_frequency = Indicator.MID_END
    mid_target = i_factories.PeriodicTargetFactory(
        indicator=indicator, period=PeriodicTarget.MIDLINE, target=1000)
    end_target = i_factories.PeriodicTargetFactory(
        indicator=indicator, period=PeriodicTarget.ENDLINE, target=400)
    indicator.save()
    return (mid_target, end_target)
 def add_periodic_targets(self):
     self.pt_out_of_country = i_factories.PeriodicTargetFactory(
         indicator=self.indicator_out_of_country,
         start_date=self.program_out_of_country.reporting_period_start,
         end_date=self.program_out_of_country.reporting_period_end)
     self.pt_in_country = i_factories.PeriodicTargetFactory(
         indicator=self.indicator_in_country,
         start_date=self.program_in_country.reporting_period_start,
         end_date=self.program_in_country.reporting_period_end)
 def add_good_indicator_multiple_targets(self):
     indicator = self.get_indicator(Indicator.EVENT)
     target_1 = i_factories.PeriodicTargetFactory(indicator=indicator,
                                                  period="Event 1",
                                                  target=400)
     target_2 = i_factories.PeriodicTargetFactory(indicator=indicator,
                                                  period="Event 6",
                                                  target=500)
     self.targets.extend([target_1, target_2])
 def get_on_target_indicators(self):
     # lop indicator on target to lop target value
     lop_indicator = self.get_base_indicator()
     lop_indicator.target_frequency = Indicator.LOP
     lop_indicator.lop_target = 10000
     lop_indicator.is_cumulative = False
     lop_indicator.unit_of_measure_type = Indicator.NUMBER
     lop_indicator.save()
     lop_pt = i_factories.PeriodicTargetFactory(
         indicator=lop_indicator,
         target=lop_indicator.lop_target,
         start_date=lop_indicator.program.reporting_period_start,
         end_date=lop_indicator.program.reporting_period_end)
     lop_data = self.get_base_data(lop_indicator)
     lop_data.achieved = 10000
     lop_data.periodic_target = lop_pt
     lop_data.save()
     self.data.append(lop_data)
     # semi annual indicator with target and valid data
     time_indicator = self.get_base_indicator()
     time_indicator.target_frequency = Indicator.SEMI_ANNUAL
     time_indicator.is_cumulative = True
     time_indicator.unit_of_measure_type = Indicator.NUMBER
     time_indicator.save()
     start_date = self.program.reporting_period_start
     mid_date = datetime.date(
         start_date.year + 1 if start_date.month > 6 else start_date.year,
         start_date.month -
         6 if start_date.month > 6 else start_date.month + 6,
         start_date.day)
     time_target_1 = i_factories.PeriodicTargetFactory(
         indicator=time_indicator,
         target=400,
         start_date=start_date,
         end_date=mid_date - datetime.timedelta(days=1))
     time_target_2 = i_factories.PeriodicTargetFactory(
         indicator=time_indicator,
         target=600,
         start_date=mid_date,
         end_date=self.program.reporting_period_end)
     self.targets.extend([time_target_1, time_target_2])
     data_1 = i_factories.ResultFactory(
         indicator=time_indicator,
         periodic_target=time_target_1,
         date_collected=time_target_1.start_date +
         datetime.timedelta(days=2),
         achieved=200)
     data_2 = i_factories.ResultFactory(
         indicator=time_indicator,
         periodic_target=time_target_2,
         date_collected=time_target_2.start_date +
         datetime.timedelta(days=2),
         achieved=400)
     self.data.extend([data_1, data_2])
     return [lop_indicator, time_indicator]
 def get_overtarget_indicators(self):
     # lop indicator with 120/100 data
     lop_indicator = self.get_base_indicator()
     lop_indicator.target_frequency = Indicator.LOP
     lop_indicator.is_cumulative = False
     lop_indicator.lop_target = 100
     lop_indicator.save()
     lop_data = self.get_base_data(lop_indicator)
     lop_data.achieved = 120
     lop_data.save()
     self.data.append(lop_data)
     # negative direction of change so under data should show as over target
     neg_indicator = self.get_base_indicator()
     neg_indicator.target_frequency = Indicator.LOP
     neg_indicator.direction_of_change = Indicator.DIRECTION_OF_CHANGE_NEGATIVE
     neg_indicator.lop_target = 800
     neg_indicator.save()
     neg_data = self.get_base_data(neg_indicator)
     neg_data.achieved = 600
     neg_data.save()
     self.data.append(neg_data)
     # mid end indicator _cumulative_ should check against end target only
     midend_indicator = self.get_base_indicator()
     midend_indicator.target_frequency = Indicator.MID_END
     midend_indicator.is_cumulative = True
     midend_indicator.save()
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=midend_indicator,
         period=PeriodicTarget.MIDLINE,
         customsort=0,
         target=500)
     end_target = i_factories.PeriodicTargetFactory(
         indicator=midend_indicator,
         period=PeriodicTarget.ENDLINE,
         customsort=1,
         target=800)
     self.targets.extend([mid_target, end_target])
     mid_data_1 = self.get_base_data(midend_indicator, mid_target)
     mid_data_1.achieved = 200
     mid_data_1.save()
     mid_data_2 = self.get_base_data(midend_indicator, mid_target)
     mid_data_2.achieved = 200
     mid_data_2.save()
     mid_data_3 = self.get_base_data(midend_indicator, end_target)
     mid_data_3.achieved = 250
     mid_data_3.save()
     mid_data_4 = self.get_base_data(midend_indicator, end_target)
     mid_data_4.achieved = 250
     mid_data_4.save()
     self.data.extend([mid_data_1, mid_data_2, mid_data_3, mid_data_4])
     return [lop_indicator, neg_indicator, midend_indicator]
Beispiel #11
0
 def test_midend_doesnt_sum_if_no_endline_data(self):
     self.indicator.target_frequency = Indicator.MID_END
     self.indicator.save()
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=500,
         period=PeriodicTarget.MIDLINE,
         customsort=0
     )
     end_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=800,
         period=PeriodicTarget.ENDLINE,
         customsort=1
     )
     self.targets.extend([mid_target, end_target])
     mid_data = i_factories.ResultFactory(
         indicator=self.indicator,
         periodic_target=mid_target,
         achieved=350,
         date_collected=self.program.reporting_period_start + datetime.timedelta(days=1)
     )
     self.data.append(mid_data)
     indicator = MetricsIndicator.objects.with_annotations('scope').get(pk=self.indicator.id)
     # both have data, defaults to non_cumulative, so should show sum of both targets:
     self.assertEqual(
         indicator.lop_target_progress, 500,
         "should not sum targets (no data for endline) expecting 500, got {0}".format(indicator.lop_target_progress)
     )
     self.assertEqual(
         indicator.lop_actual_progress, 350,
         "should show only data, 350 got {0}".format(indicator.lop_actual_progress)
     )
     self.assertEqual(
         indicator.over_under, -1,
         "should show under (350/500), got {0}".format(indicator.over_under)
     )
     self.indicator.direction_of_change = Indicator.DIRECTION_OF_CHANGE_NEGATIVE
     self.indicator.save()
     indicator = MetricsIndicator.objects.with_annotations('scope').get(pk=self.indicator.id)
     self.assertEqual(
         indicator.over_under, 1,
         "should show over (350/500), got {0}".format(indicator.over_under)
     )
     self.indicator.is_cumulative = True
     self.indicator.save()
     indicator = MetricsIndicator.objects.with_annotations('scope').get(pk=self.indicator.id)
     self.assertEqual(
         indicator.lop_target_progress, 500,
         "should not take endline target (no data`) expecting 500, got {0}".format(indicator.lop_target_progress)
     )
 def test_midend_target_sums_midend_with_both_data(self):
     self.indicator.target_frequency = Indicator.MID_END
     self.indicator.save()
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=500,
         period=PeriodicTarget.MIDLINE,
         customsort=0)
     end_target = i_factories.PeriodicTargetFactory(
         indicator=self.indicator,
         target=800,
         period=PeriodicTarget.ENDLINE,
         customsort=1)
     self.targets.extend([mid_target, end_target])
     mid_data = i_factories.ResultFactory(
         indicator=self.indicator,
         periodic_target=mid_target,
         achieved=350,
         date_collected=self.program.reporting_period_start +
         datetime.timedelta(days=1))
     end_data = i_factories.ResultFactory(
         indicator=self.indicator,
         periodic_target=end_target,
         achieved=950,
         date_collected=self.program.reporting_period_start +
         datetime.timedelta(days=10))
     self.data.extend([mid_data, end_data])
     program = ProgramWithMetrics.home_page.with_annotations('scope').get(
         pk=self.program.id)
     self.assertEqual(
         program.scope_counts['on_scope'], 1,
         "should show overunder as 0 (in range), got {0}".format(
             program.scope_counts))
     self.indicator.is_cumulative = True
     self.indicator.save()
     program = ProgramWithMetrics.home_page.with_annotations('scope').get(
         pk=self.program.id)
     # both have data, set to cumulative, so should show latest (endline) target:
     self.assertEqual(
         program.scope_counts['high'], 1,
         "should show overunder as 1 (over range), got {0}".format(
             program.scope_counts))
     self.indicator.direction_of_change = Indicator.DIRECTION_OF_CHANGE_NEGATIVE
     self.indicator.save()
     program = ProgramWithMetrics.home_page.with_annotations('scope').get(
         pk=self.program.id)
     self.assertEqual(
         program.scope_counts['low'], 1,
         "should show overunder as -1 (under range - negative DOC), got {0}"
         .format(program.scope_counts))
 def test_end_date_will_change_to_after_last_time_aware_target_set(self):
     program = w_factories.ProgramFactory(
         reporting_period_start=datetime.date(2015, 1, 1),
         reporting_period_end=datetime.date(2017, 12, 31)
     )
     indicator = i_factories.IndicatorFactory(
         target_frequency=Indicator.ANNUAL,
         program=program
     )
     for start, end in [(datetime.date(2015, 1, 1), datetime.date(2015, 12, 31)),
                        (datetime.date(2016, 1, 1), datetime.date(2016, 12, 31)),
                        (datetime.date(2017, 1, 1), datetime.date(2017, 12, 31))]:
         i_factories.PeriodicTargetFactory(
             start_date=start,
             end_date=end,
             indicator=indicator
         )
     response = self.client.post(reverse('reportingperiod_update', kwargs={'pk': program.pk}),
                                 {'reporting_period_start': '2015-01-01',
                                  'reporting_period_end': '2017-10-31',
                                  'rationale': 'test'})
     self.assertEqual(json.loads(response.content)['msg'], 'success')
     self.assertEqual(len(json.loads(response.content)['failmsg']), 0)
     self.assertEqual(response.status_code, 200)
     refreshed = Program.objects.get(pk=program.pk)
     self.assertEqual(refreshed.reporting_period_start, datetime.date(2015, 1, 1))
     self.assertEqual(refreshed.reporting_period_end, datetime.date(2017, 10, 31))
 def setUp(self):
     for _ in range(10):
         program = w_factories.ProgramFactory(
             reporting_period_start=datetime.date(2014, 1, 1),
             reporting_period_end=datetime.date(2014, 12, 31))
         for _ in range(5):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP,
                 lop_target=100,
                 program=program)
             i_factories.CollectedDataFactory(indicator=indicator,
                                              achieved=105)
         for _ in range(5):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP,
                 lop_target=100,
                 program=program)
             evidence = w_factories.DocumentationFactory(program=program)
             i_factories.CollectedDataFactory(indicator=indicator,
                                              achieved=50,
                                              evidence=evidence)
         for _ in range(2):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP, program=program)
         for _ in range(4):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.MID_END, program=program)
             for sort in range(2):
                 i_factories.PeriodicTargetFactory(
                     indicator=indicator,
                     target=40,
                     start_date=datetime.date(2014, 5, 1),
                     end_date=datetime.date(2014, 8, 1),
                     customsort=sort)
Beispiel #15
0
 def get_indicators(self):
     for c, kwargs in enumerate(self.indicator_kwargs):
         indicator = i_factories.IndicatorFactory(program=self.program,
                                                  number=c,
                                                  **kwargs['indicator'])
         for target_kwargs, period in zip(kwargs['targets'],
                                          self.program.get_periods_for_frequency(indicator.target_frequency)):
             target = i_factories.PeriodicTargetFactory(
                 indicator=indicator,
                 target=target_kwargs['target'],
                 start_date=period['start'],
                 end_date=period['end'],
                 customsort=period['customsort']
             )
             for date_collected, achieved in target_kwargs['results']:
                 i_factories.ResultFactory(
                     periodic_target=target,
                     indicator=indicator,
                     date_collected=date_collected,
                     achieved=achieved
                 )
         for date_collected, achieved in kwargs['results']:
             i_factories.ResultFactory(
                 indicator=indicator,
                 date_collected=date_collected,
                 achieved=achieved
             )
Beispiel #16
0
 def add_midend_indicator(self, program):
     indicator = i_factory.IndicatorFactory(
         target_frequency=Indicator.MID_END,
         lop_target=100,
         program=program)
     i_factory.PeriodicTargetFactory(indicator=indicator,
                                     target=100,
                                     start_date=datetime.date(2015, 1, 1),
                                     end_date=datetime.date(2015, 6, 30),
                                     customsort=0)
     i_factory.PeriodicTargetFactory(indicator=indicator,
                                     target=100,
                                     start_date=datetime.date(2015, 7, 1),
                                     end_date=datetime.date(2015, 12, 31),
                                     customsort=1)
     return indicator
Beispiel #17
0
 def get_targets(self):
     targets = []
     results = []
     start_date = self.program_dates[0]
     end_date = self.program_dates[1]
     next_date = self.next_date_func(start_date)
     counter = 0
     while start_date < end_date:
         target = i_factories.PeriodicTargetFactory(
             indicator=self.indicator,
             start_date=start_date,
             end_date=next_date - datetime.timedelta(days=1),
             target=self.target_values[counter])
         targets.append(target)
         if counter < len(self.result_values):
             results.append(
                 i_factories.ResultFactory(
                     indicator=self.indicator,
                     periodic_target=target,
                     date_collected=start_date + datetime.timedelta(days=1),
                     achieved=self.result_values[counter]))
         counter += 1
         start_date = next_date
         next_date = self.next_date_func(start_date)
     return targets, results
def get_all_targets_defined_indicator(program):
    indicator = get_one_target_defined_indicator(program)
    i_factories.PeriodicTargetFactory(indicator=indicator,
                                      start_date=datetime.date(2016, 1, 1),
                                      end_date=datetime.date(2016, 12, 31),
                                      target=100)
    return indicator
Beispiel #19
0
 def get_targets(self, indicator):
     self.targets[indicator.pk] = [
         i_factories.PeriodicTargetFactory(
             target=50,
             customsort=0,
             indicator=indicator,
             start_date=self.program.reporting_period_start,
             end_date=self.program.reporting_period_end),
         i_factories.PeriodicTargetFactory(
             target=49,
             customsort=1,
             indicator=indicator,
             start_date=self.program.reporting_period_start,
             end_date=self.program.reporting_period_end)
     ]
     self.result_target[indicator.pk] = 0
 def get_target(self, indicator):
     target = i_factories.PeriodicTargetFactory(indicator=indicator,
                                                period="target {0}".format(
                                                    len(self.targets)),
                                                target=100)
     self.targets.append(target)
     return target
 def test_start_date_does_change_if_no_time_aware_target_set(self):
     program = w_factories.ProgramFactory(
         reporting_period_start=datetime.date(2015, 1, 1),
         reporting_period_end=datetime.date(2017, 12, 31)
     )
     indicator = i_factories.IndicatorFactory(
         target_frequency=Indicator.MID_END,
         program=program
     )
     i_factories.PeriodicTargetFactory(
         start_date=None,
         end_date=None,
         customsort=0,
         indicator=indicator
     )
     response = self.client.post(reverse('reportingperiod_update', kwargs={'pk': program.pk}),
                                 {'reporting_period_start': '2016-01-01',
                                  'reporting_period_end': '2017-12-31',
                                  'rationale': 'test'})
     self.assertEqual(json.loads(response.content)['msg'], 'success')
     self.assertEqual(len(json.loads(response.content)['failmsg']), 0)
     self.assertEqual(response.status_code, 200)
     refreshed = Program.objects.get(pk=program.pk)
     self.assertEqual(refreshed.reporting_period_start, datetime.date(2016, 1, 1))
     self.assertEqual(refreshed.reporting_period_end, datetime.date(2017, 12, 31))
 def test_lop_and_midend_just_mid_reporting(self):
     self.get_closed_program()
     indicator_lop = i_factories.IndicatorFactory(
         target_frequency=Indicator.LOP,
         lop_target=1000,
         program=self.program
     )
     lop_data = i_factories.CollectedDataFactory(
         indicator=indicator_lop,
         achieved=400,
         date_collected=self.program.reporting_period_end - datetime.timedelta(days=10)
     )
     indicator_midend = i_factories.IndicatorFactory(
         target_frequency=Indicator.MID_END,
         program=self.program
     )
     mid_target = i_factories.PeriodicTargetFactory(
         indicator=indicator_midend,
         period=PeriodicTarget.MIDLINE,
         target=1000
     )
     mid_data = i_factories.CollectedDataFactory(
         indicator=indicator_midend,
         periodic_target=mid_target,
         achieved=400,
         date_collected=self.program.reporting_period_start + datetime.timedelta(days=20)
     )
     program = self.get_annotated_program()
     self.assertEqual(program.scope_counts['nonreporting_count'], 0)
     self.assertEqual(program.scope_counts['indicator_count'], 2)
def get_one_target_defined_indicator(program):
    indicator = i_factories.IndicatorFactory(program=program,
                                             target_frequency=Indicator.ANNUAL)
    i_factories.PeriodicTargetFactory(indicator=indicator,
                                      start_date=datetime.date(2015, 1, 1),
                                      end_date=datetime.date(2015, 12, 31),
                                      target=100)
    return indicator
 def setUp(self):
     for _ in range(10):
         program = w_factories.ProgramFactory(
             reporting_period_start=datetime.date(2014, 1, 1),
             reporting_period_end=datetime.date(2014, 12, 31))
         for _ in range(5):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP,
                 lop_target=100,
                 program=program)
             target = i_factories.PeriodicTargetFactory(
                 indicator=indicator,
                 target=indicator.lop_target,
                 start_date=indicator.program.reporting_period_start,
                 end_date=indicator.program.reporting_period_end)
             i_factories.ResultFactory(indicator=indicator,
                                       periodic_target=target,
                                       achieved=105)
         for _ in range(5):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP,
                 lop_target=100,
                 program=program)
             target = i_factories.PeriodicTargetFactory(
                 indicator=indicator,
                 target=indicator.lop_target,
                 start_date=indicator.program.reporting_period_start,
                 end_date=indicator.program.reporting_period_end)
             i_factories.ResultFactory(
                 indicator=indicator,
                 periodic_target=target,
                 achieved=50,
                 evidence_url='http://test_evidence_url')
         for _ in range(2):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.LOP, program=program)
         for _ in range(4):
             indicator = i_factories.IndicatorFactory(
                 target_frequency=Indicator.MID_END, program=program)
             for sort in range(2):
                 i_factories.PeriodicTargetFactory(
                     indicator=indicator,
                     target=40,
                     start_date=datetime.date(2014, 5, 1),
                     end_date=datetime.date(2014, 8, 1),
                     customsort=sort)
Beispiel #25
0
 def add_non_lop_indicator(self, program):
     indicator = i_factory.IndicatorFactory(
         target_frequency=Indicator.ANNUAL, lop_target=100, program=program)
     i_factory.PeriodicTargetFactory(
         indicator=indicator,
         target=100,
         start_date=program.reporting_period_start,
         end_date=program.reporting_period_end)
     return indicator
Beispiel #26
0
 def add_annual_indicators(self, program, dates):
     indicator = i_factory.IndicatorFactory(
         target_frequency=Indicator.ANNUAL, lop_target=100, program=program)
     for c, start_date in enumerate(dates):
         end_date = start_date + datetime.timedelta(days=364)
         i_factory.PeriodicTargetFactory(indicator=indicator,
                                         target=100,
                                         customsort=c,
                                         start_date=start_date,
                                         end_date=end_date)
     return indicator
 def get_nonreporting_indicators(self):
     event_indicator = self.get_base_indicator()
     event_indicator.target_frequency = Indicator.EVENT
     event_indicator.save()
     event_target = i_factories.PeriodicTargetFactory(
         indicator=event_indicator,
         target=400,
         customsort=0,
         period="event 1")
     self.targets.append(event_target)
     return [event_indicator]
Beispiel #28
0
def get_annual_targets(indicator, target_values):
    start_date = indicator.program.reporting_period_start
    targets = []
    for c, value in enumerate(target_values):
        targets.append(
            i_factories.PeriodicTargetFactory(
                indicator=indicator,
                start_date=datetime.date(start_date.year + c, 1, 1),
                end_date=datetime.date(start_date.year + c, 12, 31),
                target=value))
    return targets
 def load_target(self, indicator, target, period=None, start_date=None):
     end_date = start_date
     period = "Period {0}".format(len(
         self.targets)) if period is None else period
     if start_date is not None:
         end_date = self.DATE_FUNCS[indicator.target_frequency](start_date)
     target = i_factories.PeriodicTargetFactory(indicator=indicator,
                                                period=period,
                                                target=target,
                                                start_date=start_date,
                                                end_date=end_date)
     self.targets.append(target)
     return target
 def get_targets(self, indicator, target_values):
     targets = []
     for period, target_value in zip(
             self.program.get_periods_for_frequency(
                 self.indicator_frequency), target_values):
         targets.append(
             i_factories.PeriodicTargetFactory(
                 start_date=period['start'],
                 end_date=period['end'],
                 customsort=period['customsort'],
                 target=target_value,
                 indicator=indicator))
     return targets