@@ -170,16 +170,26 @@ def _migrate_sciobj(self):
170
170
revision_list = self ._get_revision_list ()
171
171
# revision_list = self._load_json(UNSORTED_CHAINS_PATH)
172
172
# self._dump_json(revision_list, UNSORTED_CHAINS_PATH)
173
- obsoletes_pid_list = []
174
- obsoleted_by_pid_list = []
175
- for pid , sid , obsoletes_pid , obsoleted_by_pid in revision_list :
176
- obsoletes_pid_list .append ((pid , obsoletes_pid ))
177
- obsoleted_by_pid_list .append ((pid , obsoleted_by_pid ))
178
- topo_revision_list = d1_common .revision .topological_sort (
179
- obsoletes_pid_list , self ._events , UNCONNECTED_CHAINS_PATH
173
+ obsoletes_dict = d1_common .revision .revision_list_to_obsoletes_dict (
174
+ revision_list
180
175
)
181
- self ._create_sciobj (topo_revision_list )
182
- self ._update_obsoleted_by (obsoleted_by_pid_list )
176
+ topo_list , unconnected_dict = d1_common .revision .topological_sort (
177
+ obsoletes_dict
178
+ )
179
+ #
180
+ # obsoletes_pid_list = []
181
+ # obsoleted_by_pid_list = []
182
+ # for pid, sid, obsoletes_pid, obsoleted_by_pid in revision_list:
183
+ # obsoletes_pid_list.append((pid, obsoletes_pid))
184
+ # obsoleted_by_pid_list.append((pid, obsoleted_by_pid))
185
+ # topo_list = d1_common.revision.topological_sort(
186
+ # obsoletes_pid_list
187
+ # )
188
+ self ._create_sciobj (topo_list )
189
+ obsoleted_by_dict = d1_common .revision .revision_list_to_obsoleted_by_dict (
190
+ revision_list
191
+ )
192
+ self ._update_obsoleted_by (obsoleted_by_dict )
183
193
184
194
def _get_revision_list (self ):
185
195
revision_list = []
@@ -202,9 +212,9 @@ def _get_revision_list(self):
202
212
revision_list .append (d1_common .revision .get_identifiers (sysmeta_pyxb ))
203
213
return revision_list
204
214
205
- def _create_sciobj (self , topo_revision_list ):
206
- n = len (topo_revision_list )
207
- for i , pid in enumerate (topo_revision_list ):
215
+ def _create_sciobj (self , topo_list ):
216
+ n = len (topo_list )
217
+ for i , pid in enumerate (topo_list ):
208
218
# noinspection SqlResolve
209
219
sciobj_row = self ._db .run (
210
220
'select * from mn_scienceobject where pid = %s;' ,
@@ -222,9 +232,9 @@ def _create_sciobj(self, topo_revision_list):
222
232
)
223
233
d1_gmn .app .sysmeta .create_or_update (sysmeta_pyxb , sciobj_row ['url' ])
224
234
225
- def _update_obsoleted_by (self , obsoleted_by_pid_list ):
226
- n = len (obsoleted_by_pid_list )
227
- for i , pid_tup in enumerate (obsoleted_by_pid_list ):
235
+ def _update_obsoleted_by (self , obsoleted_by_dict ):
236
+ n = len (obsoleted_by_dict )
237
+ for i , pid_tup in enumerate (obsoleted_by_dict . items () ):
228
238
pid , obsoleted_by_pid = pid_tup
229
239
if obsoleted_by_pid is not None :
230
240
if d1_gmn .app .sysmeta .is_did (pid ) and d1_gmn .app .sysmeta .is_did (
0 commit comments