Skip to content
Snippets Groups Projects

Fix modify_site workflow where a site was modified to contain the same information as before

Merged Karel van Klink requested to merge feature/update-modify-site into develop
4 files
+ 94
51
Compare changes
  • Side-by-side
  • Inline
Files
4
"""An input field that must be unique in the database."""
"""An input field that must be unique in the database."""
 
from functools import partial
from typing import Annotated, TypeVar
from typing import Annotated, TypeVar
from pydantic import AfterValidator
from pydantic import AfterValidator
from pydantic_core.core_schema import ValidationInfo
from pydantic_core.core_schema import ValidationInfo
 
from pydantic_forms.types import UUIDstr
from gso.services import subscriptions
from gso.services import subscriptions
T = TypeVar("T")
T = TypeVar("T")
def validate_field_is_unique(value: T, info: ValidationInfo) -> T:
def validate_field_is_unique(subscription_id: UUIDstr, value: T, info: ValidationInfo) -> T:
"""Validate that a field is unique."""
"""Validate that a field is unique."""
if len(subscriptions.get_active_subscriptions_by_field_and_value(str(info.field_name), str(value))) > 0:
matched_subscriptions = subscriptions.get_active_subscriptions_by_field_and_value(str(info.field_name), str(value))
 
matched_subscriptions = list(
 
filter(lambda match: str(match.subscription_id) != subscription_id, matched_subscriptions)
 
)
 
if len(matched_subscriptions) > 0:
msg = f"{info.field_name} must be unique"
msg = f"{info.field_name} must be unique"
raise ValueError(msg)
raise ValueError(msg)
return value
return value
UniqueField = Annotated[T, AfterValidator(validate_field_is_unique)]
UniqueField = Annotated[T, AfterValidator(partial(validate_field_is_unique, ""))]
Loading