From 9915c7d9ed6aec2802cc84815d1db0490e7ab5b7 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Sat, 7 Aug 2021 00:04:30 -0400 Subject: [PATCH] Working on orders and products with for_type and for_id. To help link cont_edu and other future product types. --- app/models/order_line_models.py | 19 +++++++++++++++++++ app/models/product_models.py | 15 +++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/app/models/order_line_models.py b/app/models/order_line_models.py index 4510256..341d95f 100644 --- a/app/models/order_line_models.py +++ b/app/models/order_line_models.py @@ -29,6 +29,16 @@ class Order_Line_Base(BaseModel): product_id: Optional[int] product_type_id: Optional[int] product_type: Optional[str] + + + # NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + # NOTE need to check @validator NOTE NOTE NOTE NOTE + for_type: Optional[str] # Copied from the current value in product.for_type + for_id_random: Optional[str] # Copied from the current value in product.for_id_random + for_id: Optional[int] # Copied from the current value in product.for_id + # NOTE!!! Need ot add similar to order_cart_line??? + # NOTE!!! Need to add to the actual order_line (and order_cart_line???) tables! + name: Optional[str] description: Optional[str] quantity: int = Field(0, ge=0, lt=150) @@ -78,6 +88,15 @@ class Order_Line_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product') return None + @validator('for_id', always=True) + def for_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['for_id_random'] and values['for_type']: + return redis_lookup_id_random(record_id_random=values['for_id_random'], table_name=values['for_type']) + return None + class Config: underscore_attrs_are_private = True fields = base_fields diff --git a/app/models/product_models.py b/app/models/product_models.py index 492defc..6784fc9 100644 --- a/app/models/product_models.py +++ b/app/models/product_models.py @@ -25,6 +25,12 @@ class Product_Base(BaseModel): account_id_random: Optional[str] account_id: Optional[int] + # NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE + # NOTE need to check @validator NOTE NOTE NOTE NOTE + for_type: Optional[str] + for_id_random: Optional[str] + for_id: Optional[int] + type_id: Optional[int] type_name: Optional[str] = Field( # alias = 'type' @@ -86,6 +92,15 @@ class Product_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['id_random'], table_name='product') return None + @validator('for_id', always=True) + def for_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['for_id_random'] and values['for_type']: + return redis_lookup_id_random(record_id_random=values['for_id_random'], table_name=values['for_type']) + return None + class Config: underscore_attrs_are_private = True fields = base_fields