valar 1.0.17__py3-none-any.whl → 1.0.19__py3-none-any.whl
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/channels/__init__.py +7 -3
- valar/channels/views.py +3 -2
- valar/data/file/__init__.py +91 -0
- valar/data/migrations/0001_initial.py +56 -28
- valar/data/models.py +26 -13
- valar/data/mon/__init__.py +44 -5
- valar/data/mon/query_translator.py +91 -0
- valar/data/orm/__init__.py +57 -9
- valar/data/orm/meta.py +82 -7
- valar/data/orm/meta_frame.py +49 -0
- valar/data/orm/meta_loader.py +85 -20
- valar/data/orm/values.py +11 -2
- valar/data/query.py +14 -14
- valar/data/urls.py +18 -9
- valar/data/views.py +108 -11
- {valar-1.0.17.dist-info → valar-1.0.19.dist-info}/METADATA +5 -1
- valar-1.0.19.dist-info/RECORD +27 -0
- {valar-1.0.17.dist-info → valar-1.0.19.dist-info}/WHEEL +1 -1
- valar-1.0.17.dist-info/RECORD +0 -24
- {valar-1.0.17.dist-info → valar-1.0.19.dist-info}/licenses/LICENSE +0 -0
- {valar-1.0.17.dist-info → valar-1.0.19.dist-info}/top_level.txt +0 -0
valar/data/views.py
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import json
|
|
2
|
+
from io import BytesIO
|
|
2
3
|
|
|
4
|
+
from django.core.files.uploadedfile import InMemoryUploadedFile
|
|
5
|
+
from django.http import QueryDict, HttpResponse
|
|
6
|
+
from django.utils.encoding import escape_uri_path
|
|
7
|
+
from urllib3 import HTTPResponse
|
|
8
|
+
|
|
9
|
+
from .file import get_minio_object_name, get_minio_bucket_name, minio_upload_object, minio_remove_path, \
|
|
10
|
+
minio_read_object
|
|
11
|
+
from .models import MetaField, VModel, VTree
|
|
12
|
+
from .orm import load_model
|
|
3
13
|
from .query import Query
|
|
4
14
|
from .. import ValarResponse
|
|
5
15
|
from ..channels import ValarSocketSender
|
|
@@ -10,12 +20,10 @@ from ..data.utils import get_dao, transform
|
|
|
10
20
|
|
|
11
21
|
|
|
12
22
|
async def save_many(request,db, entity):
|
|
13
|
-
|
|
14
|
-
data =
|
|
15
|
-
|
|
16
|
-
sender = ValarSocketSender(handler, request)
|
|
23
|
+
body = json.loads(request.body)
|
|
24
|
+
data = body.get('data')
|
|
25
|
+
sender = ValarSocketSender(request)
|
|
17
26
|
await execute_channel(save_many_handler, data, sender)
|
|
18
|
-
|
|
19
27
|
return ValarResponse(True)
|
|
20
28
|
|
|
21
29
|
def save_one (request,db, entity):
|
|
@@ -56,21 +64,110 @@ def find_one(request, db, entity):
|
|
|
56
64
|
|
|
57
65
|
def find_many(request, db, entity):
|
|
58
66
|
body = json.loads(request.body)
|
|
59
|
-
query = Query(body)
|
|
67
|
+
query = Query(body.get('query'))
|
|
60
68
|
dao = get_dao(db, entity)
|
|
61
|
-
page = body.get('page', 1)
|
|
62
|
-
size = body.get('size', 0)
|
|
63
69
|
code = body.get('code')
|
|
64
|
-
results, total = dao.find_many(query,
|
|
70
|
+
results, total = dao.find_many(query, query.size, query.page)
|
|
65
71
|
return ValarResponse({
|
|
66
72
|
'results': transform(db, results, code),
|
|
67
73
|
'total': total
|
|
68
74
|
})
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
def tree(request, db, entity):
|
|
71
78
|
body = json.loads(request.body)
|
|
72
|
-
|
|
79
|
+
root = body.get('root', 0)
|
|
80
|
+
query = Query(body)
|
|
73
81
|
dao = get_dao(db, entity)
|
|
82
|
+
results = [n.json for n in dao.tree(query,root)]
|
|
83
|
+
return ValarResponse(results)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def meta(request):
|
|
87
|
+
body = json.loads(request.body)
|
|
88
|
+
code = body.get('code')
|
|
89
|
+
entity = body.get('entity')
|
|
90
|
+
dao = get_dao('orm', entity)
|
|
74
91
|
view = dao.meta(code)
|
|
75
92
|
return ValarResponse(view)
|
|
76
93
|
|
|
94
|
+
def fields(request ):
|
|
95
|
+
body = json.loads(request.body)
|
|
96
|
+
entity = body.get('entity')
|
|
97
|
+
dao = get_dao('orm', entity)
|
|
98
|
+
_fields =dao.meta_fields
|
|
99
|
+
return ValarResponse(_fields)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def add_fields(request):
|
|
104
|
+
body = json.loads(request.body)
|
|
105
|
+
entity = body.get('entity')
|
|
106
|
+
view_id = body.get('view_id')
|
|
107
|
+
props = body.get('props')
|
|
108
|
+
dao = get_dao('orm', entity)
|
|
109
|
+
field_dao = get_dao('orm','data.MetaField')
|
|
110
|
+
_fields = dao.meta_fields
|
|
111
|
+
for prop in props:
|
|
112
|
+
field = _fields.get(prop)
|
|
113
|
+
if field:
|
|
114
|
+
field['view_id'] = view_id
|
|
115
|
+
field_dao.save_one(field)
|
|
116
|
+
return ValarResponse(True)
|
|
117
|
+
|
|
118
|
+
def metas(request):
|
|
119
|
+
mapping = load_model()
|
|
120
|
+
tree = {}
|
|
121
|
+
for entity in mapping:
|
|
122
|
+
_, name = mapping[entity]
|
|
123
|
+
app, model = entity.split('.')
|
|
124
|
+
node = {'label': name, 'value': model, 'isTree': issubclass(_, VTree)}
|
|
125
|
+
root = tree.get(app, {'label': app, 'value': app, 'children': []})
|
|
126
|
+
root['children'].append(node)
|
|
127
|
+
tree[app] = root
|
|
128
|
+
return ValarResponse(list(tree.values()))
|
|
129
|
+
|
|
130
|
+
def find_file(request, bucket_name, object_name):
|
|
131
|
+
print(bucket_name, object_name)
|
|
132
|
+
ret: HTTPResponse = minio_read_object(bucket_name, object_name)
|
|
133
|
+
file_bytes = BytesIO(ret.read())
|
|
134
|
+
content = file_bytes
|
|
135
|
+
response = HttpResponse(content)
|
|
136
|
+
response['Content-Type'] = 'application/octet-stream;charset=utf-8'
|
|
137
|
+
response['Content-Disposition'] = "attachment; filename={}".format(escape_uri_path(object_name))
|
|
138
|
+
|
|
139
|
+
return response
|
|
140
|
+
|
|
141
|
+
def save_file(request, db, entity):
|
|
142
|
+
params: QueryDict = request.POST.dict()
|
|
143
|
+
_id, prop, field = (params.get(key) for key in ['id','prop','field'])
|
|
144
|
+
file: InMemoryUploadedFile = request.FILES['file']
|
|
145
|
+
dao = get_dao(db, entity)
|
|
146
|
+
item = dao.find_one(params.get('id',0))
|
|
147
|
+
if item:
|
|
148
|
+
"""删除已有文件"""
|
|
149
|
+
old_value = getattr(item, prop)
|
|
150
|
+
if old_value:
|
|
151
|
+
minio_remove_path(old_value.name)
|
|
152
|
+
"""上传新文件"""
|
|
153
|
+
bucket_name = get_minio_bucket_name(entity)
|
|
154
|
+
object_name = get_minio_object_name(_id, prop, file.name)
|
|
155
|
+
path = minio_upload_object(bucket_name, object_name, file.read())
|
|
156
|
+
"""更新数据"""
|
|
157
|
+
setattr(item, prop, path)
|
|
158
|
+
if field:
|
|
159
|
+
setattr(item, field, file.name)
|
|
160
|
+
item.save()
|
|
161
|
+
return ValarResponse({
|
|
162
|
+
'uploaded': True,
|
|
163
|
+
"url": f'/files/{path}',
|
|
164
|
+
'fileName': path,
|
|
165
|
+
"name": file.name
|
|
166
|
+
})
|
|
167
|
+
else:
|
|
168
|
+
return ValarResponse(False)
|
|
169
|
+
|
|
170
|
+
# path = service.save_file(domain, entity, item, prop, file)
|
|
171
|
+
# dfs.remove_path(old_path)
|
|
172
|
+
|
|
173
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: valar
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.19
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Author: LYP
|
|
6
6
|
Author-email: liuyinpeng@buaa.edu.cn
|
|
@@ -11,6 +11,10 @@ Requires-Dist: channels==3.0.3
|
|
|
11
11
|
Requires-Dist: pymongo~=4.11.2
|
|
12
12
|
Requires-Dist: asgiref~=3.8.1
|
|
13
13
|
Requires-Dist: django-cors-headers==4.2.0
|
|
14
|
+
Requires-Dist: pandas==2.2.3
|
|
15
|
+
Requires-Dist: openpyxl==3.1.5
|
|
16
|
+
Requires-Dist: deepmerge~=2.0
|
|
17
|
+
Requires-Dist: minio==7.2.2
|
|
14
18
|
Dynamic: author
|
|
15
19
|
Dynamic: author-email
|
|
16
20
|
Dynamic: description
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
valar/__init__.py,sha256=ekQ2XVpfTAc9RUYjriUY2On5dZBIjZGnew__TeKVWws,858
|
|
2
|
+
valar/channels/__init__.py,sha256=scvypQLiH-gp-Y0gZfSBAP5eoXFEyYgY7TSafzqP5Wk,3432
|
|
3
|
+
valar/channels/utils.py,sha256=lQQZp6XJhTHJSBvfsxgZ7PcDKYGLo5rMpWH5wtteHww,1298
|
|
4
|
+
valar/channels/views.py,sha256=GjcFw_WswaJnlSrv2tFx12jLk6RtzxSjW1D2kBskImY,413
|
|
5
|
+
valar/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
valar/data/handlers.py,sha256=2WQfJ5PJuGLPFqBpYg2my6Mh6RqAeI6jHEj4tRAsSXw,858
|
|
7
|
+
valar/data/models.py,sha256=XXKT1DXcAQCv8mTKWB8AP7zO6Bt0RB9QQosmJ7vUT6Q,10621
|
|
8
|
+
valar/data/query.py,sha256=Cx-DDJQmMP8Qc9Sv5dvQ-QFE-aRVeYI6ccE8zUhFsVQ,1585
|
|
9
|
+
valar/data/urls.py,sha256=32EqAi4A2zR-_-FE3Ued8gVetHuY3hdgausP7eIFL3w,929
|
|
10
|
+
valar/data/utils.py,sha256=d5mdx_hV6Vs-SoAZLBdzQCvrbeuoXCozFzrCT-njCn0,2061
|
|
11
|
+
valar/data/views.py,sha256=wiKBRsrBDT4arusLh9NKBgZFK7lwaTgsTZiuTnNsJFQ,5292
|
|
12
|
+
valar/data/file/__init__.py,sha256=YwBQ0Vhfg3wbcCa6k57c9vL-AnpOgnDO6lInERlIyPc,2880
|
|
13
|
+
valar/data/migrations/0001_initial.py,sha256=jBWKQwSclN8NctNIctqied1ibVYMEXUyimzQICLMJEA,15681
|
|
14
|
+
valar/data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
valar/data/mon/__init__.py,sha256=99b04h-j9HbmKlVB2qNl2ZVyUMC9pH0sofu7yXAi_Zg,3818
|
|
16
|
+
valar/data/mon/query_translator.py,sha256=g5rurgUOATarrO_hCuImr2VV6U1axwVSKAZx8zGeOuw,4646
|
|
17
|
+
valar/data/orm/__init__.py,sha256=beQOUIDMEx83sMERr4NtZikgGxjhEDUJReYz4x8Zf7E,4730
|
|
18
|
+
valar/data/orm/detacher.py,sha256=coZtVFzOVSl8AsoX2zLy7ZOkKVBLeg1HIKyKkstU1Tc,2660
|
|
19
|
+
valar/data/orm/meta.py,sha256=gzrqBp6VEryIApu1Ab3WxLRtXXcnGJ7O9UlCSjElYcw,2719
|
|
20
|
+
valar/data/orm/meta_frame.py,sha256=63mKMHw6lGVAq_R2Ml-KG3Xstd8s1Rxv2e9xDAazeRg,1538
|
|
21
|
+
valar/data/orm/meta_loader.py,sha256=aAOtZSkIONT85tld9UxK2FFClltnyZ0zJZAeyrTU1-A,6031
|
|
22
|
+
valar/data/orm/values.py,sha256=5B4zpxhW9tplz4qPaNx5ONzYt5JosS0_K4XfDUQKD38,4716
|
|
23
|
+
valar-1.0.19.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
|
|
24
|
+
valar-1.0.19.dist-info/METADATA,sha256=cauwp8rZdtCogK5NpMyy2ZuZTctGHegNubueoJv4JsY,2902
|
|
25
|
+
valar-1.0.19.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
|
26
|
+
valar-1.0.19.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
|
|
27
|
+
valar-1.0.19.dist-info/RECORD,,
|
valar-1.0.17.dist-info/RECORD
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
valar/__init__.py,sha256=ekQ2XVpfTAc9RUYjriUY2On5dZBIjZGnew__TeKVWws,858
|
|
2
|
-
valar/channels/__init__.py,sha256=PRgoYDSdwH0ya77v2X5l8McthLBWiAA98b7x_GBpKDM,3263
|
|
3
|
-
valar/channels/utils.py,sha256=lQQZp6XJhTHJSBvfsxgZ7PcDKYGLo5rMpWH5wtteHww,1298
|
|
4
|
-
valar/channels/views.py,sha256=iKkfiRMn2_xCQvKseL_ZiPQcPlBHgdtKaLjcQ11Yrs4,393
|
|
5
|
-
valar/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
valar/data/handlers.py,sha256=2WQfJ5PJuGLPFqBpYg2my6Mh6RqAeI6jHEj4tRAsSXw,858
|
|
7
|
-
valar/data/models.py,sha256=U0LQDRDoLZJiEBOjmNB2px2fMKlJa-ii9IeUNuruffg,10338
|
|
8
|
-
valar/data/query.py,sha256=-T8BCVluSwHGlL7-66im6D5uds5o8OO-CTGmGPmyL0s,1439
|
|
9
|
-
valar/data/urls.py,sha256=oh3t8c1umbkQIZwlMjmcIKB0bF5Yn97Ka-ZqkJEdl3I,391
|
|
10
|
-
valar/data/utils.py,sha256=d5mdx_hV6Vs-SoAZLBdzQCvrbeuoXCozFzrCT-njCn0,2061
|
|
11
|
-
valar/data/views.py,sha256=XI-HzVuW_uenb4diavZif_oLqg0loXeGl8KQnIMnNSg,2032
|
|
12
|
-
valar/data/migrations/0001_initial.py,sha256=FhGiP9HXw-0kWB0tdyGcCpW7-I6_5WqR8dHjhcC-XwQ,14004
|
|
13
|
-
valar/data/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
valar/data/mon/__init__.py,sha256=tQp_U-nyjCYxwHajs7jsP1T6QS0lIBtKRv74p2juXjA,2497
|
|
15
|
-
valar/data/orm/__init__.py,sha256=hPEv76a-dzyCcS6CbDjwGq8VR3zUaMZAIR54f5YogBY,3000
|
|
16
|
-
valar/data/orm/detacher.py,sha256=coZtVFzOVSl8AsoX2zLy7ZOkKVBLeg1HIKyKkstU1Tc,2660
|
|
17
|
-
valar/data/orm/meta.py,sha256=AYxuKyL_9hVPb3hMwZsrZWdkk36-YIgCWeZF9CG5lqY,861
|
|
18
|
-
valar/data/orm/meta_loader.py,sha256=XWFCypyeHqEEftl6j0olMsMfwaGnN-khxZJVXep2v0E,4327
|
|
19
|
-
valar/data/orm/values.py,sha256=A0g2G2_ccsIu4YjCBHV_MMeYBDvgFAmh3gKCEJ8Q9bU,4295
|
|
20
|
-
valar-1.0.17.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
|
|
21
|
-
valar-1.0.17.dist-info/METADATA,sha256=dvKaH8nKya3qM7dkw09RLWvse1VXCf7C6jcT3WV8_s4,2784
|
|
22
|
-
valar-1.0.17.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
23
|
-
valar-1.0.17.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
|
|
24
|
-
valar-1.0.17.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|