Skip to content

Commit 07cbeab

Browse files
committed
Update v1_to_v2 migration for changes in dependencies
1 parent 4935522 commit 07cbeab

File tree

7 files changed

+51
-29
lines changed

7 files changed

+51
-29
lines changed

gmn/src/d1_gmn/app/event_log.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ def _log(pid, request, event, timestamp=None):
3636
"""
3737
ip_address = request.META['REMOTE_ADDR']
3838
user_agent = request.META['HTTP_USER_AGENT']
39-
subject = d1_gmn.app.auth.format_active_subjects()
4039

4140
# Support logging events that are not associated with an object.
4241
object_model = None
@@ -51,7 +50,7 @@ def _log(pid, request, event, timestamp=None):
5150
raise d1_common.types.exceptions.ServiceFailure(0, err_msg)
5251

5352
event_log_model = create_log_entry(
54-
object_model, event, ip_address, user_agent, subject
53+
object_model, event, ip_address, user_agent, request.primary_subject_str
5554
)
5655

5756
# The datetime is an optional parameter. If it is not provided, a

gmn/src/d1_gmn/app/management/commands/import.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,9 @@ def _handle(self):
275275
inc_int=len(revision_list)
276276
)
277277

278-
obsoletes_dict = self._revision_list_to_obsoletes_dict(revision_list)
278+
obsoletes_dict = d1_common.revision.revision_list_to_obsoletes_dict(
279+
revision_list
280+
)
279281
topo_list, unconnected_dict = d1_common.revision.topological_sort(
280282
obsoletes_dict
281283
)
@@ -411,9 +413,3 @@ def _create_source_client(self):
411413
return d1_client.util.get_client_class_by_version_tag(self._api_major)(
412414
self._opt['baseurl'], **self._get_client_args_dict()
413415
)
414-
415-
def _revision_list_to_obsoletes_dict(self, revision_list):
416-
return {
417-
pid: obsoletes_pid
418-
for pid, sid, obsoletes_pid, obsoleted_by_pid in revision_list
419-
}

gmn/src/d1_gmn/app/management/commands/migrate_v1_to_v2.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -170,16 +170,26 @@ def _migrate_sciobj(self):
170170
revision_list = self._get_revision_list()
171171
# revision_list = self._load_json(UNSORTED_CHAINS_PATH)
172172
# 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
180175
)
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)
183193

184194
def _get_revision_list(self):
185195
revision_list = []
@@ -202,9 +212,9 @@ def _get_revision_list(self):
202212
revision_list.append(d1_common.revision.get_identifiers(sysmeta_pyxb))
203213
return revision_list
204214

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):
208218
# noinspection SqlResolve
209219
sciobj_row = self._db.run(
210220
'select * from mn_scienceobject where pid = %s;',
@@ -222,9 +232,9 @@ def _create_sciobj(self, topo_revision_list):
222232
)
223233
d1_gmn.app.sysmeta.create_or_update(sysmeta_pyxb, sciobj_row['url'])
224234

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()):
228238
pid, obsoleted_by_pid = pid_tup
229239
if obsoleted_by_pid is not None:
230240
if d1_gmn.app.sysmeta.is_did(pid) and d1_gmn.app.sysmeta.is_did(

gmn/src/d1_gmn/app/views/external.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,13 +604,17 @@ def put_object(request, old_pid):
604604
)
605605
new_pid = request.POST['newPid']
606606
sysmeta_pyxb.obsoletes = old_pid
607+
608+
# SID
609+
sid = d1_gmn.app.revision.get_sid(sysmeta_pyxb)
610+
d1_gmn.app.views.asserts.is_valid_sid_for_chain(old_pid, sid)
611+
607612
_create(request, sysmeta_pyxb, new_pid)
613+
608614
# The create event for the new object is added in _create(). The update event
609615
# on the old object is added here.
610616
d1_gmn.app.revision.set_revision(old_pid, obsoleted_by_pid=new_pid)
611-
# SID
612-
sid = d1_gmn.app.revision.get_sid(sysmeta_pyxb)
613-
d1_gmn.app.views.asserts.is_valid_sid_for_chain(old_pid, sid)
617+
614618
# d1_gmn.app.revision.add_pid_to_chain(sid, old_pid, new_pid)
615619
# if d1_gmn.app.sysmeta_revision.has_sid(sysmeta_pyxb):
616620
# sid = d1_gmn.app.sysmeta_revision.get_sid(sysmeta_pyxb)

gmn/src/d1_gmn/tests/test_update_with_sid.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def test_1030(self, mn_client_v2):
8888
mn_client_v2, sid=None
8989
)
9090
with pytest.raises(d1_common.types.exceptions.IdentifierNotUnique):
91-
self.update_obj(mn_client_v2, old_pid, sid=other_pid)
91+
self.update_obj(mn_client_v2, old_pid, sid=other_sid)
9292

9393
@responses.activate
9494
def test_1040(self, mn_client_v2):

lib_common/src/d1_common/revision.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,17 @@ def opt(p, a):
9393
sysmeta_pyxb = client.getSystemMetadata(opt(sysmeta_pyxb, 'obsoletedBy'))
9494
chain_pid_list.append(req(sysmeta_pyxb.identifier))
9595
return chain_pid_list
96+
97+
98+
def revision_list_to_obsoletes_dict(revision_list):
99+
return {
100+
pid: obsoletes_pid
101+
for pid, sid, obsoletes_pid, obsoleted_by_pid in revision_list
102+
}
103+
104+
105+
def revision_list_to_obsoleted_by_dict(revision_list):
106+
return {
107+
pid: obsoleted_by_pid
108+
for pid, sid, obsoletes_pid, obsoleted_by_pid in revision_list
109+
}

test_utilities/src/d1_test/test_docs/test_cmd_migrate_v1_to_v2_migrate_v1_to_v2.sample

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ Events:
22
Creating SciObj DB representation: 200
33
Retrieving revision chains: 200
44
Skipped Node registry update on CN because this MN does not appear to be registered in a DataONE environment yet.: 1
5-
Sorting revision chains: 200
65
Updating obsoletedBy: 42
76
Whitelisted subject: 2

0 commit comments

Comments
 (0)