Beispiel #1
0
 def test_no_iterations_completed(self):
     iteration = 10
     days = 7
     for i in range(1, iteration + 1):
         for d in range(1, days + 1):
             DailyControls.objects.create(iteration=i, day=d, last_day=False)
     self.assertEqual(iterations_complete(), 0)
Beispiel #2
0
 def test_two_iterations_completed_outbreak_end(self):
     self.settings.stop_criteria = "outbreak-end"
     self.settings.save()
     iteration = 10
     days = 7
     for i in range(1, iteration + 1):
         for d in range(1, days + 1):
             DailyControls.objects.create(iteration=i, day=d)
         if i <= 4:
             DailyControls.objects.create(iteration=i, day=8, outbreakDuration=8, last_day=True)
     self.assertEqual(iterations_complete(), 4)
Beispiel #3
0
def simulation_status(request):
    output_settings = OutputSettings.objects.get()
    status = {
        'is_simulation_stopped': is_simulation_stopped(),
        'simulation_has_started': SmSession.objects.get().simulation_has_started,
        'iterations_total': output_settings.iterations,
        'iterations_started': len(list_of_iterations()),
        'iterations_completed': iterations_complete(),
        'iteration_text': mark_safe(SmSession.objects.get().iteration_text),
    }
    return JsonResponse(status)
Beispiel #4
0
 def test_two_iterations_completed_stop_days(self):
     self.settings.stop_criteria = "stop-days"
     self.settings.days = 8
     self.settings.save()
     iteration = 10
     days = 7
     for i in range(1, iteration + 1):
         for d in range(1, days + 1):
             DailyControls.objects.create(iteration=i, day=d)
         if i <= 2:
             DailyControls.objects.create(iteration=i, day=8, last_day=True)
     self.assertEqual(iterations_complete(), 2)
Beispiel #5
0
 def test_two_iterations_completed_first_detection(self):
     self.settings.stop_criteria = "first-detection"
     self.settings.save()
     pigs, created = ProductionType.objects.get_or_create(name="pig")
     cats, created = ProductionType.objects.get_or_create(name="cat")
     iteration = 10
     days = 7
     for i in range(1, iteration + 1):
         for d in range(1, days + 1):
             DailyControls.objects.create(iteration=i, day=d)
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=None)
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=pigs)
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=cats)
         if i <= 6:
             DailyControls.objects.create(iteration=i, day=8, diseaseDuration=8, last_day=True)
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=None, firstDetection=1, last_day=True)
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=pigs, firstDetection=1, last_day=True) # first detection happened in pigs
             DailyByProductionType.objects.create(iteration=i, day=d, production_type=cats, last_day=True)
     self.assertEqual(iterations_complete(), 6)
Beispiel #6
0
def results_context(request):
    context = {}
    
    if not request.is_ajax() and ('results/' in request.path or 'setup/' in request.path):  # results specific context
        session = SmSession.objects.get()
        context.update({'simulation_has_started': session.simulation_has_started,
                        'outputs_exist': outputs_exist(),
                        'results_progress': iteration_progress() * 100,})

        try:
            version = ResultsVersion.objects.all().first().__str__()  # singleton doesn't always work on this model (legacy)
        except:
            version = "No version available"
        context.update({
                        'is_simulation_running': is_simulation_running(),
                        'is_simulation_stopped': is_simulation_stopped(),
                        'iterations_completed': iterations_complete(),
                        'version_number': version
    
        })
        context.update(excluded_headers())

    return context