Ejemplo n.º 1
0
 def post(self, request):
     serializer = RequestSerializer(data=request.data)
     if serializer.is_valid():
         return Response(get_airmasses_for_request_at_sites(
             serializer.validated_data, is_staff=request.user.is_staff
         ))
     else:
         return Response(serializer.errors)
 def post(self, request):
     request_serializer = self.get_request_serializer(data=request.data)
     if request_serializer.is_valid():
         airmass_data = get_airmasses_for_request_at_sites(
             request_serializer.validated_data,
             is_staff=request.user.is_staff)
         return Response(airmass_data)
     else:
         return Response(request_serializer.errors)
    def test_airmass_calculation(self):
        airmasses = get_airmasses_for_request_at_sites(self.request.as_dict())

        # Should be no data betwee 3:30AM and 18:30PM acording to pure rise set for this target, so verify that
        expected_null_range = (datetime(2016, 10, 1, 3, 30, 0), datetime(2016, 10, 1, 18, 30, 0))

        for airmass_time in airmasses['airmass_data']['tst']['times']:
            atime = datetime.strptime(airmass_time, '%Y-%m-%dT%H:%M')
            if atime > expected_null_range[0] and atime < expected_null_range[1]:
                self.fail("Should not get airmass ({}) within range {}".format(atime, expected_null_range))
Ejemplo n.º 4
0
 def test_satellite_target_types_airmass_calc_is_empty(self):
     self.configuration.target.type = 'SATELLITE'
     self.configuration.target.altitude = 90
     self.configuration.target.azimuth = 0
     self.configuration.target.diff_altitude_rate = 0.01
     self.configuration.target.diff_azimuth_rate = 0.01
     self.configuration.target.diff_epoch = 15000
     self.configuration.target.diff_altitude_acceleration = 0.001
     self.configuration.target.diff_azimuth_acceleration = 0.001
     self.configuration.target.save()
     airmasses = get_airmasses_for_request_at_sites(self.request.as_dict())
     self.assertFalse(airmasses['airmass_data'])
    def test_airmass_for_multiple_targets_averaged(self):
        request_dict = self.request.as_dict()
        airmasses = get_airmasses_for_request_at_sites(request_dict)

        # now create get the intervals for a request with the second target
        configuration2 = deepcopy(request_dict['configurations'][0])
        configuration2['target']['ra'] = 85.0  # change the RA so the target has different visibility
        request_dict2 = deepcopy(request_dict)
        request_dict2['configurations'][0] = configuration2
        airmasses2 = get_airmasses_for_request_at_sites(request_dict2)

        # now get the intervals for both targets combined in the request and verify they are intersected
        request_dict3 = deepcopy(request_dict)
        request_dict3['configurations'].append(configuration2)
        airmasses_combined = get_airmasses_for_request_at_sites(request_dict3)

        # The first few intervals should at least match up in time, so compare those
        for i in range(4):
            self.assertNotEqual(airmasses['airmass_data']['tst']['airmasses'][i], airmasses2['airmass_data']['tst']['airmasses'][i])
            average_airmass = (airmasses['airmass_data']['tst']['airmasses'][i] +  airmasses2['airmass_data']['tst']['airmasses'][i]) / 2.0
            self.assertEqual(average_airmass, airmasses_combined['airmass_data']['tst']['airmasses'][i])
        average_airmass_limit = (airmasses['airmass_limit'] + airmasses2['airmass_limit']) / 2.0
        self.assertEqual(average_airmass_limit, airmasses_combined['airmass_limit'])
 def airmass(self, request, pk=None):
     return Response(
         get_airmasses_for_request_at_sites(self.get_object().as_dict(),
                                            is_staff=request.user.is_staff))
Ejemplo n.º 7
0
 def test_hour_angle_target_types_airmass_calc_is_empty(self):
     self.configuration.target.type = 'HOUR_ANGLE'
     self.configuration.target.hour_angle = 0
     self.configuration.target.save()
     airmasses = get_airmasses_for_request_at_sites(self.request.as_dict())
     self.assertFalse(airmasses['airmass_data'])
Ejemplo n.º 8
0
    def test_airmass_calculation_empty(self):
        self.location.site = 'cpt'
        self.location.save()
        airmasses = get_airmasses_for_request_at_sites(self.request.as_dict())

        self.assertFalse(airmasses['airmass_data'])