Program/mooc/models/__init__.py
?..濡.. 0e27355932 Refactor models and schemas for improved consistency and functionality
- Updated import statements in `mooc/models/__init__.py` to use parentheses for clarity.
- Refactored `mooc/models/core.py` to replace `UnsignedInteger` with `INTEGER(unsigned=True)` for better compatibility.
- Introduced new `MobileNumber` model in `mooc/models/mobile_number.py` with appropriate fields.
- Added `ProfileFields` model in `mooc/models/profile_fields.py` with detailed attributes.
- Updated schemas in `mooc/schemas/mobile_number.py` and `mooc/schemas/profile_fields.py` to reflect model changes and improve naming conventions.
- Ensured all models and schemas are consistent with naming and data types.
2025-01-09 06:43:18 +08:00

283 lines
7.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 显式导入所有模型模块添加新的模型类所在模块users模块的导入
from mooc.models.admin import * # noqa
from mooc.models.account import * # noqa
from mooc.models.uni_account import * # noqa
from mooc.models.core import * # noqa
from mooc.models.userapi import * # noqa
from mooc.models.users import * # noqa # 新增导入确保能识别users.py里的模型类所在模块
# 导出常用的模型类
from mooc.models.account import (
Account,
AccountWechats,
AccountAliapp,
AccountBaiduapp,
AccountPhoneapp,
AccountToutiaoapp,
AccountWebapp,
AccountWxapp,
AccountXzapp
)
from mooc.models.uni_account import (
UniAccount,
UniAccountExtraModules,
UniAccountGroup,
UniAccountMenus,
UniAccountModules,
UniAccountModulesShortcut,
UniAccountUsers,
UniGroup,
UniLinkUniacid,
UniModules,
UniSettings,
UniVerifycode
)
from mooc.models.core import (
CoreAttachment,
CoreCache,
CoreCron,
CoreCronRecord,
CoreJob,
CoreMenu,
CoreMenuShortcut,
CorePaylog,
CorePerformance,
CoreQueue,
CoreRefundlog,
CoreResource,
CoreSendsmsLog,
CoreSessions,
CoreSettings
)
from mooc.models.userapi import (
UserapiCache,
UserapiReply
)
from mooc.models.users import (
Users,
UsersBind,
UsersCreateGroup,
UsersGroup,
UsersInvitation,
UsersLastUse,
UsersLoginLogs,
UsersOperateHistory,
UsersOperateStar,
UsersPermission,
UsersProfile,
UsersExtraGroup,
UsersExtraLimit,
UsersExtraModules,
UsersExtraTemplates,
UsersFailedLogin,
UsersFounderGroup,
UsersFounderOwnCreateGroups,
UsersFounderOwnUniGroups,
UsersFounderOwnUsers,
UsersFounderOwnUsersGroups
)
from mooc.models.mc import(
McCreditsRecharge,
McCashRecord,
McChatsRecord,
McMappingFans,
McMassRecord,
McCreditsRecord,
MCFansGroups,
McMembers,
MCFansTag,
MCFansTagMapping,
MCGroups,
MCHandsel,
McMemberAddress,
McMemberFields,
McMemberProperty,
McOauthFans
)
from mooc.models.modules import(
IMSModulesBindings,
IMSModulesCloud,
Modules,
IMSModulesIgnore,
IMSModulesPlugin,
IMSModulesPluginRank,
IMSModulesRank,
IMSModulesRecycle,
)
def verify_all_models():
"""验证所有模型是否已正确注册到Base.metadata"""
from mooc.db.database import Base
# 所有预期的表名,添加新模型对应的表名
expected_tables = {
'ims_goouc_fullexam_admin',
# Account 相关表
'ims_account',
'ims_account_aliapp',
'ims_account_baiduapp',
'ims_account_phoneapp',
'ims_account_toutiaoapp',
'ims_account_webapp',
'ims_account_wechats',
'ims_account_wxapp',
'ims_account_xzapp',
# UniAccount 相关表
'ims_uni_account',
'ims_uni_account_extra_modules',
'ims_uni_account_group',
'ims_uni_account_menus',
'ims_uni_account_modules',
'ims_uni_account_modules_shortcut',
'ims_uni_account_users',
'ims_uni_group',
'ims_uni_link_uniacid',
'ims_uni_modules',
'ims_uni_settings',
'ims_uni_verifycode',
# Core 相关表名
"ims_core_attachment",
"ims_core_cache",
"ims_core_cron",
"ims_core_cron_record",
"ims_core_job",
"ims_core_menu",
"ims_core_menu_shortcut",
"ims_core_paylog",
"ims_core_performance",
"ims_core_queue",
"ims_core_refundlog",
"ims_core_resource",
"ims_core_sendsms_log",
"ims_core_sessions",
"ims_core_settings",
# Userapi 相关表名
"ims_userapi_cache",
"ims_userapi_reply",
# Users 相关表名
"ims_users",
"ims_users_bind",
"ims_users_create_group",
"ims_users_group",
"ims_users_invitation",
"ims_users_lastuse",
"ims_users_login_logs",
"ims_users_operate_history",
"ims_users_operate_star",
"ims_users_permission",
"ims_users_profile",
"ims_users_extra_group",
"ims_users_extra_limit",
"ims_users_extra_modules",
"ims_users_extra_templates",
"ims_users_failed_login",
"ims_users_founder_group",
"ims_users_founder_own_create_groups",
"ims_users_founder_own_uni_groups",
"ims_users_founder_own_users",
"ims_users_founder_own_users_groups",
# part 3
"ims_goouc_fullexam_advert",
"ims_goouc_fullexam_banji",
"ims_goouc_fullexam_banner",
"ims_goouc_fullexam_category",
"ims_goouc_fullexam_cdkey",
"ims_goouc_fullexam_cdkeys",
"ims_goouc_fullexam_cdkey_cate",
"ims_goouc_fullexam_exercise",
"ims_goouc_fullexam_feedback",
"ims_goouc_fullexam_gift",
"ims_goouc_fullexam_index_btn",
"ims_goouc_fullexam_knowledge",
"ims_goouc_fullexam_knowledge_cate",
"ims_goouc_fullexam_notice",
"ims_goouc_fullexam_order",
"ims_goouc_fullexam_paper",
"ims_goouc_fullexam_paper_test",
"ims_goouc_fullexam_phonecode",
"ims_goouc_fullexam_q_year",
"ims_goouc_fullexam_school",
"ims_goouc_fullexam_setting",
"ims_goouc_fullexam_share_record",
"ims_goouc_fullexam_son_simple",
"ims_goouc_fullexam_test",
"ims_goouc_fullexam_test_type",
"ims_goouc_fullexam_type_cate",
"ims_goouc_fullexam_watermark",
"ims_goouc_fullexam_wxtpl",
"ims_goouc_fullexam_xuesheng",
"ims_goouc_fullexam_user",
"ims_goouc_fullexam_user_collection_praction",
"ims_goouc_fullexam_user_doexam",
"ims_goouc_fullexam_user_doother_exam",
"ims_goouc_fullexam_user_doother_exam_answer",
"ims_goouc_fullexam_user_exam_answer",
"ims_goouc_fullexam_user_formid",
"ims_goouc_fullexam_user_gift",
"ims_goouc_fullexam_user_knowledge_cate",
"ims_goouc_fullexam_user_member",
"ims_goouc_fullexam_user_pool",
"ims_goouc_fullexam_user_qhigh",
"ims_goouc_fullexam_user_qintensive",
"ims_goouc_fullexam_user_qtype",
"ims_goouc_fullexam_user_read",
"ims_goouc_fullexam_user_special",
"ims_goouc_fullexam_user_spequence",
"ims_goouc_fullexam_user_wrong_praction",
#part 4
"ims_profile_fields",
"ims_mobilenumber",
"ims_modules_bindings",
"ims_modules_cloud",
"ims_modules",
"ims_modules_ignore",
"ims_modules_plugin",
"ims_modules_plugin_rank",
"ims_modules_rank",
"ims_modules_recycle",
"ims_mc_credits_recharge",
"ims_mc_cash_record",
"ims_mc_chats_record",
"ims_mc_mapping_fans",
"ims_mc_mass_record",
"ims_mc_credits_record",
"ims_mc_fans_groups",
"ims_mc_members",
"ims_mc_fans_tag",
"ims_mc_fans_tag_mapping",
"ims_mc_groups",
"ims_mc_handsel",
"ims_mc_member_address",
"ims_mc_member_fields",
"ims_mc_member_property",
"ims_mc_oauth_fans",
}
actual_tables = set(Base.metadata.tables.keys())
missing_tables = expected_tables - actual_tables
extra_tables = actual_tables - expected_tables
if missing_tables:
raise RuntimeError(f"Missing tables in metadata: {missing_tables}")
if extra_tables:
print(f"Warning: Found unexpected tables: {extra_tables}")
return True
def get_all_table_names():
"""获取所有已注册的表名"""
from mooc.db.database import Base
return sorted(Base.metadata.tables.keys())