示例#1
0
    def update_from_post(self, fdata):
        self.set_base_fields(fdata)
        self.sesshun.save()

        self.sesshun.allotment.psc_time          = fdata.get("PSC_time", 0.0)
        self.sesshun.allotment.total_time        = fdata.get("total_time", 0.0)
        self.sesshun.allotment.max_semester_time = fdata.get("sem_time", 0.0)
        self.sesshun.allotment.grade             = fdata.get("grade", 4.0)
        self.sesshun.allotment.save()
        self.sesshun.save()

        self.sesshun.status.enabled    = self.get_field(fdata, "enabled", True, bool) 
        self.sesshun.status.authorized = self.get_field(fdata, "authorized", True, bool)
        self.sesshun.status.complete   = self.get_field(fdata, "complete", True, bool) 
        self.sesshun.status.backup     = self.get_field(fdata, "backup", True, bool) 
        self.sesshun.status.save()
        self.sesshun.save()

        self.update_bool_obs_param(fdata, "gas"
                                 , "Good Atmospheric Stability"
                                 , self.sesshun.good_atmospheric_stability())
        self.update_bool_obs_param(fdata, "transit", "Transit", self.sesshun.transit())
        self.update_bool_obs_param(fdata, "keyhole", "Keyhole", self.sesshun.keyhole())
        self.update_guaranteed(fdata)
        self.update_time_of_day(fdata, self.sesshun.time_of_day())
        
        self.update_irradiance_threshold(fdata, self.sesshun.irradiance())
        self.update_lst_parameters('lst_ex', fdata.get('lst_ex'))
        self.update_lst_parameters('lst_in', fdata.get('lst_in'))

        self.update_xi_obs_param(fdata, self.sesshun.get_min_eff_tsys_factor())
        self.update_el_limit_obs_param(fdata
                                     , self.sesshun.get_elevation_limit())
        self.update_solar_avoid_obs_param(fdata
                                     , self.sesshun.get_solar_avoidance())
        self.update_source_size_obs_param(fdata
                                     , self.sesshun.get_source_size())
        # here if the param is not being used, we don't want the default
        # values used, but rather None for the 'old_value'
        self.update_tr_err_threshold_obs_param(fdata
                                     , self.sesshun.get_tracking_error_threshold_param())

        proposition = fdata.get("receiver", None)
        if proposition is not None:
            self.sesshun.receiver_group_set.all().delete()
            self.save_receivers(proposition)

        systemName = fdata.get("coord_mode", "J2000")
        system = System.objects.get(name = systemName)

        h_axis = fdata.get("source_h", None)
        v_axis = fdata.get("source_v", None)

        try:
            t            = self.sesshun.target
            t.system     = system
            t.source     = fdata.get("source", None)
            if h_axis is not None:
                t.horizontal  = TimeAgent.deg2rad(float(h_axis)) \
                                if systemName == 'Galactic' \
                                else TimeAgent.hr2rad(float(h_axis))
            t.vertical = TimeAgent.deg2rad(float(v_axis)) if v_axis is not None else t.vertical
            t.save()
        except Target.DoesNotExist:
            self.create_target(fdata)

        self.sesshun.save()