campaign=self.__tree.get("ObsSW").get("Observation").get("Campaign")#todo: check whether this is always available
# todo: ! Figure out what feedback exactly users have available and fix this!
# Possible solution: The specific dataproduct that shall be archived with this SIP has to be provided as an argument
# Another solution: SIPs for all dataproducts are generated in one go. This should be the ones in self.__tree.get("ObsSW").get("Observation").get("Dataproducts")
# !!! This is a dummy!
sip=siplib.Sip(
project_code=campaign.get("name"),
project_primaryinvestigator=campaign.get("PI"),
project_contactauthor=campaign.get("contact"),
project_description=campaign.get("title"),
dataproduct=dataproduct,
project_coinvestigators=[campaign.get("CO_I")]
)
returnsip
def__convert_iso(self,td):
# determine duration in ISO format (couldn't find a nice lib for it)
# specify types and explain purpose of the field (-> ask someone with more astronomical background)
# specify types and explain purpose of the field (-> ask someone with more astronomical background)
...
@@ -77,7 +77,7 @@ class Station():
...
@@ -77,7 +77,7 @@ class Station():
withopen(STATION_CONFIG_PATH,'r')asf:
withopen(STATION_CONFIG_PATH,'r')asf:
forlineinf.readlines():
forlineinf.readlines():
ifline.strip():
ifline.strip():
field_coords=eval("dict("+line+")")
field_coords=eval("dict("+line+")")# literal_eval does not accept dict definition via constructor. Make sure config file is not writable to prevent code execution!
fortypeinantennafieldtypes:
fortypeinantennafieldtypes:
iffield_coords["name"]==name+"_"+type:
iffield_coords["name"]==name+"_"+type:
__afield=AntennafieldXYZ(
__afield=AntennafieldXYZ(
...
@@ -537,13 +537,15 @@ class BeamFormedDataProduct():
...
@@ -537,13 +537,15 @@ class BeamFormedDataProduct():