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."""
from functools import partial
from typing import Annotated, TypeVar
from pydantic import AfterValidator
from pydantic_core.core_schema import ValidationInfo
from pydantic_forms.types import UUIDstr
from gso.services import subscriptions
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."""
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"
raise ValueError(msg)
return value
UniqueField = Annotated[T, AfterValidator(validate_field_is_unique)]
UniqueField = Annotated[T, AfterValidator(partial(validate_field_is_unique, ""))]
Loading