From f0cd3f07a179ec21ad5f7cbefe990351e881df77 Mon Sep 17 00:00:00 2001 From: Sebastian Prentice Date: Thu, 14 Nov 2024 12:10:55 +0000 Subject: [PATCH 1/5] change validator to root validator to set last_updated from release_timestamp --- tcsocket/app/validation.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tcsocket/app/validation.py b/tcsocket/app/validation.py index 18f9519..a76c8a5 100644 --- a/tcsocket/app/validation.py +++ b/tcsocket/app/validation.py @@ -3,7 +3,7 @@ from secrets import token_hex from typing import Any, List, Optional -from pydantic import BaseModel, EmailStr, NoneStr, constr, validator +from pydantic import BaseModel, EmailStr, NoneStr, constr, root_validator, validator EXTRA_ATTR_TYPES = 'checkbox', 'text_short', 'text_extended', 'integer', 'stars', 'dropdown', 'datetime', 'date' @@ -141,9 +141,15 @@ class ContractorModel(BaseModel): review_rating: float = None review_duration: int = None - @validator('last_updated', pre=True, always=True) - def set_last_updated(cls, v): - return v or datetime(2016, 1, 1) + @root_validator(pre=True) + def set_last_updated(cls, values): + """get the release_timestamp and save it to the last_updated field""" + + if 'release_timestamp' not in values: + logger.warning('release_timestamp not found in values, setting last_updated to 2016-01-01') + + values['last_updated'] = values.get('release_timestamp', datetime(2016, 1, 1)) + return values class LatitudeModel(BaseModel): latitude: Optional[float] = None From 5bf89b4cc1e90c2430ecc960b6788c16db3176df Mon Sep 17 00:00:00 2001 From: Sebastian Prentice Date: Thu, 14 Nov 2024 12:15:54 +0000 Subject: [PATCH 2/5] fix logger --- tcsocket/app/validation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tcsocket/app/validation.py b/tcsocket/app/validation.py index a76c8a5..179ae37 100644 --- a/tcsocket/app/validation.py +++ b/tcsocket/app/validation.py @@ -1,3 +1,4 @@ +import logging from datetime import datetime from enum import Enum, unique from secrets import token_hex @@ -9,6 +10,7 @@ MISSING = object() +logger = logging.getLogger('socket') @unique class NameOptions(str, Enum): From 614bc02cbd8f5595ae74a17e55204ce5870b0777 Mon Sep 17 00:00:00 2001 From: Sebastian Prentice Date: Thu, 14 Nov 2024 12:18:37 +0000 Subject: [PATCH 3/5] lint --- tcsocket/app/validation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tcsocket/app/validation.py b/tcsocket/app/validation.py index 179ae37..0e87f65 100644 --- a/tcsocket/app/validation.py +++ b/tcsocket/app/validation.py @@ -12,6 +12,7 @@ logger = logging.getLogger('socket') + @unique class NameOptions(str, Enum): first_name = 'first_name' From 096d5921794157b5145fa10a79114fa5c4d2f1ec Mon Sep 17 00:00:00 2001 From: Sebastian Prentice Date: Thu, 14 Nov 2024 12:44:26 +0000 Subject: [PATCH 4/5] use alias instead of root_validator --- tcsocket/app/validation.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/tcsocket/app/validation.py b/tcsocket/app/validation.py index 0e87f65..f3c7e03 100644 --- a/tcsocket/app/validation.py +++ b/tcsocket/app/validation.py @@ -4,7 +4,7 @@ from secrets import token_hex from typing import Any, List, Optional -from pydantic import BaseModel, EmailStr, NoneStr, constr, root_validator, validator +from pydantic import BaseModel, EmailStr, Field, NoneStr, constr, root_validator, validator EXTRA_ATTR_TYPES = 'checkbox', 'text_short', 'text_extended', 'integer', 'stars', 'dropdown', 'datetime', 'date' @@ -139,21 +139,11 @@ class ContractorModel(BaseModel): last_name: constr(max_length=255) = None town: constr(max_length=63) = None country: constr(max_length=63) = None - last_updated: datetime = None + last_updated: datetime = Field(alias='release_timestamp') photo: NoneStr = None review_rating: float = None review_duration: int = None - @root_validator(pre=True) - def set_last_updated(cls, values): - """get the release_timestamp and save it to the last_updated field""" - - if 'release_timestamp' not in values: - logger.warning('release_timestamp not found in values, setting last_updated to 2016-01-01') - - values['last_updated'] = values.get('release_timestamp', datetime(2016, 1, 1)) - return values - class LatitudeModel(BaseModel): latitude: Optional[float] = None longitude: Optional[float] = None From 21ff898383a15a469e8b330d403702a4c22eeaca Mon Sep 17 00:00:00 2001 From: Sebastian Prentice Date: Thu, 14 Nov 2024 13:03:12 +0000 Subject: [PATCH 5/5] remove unused import --- tcsocket/app/validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tcsocket/app/validation.py b/tcsocket/app/validation.py index f3c7e03..207986c 100644 --- a/tcsocket/app/validation.py +++ b/tcsocket/app/validation.py @@ -4,7 +4,7 @@ from secrets import token_hex from typing import Any, List, Optional -from pydantic import BaseModel, EmailStr, Field, NoneStr, constr, root_validator, validator +from pydantic import BaseModel, EmailStr, Field, NoneStr, constr, validator EXTRA_ATTR_TYPES = 'checkbox', 'text_short', 'text_extended', 'integer', 'stars', 'dropdown', 'datetime', 'date'