valar 1.3.22__tar.gz → 1.3.23__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.

Files changed (61) hide show
  1. {valar-1.3.22/src/valar.egg-info → valar-1.3.23}/PKG-INFO +40 -18
  2. {valar-1.3.22 → valar-1.3.23}/README.md +39 -17
  3. {valar-1.3.22 → valar-1.3.23}/setup.py +1 -1
  4. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/orm_dao.py +6 -0
  5. {valar-1.3.22 → valar-1.3.23}/src/valar/models/core.py +2 -1
  6. {valar-1.3.22 → valar-1.3.23/src/valar.egg-info}/PKG-INFO +40 -18
  7. {valar-1.3.22 → valar-1.3.23}/LICENSE +0 -0
  8. {valar-1.3.22 → valar-1.3.23}/MANIFEST.in +0 -0
  9. {valar-1.3.22 → valar-1.3.23}/setup.cfg +0 -0
  10. {valar-1.3.22 → valar-1.3.23}/src/valar/__init__.py +0 -0
  11. {valar-1.3.22 → valar-1.3.23}/src/valar/apps.py +0 -0
  12. {valar-1.3.22 → valar-1.3.23}/src/valar/auth/Authentication.py +0 -0
  13. {valar-1.3.22 → valar-1.3.23}/src/valar/auth/Middleware.py +0 -0
  14. {valar-1.3.22 → valar-1.3.23}/src/valar/auth/__init__.py +0 -0
  15. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/__init__.py +0 -0
  16. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/consumer.py +0 -0
  17. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/counter.py +0 -0
  18. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/executer.py +0 -0
  19. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/mapping.py +0 -0
  20. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/sender.py +0 -0
  21. {valar-1.3.22 → valar-1.3.23}/src/valar/channels/views.py +0 -0
  22. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/__init__.py +0 -0
  23. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/app_mixins/__init__.py +0 -0
  24. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/app_mixins/auto_migration_mixin.py +0 -0
  25. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
  26. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/singleton_meta.py +0 -0
  27. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/valar_minio.py +0 -0
  28. {valar-1.3.22 → valar-1.3.23}/src/valar/classes/valar_response.py +0 -0
  29. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/__init__.py +0 -0
  30. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/abstract.py +0 -0
  31. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/defaults/__init__.py +0 -0
  32. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/defaults/field_keys_default.py +0 -0
  33. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/defaults/field_values_default.py +0 -0
  34. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/defaults/view_defaults.py +0 -0
  35. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/engine.py +0 -0
  36. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/frame.py +0 -0
  37. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/meta.py +0 -0
  38. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/mon_dao.py +0 -0
  39. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/mon_field.py +0 -0
  40. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/orm_field.py +0 -0
  41. {valar-1.3.22 → valar-1.3.23}/src/valar/dao/query.py +0 -0
  42. {valar-1.3.22 → valar-1.3.23}/src/valar/migrations/0001_initial.py +0 -0
  43. {valar-1.3.22 → valar-1.3.23}/src/valar/migrations/__init__.py +0 -0
  44. {valar-1.3.22 → valar-1.3.23}/src/valar/models/__init__.py +0 -0
  45. {valar-1.3.22 → valar-1.3.23}/src/valar/models/auth.py +0 -0
  46. {valar-1.3.22 → valar-1.3.23}/src/valar/models/frame.py +0 -0
  47. {valar-1.3.22 → valar-1.3.23}/src/valar/models/indicator.py +0 -0
  48. {valar-1.3.22 → valar-1.3.23}/src/valar/models/meta.py +0 -0
  49. {valar-1.3.22 → valar-1.3.23}/src/valar/models/test.py +0 -0
  50. {valar-1.3.22 → valar-1.3.23}/src/valar/urls.py +0 -0
  51. {valar-1.3.22 → valar-1.3.23}/src/valar/views/__init__.py +0 -0
  52. {valar-1.3.22 → valar-1.3.23}/src/valar/views/auth.py +0 -0
  53. {valar-1.3.22 → valar-1.3.23}/src/valar/views/file.py +0 -0
  54. {valar-1.3.22 → valar-1.3.23}/src/valar/views/handler.py +0 -0
  55. {valar-1.3.22 → valar-1.3.23}/src/valar/views/meta.py +0 -0
  56. {valar-1.3.22 → valar-1.3.23}/src/valar/views/password.py +0 -0
  57. {valar-1.3.22 → valar-1.3.23}/src/valar/views/rest.py +0 -0
  58. {valar-1.3.22 → valar-1.3.23}/src/valar.egg-info/SOURCES.txt +0 -0
  59. {valar-1.3.22 → valar-1.3.23}/src/valar.egg-info/dependency_links.txt +0 -0
  60. {valar-1.3.22 → valar-1.3.23}/src/valar.egg-info/requires.txt +0 -0
  61. {valar-1.3.22 → valar-1.3.23}/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.22
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
@@ -46,7 +46,7 @@ pip install valar
46
46
  - asgi.py
