diff --git a/app/main.py b/app/main.py index 8dc99e3..5d4fc2c 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from .lib_general import * from .log import * # Import the routers here first: -from .routers import api_crud, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, membership, order, order_cart, organization, page, person, post, post_comment, product, site, user, websockets # , items, journals +from .routers import api_crud, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, event_session, membership, order, order_cart, organization, page, person, post, post_comment, product, site, user, websockets # , items, journals from .db_sql import db @@ -117,14 +117,14 @@ app.include_router( #dependencies=[Depends(get_account_header)], #responses={404: {'description': 'Not found'}}, ) -# app.include_router( -# event_session.router, -# prefix='/event_session', -# tags=['Event Session'], -# #dependencies=[Depends(get_token_header)], -# #dependencies=[Depends(get_account_header)], -# #responses={404: {'description': 'Not found'}}, -# ) +app.include_router( + event_session.router, + prefix='/event_session', + tags=['Event Session'], + #dependencies=[Depends(get_token_header)], + #dependencies=[Depends(get_account_header)], + #responses={404: {'description': 'Not found'}}, +) app.include_router( membership.router, prefix='/membership', diff --git a/app/models/common_field_schema.py b/app/models/common_field_schema.py index 84ede8d..790b470 100644 --- a/app/models/common_field_schema.py +++ b/app/models/common_field_schema.py @@ -30,8 +30,15 @@ base_fields['contact_id_random'] = xxx_id_random_field_schema base_fields['event_exhibit_id_random'] = xxx_id_random_field_schema base_fields['event_file_id_random'] = xxx_id_random_field_schema base_fields['event_id_random'] = xxx_id_random_field_schema +base_fields['event_abstract_id_random'] = xxx_id_random_field_schema +base_fields['event_badge_id_random'] = xxx_id_random_field_schema +base_fields['event_device_id_random'] = xxx_id_random_field_schema +base_fields['event_location_id_random'] = xxx_id_random_field_schema base_fields['event_presentation_id_random'] = xxx_id_random_field_schema +base_fields['event_presenter_id_random'] = xxx_id_random_field_schema base_fields['event_registration_id_random'] = xxx_id_random_field_schema +base_fields['event_session_id_random'] = xxx_id_random_field_schema +base_fields['event_track_id_random'] = xxx_id_random_field_schema base_fields['fundraising_id_random'] = xxx_id_random_field_schema base_fields['hosted_file_id_random'] = xxx_id_random_field_schema base_fields['membership_id_random'] = xxx_id_random_field_schema diff --git a/app/models/event_session_model.py b/app/models/event_session_model.py index 8d1c8b6..444b54e 100644 --- a/app/models/event_session_model.py +++ b/app/models/event_session_model.py @@ -1 +1,131 @@ - +from __future__ import annotations +import datetime, hashlib, logging, os, pytz, redis, secrets + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator + +from ..lib_general import * +from ..log import * + +from .common_field_schema import base_fields, default_num_bytes + + +class Event_Session_Base(BaseModel): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + id_random: Optional[str] = Field( + **base_fields['event_session_id_random'], + alias='event_session_id_random', + default_factory=lambda:secrets.token_urlsafe(default_num_bytes), + ) + id: Optional[int] = Field( + #alias='event_session_id' + ) + event_id_random: Optional[str] + event_id: Optional[int] + event_location_id_random: Optional[str] + event_location_id: Optional[int] + event_track_id_random: Optional[str] + event_track_id: Optional[int] + + session_type_id_random: Optional[str] + session_type_id: Optional[int] + session_type_code: Optional[str] + + + name: Optional[str] + description: Optional[str] + + start_datetime: Optional[datetime.datetime] + end_datetime: Optional[datetime.datetime] + + attend_url: Optional[str] + attend_url_text: Optional[str] + attend_url_passcode: Optional[str] + attend_phone: Optional[str] + attend_phone_passcode: Optional[str] + attend_text: Optional[str] + + rehearsal_start_datetime: Optional[datetime.datetime] + rehearsal_end_datetime: Optional[datetime.datetime] + rehearsal_url: Optional[str] + rehearsal_url_passcode: Optional[str] + rehearsal_phone: Optional[str] + rehearsal_phone_passcode: Optional[str] + rehearsal_text: Optional[str] + + image_path: Optional[str] + presentation_file_path: Optional[str] + presentation_file_size: Optional[str] + + enable: Optional[bool] + enable_from: Optional[datetime.datetime] = None + enable_to: Optional[datetime.datetime] = None + + hide: Optional[bool] + public: Optional[bool] + public_hide: Optional[bool] + hide_event_launcher: Optional[bool] + + priority: Optional[bool] + sort: Optional[int] + group: Optional[str] + + notes: Optional[str] + created_on: Optional[datetime.datetime] = None + updated_on: Optional[datetime.datetime] = None + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + #@validator('event_session_id_random', always=True) + def event_session_id_random_copy(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['id_random']: + return values['id_random'] + return None + + @validator('id', always=True) + def event_session_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['id_random']: + log.debug(values['id_random']) + return redis_lookup_id_random(record_id_random=values['id_random'], table_name='event_session') + return None + + @validator('event_id', always=True) + def event_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['event_id_random']: + return redis_lookup_id_random(record_id_random=values['event_id_random'], table_name='event') + return None + + @validator('event_location_id', always=True) + def event_location_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['event_location_id_random']: + return redis_lookup_id_random(record_id_random=values['event_location_id_random'], table_name='event_location') + return None + + @validator('event_track_id', always=True) + def event_track_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['event_track_id_random']: + return redis_lookup_id_random(record_id_random=values['event_track_id_random'], table_name='event_track') + return None + + class Config: + underscore_attrs_are_private = True + fields = base_fields + +Event_Session_Base.update_forward_refs()