valar 1.3.4__tar.gz → 1.3.6__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.
Potentially problematic release.
This version of valar might be problematic. Click here for more details.
- {valar-1.3.4/src/valar.egg-info → valar-1.3.6}/PKG-INFO +2 -1
- {valar-1.3.4 → valar-1.3.6}/setup.py +6 -2
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/sender.py +5 -2
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/defaults/field_keys_default.py +1 -1
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/meta.py +2 -1
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/orm_dao.py +1 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/auth.py +1 -1
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/auth.py +1 -1
- valar-1.3.6/src/valar/views/handler.py +53 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/rest.py +3 -0
- {valar-1.3.4 → valar-1.3.6/src/valar.egg-info}/PKG-INFO +2 -1
- {valar-1.3.4 → valar-1.3.6}/src/valar.egg-info/requires.txt +1 -0
- valar-1.3.4/src/valar/views/handler.py +0 -46
- {valar-1.3.4 → valar-1.3.6}/LICENSE +0 -0
- {valar-1.3.4 → valar-1.3.6}/README.md +0 -0
- {valar-1.3.4 → valar-1.3.6}/setup.cfg +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/apps.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/auth/Authentication.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/auth/Middleware.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/auth/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/consumer.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/counter.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/executer.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/mapping.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/channels/views.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/app_mixins/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/app_mixins/auto_migration_mixin.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/singleton_meta.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/valar_minio.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/classes/valar_response.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/abstract.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/defaults/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/defaults/field_values_default.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/defaults/view_defaults.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/engine.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/frame.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/mon_dao.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/mon_field.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/orm_field.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/dao/query.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/migrations/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/core.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/frame.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/meta.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/models/test.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/urls.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/__init__.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/file.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/meta.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar/views/password.py +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar.egg-info/SOURCES.txt +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar.egg-info/dependency_links.txt +0 -0
- {valar-1.3.4 → valar-1.3.6}/src/valar.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: valar
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Home-page: https://gitee.com/GRIFFIN120/valar_dev
|
|
6
6
|
Author: LYP
|
|
@@ -17,6 +17,7 @@ Requires-Dist: openpyxl==3.1.5
|
|
|
17
17
|
Requires-Dist: deepmerge~=2.0
|
|
18
18
|
Requires-Dist: minio==7.2.2
|
|
19
19
|
Requires-Dist: PyJWT~=2.10.1
|
|
20
|
+
Requires-Dist: PyMySQL~=1.1.2
|
|
20
21
|
Dynamic: author
|
|
21
22
|
Dynamic: author-email
|
|
22
23
|
Dynamic: description
|
|
@@ -3,6 +3,8 @@ from setuptools import setup, find_packages
|
|
|
3
3
|
with open("README.md", "r", encoding="utf-8") as f:
|
|
4
4
|
long_description = f.read()
|
|
5
5
|
|
|
6
|
+
version = "1.3.6"
|
|
7
|
+
|
|
6
8
|
requires = [
|
|
7
9
|
'channels==3.0.3',
|
|
8
10
|
'pymongo~=4.11.2',
|
|
@@ -12,11 +14,13 @@ requires = [
|
|
|
12
14
|
'openpyxl==3.1.5',
|
|
13
15
|
'deepmerge~=2.0',
|
|
14
16
|
'minio==7.2.2',
|
|
15
|
-
'PyJWT~=2.10.1'
|
|
17
|
+
'PyJWT~=2.10.1',
|
|
18
|
+
'PyMySQL~=1.1.2'
|
|
16
19
|
]
|
|
20
|
+
|
|
17
21
|
setup(
|
|
18
22
|
name="valar", # 包名
|
|
19
|
-
version=
|
|
23
|
+
version=version, # 版本号
|
|
20
24
|
author="LYP", # 作者
|
|
21
25
|
author_email="liuyinpeng@buaa.edu.cn", # 邮箱
|
|
22
26
|
description="valar for morghulis", # 简短描述
|
|
@@ -39,7 +39,7 @@ class Sender:
|
|
|
39
39
|
|
|
40
40
|
def __init__(self, request: HttpRequest):
|
|
41
41
|
self.client = request.headers.get('CLIENT')
|
|
42
|
-
self.uid = request.session.get('UID')
|
|
42
|
+
# self.uid = request.session.get('UID')
|
|
43
43
|
self.group_send = async_to_sync(get_channel_layer().group_send)
|
|
44
44
|
|
|
45
45
|
|
|
@@ -54,7 +54,7 @@ class ValarChannelSender(Sender):
|
|
|
54
54
|
self.__thread__ = None
|
|
55
55
|
self.__lock__ = threading.Lock()
|
|
56
56
|
self.__interval__ = interval
|
|
57
|
-
if self.__channel__.auth
|
|
57
|
+
if self.__channel__.auth:
|
|
58
58
|
payload, _ = validate(request)
|
|
59
59
|
if payload is None:
|
|
60
60
|
raise Exception('Unauthorized!')
|
|
@@ -88,6 +88,9 @@ class ValarChannelSender(Sender):
|
|
|
88
88
|
def done(self, payload):
|
|
89
89
|
self.__emit__('done', payload)
|
|
90
90
|
|
|
91
|
+
def error(self, payload):
|
|
92
|
+
self.__emit__('error', payload)
|
|
93
|
+
|
|
91
94
|
def __emit__(self, status='proceed', data=None):
|
|
92
95
|
scope = 'broadcast' if self.__channel__.broadcast else 'client'
|
|
93
96
|
body = {
|
|
@@ -46,7 +46,7 @@ meta_field_key_defaults = {
|
|
|
46
46
|
'ref': ('pick', ['id', 'name', 'm2o', 'm2m', 'o2o_id']),
|
|
47
47
|
},
|
|
48
48
|
'valar.Account': {
|
|
49
|
-
'auth': ('pick', ['user_id', 'username', 'email', 'is_active', 'is_admin', 'roles']),
|
|
49
|
+
'auth': ('pick', ['user_id', 'username', 'email', 'password', 'is_active', 'is_admin', 'roles']),
|
|
50
50
|
},
|
|
51
51
|
'valar.Role': {
|
|
52
52
|
'auth': ('pick', ['name', 'duty', 'menu', 'account']),
|
|
@@ -45,7 +45,8 @@ class ValarMeta:
|
|
|
45
45
|
if view.metafield_set.count() == 0:
|
|
46
46
|
_fields = self.__initial_fields__()
|
|
47
47
|
for _field in _fields:
|
|
48
|
-
if _field['prop'] not in ['sort', 'create_time', 'modify_time', 'saved']
|
|
48
|
+
if (_field['prop'] not in ['id', 'sort', 'create_time', 'modify_time', 'saved', 'disabled']
|
|
49
|
+
and _field['domain'] not in ['ManyToManyRel', 'OneToOneRel', 'ManyToOneRel']):
|
|
49
50
|
_field.update({'view_id': view.id, "saved": True})
|
|
50
51
|
field_dao.save_one(_field)
|
|
51
52
|
|
|
@@ -77,6 +77,7 @@ class OrmDao(AbstractDao):
|
|
|
77
77
|
return self.manager.filter(id=oid).first() if oid is not None else None
|
|
78
78
|
|
|
79
79
|
def find(self, conditions=None, orders=None, size=0, page=1):
|
|
80
|
+
|
|
80
81
|
includes, excludes, orders = Query(conditions, orders).orm()
|
|
81
82
|
query_set = self.manager.filter(includes).exclude(excludes).order_by(*orders)
|
|
82
83
|
total = query_set.count()
|
|
@@ -13,7 +13,7 @@ class Role(VModel):
|
|
|
13
13
|
class Account(VModel):
|
|
14
14
|
"""账户核心信息"""
|
|
15
15
|
username = models.CharField(max_length=255, null=True, unique=True, verbose_name='账号')
|
|
16
|
-
password = models.CharField(max_length=255, verbose_name='密码')
|
|
16
|
+
password = models.CharField(max_length=255, null=True, verbose_name='密码')
|
|
17
17
|
email = models.CharField(max_length=255, null=True, unique=True, verbose_name='邮箱')
|
|
18
18
|
"""权限"""
|
|
19
19
|
is_admin = models.BooleanField(default=False, verbose_name='超级管理员')
|
|
@@ -41,7 +41,7 @@ def sign_in(request):
|
|
|
41
41
|
})
|
|
42
42
|
return ValarResponse(jwt.encode({
|
|
43
43
|
"user_id": account.id,
|
|
44
|
-
"exp": datetime.datetime.utcnow() + datetime.timedelta(
|
|
44
|
+
"exp": datetime.datetime.utcnow() + datetime.timedelta(hours=2)
|
|
45
45
|
}, settings.SECRET_KEY, algorithm="HS256"))
|
|
46
46
|
|
|
47
47
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import traceback
|
|
2
|
+
|
|
3
|
+
from ..channels.counter import Counter
|
|
4
|
+
from ..channels.sender import ValarChannelSender
|
|
5
|
+
from ..dao import Dao
|
|
6
|
+
from ..dao.engine import ValarEngine
|
|
7
|
+
|
|
8
|
+
import time
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def valar_test_handler(sender: ValarChannelSender):
|
|
12
|
+
data = sender.data
|
|
13
|
+
length = data.get('length', 100)
|
|
14
|
+
counter = Counter(length)
|
|
15
|
+
for i in range(length):
|
|
16
|
+
time.sleep(0.1)
|
|
17
|
+
tick = counter.tick()
|
|
18
|
+
tick.update({'name': 'test1'})
|
|
19
|
+
sender.load(tick)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def batch_handler(sender: ValarChannelSender):
|
|
23
|
+
data = sender.data
|
|
24
|
+
entity, db, method = data.get("entity"), data.get("db"), data.get("method")
|
|
25
|
+
dao = Dao(entity, db)
|
|
26
|
+
body = {"method": method}
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
if method == 'save_many':
|
|
30
|
+
array = data.get("array", [])
|
|
31
|
+
counter = Counter(array)
|
|
32
|
+
keys = []
|
|
33
|
+
for item in array:
|
|
34
|
+
item.update({'saved': True})
|
|
35
|
+
bean = dao.save_one(item)
|
|
36
|
+
keys.append(bean.id)
|
|
37
|
+
payload = counter.tick()
|
|
38
|
+
sender.load(payload)
|
|
39
|
+
body.update({'keys': keys})
|
|
40
|
+
sender.done(body)
|
|
41
|
+
elif method == 'delete_many':
|
|
42
|
+
conditions = data.get("conditions", [])
|
|
43
|
+
paths = dao.delete(conditions)
|
|
44
|
+
counter = Counter(len(paths))
|
|
45
|
+
minio = ValarEngine().get_minio_bucket(entity)
|
|
46
|
+
for path in paths:
|
|
47
|
+
minio.remove(path)
|
|
48
|
+
payload = counter.tick()
|
|
49
|
+
sender.load(payload)
|
|
50
|
+
sender.done(body)
|
|
51
|
+
except Exception as e:
|
|
52
|
+
traceback.print_exc()
|
|
53
|
+
sender.error(str(e))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: valar
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Home-page: https://gitee.com/GRIFFIN120/valar_dev
|
|
6
6
|
Author: LYP
|
|
@@ -17,6 +17,7 @@ Requires-Dist: openpyxl==3.1.5
|
|
|
17
17
|
Requires-Dist: deepmerge~=2.0
|
|
18
18
|
Requires-Dist: minio==7.2.2
|
|
19
19
|
Requires-Dist: PyJWT~=2.10.1
|
|
20
|
+
Requires-Dist: PyMySQL~=1.1.2
|
|
20
21
|
Dynamic: author
|
|
21
22
|
Dynamic: author-email
|
|
22
23
|
Dynamic: description
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
from ..channels.counter import Counter
|
|
2
|
-
from ..channels.sender import ValarChannelSender
|
|
3
|
-
from ..dao import Dao
|
|
4
|
-
from ..dao.engine import ValarEngine
|
|
5
|
-
|
|
6
|
-
import time
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def valar_test_handler(sender: ValarChannelSender):
|
|
10
|
-
data = sender.data
|
|
11
|
-
length = data.get('length', 100)
|
|
12
|
-
counter = Counter(length)
|
|
13
|
-
for i in range(length):
|
|
14
|
-
time.sleep(0.1)
|
|
15
|
-
tick = counter.tick()
|
|
16
|
-
tick.update({'name': 'test1'})
|
|
17
|
-
sender.load(tick)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def batch_handler(sender: ValarChannelSender):
|
|
21
|
-
data = sender.data
|
|
22
|
-
entity, db, method = data.get("entity"), data.get("db"), data.get("method")
|
|
23
|
-
dao = Dao(entity, db)
|
|
24
|
-
body = {"method": method}
|
|
25
|
-
if method == 'save_many':
|
|
26
|
-
array = data.get("array", [])
|
|
27
|
-
counter = Counter(array)
|
|
28
|
-
keys = []
|
|
29
|
-
for item in array:
|
|
30
|
-
item.update({'saved': True})
|
|
31
|
-
bean = dao.save_one(item)
|
|
32
|
-
keys.append(bean.id)
|
|
33
|
-
payload = counter.tick()
|
|
34
|
-
sender.load(payload)
|
|
35
|
-
body.update({'keys': keys})
|
|
36
|
-
sender.done(body)
|
|
37
|
-
elif method == 'delete_many':
|
|
38
|
-
conditions = data.get("conditions", [])
|
|
39
|
-
paths = dao.delete(conditions)
|
|
40
|
-
counter = Counter(len(paths))
|
|
41
|
-
minio = ValarEngine().get_minio_bucket(entity)
|
|
42
|
-
for path in paths:
|
|
43
|
-
minio.remove(path)
|
|
44
|
-
payload = counter.tick()
|
|
45
|
-
sender.load(payload)
|
|
46
|
-
sender.done(body)
|
|
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
|
|
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
|