Implement Deprecation Warning System and Router Registry Cleanup
- Added DeprecationParams dependency to log warnings when legacy routes are accessed. - Updated setup_routers to apply deprecation warnings to non-V3 legacy endpoints. - Exempted core infrastructure, special routers, and routers currently in use from deprecation warnings. - Cleaned up 24 unused router imports from the registry.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from fastapi import Depends, Header, HTTPException, Query, Response, status
|
||||
from fastapi import Depends, Header, HTTPException, Query, Request, Response, status
|
||||
from typing import Optional, Union
|
||||
import logging
|
||||
import asyncio
|
||||
@@ -7,6 +7,13 @@ from app.models.auth_models import AccountContext
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# --- Deprecation Dependency ---
|
||||
|
||||
class DeprecationParams:
|
||||
"""Logs a warning when a legacy/deprecated route is accessed."""
|
||||
def __init__(self, request: Request):
|
||||
log.warning(f"!!! DEPRECATED ROUTE ACCESSED: [{request.method}] {request.url.path} from {request.client.host if request.client else 'Unknown'}")
|
||||
|
||||
# --- Account Context Dependencies ---
|
||||
|
||||
def get_account_context_optional(
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi import FastAPI, Depends
|
||||
from app.routers.dependencies_v3 import DeprecationParams
|
||||
from app.routers import (
|
||||
ae_obj, aether_cfg, api_crud, api_crud_v2, api_crud_v3, api, importing, sql,
|
||||
account, activity_log, address, archive, archive_content, contact, data_store,
|
||||
event, event_abstract, event_badge, event_badge_importing, event_badge_template,
|
||||
account, contact, data_store,
|
||||
event, event_badge, event_badge_importing, 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, fundraising, grant, hosted_file, api_v3_actions_hosted_file, 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,
|
||||
event_location, event_person,
|
||||
event_presentation, event_presenter, event_session,
|
||||
flask_cfg, hosted_file, api_v3_actions_hosted_file, lookup,
|
||||
organization, page, person,
|
||||
person_user, qr, site, site_domain, user,
|
||||
util_email, websockets_redis, e_confex, e_cvent, e_impexium, e_stripe
|
||||
)
|
||||
|
||||
@@ -20,45 +19,45 @@ def setup_routers(app: FastAPI):
|
||||
"""
|
||||
app.include_router(ae_obj.router, prefix='/ae_obj', tags=['AE Object'])
|
||||
app.include_router(aether_cfg.router, tags=['Aether Config'])
|
||||
app.include_router(api_crud.router, prefix='/crud', tags=['CRUD v1.2 (Legacy)'])
|
||||
app.include_router(api_crud_v2.router, prefix='/v2/crud', tags=['CRUD v2.5'])
|
||||
app.include_router(api_crud.router, prefix='/crud', tags=['CRUD v1.2 (Legacy)'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(api_crud_v2.router, prefix='/v2/crud', tags=['CRUD v2.5'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(api_crud_v3.router, prefix='/v3/crud', tags=['CRUD v3'])
|
||||
|
||||
app.include_router(api.router, prefix='/api', tags=['API'])
|
||||
app.include_router(flask_cfg.router, prefix='/flask_cfg', tags=['Flask CFG'])
|
||||
app.include_router(flask_cfg.router, prefix='/flask_cfg', tags=['Flask CFG'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(importing.router, prefix='/importing', tags=['Importing'])
|
||||
app.include_router(sql.router, tags=['SQL'])
|
||||
app.include_router(account.router, tags=['Account'])
|
||||
app.include_router(account.router, tags=['Account'], dependencies=[Depends(DeprecationParams)])
|
||||
|
||||
app.include_router(data_store.router, tags=['Data Store'])
|
||||
app.include_router(event.router, tags=['Event'])
|
||||
app.include_router(event_badge.router, tags=['Event Badge'])
|
||||
app.include_router(event.router, tags=['Event'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_badge.router, tags=['Event Badge'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_badge_importing.router, tags=['Event Badge Importing'])
|
||||
app.include_router(event_badge_template.router, tags=['Event Badge Template'])
|
||||
app.include_router(event_badge_template.router, tags=['Event Badge Template'], dependencies=[Depends(DeprecationParams)])
|
||||
|
||||
app.include_router(event_device.router, tags=['Event Device'])
|
||||
app.include_router(event_exhibit.router, tags=['Event Exhibit'])
|
||||
app.include_router(event_device.router, tags=['Event Device'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_exhibit.router, tags=['Event Exhibit'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_exhibit_tracking.router, tags=['Event Exhibit Tracking'])
|
||||
app.include_router(event_file.router, tags=['Event File'])
|
||||
app.include_router(event_importing.router, tags=['Event Importing'])
|
||||
app.include_router(event_location.router, tags=['Event Location'])
|
||||
app.include_router(event_location.router, tags=['Event Location'], dependencies=[Depends(DeprecationParams)])
|
||||
|
||||
app.include_router(event_presentation.router, tags=['Event Presentation'])
|
||||
app.include_router(event_presenter.router, prefix='/event/presenter', tags=['Event Presenter'])
|
||||
app.include_router(event_session.router, tags=['Event Session'])
|
||||
app.include_router(event_presentation.router, tags=['Event Presentation'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_presenter.router, prefix='/event/presenter', tags=['Event Presenter'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(event_session.router, tags=['Event Session'], dependencies=[Depends(DeprecationParams)])
|
||||
|
||||
app.include_router(hosted_file.router, prefix='/hosted_file', tags=['Hosted File'])
|
||||
app.include_router(api_v3_actions_hosted_file.router, prefix='/v3/action/hosted_file', tags=['Hosted File (V3 Actions)'])
|
||||
app.include_router(lookup.router, prefix='/lu', tags=['Lookup'])
|
||||
|
||||
app.include_router(organization.router, prefix='/organization', tags=['Organization'])
|
||||
app.include_router(page.router, prefix='/page', tags=['Page'])
|
||||
app.include_router(person.router, tags=['Person'])
|
||||
app.include_router(person_user.router, prefix='/person_user', tags=['Person User'])
|
||||
app.include_router(organization.router, prefix='/organization', tags=['Organization'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(page.router, prefix='/page', tags=['Page'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(person.router, tags=['Person'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(person_user.router, prefix='/person_user', tags=['Person User'], dependencies=[Depends(DeprecationParams)])
|
||||
|
||||
app.include_router(qr.router, tags=['QR'])
|
||||
app.include_router(site.router, tags=['Site'])
|
||||
app.include_router(site_domain.router, tags=['Site Domain'])
|
||||
app.include_router(qr.router, tags=['QR'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(site.router, tags=['Site'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(site_domain.router, tags=['Site Domain'], dependencies=[Depends(DeprecationParams)])
|
||||
app.include_router(user.router, tags=['User'])
|
||||
app.include_router(util_email.router, tags=['Utility: Email'])
|
||||
app.include_router(websockets_redis.router, tags=['Websockets (Redis)'])
|
||||
|
||||
Reference in New Issue
Block a user