valar 1.3.21__py3-none-any.whl → 1.3.23__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/dao/orm_dao.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import datetime
2
2
  import json
3
+ from urllib.parse import quote
3
4
 
4
5
  from django.core.paginator import Paginator
5
6
  from django.db.models.options import Options
@@ -317,6 +318,7 @@ def __get_custom_props__(entity, code='default'):
317
318
  def __set_simple_values__(fields, values):
318
319
  date_props_mapping = {}
319
320
  json_props = []
321
+ file_props = []
320
322
  for field in fields:
321
323
  if isinstance(field, OrmField):
322
324
  prop = field.prop
@@ -328,12 +330,16 @@ def __set_simple_values__(fields, values):
328
330
  date_props_mapping[prop] = __data_props_formatting__[domain]
329
331
  elif domain == 'JSONField':
330
332
  json_props.append(prop)
333
+ elif domain == 'FileField':
334
+ file_props.append(prop)
331
335
  for row in values:
332
336
  for prop, formating in date_props_mapping.items():
333
337
  if row.get(prop):
334
338
  row[prop] = row[prop].strftime(formating)
335
339
  for prop in json_props:
336
340
  row[prop] = json.loads(row[prop]) if type(row[prop]) is str else row[prop]
341
+ for prop in file_props:
342
+ row[prop] = quote(row[prop], safe=":/")
337
343
 
338
344
  # def fun(field): return type(field).__name__ not in __referred_domains__ and field.name not in __omit_field_props__
339
345
  #
valar/models/core.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import json
2
+ from urllib.parse import quote
2
3
 
3
4
  from django.apps import AppConfig
4
5
  from django.db import models
@@ -48,7 +49,7 @@ class VModel(models.Model):
48
49
  elif domain in [TimeField]:
49
50
  value = value.strftime('%H:%M:%S')
50
51
  elif domain in [FileField]:
51
- value = value.name
52
+ value = quote(value.name, safe=":/")
52
53
  elif domain in [BigAutoField]:
53
54
  value = value
54
55
  data[prop] = value
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.3.21
3
+ Version: 1.3.23
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -8,6 +8,7 @@ Author-email: liuyinpeng@buaa.edu.cn
8
8
  Requires-Python: >=3.9
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
+ Requires-Dist: autobahn==24.4.2
11
12
  Requires-Dist: channels==3.0.3
12
13
  Requires-Dist: pymongo~=4.11.2
13
14
  Requires-Dist: asgiref~=3.8.1
@@ -45,7 +46,7 @@ pip install valar
45
46
  - asgi.py
46
47
  - urls.py
47
48
 
48
- ## 2.1 settings.py
49
+ ## 2.1 settings.py and ___init__.py
49
50
 
50
51
  ```python
51
52
  from pathlib import Path
@@ -61,8 +62,16 @@ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^
61
62
 
62
63
  DATABASES = {
63
64
  'default': {
64
- 'ENGINE': 'django.db.backends.sqlite3',
65
- 'NAME': BASE_DIR / 'db.sqlite3',
65
+ 'ENGINE': 'django.db.backends.mysql', # 使用 MySQL
66
+ 'NAME': 'vm_ets', # 数据库名
67
+ 'USER': 'root', # 用户名
68
+ 'PASSWORD': password, # 密码
69
+ 'HOST': 'localhost', # 数据库地址,本机用127.0.0.1
70
+ 'PORT': '3306', # MySQL端口,默认3306
71
+ 'OPTIONS': {
72
+ 'connect_timeout': 5, # 默认10秒,可以缩短
73
+ 'charset': 'utf8mb4',
74
+ }
66
75
  }
67
76
  }
68
77
 
@@ -105,44 +114,58 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
105
114
  """ Valar Options """
106
115
 
107
116
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
108
- MONGO_URI = 'mongodb://username:password@host:27017'
109
- MINIO_URL = "s3://username:password@host:9000"
110
- MINIO_ROOT = "https://host:9001"
117
+ MONGO_URI = f'mongodb://root:{password}@{host}:27017/'
118
+ MINIO_URL = f"s3://admin:{password}@{host}:9001"
119
+ MINIO_ROOT = f"http://{host}:9001"
111
120
 
112
121
  """ Email Options """
122
+
113
123
  EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
114
- EMAIL_HOST = 'xxx.xx.xx.xx'
115
- EMAIL_PORT = 465
116
- EMAIL_DOMAIN = 'http://xx.xx.xx'
117
- EMAIL_HOST_USER = "xxx@xx.xx.xx"
118
- EMAIL_HOST_PASSWORD = '*******'
119
- EMAIL_USE_TLS = False
120
- EMAIL_USE_SSL = True
124
+ EMAIL_HOST = 'smtp.126.com'
125
+ EMAIL_PORT = 25
126
+ EMAIL_HOST_USER = "xxxx@126.com"
127
+ EMAIL_HOST_PASSWORD = 'CGiKQh5FyQyupQYA'
128
+ ```
129
+
130
+ ```python
131
+ import pymysql
132
+
133
+ pymysql.install_as_MySQLdb()
134
+
121
135
  ```
122
136
 
123
137
  ## 2.2 asgi.py
124
138
 
