def get_horizontal(self): "Returns the horizontal component in sexigesimal form." if self.horizontal is None: return "" if self.system.name == 'Galactic': return self.get_deg(self.horizontal) horz = TimeAgent.rad2hr(self.horizontal) mins = (horz - int(horz)) * 60 secs = (mins - int(mins)) * 60 if abs(secs - 60.) < 0.1: mins = int(mins) + 1 if abs(mins - 60.) < 0.1: mins = 0.0 horz = int(horz) + 1 secs = 0.0 return "%02i:%02i:%04.1f" % (int(horz), int(mins), secs)
def jsondict(self): irradiance = self.sesshun.irradiance() solarAvoid = self.sesshun.get_solar_avoidance() solarAvoid = None if solarAvoid is None else TimeAgent.rad2deg(solarAvoid) # DB in radians d = {"id" : self.sesshun.id , "pcode" : self.sesshun.project.pcode , "handle" : self.sesshun.toHandle() , "type" : self.sesshun.session_type.type , "science" : self.sesshun.observing_type.type , "total_time" : self.sesshun.allotment.total_time , "PSC_time" : self.sesshun.allotment.psc_time , "sem_time" : self.sesshun.allotment.max_semester_time , "remaining" : 0 if self.sesshun.observing_type.type == "maintenance" \ else TimeAccounting().getTimeRemaining(self.sesshun) , "grade" : self.sesshun.allotment.grade , "orig_ID" : self.sesshun.original_id , "name" : self.sesshun.name , "freq" : self.sesshun.frequency , "req_max" : self.sesshun.max_duration , "req_min" : self.sesshun.min_duration , "between" : self.sesshun.time_between , "enabled" : self.sesshun.status.enabled , "authorized" : self.sesshun.status.authorized , "complete" : self.sesshun.status.complete , "backup" : self.sesshun.status.backup , "guaranteed" : self.sesshun.guaranteed() , "gas" : self.sesshun.good_atmospheric_stability() or False , "transit" : self.sesshun.transit() or False #, "nighttime" : self.sesshun.nighttime() or False , "time_of_day": self.sesshun.get_time_of_day() , "lst_ex" : self.sesshun.get_lst_string('LST Exclude') or "" , "lst_in" : self.sesshun.get_lst_string('LST Include') or "" , "receiver" : self.sesshun.get_receiver_req() , "project_complete" : "Yes" if self.sesshun.project.complete else "No" , "xi_factor" : self.sesshun.get_min_eff_tsys_factor() or 1.0 , "el_limit" : self.sesshun.get_elevation_limit() or None # None is default , "solar_avoid": solarAvoid , "trk_err_threshold" : self.sesshun.get_tracking_error_threshold() , "src_size" : self.sesshun.get_source_size() , "keyhole" : self.sesshun.keyhole() , "irradiance" : 300 if irradiance is None and self.sesshun.observing_type.type == 'continuum' else irradiance } try: target = self.sesshun.target except Target.DoesNotExist: pass else: d.update({"source" : target.source , "coord_mode" : target.system.name , "source_h" : TimeAgent.rad2deg(target.horizontal) \ if target.system.name == 'Galactic' \ else TimeAgent.rad2hr(target.horizontal) , "source_v" : TimeAgent.rad2deg(target.vertical) }) # Remove all None values for k, v in d.items(): if v is None: _ = d.pop(k) return d