From ff5acd2702de401299722e193496c944b16b0ed5 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 26 Jul 2022 09:00:36 -0400 Subject: [PATCH] Work on Stripe log --- app/main.py | 7 +++- app/models/e_stripe_models.py | 64 +++++++++++++++++++++++++++++++++++ app/routers/api_crud.py | 4 ++- app/routers/e_stripe.py | 45 ++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 app/models/e_stripe_models.py create mode 100644 app/routers/e_stripe.py diff --git a/app/main.py b/app/main.py index 0cf1a40..a3727d2 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from . import config from app.log import log, logging # Import the routers here first: -from app.routers import aether_cfg, api_crud, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_badge, event_badge_template, event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, qr, site, site_domain, user, websockets, e_cvent, c_idaa, e_impexium +from app.routers import aether_cfg, api_crud, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_badge, event_badge_template, event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, qr, site, site_domain, user, websockets, e_cvent, c_idaa, e_impexium, e_stripe from app.db_sql import db, sql_select # , sql_connect @@ -391,6 +391,11 @@ app.include_router( prefix='/e/impexium', tags=['External Service: Impexium'], ) +app.include_router( + e_stripe.router, + prefix='/e/stripe', + tags=['External Service: Stripe'], +) app.include_router( c_idaa.router, diff --git a/app/models/e_stripe_models.py b/app/models/e_stripe_models.py new file mode 100644 index 0000000..d5205a2 --- /dev/null +++ b/app/models/e_stripe_models.py @@ -0,0 +1,64 @@ +import datetime, pytz + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random +from app.lib_general import log, logging + +from app.models.common_field_schema import base_fields, default_num_bytes + + +# ### BEGIN ### API Stripe Models ### Stripe_Log_Base() ### +class Stripe_Log_Base(BaseModel): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + # id_random: Optional[str] = Field( + # **base_fields['stripe_log_id_random'], + # alias = 'stripe_log_id_random', + # ) + id: Optional[int] = Field( + alias = 'stripe_log_id' + ) + + account_id_random: Optional[str] + account_id: Optional[int] + + name: Optional[str] + + meta_data: Optional[Json] + + notes: Optional[str] + created_on: Optional[datetime.datetime] = None + updated_on: Optional[datetime.datetime] = None + + # Including other related objects + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + @validator('account_id', always=True) + def account_id_lookup(cls, v, values, **kwargs): + if isinstance(v, int) and v > 0: return v + elif id_random := values.get('account_id_random'): + return redis_lookup_id_random(record_id_random=id_random, table_name='account') + return None +# ### END ### API Stripe Models ### Stripe_Log_Base() ### + + +# ### BEGIN ### API Stripe Models ### Stripe_Log_Base_In() ### +class Stripe_Log_Base_In(Stripe_Log_Base): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + meta_data: Optional[str] +# ### END ### API Stripe Models ### Stripe_Log_Base_In() ### + + +# # ### BEGIN ### API Stripe Models ### Stripe_Log_Base_Out() ### +# class Stripe_Log_Base_Out(Stripe_Log_Base): +# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(locals()) + +# meta_data: Optional[Json] +# # ### END ### API Stripe Models ### Stripe_Log_Base_Out() ### diff --git a/app/routers/api_crud.py b/app/routers/api_crud.py index 1844e4c..62c2b5b 100644 --- a/app/routers/api_crud.py +++ b/app/routers/api_crud.py @@ -57,6 +57,8 @@ from app.models.site_domain_models import * from app.models.user_models import * from app.models.user_role_models import * +from app.models.e_stripe_models import * + obj_type_li = {} #obj_type_li['cfg_flask'] = {'table_name': 'cfg_flask', 'base_name': Cfg_Flask_Base} @@ -142,7 +144,7 @@ obj_type_li['user_role'] = {'table_name': 'v_user_role', 'base_name': User_Role_ #obj_type_li['lu_user_status'] = {'table_name': 'lu_user_status', 'base_name': Lu_User_Status_Base} #obj_type_li['stripe_customer'] = {'table_name': 'stripe_customer', 'base_name': Stripe_Customer_Base} -#obj_type_li['stripe_log'] = {'table_name': 'stripe_log', 'base_name': Stipe_Log_Base} +obj_type_li['stripe_log'] = {'table_name': 'stripe_log', 'base_name': Stripe_Log_Base_In} # obj_type_li['c_idda_membership_person_profile'] = {'table_name': 'c_idda_membership_person_profile', 'base_name': C_Idda_membership_person_profile_Base} # obj_type_li['c_osit_demo_membership_person_profile'] = {'table_name': 'c_osit_demo_membership_person_profile', 'base_name': C_Osit_Demo_membership_person_profile_Base} diff --git a/app/routers/e_stripe.py b/app/routers/e_stripe.py new file mode 100644 index 0000000..963dfba --- /dev/null +++ b/app/routers/e_stripe.py @@ -0,0 +1,45 @@ +import datetime, time +from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status +from pydantic import BaseModel, EmailStr, Field +from typing import Dict, List, Optional, Set, Union + +from app.lib_general import log, logging, common_route_params, Common_Route_Params +from app.config import settings +from app.db_sql import sql_enable_part, sql_insert, sql_update, sql_insert_or_update, sql_limit_offset_part, 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.stripe_methods import email_stripe_log_review_url, get_stripe_log_rec_list, load_stripe_log_obj, email_stripe_log_review_url + +from app.models.e_stripe_models import Stripe_Log_Base, Stripe_Log_Base_In +from app.models.response_models import Resp_Body_Base, mk_resp + + +router = APIRouter() + + +@router.post('/log', response_model=Resp_Body_Base) +async def post_stripe_log_obj( + obj: Stripe_Log_Base, + + # x_account_id: str = Header(...), + # return_obj: Optional[bool] = True, + # by_alias: Optional[bool] = True, + # exclude_unset: Optional[bool] = True, + # response: Response = Response, + + commons: Common_Route_Params = Depends(common_route_params), + ): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'stripe_log' + obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) + result = post_obj_template( + obj_type = obj_type, + data = obj_data_dict, + return_obj = True, + by_alias = True, + exclude_unset = True, + ) + return result