import os from dataclasses import dataclass from pathlib import Path @dataclass class MailConfig: server: str port: int secure: str username: str password: str email: str @dataclass class Cognos7Config: program_dir: str iqd_dir: str models_dir: str cube_dir: str report_dir: str publish_dir: str prot_dir: str def joinpath(path, *other): return str(Path(path).joinpath(*other)).lower() class Config: kunde = "Test" version = "C11" versand_separat = False cognos7: Cognos7Config _cfg = {} def __init__(self, ini="GAPS.ini"): self._cfg = {} self.tools_dir = Path(os.curdir).absolute() self.tasks_dir = str(self.tools_dir.parent).lower() if self.tools_dir.parent.name.lower() != "tasks": # development self.tools_dir = self.tools_dir.joinpath("gctools") self.portal_dir = "c:\\globalcube" if not Path(self.portal_dir).exists(): self.portal_dir = joinpath(self.tools_dir, "Portal") else: base_dir = self.tools_dir.parent.parent if base_dir.name.lower() != "globalcube": self.version = "C7" self.portal_dir = str(base_dir) self.system_dir = joinpath(self.portal_dir, "System") self.tasks_dir = joinpath(self.portal_dir, "Tasks") self.xml_dir = joinpath(self.tasks_dir, "config") self.log_dir = joinpath(self.tasks_dir, "logs") if ":" not in ini: ini = joinpath(self.tasks_dir, ini) with open(ini, "r") as stream: for line in stream.readlines(): if "=" in line: key, value = line.split("=") self._cfg[key] = value.replace('"', "").replace("\n", "") self.kunde = self._cfg.get("KUNDE", "Test") self.kunde_safe = self.kunde.replace(" ", "-").lower() self.system = self._cfg.get("SYSTEM", "") if self.system != "": self.system_dir = joinpath(self.system_dir, self.system) self.mail_config() self.cognos7_config() self.cognos11_config() def mail_config(self): self.smtp = MailConfig( **{ "server": "mail.global-cube.com", "port": "465", "secure": "ssl", "username": "versand", "password": "y6!avXX3tQvr", "email": "versand+neuer-kunde@global-cube.com", } ) if self._cfg.get("SMTP_HOST", "") != "": secure = {"": "", "N": "", "J": "ssl", "SSL": "ssl", "TLS": "tls"} self.smtp = MailConfig( server=self._cfg.get("SMTP_HOST"), port=self._cfg.get("SMTP_PORT"), secure=secure[self._cfg.get("SMTP_SSL", "")], username=self._cfg.get("SMTP_USER"), password=self._cfg.get("SMTP_PW"), email=self._cfg.get("SMTP_FROM"), ) self.versand_separat = self._cfg.get("VERSAND_SEPARAT") == "J" def cognos7_config(self): self.cognos7 = Cognos7Config( program_dir=self._cfg.get("COGNOS", "c:\\program files (x86)\\cognos\\cer5\\bin"), iqd_dir=joinpath(self.system_dir, "IQD"), models_dir=joinpath(self.system_dir, "Models"), cube_dir=joinpath(self.system_dir, "Cube_out"), report_dir=joinpath(self.system_dir, "Report"), publish_dir=joinpath(self.portal_dir, "Publish", "daten"), prot_dir=joinpath(self.system_dir, "Prot"), ) if not Path(self.cognos7.publish_dir).exists(): self.cognos7.publish_dir = (joinpath(self.portal_dir, "daten"),) def cognos11_config(self): pass