rainycode 1.4.5__tar.gz → 1.4.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {rainycode-1.4.5 → rainycode-1.4.7}/PKG-INFO +1 -1
  2. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/service/file_svc.py +3 -8
  3. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/ip_util.py +8 -0
  4. {rainycode-1.4.5 → rainycode-1.4.7}/core/base_config.py +0 -1
  5. {rainycode-1.4.5 → rainycode-1.4.7}/pyproject.toml +1 -1
  6. {rainycode-1.4.5 → rainycode-1.4.7}/rainycode.egg-info/PKG-INFO +1 -1
  7. {rainycode-1.4.5 → rainycode-1.4.7}/common_base/aiorequests.py +0 -0
  8. {rainycode-1.4.5 → rainycode-1.4.7}/common_base/consts.py +0 -0
  9. {rainycode-1.4.5 → rainycode-1.4.7}/common_base/exception.py +0 -0
  10. {rainycode-1.4.5 → rainycode-1.4.7}/common_base/logging.py +0 -0
  11. {rainycode-1.4.5 → rainycode-1.4.7}/common_base/response.py +0 -0
  12. {rainycode-1.4.5 → rainycode-1.4.7}/common_depends/auth_depend.py +0 -0
  13. {rainycode-1.4.5 → rainycode-1.4.7}/common_models/__init__.py +0 -0
  14. {rainycode-1.4.5 → rainycode-1.4.7}/common_models/base_model.py +0 -0
  15. {rainycode-1.4.5 → rainycode-1.4.7}/common_models/file_model.py +0 -0
  16. {rainycode-1.4.5 → rainycode-1.4.7}/common_models/user_model.py +0 -0
  17. {rainycode-1.4.5 → rainycode-1.4.7}/common_models/wechat_model.py +0 -0
  18. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/api/auth_api.py +0 -0
  19. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/api/wechat_api.py +0 -0
  20. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/router.py +0 -0
  21. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/schemas/auth_schema.py +0 -0
  22. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/service/auth_svc.py +0 -0
  23. {rainycode-1.4.5 → rainycode-1.4.7}/common_servers/service/wechat_svc.py +0 -0
  24. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/bcrypt_util.py +0 -0
  25. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/captcha_util.py +0 -0
  26. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/datetime_util.py +0 -0
  27. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/jwt_util.py +0 -0
  28. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/snowflake_util.py +0 -0
  29. {rainycode-1.4.5 → rainycode-1.4.7}/common_utils/wechat_util.py +0 -0
  30. {rainycode-1.4.5 → rainycode-1.4.7}/core/databases/aiodb.py +0 -0
  31. {rainycode-1.4.5 → rainycode-1.4.7}/core/databases/aioredis.py +0 -0
  32. {rainycode-1.4.5 → rainycode-1.4.7}/core/middleware/http_middleware.py +0 -0
  33. {rainycode-1.4.5 → rainycode-1.4.7}/core/start.py +0 -0
  34. {rainycode-1.4.5 → rainycode-1.4.7}/rainycode.egg-info/SOURCES.txt +0 -0
  35. {rainycode-1.4.5 → rainycode-1.4.7}/rainycode.egg-info/dependency_links.txt +0 -0
  36. {rainycode-1.4.5 → rainycode-1.4.7}/rainycode.egg-info/requires.txt +0 -0
  37. {rainycode-1.4.5 → rainycode-1.4.7}/rainycode.egg-info/top_level.txt +0 -0
  38. {rainycode-1.4.5 → rainycode-1.4.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainycode
3
- Version: 1.4.5
3
+ Version: 1.4.7
4
4
  Summary: FastAPI base modules
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: aerich==0.9.2
@@ -3,9 +3,9 @@ import uuid
3
3
  from pathlib import Path
4
4
 
5
5
  from common_base.exception import CustomException
6
+ from common_models.file_model import File
6
7
  from common_models.user_model import User
7
8
  from core.base_config import base_config
8
- from common_models.file_model import File
9
9
 
10
10
  # 默认上传约束
11
11
  DEFAULT_MAX_BYTES = 5 * 1024 * 1024 # 5MB
@@ -43,7 +43,7 @@ class FileService:
43
43
  existing = await File.get_or_none(md5=md5)
44
44
  if existing:
45
45
  # 相同文件已存在,直接复用(不重复写盘),仅返回其注册信息
46
- return await _serialize(existing)
46
+ return await File.model2dict(existing)
47
47
 
48
48
  filename = f"{uuid.uuid4().hex}.{ext}"
49
49
  relative = f"{subdir}/{filename}" # 磁盘相对路径 & File.url(不含前缀)
@@ -59,9 +59,4 @@ class FileService:
59
59
  md5=md5,
60
60
  creator_id=user.id,
61
61
  )
62
- return await _serialize(row)
63
-
64
-
65
- async def _serialize(file: File) -> dict:
66
- """经 model2dict 序列化 File,自动触发 fix_data 给 url 加前缀。"""
67
- return await File.model2dict(file, include=['id', 'name', 'url', 'size', 'ext', 'md5'])
62
+ return await File.model2dict(row)
@@ -81,3 +81,11 @@ class IpUtil:
81
81
  except Exception as e:
82
82
  # 获取IP归属地失败
83
83
  return "未知"
84
+
85
+ @staticmethod
86
+ def get_client_ip(request) -> str:
87
+ """从 Request 解析客户端 IP:代理场景优先 X-Forwarded-For,否则取直连 client.host。"""
88
+ forwarded = request.headers.get('x-forwarded-for')
89
+ if forwarded:
90
+ return forwarded.split(',')[0].strip()
91
+ return request.client.host if request.client else "unknown"
@@ -15,7 +15,6 @@ class BaseConfig(BaseSettings):
15
15
 
16
16
  # 文件上传:本地存储根目录 + 访问 URL 前缀。
17
17
  # upload_url_prefix 可为相对路径(/uploads)或完整 CDN URL(https://cdn.xxx.com/uploads),
18
- # 经 File.fix_data 拼接在相对路径前;仅在本地存储时代替"前端拼域名",迁云后直接配全 URL。
19
18
  upload_root: str = 'uploads'
20
19
  upload_url_prefix: str = '/uploads'
21
20
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rainycode"
7
- version = "1.4.5"
7
+ version = "1.4.7"
8
8
  description = "FastAPI base modules"
9
9
  requires-python = ">=3.10"
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rainycode
3
- Version: 1.4.5
3
+ Version: 1.4.7
4
4
  Summary: FastAPI base modules
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: aerich==0.9.2
File without changes
File without changes