def get_or_create_storage_file(node, path, **kwargs): """Get or create `OsfStorageGuidFile` record. Used instead of `OsfStorageGuidFile#get_or_create` to permit setting additional fields on the created object. """ try: return OsfStorageGuidFile.find_one( Q('node', 'eq', node) & Q('path', 'eq', path)) except modm_errors.ModularOdmException as error: obj = OsfStorageGuidFile(node=node, path=path, **kwargs) obj.save() return obj
def get_or_create_storage_file(node, path, **kwargs): """Get or create `OsfStorageGuidFile` record. Used instead of `OsfStorageGuidFile#get_or_create` to permit setting additional fields on the created object. """ try: return OsfStorageGuidFile.find_one( Q('node', 'eq', node) & Q('path', 'eq', path) ) except modm_errors.ModularOdmException as error: obj = OsfStorageGuidFile(node=node, path=path, **kwargs) obj.save() return obj
def test_migrate(self): # Sanity check for obj in self.legacy_objs: guid_obj = Guid.load(obj._id) assert_equal(guid_obj.referent, obj) nobjs = OsfStorageGuidFile.find().count() main(dry_run=False) Guid._clear_caches() for obj in self.legacy_objs: guid_obj = Guid.load(obj._id) assert_not_equal(guid_obj.referent, obj) assert_true(isinstance(guid_obj.referent, OsfStorageGuidFile)) assert_equal(guid_obj.referent.node, self.project) assert_equal(guid_obj.referent.path, obj.name) assert_equal(guid_obj.referent._id, obj._id) assert_equal(OsfStorageGuidFile.find().count(), nobjs + 3) # Test idempotence main(dry_run=False) assert_equal(OsfStorageGuidFile.find().count(), nobjs + 3)
def clear_guids(self): OsfGuidFile.remove() OsfStorageGuidFile.remove()