You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.6 KiB

from typing import Any, Dict
class FileImportException(Exception):
def dict(self) -> Dict[str, Any]:
raise NotImplementedError()
class FileParseException(FileImportException):
def __init__(self, filename: str, line_num: int, message: str):
self.filename = filename
self.line_num = line_num
self.message = message
def __str__(self):
return f"ParseError: You cannot parse line {self.line_num} in {self.filename}: {self.message}"
def dict(self):
return {"filename": self.filename, "line": self.line_num, "message": self.message}
class MaximumFileSizeException(FileImportException):
def __init__(self, filename: str, max_size: int):
self.filename = filename
self.max_size = max_size
def __str__(self):
return f"The maximum file size that can be uploaded is {self.max_size/1024/1024} MB"
def dict(self):
return {"filename": self.filename, "line": -1, "message": str(self)}
class FileTypeException(FileImportException):
def __init__(self, filename: str, filetype: str, allowed_types=None):
self.filename = filename
self.filetype = filetype
self.allowed_types = allowed_types
def __str__(self):
return f"The file type {self.filetype} is unexpected. Expected: {self.allowed_types}"
def dict(self):
return {"filename": self.filename, "line": -1, "message": str(self)}
class FileFormatException(FileImportException):
def __init__(self, file_format: str):
self.file_format = file_format
def dict(self):
message = f"Unknown file format: {self.file_format}"
return {"message": message}