11import os
22import logging
33import pandas as pd
4+ import dask .dataframe as dd
45
56from django .db import transaction
67
78from vast_pipeline .image .main import SelavyImage
8- from vast_pipeline .models import Association , Measurement , Source , RelatedSource
9+ from vast_pipeline .models import (
10+ Association , Measurement , RelatedSource , Run , Source
11+ )
912from .utils import (
1013 get_create_img , get_create_img_band , get_measurement_models
1114)
@@ -147,7 +150,7 @@ def upload_images(paths, config, pipeline_run):
147150 return images , meas_dj_obj
148151
149152
150- def upload_sources (pipeline_run , srcs_df ) :
153+ def upload_sources (pipeline_run : Run , srcs_df : dd . DataFrame ) -> dd . DataFrame :
151154 '''
152155 delete previous sources for given pipeline run and bulk upload
153156 new found sources as well as related sources
@@ -166,7 +169,24 @@ def upload_sources(pipeline_run, srcs_df):
166169 )
167170 logger .debug ('(type, #deleted): %s' , detail_del )
168171
169- bulk_upload_model (srcs_df ['src_dj' ], Source )
172+ dj_src_models = srcs_df ['src_dj' ].compute ()
173+ bulk_upload_model (dj_src_models , Source )
174+
175+ # get db ids for sources and drop the models
176+ srcs_df = srcs_df .drop ('src_dj' , axis = 1 )
177+ dj_src_models = dj_src_models .to_frame ()
178+ dj_src_models ['id' ] = dj_src_models ['src_dj' ].apply (lambda x : x .id )
179+ dj_src_models = dj_src_models .drop ('src_dj' , axis = 1 )
180+
181+ srcs_df = dd .merge (
182+ srcs_df ,
183+ dj_src_models ,
184+ left_index = True ,
185+ right_index = True
186+ )
187+
188+ return srcs_df .persist ()
189+
170190
171191
172192def upload_related_sources (related ):
0 commit comments