rainycode 1.4.0__tar.gz → 1.4.2__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.
- {rainycode-1.4.0 → rainycode-1.4.2}/PKG-INFO +1 -1
- {rainycode-1.4.0 → rainycode-1.4.2}/common_models/base_model.py +1 -1
- {rainycode-1.4.0 → rainycode-1.4.2}/common_models/wechat_model.py +2 -2
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/captcha_util.py +10 -1
- {rainycode-1.4.0 → rainycode-1.4.2}/pyproject.toml +1 -1
- {rainycode-1.4.0 → rainycode-1.4.2}/rainycode.egg-info/PKG-INFO +1 -1
- {rainycode-1.4.0 → rainycode-1.4.2}/common_base/aiorequests.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_base/consts.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_base/exception.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_base/logging.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_base/response.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_depends/auth_depend.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_models/__init__.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_models/user_model.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/api/auth_api.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/api/wechat_api.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/router.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/schemas/auth_schema.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/service/auth_svc.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_servers/service/wechat_svc.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/bcrypt_util.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/ip_util.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/jwt_util.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/snowflake_util.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/common_utils/wechat_util.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/core/base_config.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/core/databases/aiodb.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/core/databases/aioredis.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/core/middleware/http_middleware.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/core/start.py +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/rainycode.egg-info/SOURCES.txt +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/rainycode.egg-info/dependency_links.txt +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/rainycode.egg-info/requires.txt +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/rainycode.egg-info/top_level.txt +0 -0
- {rainycode-1.4.0 → rainycode-1.4.2}/setup.cfg +0 -0
|
@@ -102,7 +102,7 @@ class BaseModel(MySQLUtils):
|
|
|
102
102
|
**kwargs: Any
|
|
103
103
|
) -> None:
|
|
104
104
|
if not getattr(self, 'id', 0) and kwargs.get('id_uuid', False) and 'id' in self._meta.fields:
|
|
105
|
-
|
|
105
|
+
self.id = str(uuid.uuid4()).replace('-', '')
|
|
106
106
|
return await super().save(using_db=using_db, update_fields=update_fields, force_create=force_create,
|
|
107
107
|
force_update=force_update)
|
|
108
108
|
|
|
@@ -32,8 +32,8 @@ class WechatUser(CreateModel):
|
|
|
32
32
|
微信用户关联表
|
|
33
33
|
"""
|
|
34
34
|
id = fields.IntField(pk=True, description="主键")
|
|
35
|
-
user = fields.ForeignKeyField("main.User", related_name="wechat_users", description="关联用户")
|
|
36
|
-
wechat_app = fields.ForeignKeyField("main.WechatApp", related_name="wechat_users", description="关联微信应用")
|
|
35
|
+
user = fields.ForeignKeyField("main.User", related_name="wechat_users", db_constraint=False, description="关联用户")
|
|
36
|
+
wechat_app = fields.ForeignKeyField("main.WechatApp", related_name="wechat_users", db_constraint=False, description="关联微信应用")
|
|
37
37
|
openid = fields.CharField(max_length=64, index=True, description="微信OpenID")
|
|
38
38
|
unionid = fields.CharField(max_length=64, null=True, index=True, description="微信UnionID")
|
|
39
39
|
session_key = fields.CharField(max_length=128, null=True, description="会话密钥(仅小程序)")
|
|
@@ -10,7 +10,16 @@ class CaptchaUtil:
|
|
|
10
10
|
"""
|
|
11
11
|
验证码工具类
|
|
12
12
|
"""
|
|
13
|
-
@classmethod
|
|
13
|
+
@classmethod
|
|
14
|
+
def generate_code(cls, length: int = 6) -> str:
|
|
15
|
+
"""
|
|
16
|
+
生成随机验证码(纯随机生成;存储/TTL/校验由调用方自行处理)
|
|
17
|
+
字符集去 0/O、1/I/L,避免误读
|
|
18
|
+
"""
|
|
19
|
+
alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
|
|
20
|
+
return "".join(random.choice(alphabet) for _ in range(length))
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
14
23
|
def generate_captcha(cls) -> tuple[str, str]:
|
|
15
24
|
"""
|
|
16
25
|
生成带有噪声和干扰的验证码图片:4位随机字符
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|