@@ -1103,28 +1103,34 @@ def represent_odict(dump, tag, mapping, flow_style=None):
11031103 if hasattr (phase , data_type ):
11041104 data_field = getattr (phase , data_type )
11051105 if data_field :
1106- if data_field .file .name not in list (file_cache .keys ()):
1107- if exclude_datasets_flag :
1108- data_field = getattr (phase , data_type + '_organizer_dataset' )
1109- phase_dict [data_type ] = str (data_field .key )
1110- file_name = "{}_{}.zip" .format (data_type , phase .phasenumber )
1111- file_cache [data_field .name ] = {
1112- 'name' : file_name
1113- }
1106+ file_name_on_storage = getattr (data_field , "name" , None )
1107+ if file_name_on_storage :
1108+ if file_name_on_storage not in file_cache :
1109+ if exclude_datasets_flag :
1110+ data_field = getattr (phase , data_type + '_organizer_dataset' )
1111+ phase_dict [data_type ] = str (data_field .key )
1112+ file_name = "{}_{}.zip" .format (data_type , phase .phasenumber )
1113+ file_cache [data_field .name ] = {
1114+ 'name' : file_name
1115+ }
1116+ else :
1117+ file_name = "{}_{}.zip" .format (data_type , phase .phasenumber )
1118+ phase_dict [data_type ] = file_name
1119+ file_cache [data_field .name ] = {
1120+ 'name' : file_name
1121+ }
1122+ try :
1123+ zip_file .writestr (file_name , data_field .read ())
1124+ except Exception as e :
1125+ logger .warning ("Missing file in storage: %s (%s)" , file_name_on_storage , e )
1126+ continue
11141127 else :
1115- file_name = "{}_{}.zip" .format (data_type , phase .phasenumber )
1116- phase_dict [data_type ] = file_name
1117- file_cache [data_field .file .name ] = {
1118- 'name' : file_name
1119- }
1120- zip_file .writestr (file_name , data_field .read ())
1121- else :
1122- if exclude_datasets_flag :
1123- data_field = getattr (phase , data_type + '_organizer_dataset' )
1124- phase_dict [data_type ] = str (data_field .key )
1125- else :
1126- file_name = file_cache [str (data_field .name )]['name' ]
1127- phase_dict [data_type ] = file_name
1128+ if exclude_datasets_flag :
1129+ data_field = getattr (phase , data_type + '_organizer_dataset' )
1130+ phase_dict [data_type ] = str (data_field .key )
1131+ else :
1132+ file_name = file_cache [str (data_field .name )]['name' ]
1133+ phase_dict [data_type ] = file_name
11281134 except ValueError :
11291135 logger .info ("Failed to retrieve the file." )
11301136 datasets = phase .datasets .all ()
0 commit comments