flask_crud_app/definitions/attribute.py

109 lines
5.6 KiB
Python

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]