first release
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List, Optional
|
||||
|
||||
|
||||
@dataclass
|
||||
class Account:
|
||||
name: str
|
||||
vorname: str
|
||||
emailadresse: str
|
||||
pleskhost: str
|
||||
keriohost: str
|
||||
nextcloudhost: str
|
||||
kerioemailkennwort: str
|
||||
pleskemailkennwort: str
|
||||
nextcloudgruppe: str = ""
|
||||
nextcloudspeicher: Optional[int] = None # GB; None = unlimitiert
|
||||
nextcloudkennwort: str = ""
|
||||
|
||||
@property
|
||||
def vollname(self) -> str:
|
||||
return f"{self.vorname} {self.name}".strip()
|
||||
|
||||
@property
|
||||
def nextcloud_username(self) -> str:
|
||||
return derive_nc_username(self.vorname, self.name)
|
||||
|
||||
|
||||
def derive_nc_username(vorname: str, name: str) -> str:
|
||||
"""vorname.nachname, lowercase, Umlaute transliteriert, sichere Zeichen."""
|
||||
s = f"{vorname.strip().lower()}.{name.strip().lower()}"
|
||||
s = (s.replace("ä", "ae").replace("ö", "oe")
|
||||
.replace("ü", "ue").replace("ß", "ss"))
|
||||
out = []
|
||||
for ch in s:
|
||||
if ch.isalnum() or ch in "._-":
|
||||
out.append(ch)
|
||||
else:
|
||||
out.append("-")
|
||||
return "".join(out).strip("-.")
|
||||
|
||||
|
||||
@dataclass
|
||||
class StepResult:
|
||||
service: str
|
||||
status: str # "angelegt" | "übersprungen" | "Fehler"
|
||||
detail: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class AccountResult:
|
||||
account: Account
|
||||
steps: List[StepResult] = field(default_factory=list)
|
||||
|
||||
@property
|
||||
def has_errors(self) -> bool:
|
||||
return any(s.status == "Fehler" for s in self.steps)
|
||||
Reference in New Issue
Block a user