125
139
  ```python
140
+ import os
141
+ from pathlib import Path
142
+
126
143
  from django.core.asgi import get_asgi_application
127
144
  from channels.routing import ProtocolTypeRouter, URLRouter
128
145
  from django.urls import re_path
129
146
 
130
147
  from valar.channels.consumer import ValarConsumer
131
148
 
149
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings' % Path(__file__).resolve().parent.parent.name)
132
150
  application = ProtocolTypeRouter({
133
151
  'http': get_asgi_application(),
134
152
  'websocket': URLRouter([
135
153
  re_path(r'(?P<client>\w+)/$', ValarConsumer.as_asgi()),
136
154
  ])
137
155
  })
138
-
139
-
140
156
  ```
141
157
 
142
158
  ## 2.3 urls.py
143
159
 
144
- - no need to provide urls for Valar, Valar will auto set urlpatterns for Morghulis (
145
- see https://www.npmjs.com/package/morghulis)
160
+ ```python
161
+ from django.urls import path, include
162
+
163
+ urlpatterns = [
164
+ path('valar/', include('valar.urls')),
165
+ ]
166
+
167
+ ```
168
+
146
169
  - go to section 4 to see how to register channel handlers (a Vue - Django async communication tool) in urls.
147
170
 
148
171
  # 3. migrate
@@ -25,7 +25,7 @@ valar/dao/frame.py,sha256=cz2SWcRgKww0XVNZpCcPD3ACcW6q6piMba2StshT60M,7462
25
25
  valar/dao/meta.py,sha256=jhSz62GCjsyp0BGBzK67SQpolOzmu-5HTQ-o9Zn9kYg,4412
26
26
  valar/dao/mon_dao.py,sha256=OlbbEl8Pl-2ABoYTT9goj2q51mgxmWy9770ZQv3fB_s,3665
27
27
  valar/dao/mon_field.py,sha256=AJp-KS19oRiRHtMidC_1uTv2oCplqO4-bdKNDLMllWU,570
28
- valar/dao/orm_dao.py,sha256=yiIHV6S_LLEoQpS7E_xZXjvC_aDffCLGPj_M4mGtREY,13853
28
+ valar/dao/orm_dao.py,sha256=gYnuYx25wfF2hLR4ALfA9cqQUs4vff1W79ISmKygZ6k,14060
29
29
  valar/dao/orm_field.py,sha256=qADDGPM_EUVxP2VEGfnb2m97gYeSFxXt5fOmY2Df11c,4981
30
30
  valar/dao/query.py,sha256=7MqCdwjdhXWBWjEggHVFQfC0zlZH3TrwuVxKE7E0OKA,1049
31
31
  valar/dao/defaults/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,7 +35,7 @@ valar/dao/defaults/view_defaults.py,sha256=v2wEgiaXqEcM4lcjM2uV83cLA5EJZf6qHfLZ7
35
35
  valar/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  valar/models/__init__.py,sha256=GMosgOi_o4kFIyReJg1qFqtbWSob5Mazd5FSGT_zfqI,55
37
37
  valar/models/auth.py,sha256=nxtLgJwBEgvYWXATcN-RN1e5LIzeUzK97jExUSjoIOk,1710
38
- valar/models/core.py,sha256=9lOEGuECtlzepzkDbMIT8gw73RR6nUQ70GShm6NhaT8,3694
38
+ valar/models/core.py,sha256=GkJq_f7w2FwFf25qrIZFZ3kR6RDY3tnZRQH-xnsV3NA,3743
39
39
  valar/models/frame.py,sha256=N13Bok7XNJDLoYDCpCIq8tEUktQVNerrLtk_U0KDJAE,851
40
40
  valar/models/indicator.py,sha256=vytY_CFFziUO44oMNB2SXOxs8PKlZQ6NgAiYp2MjK_I,1384
41
41
  valar/models/meta.py,sha256=VfP6IdnVC_BQnVfKmUXguh_wenQIiuKS6EYkGIWhrV4,4898
@@ -47,8 +47,8 @@ valar/views/handler.py,sha256=lUBVyjDl5CyqDO-UMwqsD1FshTELQaBDFocJ87Shrkw,1361
47
47
  valar/views/meta.py,sha256=LHSkxZ-ni1TgyUNFxvz5Xsom-5sZ_wEiEpa0oL13jLc,4960
48
48
  valar/views/password.py,sha256=YBKiPU3IWn69oJlfpezlO_bFNwwL4d9xyh49-xVv-lc,2118
49
49
  valar/views/rest.py,sha256=OnW2SHz4flZxIkYEUrqpaoiHOdqQZOrOLWmGPGEQ1E4,3282
50
- valar-1.3.21.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
51
- valar-1.3.21.dist-info/METADATA,sha256=BO7u4ctyUMkJ8kgBGGkCGjXSqRUoltfOR4DkFdJLxkU,5173
52
- valar-1.3.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
- valar-1.3.21.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
54
- valar-1.3.21.dist-info/RECORD,,
50
+ valar-1.3.23.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
51
+ valar-1.3.23.dist-info/METADATA,sha256=w0tP_4jPV9C_dlMxurOjB217fVBjguKPMLijeEwesuA,5691
52
+ valar-1.3.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ valar-1.3.23.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
54
+ valar-1.3.23.dist-info/RECORD,,
File without changes