diff --git a/atst/domain/environments.py b/atst/domain/environments.py index ace75a3a..41824dc5 100644 --- a/atst/domain/environments.py +++ b/atst/domain/environments.py @@ -1,4 +1,4 @@ -from sqlalchemy import text +from sqlalchemy import text, func, or_ from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.orm import load_only from typing import List @@ -104,6 +104,12 @@ class Environments(object): .join(CLIN) .filter(CLIN.start_date <= now) .filter(CLIN.end_date > now) + .filter( + or_( + Environment.claimed_until == None, + Environment.claimed_until <= func.now(), + ) + ) # select only these columns .options(load_only("id", "creator_id")) ) diff --git a/atst/models/utils.py b/atst/models/utils.py index bde09c91..a3df73e3 100644 --- a/atst/models/utils.py +++ b/atst/models/utils.py @@ -28,7 +28,7 @@ def claim_for_update(resource, minutes=30): .filter( and_( Model.id == resource.id, - or_(Model.claimed_until == None, Model.claimed_until < func.now()), + or_(Model.claimed_until == None, Model.claimed_until <= func.now()), ) ) .update({"claimed_until": claim_until}, synchronize_session="fetch")