| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import csv
- from dataclasses import dataclass
- @dataclass
- class FilterConfig:
- name: str
- text: str
- filter_type: str
- width: str
- key_column: str
- value_column: str
- sort_column: str
- visible: bool = True
- default_value: str = ""
- options: list[dict[str, str]] | None = None
- current_value: str | None = None
- @property
- def query_param(self) -> str:
- if self.current_value is None or self.current_value == "":
- if self.default_value is None or self.default_value == "":
- return None
- self.current_value = self.default_value
- if self.filter_type == "date":
- if "bis" in self.name.lower():
- return f" [{self.key_column}] <= '{self.current_value}' "
- return f" [{self.key_column}] >= '{self.current_value}' "
- # if self.filter_type == "select":
- # return f"{self.key_column} IN ({self.current_value})"
- return f" [{self.key_column}] LIKE '%{self.current_value}%' "
- @staticmethod
- def from_dict(
- name: str,
- filter_type: str,
- width: str,
- text: str,
- key_column: str,
- value_column: str,
- sort_column: str,
- default_value: str,
- ) -> "FilterConfig":
- if filter_type not in ["text", "select", "date", "hidden"]:
- filter_type = "text"
- if width not in ["1", "2", "3", "4"]:
- width = "2"
- if not text:
- text = name
- if not key_column:
- key_column = name
- if not value_column:
- value_column = key_column
- if not sort_column:
- sort_column = key_column
- if not default_value:
- default_value = ""
- return FilterConfig(
- name=name,
- text=text,
- filter_type=filter_type,
- width=width,
- key_column=key_column,
- value_column=value_column,
- sort_column=sort_column,
- default_value=default_value,
- )
- filter_type_option = {
- "text": "text",
- "select": "selectedOptionValue",
- "date": "selectedDate",
- "hidden": "selectedOptionValue",
- }
- def import_filter_config() -> list[FilterConfig]:
- res = []
- with open(
- "templates\\forderungen\\liste\\config\\liste_filter.csv", "r", newline="", encoding="latin-1"
- ) as csvfile:
- reader = csv.DictReader(csvfile, delimiter=";")
- for row in reader:
- config = FilterConfig.from_dict(*row.values())
- res.append(config)
- return res
|