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