@@ -1301,7 +1301,7 @@ def upgrade_to_40():
1301
1301
cursor = config .db .acquisitions .find ({'timestamp' :{'$type' :'string' }})
1302
1302
process_cursor (cursor , upgrade_to_40_closure )
1303
1303
1304
- def upgrade_to_40_closure (cont , cont_name ):
1304
+ def upgrade_files_to_40 (cont , cont_name ):
1305
1305
"""
1306
1306
if the file has a modality, we try to find a matching classification
1307
1307
key and value for each measurement in the modality's classification map
@@ -1350,6 +1350,21 @@ def upgrade_to_40_closure(cont, cont_name):
1350
1350
1351
1351
return True
1352
1352
1353
+ def upgrade_rules_to_40 (rule ):
1354
+
1355
+ def adjust_type (r ):
1356
+ if r ['type' ] == 'file.measurement' :
1357
+ r ['type' ] = 'file.classification'
1358
+ elif r ['type' ] == 'container.has-measurement' :
1359
+ r ['type' ] = 'container.has-classification'
1360
+
1361
+ for r in rule .get ('any' , []):
1362
+ adjust_type (r )
1363
+
1364
+ for r in rule .get ('all' , []):
1365
+ adjust_type (r )
1366
+
1367
+ config .db .project_rules .replace_one ({'_id' : rule ['_id' ]}, rule )
1353
1368
1354
1369
def upgrade_to_40 ():
1355
1370
"""
@@ -1360,7 +1375,17 @@ def upgrade_to_40():
1360
1375
for cont_name in ['groups' , 'projects' , 'collections' , 'sessions' , 'acquisitions' , 'analyses' ]:
1361
1376
1362
1377
cursor = config .db [cont_name ].find ({'files.measurements' : {'$exists' : True }})
1363
- process_cursor (cursor , upgrade_to_40_closure , context = cont_name )
1378
+ process_cursor (cursor , upgrade_files_to_40 , context = cont_name )
1379
+
1380
+
1381
+ cursor = config .db .project_rules .find ({'$or' : [
1382
+ {'all.type' : {'$in' : ['file.measurement' , 'container.has-measurement' ]}},
1383
+ {'any.type' : {'$in' : ['file.measurement' , 'container.has-measurement' ]}}
1384
+ ]})
1385
+ process_cursor (cursor , upgrade_rules_to_40 )
1386
+
1387
+
1388
+
1364
1389
1365
1390
1366
1391
0 commit comments