fix pylance problems
This commit is contained in:
1 parent
bd7552f23b
commit
c744bc0bc3
26 files changed
+405
-251
No files matched your search
@@ -2,7 +2,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Provider 管理 API。"""
|
||||
|
||||
from flask import Response, jsonify, request
|
||||
from typing import Any
|
||||
|
||||
from flask import jsonify, request
|
||||
from flask.typing import ResponseReturnValue
|
||||
|
||||
from ..application.app_context import AppContext
|
||||
from ..services import (
|
||||
@@ -16,7 +19,7 @@ from .decorators import require_authentication
|
||||
|
||||
|
||||
class ProviderController:
|
||||
"""处理 provider 配置的增删改查、模型拉取与配置开关更新。"""
|
||||
"""处理 provider 配置、认证分组与相关管理 API。"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -36,6 +39,19 @@ class ProviderController:
|
||||
self._auth_service = auth_service
|
||||
self._register_routes()
|
||||
|
||||
@staticmethod
|
||||
def _get_request_payload() -> dict[str, Any]:
|
||||
payload = request.get_json(silent=True)
|
||||
if isinstance(payload, dict):
|
||||
return dict(payload)
|
||||
return {}
|
||||
|
||||
@staticmethod
|
||||
def _coerce_name_list(value: Any) -> list[str]:
|
||||
if not isinstance(value, list):
|
||||
raise ValueError('Provider names must be a non-empty list')
|
||||
return [str(item) for item in value]
|
||||
|
||||
def _register_routes(self) -> None:
|
||||
auth = require_authentication(self._auth_service)
|
||||
|
||||
@@ -75,14 +91,14 @@ class ProviderController:
|
||||
auth(self.restore_auth_group_entry)
|
||||
)
|
||||
|
||||
def get_providers(self) -> Response:
|
||||
def get_providers(self) -> ResponseReturnValue:
|
||||
try:
|
||||
return jsonify(self._provider_service.list_providers())
|
||||
except Exception as exc:
|
||||
self._logger.error('Error getting providers: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def get_provider(self, name: str) -> Response:
|
||||
def get_provider(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
provider = self._provider_service.get_provider(name)
|
||||
if provider is None:
|
||||
@@ -92,9 +108,9 @@ class ProviderController:
|
||||
self._logger.error('Error getting provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def create_provider(self) -> Response:
|
||||
def create_provider(self) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
provider = self._provider_service.create_provider(payload)
|
||||
self._logger.info('Provider created: %s', provider.get('name'))
|
||||
return jsonify(provider), 201
|
||||
@@ -104,9 +120,9 @@ class ProviderController:
|
||||
self._logger.error('Error creating provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def update_provider(self, name: str) -> Response:
|
||||
def update_provider(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
provider = self._provider_service.update_provider(name, payload)
|
||||
self._logger.info('Provider updated: %s -> %s', name, provider.get('name'))
|
||||
return jsonify(provider)
|
||||
@@ -118,7 +134,7 @@ class ProviderController:
|
||||
self._logger.error('Error updating provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def delete_provider(self, name: str) -> Response:
|
||||
def delete_provider(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._provider_service.delete_provider(name)
|
||||
self._logger.info('Provider deleted: %s', name)
|
||||
@@ -131,7 +147,7 @@ class ProviderController:
|
||||
self._logger.error('Error deleting provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def disable_provider(self, name: str) -> Response:
|
||||
def disable_provider(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
provider = self._provider_service.set_provider_enabled(name, enabled=False)
|
||||
self._logger.info('Provider disabled: %s', name)
|
||||
@@ -144,7 +160,7 @@ class ProviderController:
|
||||
self._logger.error('Error disabling provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def enable_provider(self, name: str) -> Response:
|
||||
def enable_provider(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
provider = self._provider_service.set_provider_enabled(name, enabled=True)
|
||||
self._logger.info('Provider enabled: %s', name)
|
||||
@@ -157,11 +173,11 @@ class ProviderController:
|
||||
self._logger.error('Error enabling provider: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def batch_providers(self) -> Response:
|
||||
def batch_providers(self) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
action = str(payload.get('action') or '').strip().lower()
|
||||
names = payload.get('names')
|
||||
names = self._coerce_name_list(payload.get('names'))
|
||||
if action == 'enable':
|
||||
result = self._provider_service.batch_set_provider_enabled(names, enabled=True)
|
||||
elif action == 'disable':
|
||||
@@ -181,14 +197,14 @@ class ProviderController:
|
||||
self._logger.error('Error applying provider batch action: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def get_auth_groups(self) -> Response:
|
||||
def get_auth_groups(self) -> ResponseReturnValue:
|
||||
try:
|
||||
return jsonify(self._auth_group_service.list_auth_groups())
|
||||
except Exception as exc:
|
||||
self._logger.error('Error getting auth groups: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def get_auth_group(self, name: str) -> Response:
|
||||
def get_auth_group(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
auth_group = self._auth_group_service.get_auth_group(name)
|
||||
if auth_group is None:
|
||||
@@ -198,9 +214,9 @@ class ProviderController:
|
||||
self._logger.error('Error getting auth group: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def create_auth_group(self) -> Response:
|
||||
def create_auth_group(self) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
auth_group = self._auth_group_service.create_auth_group(payload)
|
||||
self._logger.info('Auth group created: %s', auth_group.get('name'))
|
||||
return jsonify(auth_group), 201
|
||||
@@ -210,10 +226,11 @@ class ProviderController:
|
||||
self._logger.error('Error creating auth group: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def import_auth_group_entries(self) -> Response:
|
||||
def import_auth_group_entries(self) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
entries = self._auth_group_service.import_auth_entries(payload.get('yaml', ''))
|
||||
payload = self._get_request_payload()
|
||||
yaml_text = str(payload.get('yaml', '') or '')
|
||||
entries = self._auth_group_service.import_auth_entries(yaml_text)
|
||||
return jsonify({'entries': entries})
|
||||
except ValueError as exc:
|
||||
return jsonify({'error': str(exc)}), 400
|
||||
@@ -221,9 +238,9 @@ class ProviderController:
|
||||
self._logger.error('Error importing auth group entries: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def update_auth_group(self, name: str) -> Response:
|
||||
def update_auth_group(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
auth_group = self._auth_group_service.update_auth_group(name, payload)
|
||||
self._logger.info('Auth group updated: %s -> %s', name, auth_group.get('name'))
|
||||
return jsonify(auth_group)
|
||||
@@ -235,7 +252,7 @@ class ProviderController:
|
||||
self._logger.error('Error updating auth group: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def delete_auth_group(self, name: str) -> Response:
|
||||
def delete_auth_group(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.delete_auth_group(name)
|
||||
self._logger.info('Auth group deleted: %s', name)
|
||||
@@ -248,7 +265,7 @@ class ProviderController:
|
||||
self._logger.error('Error deleting auth group: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def get_auth_group_runtime(self, name: str) -> Response:
|
||||
def get_auth_group_runtime(self, name: str) -> ResponseReturnValue:
|
||||
try:
|
||||
return jsonify(self._auth_group_service.get_auth_group_runtime(name))
|
||||
except ValueError as exc:
|
||||
@@ -257,7 +274,7 @@ class ProviderController:
|
||||
self._logger.error('Error getting auth group runtime: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def clear_auth_group_entry_cooldown(self, name: str, entry_id: str) -> Response:
|
||||
def clear_auth_group_entry_cooldown(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.clear_entry_cooldown(name, entry_id)
|
||||
self._logger.info('Auth group entry cooldown cleared: %s/%s', name, entry_id)
|
||||
@@ -270,7 +287,7 @@ class ProviderController:
|
||||
self._logger.error('Error clearing auth group entry cooldown: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def disable_auth_group_entry(self, name: str, entry_id: str) -> Response:
|
||||
def disable_auth_group_entry(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.set_entry_disabled(name, entry_id, disabled=True)
|
||||
self._logger.info('Auth group entry disabled: %s/%s', name, entry_id)
|
||||
@@ -283,7 +300,7 @@ class ProviderController:
|
||||
self._logger.error('Error disabling auth group entry: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def enable_auth_group_entry(self, name: str, entry_id: str) -> Response:
|
||||
def enable_auth_group_entry(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.set_entry_disabled(name, entry_id, disabled=False)
|
||||
self._logger.info('Auth group entry enabled: %s/%s', name, entry_id)
|
||||
@@ -296,7 +313,7 @@ class ProviderController:
|
||||
self._logger.error('Error enabling auth group entry: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def reset_auth_group_entry_minute_usage(self, name: str, entry_id: str) -> Response:
|
||||
def reset_auth_group_entry_minute_usage(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.reset_entry_minute_usage(name, entry_id)
|
||||
self._logger.info('Auth group entry minute usage reset: %s/%s', name, entry_id)
|
||||
@@ -309,7 +326,7 @@ class ProviderController:
|
||||
self._logger.error('Error resetting auth group entry minute usage: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def reset_auth_group_entry_runtime(self, name: str, entry_id: str) -> Response:
|
||||
def reset_auth_group_entry_runtime(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.reset_entry_runtime(name, entry_id)
|
||||
self._logger.info('Auth group entry runtime reset: %s/%s', name, entry_id)
|
||||
@@ -322,7 +339,7 @@ class ProviderController:
|
||||
self._logger.error('Error resetting auth group entry runtime: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def restore_auth_group_entry(self, name: str, entry_id: str) -> Response:
|
||||
def restore_auth_group_entry(self, name: str, entry_id: str) -> ResponseReturnValue:
|
||||
try:
|
||||
self._auth_group_service.restore_entry(name, entry_id)
|
||||
self._logger.info('Auth group entry restored: %s/%s', name, entry_id)
|
||||
@@ -335,7 +352,7 @@ class ProviderController:
|
||||
self._logger.error('Error restoring auth group entry: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def fetch_models(self) -> Response:
|
||||
def fetch_models(self) -> ResponseReturnValue:
|
||||
try:
|
||||
result = self._model_discovery_service.fetch_models_preview(
|
||||
api=request.args.get('api', ''),
|
||||
@@ -356,9 +373,9 @@ class ProviderController:
|
||||
self._logger.error('Error fetching provider models: %s', exc)
|
||||
return jsonify({'error': str(exc)}), 500
|
||||
|
||||
def update_chat_whitelist(self) -> Response:
|
||||
def update_chat_whitelist(self) -> ResponseReturnValue:
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
payload = self._get_request_payload()
|
||||
enabled = self._settings_service.update_chat_whitelist_enabled(payload.get('enabled'))
|
||||
self._logger.info('Chat whitelist updated: enabled=%s', enabled)
|
||||
return jsonify({'enabled': enabled})
|
||||
|
||||
Reference in new issue
Block a user