import datetime, time from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union from app.lib_general import log, logging, secure_hash_string, verify_secure_hash_string, common_route_params, Common_Route_Params from app.config import settings from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.methods.fundraising_methods import get_fundraising_rec_list, load_fundraising_obj # from app.methods.fundraising_cfg_methods import load_fundraising_cfg_obj from app.models.fundraising_models import Fundraising_Base from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() # ### BEGIN ### API Event ### get_account_obj_fundraising_list() ### # Updated 2021-12-13 @router.get('/account/{account_id}/fundraising/list', response_model=Resp_Body_Base) async def get_account_obj_fundraising_list( account_id: str = Path(min_length=11, max_length=22), hidden: str = 'not_hidden', # hidden, not_hidden, all priority: str = 'all', # priority, not_priority, all inc_account_cfg: bool = False, inc_fundraising_cfg: bool = False, inc_product: bool = False, inc_product_list: bool = False, commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) account_id = commons.x_account_id # Updated 2021-12-13 if fundraising_rec_list_result := get_fundraising_rec_list( account_id = account_id, enabled = commons.enabled, hidden = hidden, priority = priority, limit = commons.limit, offset = commons.offset, ): fundraising_result_list = [] for fundraising_rec in fundraising_rec_list_result: if load_fundraising_result := load_fundraising_obj( fundraising_id = fundraising_rec.get('fundraising_id', None), inc_fundraising_cfg = inc_fundraising_cfg, inc_product_list = inc_product_list, enabled = commons.enabled, limit = commons.limit, offset = commons.offset, # exclude_unset = commons.exclude_unset, # model_as_dict = model_as_dict, ): fundraising_result_list.append(load_fundraising_result) else: fundraising_result_list.append(None) response_data = fundraising_result_list elif isinstance(fundraising_rec_list_result, list) or fundraising_rec_list_result is None: # Empty list or None log.info('No results') return mk_resp(data=None, status_code=404, response=commons.response) # Not Found else: log.warning('Likely bad request') return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request log.debug(response_data) return mk_resp(data=response_data, response=commons.response) # ### END ### API Event ### get_account_obj_fundraising_list() ###