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/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 = json.loads(request.body)
15
- handler = '%s/%s' % (db, entity)
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, size, page)
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
- def meta(request, db, entity ):
76
+
77
+ def tree(request, db, entity):
71
78
  body = json.loads(request.body)
72
- code = body.get('code')
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.17
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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,,