Still working on order and orders that are carts

This commit is contained in:
Scott Idem
2022-01-21 16:41:40 -05:00
parent afe44bac89
commit ab0b900721
5 changed files with 95 additions and 2 deletions

View File

@@ -314,6 +314,57 @@ def load_order_obj(
# ### END ### API Order Methods ### load_order_obj() ### # ### END ### API Order Methods ### load_order_obj() ###
# ### BEGIN ### API Order Methods ### get_order_obj_cart_for_person_id_v3() ###
# Updated 2022-01-21
@logger_reset
def get_order_id_cart_for_person_id_v3(
person_id: int|str,
enabled: str = 'enabled', # enabled, disabled, all
limit: int = 5,
offset: int = 0,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
) -> None|bool|dict|list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else: return False # None, false bool
data = {}
data['person_id'] = person_id
sql_enabled, data['enable'] = sql_enable_part(table_name='order', enabled=enabled) # Reasonably safe return str and bool
sql_limit = sql_limit_offset_part(limit=limit, offset=offset) # Reasonably safe return str
sql = f"""
SELECT `order`.id AS 'order_id', `order`.id_random AS 'order_id_random'
FROM `order` AS `order`
WHERE
`order`.person_id = :person_id
AND `order`.status = 'open'
{sql_enabled}
ORDER BY `order`.created_on DESC, `order`.updated_on DESC
{sql_limit};
"""
log.debug(sql)
if order_rec_result := sql_select(data=data, sql=sql):
log.debug(order_rec_result)
if isinstance(order_rec_result, dict):
order_id_cart = order_rec_result.get('order_id')
log.info(f'Got Order ID {order_id_cart} cart for Person ID {person_id}')
return order_id_cart
elif isinstance(order_rec_result, list):
log.warning(f'Got multiple Orders for a cart for Person ID {person_id}. This should not happen.')
return False
else: # None or [] or False
log.debug(order_rec_result)
return order_rec_result
# ### END ### API Order Methods ### get_order_obj_cart_for_person_id_v3() ###
# ### BEGIN ### API Order Methods ### save_order_obj() ### # ### BEGIN ### API Order Methods ### save_order_obj() ###
# @logger_reset # @logger_reset
def save_order_obj(order_obj_new:Order_Base, repl_order_line_li:bool=False): def save_order_obj(order_obj_new:Order_Base, repl_order_line_li:bool=False):

View File

@@ -10,12 +10,13 @@ from app.lib_general import log, logging, logger_reset, send_email
# from app.methods.address_methods import load_address_obj # from app.methods.address_methods import load_address_obj
from app.methods.contact_methods import create_contact_obj, create_update_contact_obj, create_update_contact_obj_v4, load_contact_obj, update_contact_obj from app.methods.contact_methods import create_contact_obj, create_update_contact_obj, create_update_contact_obj_v4, load_contact_obj, update_contact_obj
from app.methods.order_cart_methods import get_order_cart_id_for_person_id, load_order_cart_obj from app.methods.order_cart_methods import get_order_cart_id_for_person_id, load_order_cart_obj
from app.methods.order_methods import get_order_rec_list, load_order_obj from app.methods.order_methods import create_order_obj, get_order_id_cart_for_person_id_v3, get_order_rec_list, load_order_obj
from app.methods.organization_methods import create_update_organization_obj, load_organization_obj, update_organization_obj from app.methods.organization_methods import create_update_organization_obj, load_organization_obj, update_organization_obj
# from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj # from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj
from app.models.common_field_schema import default_num_bytes from app.models.common_field_schema import default_num_bytes
from app.models.contact_models import Contact_Base from app.models.contact_models import Contact_Base
from app.models.order_models import Order_Base
from app.models.person_models import Person_Base from app.models.person_models import Person_Base
@@ -273,6 +274,7 @@ def load_person_obj(
inc_order_line_list: bool = False, inc_order_line_list: bool = False,
inc_order_list: bool = False, inc_order_list: bool = False,
inc_order_cart: bool = False, inc_order_cart: bool = False,
inc_order_cart_v3: bool = False,
inc_organization: bool = False, inc_organization: bool = False,
inc_post_list: bool = False, inc_post_list: bool = False,
inc_post_comment_list: bool = False, inc_post_comment_list: bool = False,
@@ -360,6 +362,8 @@ def load_person_obj(
return False return False
log.debug(person_obj) log.debug(person_obj)
account_id = person_obj.account_id
# Updated 2021-12-14 # Updated 2021-12-14
if inc_contact: if inc_contact:
log.info('Need to include contact data...') log.info('Need to include contact data...')
@@ -478,6 +482,40 @@ def load_person_obj(
person_obj.order_cart = order_cart_result person_obj.order_cart = order_cart_result
else: person_obj.order_cart = {} # None else: person_obj.order_cart = {} # None
# Updated 2022-01-21
if inc_order_cart_v3:
log.info('Need to include order cart (v3)...')
if get_order_id_cart_for_person_id_v3_result := get_order_id_cart_for_person_id_v3(
person_id = person_id,
):
order_id_cart = get_order_id_cart_for_person_id_v3_result
log.info(f'Got an order to use as a cart. Person ID: {person_id}; Order ID {order_id_cart}')
elif get_order_id_cart_for_person_id_v3_result is None:
log.info(f'An order for use as a cart was not found. Person ID: {person_id}')
order_dict = {}
order_dict['status'] = 'open' # open status should be used as an order cart
order_dict['checkout_status'] = None
try:
order_obj = Order_Base(**order_dict)
except ValidationError as e:
log.error(e.json())
# return False
person_obj.order_cart_v3 = {}
if create_order_obj_result := create_order_obj(
account_id = account_id,
order_dict_obj = order_obj,
person_id = person_id,
):
order_id_cart = create_order_obj_result
else: order_id_cart = None # person_obj.order_cart_v3 = {} # None
if order_result := load_order_obj(
order_id = order_id_cart,
inc_order_line_list = True,
):
person_obj.order_cart_v3 = order_result
else: person_obj.order_cart_v3 = {} # None
# Updated 2021-11-16 # Updated 2021-11-16
if inc_order_closed_count: if inc_order_closed_count:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL

View File

@@ -14,6 +14,7 @@ from app.models.journal_models import Journal_Base
from app.models.membership_group_models import Membership_Group_Base from app.models.membership_group_models import Membership_Group_Base
from app.models.membership_person_models import Membership_Person_Base from app.models.membership_person_models import Membership_Person_Base
from app.models.membership_type_models import Membership_Type_Base from app.models.membership_type_models import Membership_Type_Base
# from app.models.order_models import Order_Base
from app.models.organization_models import Organization_Base from app.models.organization_models import Organization_Base
from app.models.user_models import User_Base from app.models.user_models import User_Base
@@ -133,6 +134,7 @@ class Person_Base(BaseModel):
orders_info: Optional[dict] # closed_count, etc orders_info: Optional[dict] # closed_count, etc
order_list: Optional[list] # Order_Base() # Priority l2 order_list: Optional[list] # Order_Base() # Priority l2
order_cart: Optional[dict] # Order_Cart_Base() # Priority l2 order_cart: Optional[dict] # Order_Cart_Base() # Priority l2
order_cart_v3: Optional[dict] # Order_Base()
organization: Optional[Union[Organization_Base, None]] organization: Optional[Union[Organization_Base, None]]
post_list: Optional[list] # Post_Base() # Priority l1 post_list: Optional[list] # Post_Base() # Priority l1

View File

@@ -372,6 +372,7 @@ async def get_person_obj(
inc_order_line_list = inc_order_line_list, inc_order_line_list = inc_order_line_list,
inc_order_list = inc_order_list, inc_order_list = inc_order_list,
inc_order_cart = inc_order_cart, inc_order_cart = inc_order_cart,
inc_order_cart_v3 = inc_order_cart,
# inc_order_cart_list = inc_order_cart_list, # inc_order_cart_list = inc_order_cart_list,
inc_organization = inc_organization, inc_organization = inc_organization,
# inc_organization_list = inc_organization_list, # inc_organization_list = inc_organization_list,

View File

@@ -134,8 +134,9 @@ async def user_obj_change_password(
data = user_obj data = user_obj
else: else:
data = True data = True
if generated_password: if generated_password:
return mk_resp(data=data, status_message='Generated password: fake-testing-12345', response=commons.response) return mk_resp(data=data, status_message='Generated random password', response=commons.response)
else: else:
return mk_resp(data=data, status_message='The password has been changed.', response=commons.response) return mk_resp(data=data, status_message='The password has been changed.', response=commons.response)
#return mk_resp(data=None, status_code=501, response=commons.response) # Not Implemented #return mk_resp(data=None, status_code=501, response=commons.response) # Not Implemented