47
47
  - urls.py
48
48
 
49
- ## 2.1 settings.py
49
+ ## 2.1 settings.py and ___init__.py
50
50
 
51
51
  ```python
52
52
  from pathlib import Path
@@ -62,8 +62,16 @@ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^
62
62
 
63
63
  DATABASES = {
64
64
  'default': {
65
- 'ENGINE': 'django.db.backends.sqlite3',
66
- '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
+ }
67
75
  }
68
76
  }
69
77
 
@@ -106,44 +114,58 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
106
114
  """ Valar Options """
107
115
 
108
116
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
109
- MONGO_URI = 'mongodb://username:password@host:27017'
110
- MINIO_URL = "s3://username:password@host:9000"
111
- 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"
112
120
 
113
121
  """ Email Options """
122
+
114
123
  EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
115
- EMAIL_HOST = 'xxx.xx.xx.xx'
116
- EMAIL_PORT = 465
117
- EMAIL_DOMAIN = 'http://xx.xx.xx'
118
- EMAIL_HOST_USER = "xxx@xx.xx.xx"
119
- EMAIL_HOST_PASSWORD = '*******'
120
- EMAIL_USE_TLS = False
121
- 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
+
122
135
  ```
123
136
 
124
137
  ## 2.2 asgi.py
125
138
 
126
139
  ```python
140
+ import os
141
+ from pathlib import Path
142
+
127
143
  from django.core.asgi import get_asgi_application
128
144
  from channels.routing import ProtocolTypeRouter, URLRouter
129
145
  from django.urls import re_path
130
146
 
131
147
  from valar.channels.consumer import ValarConsumer
132
148
 
149
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings' % Path(__file__).resolve().parent.parent.name)
133
150
  application = ProtocolTypeRouter({
134
151
  'http': get_asgi_application(),
135
152
  'websocket': URLRouter([
136
153
  re_path(r'(?P<client>\w+)/$', ValarConsumer.as_asgi()),
137
154
  ])
138
155
  })
139
-
140
-
141
156
  ```
142
157
 
143
158
  ## 2.3 urls.py
144
159
 
