Skip to content

Commit

Permalink
Merge pull request #390 from HSF/dev
Browse files Browse the repository at this point in the history
check whether transform exists before creating
  • Loading branch information
wguanicedew authored Jan 31, 2025
2 parents ddfbebf + 8848c9d commit 1d84ade
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
6 changes: 5 additions & 1 deletion main/lib/idds/core/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,11 @@ def update_request_with_transforms(request_id, parameters,

work = tf['transform_metadata']['work']
tf_copy = copy.deepcopy(tf)
tf_id = orm_transforms.add_transform(**tf_copy, session=session)
ret_tf = orm_transforms.get_transform_by_name(request_id=request_id, name=tf['name'], session=session)
if ret_tf is None:
tf_id = orm_transforms.add_transform(**tf_copy, session=session)
else:
tf_id = ret_tf['transform_id']
tf['transform_id'] = tf_id

# work = tf['transform_metadata']['work']
Expand Down
29 changes: 29 additions & 0 deletions main/lib/idds/orm/transforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,35 @@ def get_transform_by_id_status(transform_id, status=None, locking=False, session
raise exceptions.NoObject('transform transform_id: %s cannot be found: %s' % (transform_id, error))


@read_session
def get_transform_by_name(request_id, name, session=None):
"""
Get a transform or raise a NoObject exception.
:param request_id: The request id.
:param name: transform name.
:param locking: the locking status.
:param session: The database session in use.
:raises NoObject: If no request is founded.
:returns: Transform.
"""

try:
query = select(models.Transform).where(models.Transform.request_id == request_id)
query = query.where(models.Transform.name == name)

ret = session.execute(query).fetchone()
if not ret:
return None
else:
return ret[0].to_dict()
except sqlalchemy.orm.exc.NoResultFound as error:
raise exceptions.NoObject(f'transform (request_id: {request_id}, name: {name}) cannot be found: {error}')


@read_session
def get_transforms_with_input_collection(transform_type, transform_tag, coll_scope, coll_name, to_json=False, session=None):
"""
Expand Down

0 comments on commit 1d84ade

Please sign in to comment.