Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions src/database/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
DuplicatePrimaryKeyError,
ForeignKeyConstraintError,
)
from schemas.datasets.openml import Feature
from schemas.datasets.openml import DatasetStatus, Feature


async def get(id_: int, connection: AsyncConnection) -> Row | None:
Expand Down Expand Up @@ -103,20 +103,23 @@ async def get_description(
return row.first()


async def get_status(id_: int, connection: AsyncConnection) -> Row | None:
async def get_status(id_: int, connection: AsyncConnection) -> DatasetStatus:
"""Get most recent status for the dataset."""
row = await connection.execute(
text(
"""
SELECT *
row = (
await connection.execute(
text(
"""
SELECT status
FROM dataset_status
WHERE did = :dataset_id
ORDER BY status_date DESC
LIMIT 1
""",
),
parameters={"dataset_id": id_},
)
return row.first()
),
parameters={"dataset_id": id_},
)
).first()
return DatasetStatus(row.status) if row else DatasetStatus.IN_PREPARATION


async def get_latest_processing_update(dataset_id: int, connection: AsyncConnection) -> Row | None:
Expand Down
12 changes: 5 additions & 7 deletions src/routers/openml/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ async def update_dataset_status(
raise DatasetAdminOnlyError(msg)

current_status = await database.datasets.get_status(dataset_id, expdb)
if current_status and current_status.status == status:
if current_status == status:
msg = f"Illegal status transition, requested status {status} matches current status."
raise DatasetStatusTransitionError(msg)

Expand All @@ -376,14 +376,14 @@ async def update_dataset_status(
# - in preparation => deactivated (add a row)
# - active => deactivated (add a row)
# - deactivated => active (delete a row)
if current_status is None or status == DatasetStatus.DEACTIVATED:
if current_status == DatasetStatus.IN_PREPARATION or status == DatasetStatus.DEACTIVATED:
await database.datasets.update_status(
dataset_id,
status,
user_id=user.user_id,
connection=expdb,
)
elif current_status.status == DatasetStatus.DEACTIVATED:
elif current_status == DatasetStatus.DEACTIVATED:
await database.datasets.remove_deactivated_status(dataset_id, expdb)
else:
msg = f"Unknown status transition: {current_status} -> {status}"
Expand All @@ -392,7 +392,7 @@ async def update_dataset_status(
logger.info(
"Dataset {dataset_id} changed from {previous} to {current}",
dataset_id=dataset_id,
previous=current_status.status if current_status else DatasetStatus.IN_PREPARATION,
previous=current_status,
current=status,
)
return {"dataset_id": dataset_id, "status": status}
Expand Down Expand Up @@ -427,8 +427,6 @@ async def get_dataset(
database.datasets.get_status(dataset_id, expdb_db),
)

status_ = DatasetStatus(status.status) if status else DatasetStatus.IN_PREPARATION

description_ = ""
if description:
description_ = description.description.replace("\r", "").strip()
Expand All @@ -446,7 +444,7 @@ async def get_dataset(
return DatasetMetadata(
id=dataset.did,
visibility=dataset.visibility,
status=status_,
status=status,
name=dataset.name,
licence=dataset.licence,
version=dataset.version,
Expand Down
Loading