from __future__ import annotations import datetime from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from app.db_sql import redis_lookup_id_random, sql_insert, sql_select from app.lib_general import log, logging from app.methods.address_methods import load_address_obj from app.methods.contact_methods import create_contact_obj, load_contact_obj from app.models.organization_models import Organization_Base # ### BEGIN ### API Organization Methods ### load_organization_obj() ### def load_organization_obj(organization_id:int|str, inc_contact:bool=False, inc_address:bool=False) -> Organization_Base|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if organization_id := redis_lookup_id_random(record_id_random=organization_id, table_name='organization'): pass else: return False if organization_rec := sql_select(table_name='v_organization', record_id=organization_id): #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(organization_rec) if inc_contact: contact_id = organization_rec.get('contact_id', None) if contact_obj_result := load_contact_obj(contact_id=contact_id): contact_obj = contact_obj_result organization_rec['contact'] = contact_obj log.debug(organization_rec) #else: organization_rec['contact'] = None if inc_address: address_id = contact_obj.address_id if address_obj_result := load_address_obj(address_id=address_id): address_obj = address_obj_result organization_rec['contact'].address = address_obj log.debug(organization_rec) #else: organization_rec['contact'].address = None else: return False try: organization_obj = Organization_Base(**organization_rec) log.debug(organization_obj) except ValidationError as e: log.error(e.json()) return False return organization_obj # ### END ### API Organization Methods ### load_organization_obj() ###