Skip to content

Commit 5377d3d

Browse files
committed
Match on metadata fname basename on engine upload
1 parent 5c6e8d4 commit 5377d3d

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

api/placer.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import copy
33
import datetime
44
import dateutil
5+
import os
56
import pymongo
67
import uuid
78
import zipfile
@@ -289,7 +290,7 @@ def process_file_field(self, field, file_attrs):
289290
file_mds = self.metadata.get(self.container_type, {}).get('files', [])
290291

291292
for file_md in file_mds:
292-
if file_md['name'] == file_attrs['name']:
293+
if os.path.basename(file_md['name']) == file_attrs['name']:
293294
file_attrs.update(file_md)
294295
break
295296

@@ -299,8 +300,6 @@ def process_file_field(self, field, file_attrs):
299300
if not job_ticket['success']:
300301
file_attrs['from_failed_job'] = True
301302

302-
file_attrs['name'] = file_attrs['name'].replace(':', '/')
303-
304303
self.save_file(field, file_attrs)
305304
self.saved.append(file_attrs)
306305

@@ -320,7 +319,7 @@ def finalize(self):
320319
file_mds = self.metadata.get(self.container_type, {}).get('files', [])
321320
saved_file_names = [x.get('name') for x in self.saved]
322321
for file_md in file_mds:
323-
if file_md['name'].replace(':', '/') not in saved_file_names:
322+
if file_md['name'] not in saved_file_names:
324323
self.save_file(None, file_md) # save file_attrs update only
325324
self.saved.append(file_md)
326325

tests/integration_tests/python/test_uploads.py

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ def test_acquisition_engine_upload(data_builder, file_form, as_root):
708708
'info': {'test': 'f0'}
709709
},
710710
{
711-
'name': 'folder:two.csv',
711+
'name': 'folder/two.csv',
712712
'type': 'engine type 1',
713713
'info': {'test': 'f1'}
714714
}
@@ -717,7 +717,7 @@ def test_acquisition_engine_upload(data_builder, file_form, as_root):
717717
# engine upload
718718
r = as_root.post('/engine',
719719
params={'level': 'acquisition', 'id': acquisition, 'job': job},
720-
files=file_form('one.csv', 'folder:two.csv', meta=metadata)
720+
files=file_form('one.csv', 'two.csv', meta=metadata)
721721
)
722722
assert r.ok
723723

@@ -747,7 +747,7 @@ def test_acquisition_engine_upload(data_builder, file_form, as_root):
747747
assert a_timestamp == m_timestamp
748748

749749
for mf in metadata['acquisition']['files']:
750-
f = find_file_in_array(mf['name'].replace(':', '/'), a['files'])
750+
f = find_file_in_array(mf['name'], a['files'])
751751
assert mf is not None
752752
assert f['type'] == mf['type']
753753
assert f['info'] == mf['info']
@@ -779,7 +779,7 @@ def test_session_engine_upload(data_builder, file_form, as_root):
779779
'info': {'test': 'f1'}
780780
},
781781
{
782-
'name': 'folder:three.csv',
782+
'name': 'folder/three.csv',
783783
'type': 'engine type 2',
784784
'info': {'test': 'f2'}
785785
}
@@ -789,7 +789,7 @@ def test_session_engine_upload(data_builder, file_form, as_root):
789789

790790
r = as_root.post('/engine',
791791
params={'level': 'session', 'id': session},
792-
files=file_form('one.csv', 'two.csv', 'folder:three.csv', meta=metadata)
792+
files=file_form('one.csv', 'two.csv', 'three.csv', meta=metadata)
793793
)
794794
assert r.ok
795795

@@ -812,11 +812,7 @@ def test_session_engine_upload(data_builder, file_form, as_root):
812812
assert s_timestamp == m_timestamp
813813

814814
for f in s['files']:
815-
if '/' in f['name']:
816-
assert f['name'] == 'folder/three.csv'
817-
mf = find_file_in_array(f['name'].replace('/', ':'), metadata['session']['files'])
818-
else:
819-
mf = find_file_in_array(f['name'], metadata['session']['files'])
815+
mf = find_file_in_array(f['name'], metadata['session']['files'])
820816
assert mf is not None
821817
assert f['type'] == mf['type']
822818
assert f['info'] == mf['info']
@@ -840,7 +836,7 @@ def test_project_engine_upload(data_builder, file_form, as_root):
840836
'info': {'test': 'f1'}
841837
},
842838
{
843-
'name': 'folder:three.csv',
839+
'name': 'folder/three.csv',
844840
'type': 'engine type 2',
845841
'info': {'test': 'f2'}
846842
}
@@ -850,7 +846,7 @@ def test_project_engine_upload(data_builder, file_form, as_root):
850846

851847
r = as_root.post('/engine',
852848
params={'level': 'project', 'id': project},
853-
files=file_form('one.csv', 'two.csv', 'folder:three.csv', meta=metadata)
849+
files=file_form('one.csv', 'two.csv', 'three.csv', meta=metadata)
854850
)
855851
assert r.ok
856852

@@ -862,20 +858,15 @@ def test_project_engine_upload(data_builder, file_form, as_root):
862858
assert p['info'] == metadata['project']['info']
863859

864860
for f in p['files']:
865-
if '/' in f['name']:
866-
assert f['name'] == 'folder/three.csv'
867-
mf = find_file_in_array(f['name'].replace('/', ':'), metadata['project']['files'])
868-
else:
869-
mf = find_file_in_array(f['name'], metadata['project']['files'])
861+
mf = find_file_in_array(f['name'], metadata['project']['files'])
870862
assert mf is not None
871863
assert f['type'] == mf['type']
872864
assert f['info'] == mf['info']
873865

874866

875867
def test_acquisition_file_only_engine_upload(data_builder, file_form, as_root):
876868
acquisition = data_builder.create_acquisition()
877-
file_names = ['one.csv', 'folder:two.csv']
878-
expected_file_names = ['one.csv', 'folder/two.csv']
869+
file_names = ['one.csv', 'two.csv']
879870

880871
r = as_root.post('/engine',
881872
params={'level': 'acquisition', 'id': acquisition},
@@ -885,7 +876,7 @@ def test_acquisition_file_only_engine_upload(data_builder, file_form, as_root):
885876

886877
r = as_root.get('/acquisitions/' + acquisition)
887878
assert r.ok
888-
assert set(f['name'] for f in r.json()['files']) == set(expected_file_names)
879+
assert set(f['name'] for f in r.json()['files']) == set(file_names)
889880

890881

891882
def test_acquisition_subsequent_file_engine_upload(data_builder, file_form, as_root):

0 commit comments

Comments
 (0)