diff --git a/bricktracker/metadata_list.py b/bricktracker/metadata_list.py index 44bf18f..13b9629 100644 --- a/bricktracker/metadata_list.py +++ b/bricktracker/metadata_list.py @@ -3,7 +3,7 @@ from typing import List, overload, Self, Type, TypeVar from flask import url_for -from .exceptions import NotFoundException +from .exceptions import ErrorException, NotFoundException from .fields import BrickRecordFields from .record_list import BrickRecordList from .set_owner import BrickSetOwner @@ -113,12 +113,17 @@ class BrickMetadataList(BrickRecordList[T]): # Grab a specific status @classmethod - def get(cls, id: str, /, *, allow_none: bool = False) -> T: + def get(cls, id: str | None, /, *, allow_none: bool = False) -> T: new = cls.new() - if allow_none and id == '': + if allow_none and (id == '' or id is None): return new.model() + if id is None: + raise ErrorException('Cannot get {kind} with no ID'.format( + kind=new.kind.capitalize() + )) + if id not in new.mapping: raise NotFoundException( '{kind} with ID {id} was not found in the database'.format(