Skip to content

Commit 1fc9ca5

Browse files
committed
Add logic to allow for database link flags in devsta PV generation
1 parent c9143cf commit 1fc9ca5

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/techui_builder/models.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
""",
4545
re.VERBOSE,
4646
)
47+
# Checks for database link flags, e.g. NPP MS, at the end
48+
_DATABASE_FLAGS_RE = re.compile(
49+
r"(?:PP|NPP)?" + r"(?:[ ]+(?:MS|NMS|MSS|MSI))?$",
50+
re.VERBOSE,
51+
)
4752
_LONG_DOM_RE = re.compile(r"^[a-zA-Z]{2}\d{2}[a-zA-Z]$")
4853
_SHORT_DOM_RE = re.compile(r"^[a-zA-Z]{1}\d{2}(-[0-9]{1})?$")
4954
_OPIS_URL_RE = re.compile(r"^(https:\/\/)?([a-z0-9]{3}-(?:[0-9]-)?opis(?:.[a-z0-9]*)*)")
@@ -99,6 +104,7 @@ class Component(BaseModel):
99104
desc: str | None = None
100105
extras: list[str] | None = None
101106
file: str | None = None
107+
devsta: list[str] | None = None
102108
model_config = ConfigDict(extra="forbid")
103109

104110
@field_validator("prefix")
@@ -119,6 +125,26 @@ def _check_extras(cls, v: list[str]) -> list[str]:
119125
raise ValueError("extras must contain unique items")
120126
return v
121127

128+
@field_validator("devsta")
129+
@classmethod
130+
def _check_devsta(cls, v: list[str]) -> list[str]:
131+
for p in v:
132+
prefix, flags = p.split(" ", 1)
133+
134+
if not _DLS_PREFIX_RE.match(prefix):
135+
raise ValueError(
136+
f"devsta item '{p}' does not match extended DLS prefix pattern"
137+
)
138+
if not _DATABASE_FLAGS_RE.match(flags):
139+
raise ValueError(
140+
f"devsta item '{p}' does have valid database link flags"
141+
)
142+
143+
# ensure unique (schema enforces too)
144+
if len(set(v)) != len(v):
145+
raise ValueError("devsta must contain unique items")
146+
return v
147+
122148
@computed_field
123149
@property
124150
def P(self) -> str | None: # noqa: N802

0 commit comments

Comments
 (0)