145
- - no need to provide urls for Valar, Valar will auto set urlpatterns for Morghulis (
146
- 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
+
147
169
  - go to section 4 to see how to register channel handlers (a Vue - Django async communication tool) in urls.
148
170
 
149
171
  # 3. migrate
@@ -15,7 +15,7 @@ pip install valar
15
15
  - asgi.py
16
16
  - urls.py
17
17
 
18
- ## 2.1 settings.py
18
+ ## 2.1 settings.py and ___init__.py
19
19
 
20
20
  ```python
21
21
  from pathlib import Path
@@ -31,8 +31,16 @@ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^
31
31
 
32
32
  DATABASES = {
33
33
  'default': {
34
- 'ENGINE': 'django.db.backends.sqlite3',
35
- 'NAME': BASE_DIR / 'db.sqlite3',
34
+ 'ENGINE': 'django.db.backends.mysql', # 使用 MySQL
35
+ 'NAME': 'vm_ets', # 数据库名
36
+ 'USER': 'root', # 用户名
37
+ 'PASSWORD': password, # 密码
38
+ 'HOST': 'localhost', # 数据库地址,本机用127.0.0.1
39
+ 'PORT': '3306', # MySQL端口,默认3306
40
+ 'OPTIONS': {
41
+ 'connect_timeout': 5, # 默认10秒,可以缩短
42
+ 'charset': 'utf8mb4',
43
+ }
36
44
  }
37
45
  }
38
46
 
@@ -75,44 +83,58 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
75
83
  """ Valar Options """
76
84
 
77
85
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
78
- MONGO_URI = 'mongodb://username:password@host:27017'
79
- MINIO_URL = "s3://username:password@host:9000"
80
- MINIO_ROOT = "https://host:9001"
86
+ MONGO_URI = f'mongodb://root:{password}@{host}:27017/'
87
+ MINIO_URL = f"s3://admin:{password}@{host}:9001"
88
+ MINIO_ROOT = f"http://{host}:9001"
81
89
 
82
90
  """ Email Options """
91
+
83
92
  EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
84
- EMAIL_HOST = 'xxx.xx.xx.xx'
85
- EMAIL_PORT = 465
86
- EMAIL_DOMAIN = 'http://xx.xx.xx'
87
- EMAIL_HOST_USER = "xxx@xx.xx.xx"
88
- EMAIL_HOST_PASSWORD = '*******'
89
- EMAIL_USE_TLS = False
90
- EMAIL_USE_SSL = True
93
+ EMAIL_HOST = 'smtp.126.com'
94
+ EMAIL_PORT = 25
95
+ EMAIL_HOST_USER = "xxxx@126.com"
96
+ EMAIL_HOST_PASSWORD = 'CGiKQh5FyQyupQYA'
97
+ ```
98
+
99
+ ```python
100
+ import pymysql
101
+
102
+ pymysql.install_as_MySQLdb()
103
+
91
104
  ```
92
105
 
93
106
  ## 2.2 asgi.py
94
107
 
95
108
  ```python
109
+ import os
110
+ from pathlib import Path
111
+
96
112
  from django.core.asgi import get_asgi_application
97
113
  from channels.routing import ProtocolTypeRouter, URLRouter
98
114
  from django.urls import re_path
99
115
 
100
116
  from valar.channels.consumer import ValarConsumer
101
117
 
118
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings' % Path(__file__).resolve().parent.parent.name)
102
119
  application = ProtocolTypeRouter({
103
120
  'http': get_asgi_application(),
104
121
  'websocket': URLRouter([
105
122
  re_path(r'(?P<client>\w+)/$', ValarConsumer.as_asgi()),
106
123
  ])
107
124
  })
108
-
109
-
110
125
  ```
111
126
 
112
127
  ## 2.3 urls.py
113
128
 
114
- - no need to provide urls for Valar, Valar will auto set urlpatterns for Morghulis (
115
- see https://www.npmjs.com/package/morghulis)
129
+ ```python
130
+ from django.urls import path, include
131
+
132
+ urlpatterns = [
133
+ path('valar/', include('valar.urls')),
134
+ ]
135
+
136
+ ```
137
+
116
138
  - go to section 4 to see how to register channel handlers (a Vue - Django async communication tool) in urls.
117
139
 
118
140
  # 3. migrate
@@ -7,7 +7,7 @@ from typing import Dict, Type
7
7
  with open("README.md", "r", encoding="utf-8") as f:
8
8
  long_description = f.read()
9
9
 
10
- version = "1.3.22"
10
+ version = "1.3.23"
11
11
 
12
12
  requires = [
13
13
  'autobahn==24.4.2',
@@ -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
  #
@@ -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.22
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
@@ -46,7 +46,7 @@ pip install valar
46
46
  - asgi.py
47
47
  - urls.py
48
48
 
49
- ## 2.1 settings.py
49
+ ## 2.1 settings.py and ___init__.py
50
50
 
51
51
  ```python
52
52
  from pathlib import Path
@@ -62,8 +62,16 @@ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^
62
62
 
63
63
  DATABASES = {
64
64
  'default': {
65
- 'ENGINE': 'django.db.backends.sqlite3',
66
- '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
+ }
67
75
  }
68
76
  }
69
77
 
@@ -106,44 +114,58 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
106
114
  """ Valar Options """
107
115
 
108
116
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
109
- MONGO_URI = 'mongodb://username:password@host:27017'
110
- MINIO_URL = "s3://username:password@host:9000"
111
- 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"
112
120
 
113
121
  """ Email Options """
122
+
114
123
  EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
115
- EMAIL_HOST = 'xxx.xx.xx.xx'
116
- EMAIL_PORT = 465
117
- EMAIL_DOMAIN = 'http://xx.xx.xx'
118
- EMAIL_HOST_USER = "xxx@xx.xx.xx"
119
- EMAIL_HOST_PASSWORD = '*******'
120
- EMAIL_USE_TLS = False
121
- 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
+
122
135
  ```
123
136
 
124
137
  ## 2.2 asgi.py
125
138
 
126
139
  ```python
140
+ import os
141
+ from pathlib import Path
142
+
127
143
  from django.core.asgi import get_asgi_application
128
144
  from channels.routing import ProtocolTypeRouter, URLRouter
129
145
  from django.urls import re_path
130
146
 
131
147
  from valar.channels.consumer import ValarConsumer
132
148
 
149
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings' % Path(__file__).resolve().parent.parent.name)
133
150
  application = ProtocolTypeRouter({
134
151
  'http': get_asgi_application(),
135
152
  'websocket': URLRouter([
136
153
  re_path(r'(?P<client>\w+)/$', ValarConsumer.as_asgi()),
137
154
  ])
138
155
  })
139
-
140
-
141
156
  ```
142
157
 
143
158
  ## 2.3 urls.py
144
159
 
145
- - no need to provide urls for Valar, Valar will auto set urlpatterns for Morghulis (
146
- 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
+
147
169
  - go to section 4 to see how to register channel handlers (a Vue - Django async communication tool) in urls.
148
170
 
149
171
  # 3. migrate
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