Skip to content
Snippets Groups Projects
Commit 828c1357 authored by Hakan Calim's avatar Hakan Calim Committed by Neda Moeini
Browse files

NAT-328: add validator with regular expression for validate site name

parent 57139e29
No related branches found
No related tags found
1 merge request!97Feature/nat 328 site names should be validated
import re
from orchestrator.forms import FormPage from orchestrator.forms import FormPage
from orchestrator.targets import Target from orchestrator.targets import Target
from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUIDstr from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUIDstr
...@@ -42,10 +43,27 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: # noqa: C ...@@ -42,10 +43,27 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: # noqa: C
validate_country_code(country_code) validate_country_code(country_code)
return country_code return country_code
@validator("site_name", "site_internal_id", "site_bgp_community_id", allow_reuse=True) @validator("site_internal_id", "site_bgp_community_id", allow_reuse=True)
def validate_unique_fields(cls, value: str, field: ModelField) -> str | int: def validate_unique_fields(cls, value: str, field: ModelField) -> str | int:
return validate_site_fields_is_unique(field.name, value) return validate_site_fields_is_unique(field.name, value)
@validator("site_name", allow_reuse=True)
def site_name_must_be_valid(cls, site_name: str) -> str:
"""Validate the site name.
The site name must consist of three uppercase letters (A-Z) followed
by an optional single digit (0-9).
"""
validate_site_fields_is_unique("site_name", site_name)
pattern = re.compile(r"^[A-Z]{3}[0-9]?$")
if pattern.match(site_name):
return site_name
else:
raise ValueError(
"Enter a valid site name. It must consist of three uppercase letters (A-Z) followed by an optional"
" single digit (0-9)."
)
user_input = yield CreateSiteForm user_input = yield CreateSiteForm
return user_input.dict() return user_input.dict()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment