Replace these warning strings with proper exception classes.
This commit is contained in:
parent
81640102d5
commit
b3ed94c22b
4 changed files with 39 additions and 21 deletions
|
@ -214,15 +214,6 @@ ALLOWED_ORDERBY_COLUMNS = {
|
|||
'width',
|
||||
}
|
||||
|
||||
# Errors and warnings ##############################################################################
|
||||
|
||||
WARNING_MINMAX_INVALID = 'Field "{field}": "{value}" is not a valid request. Ignored.'
|
||||
WARNING_ORDERBY_INVALID = 'Invalid orderby request "{request}". Ignored.'
|
||||
WARNING_ORDERBY_BADCOL = '"{column}" is not a sorting option. Ignored.'
|
||||
WARNING_ORDERBY_BADDIRECTION = '''
|
||||
You can\'t order "{column}" by "{direction}". Defaulting to descending.
|
||||
'''
|
||||
|
||||
# Janitorial stuff #################################################################################
|
||||
|
||||
FILENAME_BADCHARS = '\\/:*?<>|"'
|
||||
|
|
|
@ -187,6 +187,19 @@ class FeatureDisabled(EtiquetteException):
|
|||
'''
|
||||
error_message = 'This feature has been disabled. Requires {requires}.'
|
||||
|
||||
class MinMaxInvalid(EtiquetteException):
|
||||
'''
|
||||
For when the user searches for e.g. width=a-b but the a-b can't be parsed.
|
||||
If the values can be parsed but are backward, use MinMaxOutOfOrder.
|
||||
'''
|
||||
error_message = 'Field "{field}": "{value}" is not a valid request.'
|
||||
|
||||
class MinMaxOutOfOrder(EtiquetteException):
|
||||
'''
|
||||
For when a requested minmax range (a, b) has b > a
|
||||
'''
|
||||
error_message = 'Range "{range}": minimum "{min}" and maximum "{max}" are out of order.'
|
||||
|
||||
class NoClosestPhotoDB(EtiquetteException):
|
||||
'''
|
||||
For calls to PhotoDB.closest_photodb where none exists between cwd and
|
||||
|
@ -207,8 +220,25 @@ class NotExclusive(EtiquetteException):
|
|||
'''
|
||||
error_message = 'One and only one of {} must be passed.'
|
||||
|
||||
class OutOfOrder(EtiquetteException):
|
||||
class OrderByBadColumn(EtiquetteException):
|
||||
'''
|
||||
For when a requested minmax range (a, b) has b > a
|
||||
For when the user tries to orderby a column that does not exist or is
|
||||
not allowed.
|
||||
'''
|
||||
error_message = 'Range "{range}": minimum "{min}" and maximum "{max}" are out of order.'
|
||||
error_message = '"{column}" is not a sortable column.'
|
||||
|
||||
class OrderByBadDirection(EtiquetteException):
|
||||
'''
|
||||
For when the user tries to orderby a direction that is not asc or desc.
|
||||
'''
|
||||
error_message = 'You can\'t order "{column}" by "{direction}". Should be asc or desc.'
|
||||
|
||||
class OrderByInvalid(EtiquetteException):
|
||||
'''
|
||||
For when the orderby request cannot be parsed into column and direction.
|
||||
For example, it contains too many hyphens like a-b-c.
|
||||
|
||||
If the column and direction can be parsed but are invalid, use
|
||||
OrderByBadColumn or OrderByBadDirection
|
||||
'''
|
||||
error_message = 'Invalid orderby request "{request}".'
|
||||
|
|
|
@ -294,7 +294,7 @@ def hyphen_range(s) -> tuple:
|
|||
high = parse_unit_string(high)
|
||||
|
||||
if low is not None and high is not None and low > high:
|
||||
raise exceptions.OutOfOrder(range=s, min=low, max=high)
|
||||
raise exceptions.MinMaxOutOfOrder(range=s, min=low, max=high)
|
||||
|
||||
return (low, high)
|
||||
|
||||
|
|
|
@ -100,7 +100,8 @@ def minmax(key, value, minimums, maximums, warning_bag=None):
|
|||
|
||||
except ValueError as exc:
|
||||
if warning_bag:
|
||||
warning_bag.add(constants.WARNING_MINMAX_INVALID.format(field=key, value=value))
|
||||
exc = exceptions.MinMaxInvalid(field=key, value=value)
|
||||
warning_bag.add(exc)
|
||||
return
|
||||
else:
|
||||
raise
|
||||
|
@ -320,7 +321,7 @@ def normalize_orderby(orderby, warning_bag=None):
|
|||
direction = 'desc'
|
||||
|
||||
else:
|
||||
exc = ValueError(constants.WARNING_ORDERBY_INVALID.format(request=requested_order))
|
||||
exc = exceptions.OrderByInvalid(request=requested_order)
|
||||
if warning_bag:
|
||||
warning_bag.add(exc)
|
||||
continue
|
||||
|
@ -328,11 +329,7 @@ def normalize_orderby(orderby, warning_bag=None):
|
|||
raise exc
|
||||
|
||||
if direction not in ('asc', 'desc'):
|
||||
message = constants.WARNING_ORDERBY_BADDIRECTION.format(
|
||||
column=column,
|
||||
direction=direction,
|
||||
)
|
||||
exc = ValueError(message)
|
||||
exc = exceptions.OrderByBadDirection(column=column, direction=direction)
|
||||
if warning_bag:
|
||||
warning_bag.add(exc)
|
||||
direction = 'desc'
|
||||
|
@ -340,7 +337,7 @@ def normalize_orderby(orderby, warning_bag=None):
|
|||
raise exc
|
||||
|
||||
if column not in constants.ALLOWED_ORDERBY_COLUMNS:
|
||||
exc = ValueError(constants.WARNING_ORDERBY_BADCOL.format(column=column))
|
||||
exc = exceptions.OrderByBadColumn(column=column)
|
||||
if warning_bag:
|
||||
warning_bag.add(exc)
|
||||
continue
|
||||
|
|
Loading…
Reference in a new issue