5353 "nested" : fields .Boolean (load_default = False ),
5454}
5555
56-
5756# Individual resource views
5857
5958
@@ -191,12 +190,12 @@ def insert_data(self, id, data):
191190 return data
192191
193192 @classmethod
194- def _load_from_source (cls , source , source_id ):
193+ def _load_from_source (cls , source , source_id , data = None ):
195194 if source == "neurostore" :
196- return cls .load_from_neurostore (source_id )
195+ return cls .load_from_neurostore (source_id , data )
197196
198197 @classmethod
199- def load_from_neurostore (cls , source_id ):
198+ def load_from_neurostore (cls , source_id , data = None ):
200199 annotation = cls ._model .query .filter_by (id = source_id ).first_or_404 ()
201200 parent_source_id = annotation .source_id
202201 parent_source = annotation .source
@@ -418,16 +417,16 @@ def serialize_records(self, records, args, exclude=tuple()):
418417 return super ().serialize_records (records , args , exclude )
419418
420419 @classmethod
421- def _load_from_source (cls , source , source_id ):
420+ def _load_from_source (cls , source , source_id , data = None ):
422421 if source == "neurostore" :
423- return cls .load_from_neurostore (source_id )
422+ return cls .load_from_neurostore (source_id , data )
424423 elif source == "neurovault" :
425- return cls .load_from_neurovault (source_id )
424+ return cls .load_from_neurovault (source_id , data )
426425 elif source == "pubmed" :
427- return cls .load_from_pubmed (source_id )
426+ return cls .load_from_pubmed (source_id , data )
428427
429428 @classmethod
430- def load_from_neurostore (cls , source_id ):
429+ def load_from_neurostore (cls , source_id , data = None ):
431430 study = cls ._model .query .filter_by (id = source_id ).first_or_404 ()
432431 parent_source_id = study .source_id
433432 parent_source = study .source
@@ -437,22 +436,26 @@ def load_from_neurostore(cls, source_id):
437436 parent_source = parent .source
438437 parent_source_id = parent .source_id
439438
440- context = {"clone" : True , "nested" : True }
441- schema = cls ._schema (context = context )
442- dump_study = schema .dump (study )
443- data = schema .load (dump_study )
444- data ["source" ] = "neurostore"
445- data ["source_id" ] = source_id
446- data ["source_updated_at" ] = study .updated_at or study .created_at
447- data ["base_study" ] = {"id" : study .base_study_id }
448- return data
439+ update_schema = cls ._schema (context = {"nested" : True })
440+ clone_data = update_schema .load (update_schema .dump (study ))
441+ # update data with new source
442+ clone_data .update (data )
443+
444+ context = {"nested" : True , "clone" : True }
445+ return_schema = cls ._schema (context = context )
446+ clone_data = return_schema .load (return_schema .dump (clone_data ))
447+ clone_data ["source" ] = "neurostore"
448+ clone_data ["source_id" ] = source_id
449+ clone_data ["source_updated_at" ] = study .updated_at or study .created_at
450+ clone_data ["base_study" ] = {"id" : study .base_study_id }
451+ return clone_data
449452
450453 @classmethod
451- def load_from_neurovault (cls , source_id ):
454+ def load_from_neurovault (cls , source_id , data = None ):
452455 pass
453456
454457 @classmethod
455- def load_from_pubmed (cls , source_id ):
458+ def load_from_pubmed (cls , source_id , data = None ):
456459 pass
457460
458461 def pre_nested_record_update (record ):
0 commit comments