from datetime import datetime """ class Attribute: def __init__(self, display_name, html_input_type="text", required=False, unique=False, primary=False, regex=None, min=None, max=None, options=None, default_val="", auto_increment=False, index=False, comment="", compareto=None): self.display_name = display_name # Input label or table column header. self.html_input_type = html_input_type # HTML form input type. Determines MySQL data type. self.required = required # HTML form input "required" attribute and MySQL "Not Null" constraint self.unique = unique # MySQL "unique" constraint self.primary = primary # MySQL "primary key" constraint self.regex = regex # Regex for value validation self.min = min # HTML form input "min" attribute. Sets minimum value. self.max = max # HTML form input "max" attribute. Sets maximum value. self.options = options # List of options for "select" inputs self.default_val = default_val # HTML form input "value" attribute. Sets default value. self.auto_increment = auto_increment # bool: MySQL autoincrement self.index = index # bool: MySQL index self.comment = comment # Description text self.compareto = compareto # Compare to another attribute of the item for validation: ["comparison", "referenceattrib"] ##default_val: Optional[str, int, float] = None, # HTML form input "value" attribute. Sets default value. """ # Base Attribute class class Attribute: def __init__(self, display_name: str, # Input label or table column header. html_input_type: str = "text", # HTML form input type. Determines MySQL data type. placeholder: str = "", # HTML form input placeholder. required: bool = False, # HTML form input "required" attribute and MySQL "Not Null" constraint unique: bool = False, # MySQL "unique" constraint primary: bool = False, # MySQL "primary key" constraint index: bool = False, # bool: MySQL index compareto: Optional[List[str]] = None, # Compare to another attribute of the item for validation: ["comparison", "referenceattrib"] title: str ="" # Description text, html "title" attribute ): self.display_name = display_name self.html_input_type = html_input_type self.required = required self.unique = unique self.primary = primary self.default_val = default_val self.index = index self.compareto = compareto self.title = title class textAttribute: def __init__(self, regex: str = None, # Regex for value validation default_val: str = "", # Default value compareto: Optional[List[Tuple[str, str]]] = None, ): self.html_input_type = "text" self.regex = regex self.default_val = default_val class intAttribute: def __init__(self, min_val: int = None, # Min value max_val: int = None, # Max value step_val: int = None, # Increment step default_val: int = None, # Default value auto_increment: bool = False, # bool: MySQL autoincrement compareto: Optional[List[Tuple[str, str]]] = None, ): self.html_input_type = "number" self.min_val = min_val self.max_val = max_val self.step_val = step_val self.default_val = default_val self.auto_increment = auto_increment class floatAttribute: def __init__(self, min_val: float = None, # Min value max_val: float = None, # Max value step_val: float = None, # Increment step default_val: float = None, # Default value auto_increment: bool = False, # bool: MySQL autoincrement compareto: Optional[List[Tuple[str, str]]] = None, ): self.html_input_type = "number" self.min_val = min_val self.max_val = max_val self.step_val = step_val self.default_val = default_val self.auto_increment = auto_increment class dateAttribute: def __init__(self, min_val = None, # Min value max_val = None, # Max value default_val = None, # Default value compareto: Optional[List[Tuple[str, str]]] = None, ): self.html_input_type = "date" self.min_val = datetime.strptime(min_val, "%Y-%m-%d") self.max_val = datetime.strptime(max_val, "%Y-%m-%d") self.default_val = datetime.strptime(default_val, "%Y-%m-%d") class selectAttribute: def __init__(self, options: Optional[List[str]] = None, # List of options default_val: str = None, # Default value ): self.html_input_type = "select" self.options = options self.default_val = default_val if default_val else self.options[0]