valar 1.2.3__tar.gz → 1.2.4__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.
Files changed (52) hide show
  1. {valar-1.2.3/src/valar.egg-info → valar-1.2.4}/PKG-INFO +68 -27
  2. {valar-1.2.3 → valar-1.2.4}/README.md +67 -26
  3. {valar-1.2.3 → valar-1.2.4}/setup.py +1 -1
  4. {valar-1.2.3 → valar-1.2.4/src/valar.egg-info}/PKG-INFO +68 -27
  5. {valar-1.2.3 → valar-1.2.4}/LICENSE +0 -0
  6. {valar-1.2.3 → valar-1.2.4}/setup.cfg +0 -0
  7. {valar-1.2.3 → valar-1.2.4}/src/valar/__init__.py +0 -0
  8. {valar-1.2.3 → valar-1.2.4}/src/valar/apps.py +0 -0
  9. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/__init__.py +0 -0
  10. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/consumer.py +0 -0
  11. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/counter.py +0 -0
  12. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/executer.py +0 -0
  13. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/mapping.py +0 -0
  14. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/sender.py +0 -0
  15. {valar-1.2.3 → valar-1.2.4}/src/valar/channels/views.py +0 -0
  16. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/__init__.py +0 -0
  17. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/app_mixins/__init__.py +0 -0
  18. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/app_mixins/auto_migration_mixin.py +0 -0
  19. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
  20. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/singleton_meta.py +0 -0
  21. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/valar_minio.py +0 -0
  22. {valar-1.2.3 → valar-1.2.4}/src/valar/classes/valar_response.py +0 -0
  23. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/__init__.py +0 -0
  24. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/abstract.py +0 -0
  25. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/defaults/__init__.py +0 -0
  26. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/defaults/field_keys_default.py +0 -0
  27. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/defaults/field_values_default.py +0 -0
  28. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/defaults/view_defaults.py +0 -0
  29. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/engine.py +0 -0
  30. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/frame.py +0 -0
  31. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/meta.py +0 -0
  32. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/mon_dao.py +0 -0
  33. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/mon_field.py +0 -0
  34. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/orm_dao.py +0 -0
  35. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/orm_field.py +0 -0
  36. {valar-1.2.3 → valar-1.2.4}/src/valar/dao/query.py +0 -0
  37. {valar-1.2.3 → valar-1.2.4}/src/valar/migrations/__init__.py +0 -0
  38. {valar-1.2.3 → valar-1.2.4}/src/valar/models/__init__.py +0 -0
  39. {valar-1.2.3 → valar-1.2.4}/src/valar/models/core.py +0 -0
  40. {valar-1.2.3 → valar-1.2.4}/src/valar/models/frame.py +0 -0
  41. {valar-1.2.3 → valar-1.2.4}/src/valar/models/meta.py +0 -0
  42. {valar-1.2.3 → valar-1.2.4}/src/valar/models/test.py +0 -0
  43. {valar-1.2.3 → valar-1.2.4}/src/valar/urls.py +0 -0
  44. {valar-1.2.3 → valar-1.2.4}/src/valar/views/__init__.py +0 -0
  45. {valar-1.2.3 → valar-1.2.4}/src/valar/views/file.py +0 -0
  46. {valar-1.2.3 → valar-1.2.4}/src/valar/views/handler.py +0 -0
  47. {valar-1.2.3 → valar-1.2.4}/src/valar/views/meta.py +0 -0
  48. {valar-1.2.3 → valar-1.2.4}/src/valar/views/rest.py +0 -0
  49. {valar-1.2.3 → valar-1.2.4}/src/valar.egg-info/SOURCES.txt +0 -0
  50. {valar-1.2.3 → valar-1.2.4}/src/valar.egg-info/dependency_links.txt +0 -0
  51. {valar-1.2.3 → valar-1.2.4}/src/valar.egg-info/requires.txt +0 -0
  52. {valar-1.2.3 → valar-1.2.4}/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.2.3
3
+ Version: 1.2.4
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -28,7 +28,7 @@ Dynamic: summary
28
28
 
29
29
  valar for morghulis
30
30
 
31
- # 1. install
31
+ # 1. installation
32
32
 
33
33
  ```shell
34
34
  pip install valar
@@ -37,24 +37,16 @@ pip install valar
37
37
  # 1. settings
38
38
 
39
39
  ```python
40
- from django.core.management.utils import get_random_secret_key
41
40
  from pathlib import Path
42
41
 
43
- """ Compulsory settings """
44
-
42
+ """ Compulsory settings """
45
43
  DEBUG = True
46
44
  BASE_DIR = Path(__file__).resolve().parent.parent
47
45
  BASE_APP = str(BASE_DIR.name)
48
46
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
49
- SECRET_KEY = get_random_secret_key()
50
-
51
- """ Valar Options """
47
+ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^'
52
48
 
53
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
54
- MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
55
- MINIO_URL = "s3://admin:password@120.27.8.186:9000"
56
-
57
- """ Minimized compulsory settings """
49
+ """ Minimized compulsory settings """
58
50
 
59
51
  DATABASES = {
60
52
  'default': {
@@ -62,29 +54,32 @@ DATABASES = {
62
54
  'NAME': BASE_DIR / 'db.sqlite3',
63
55
  }
64
56
  }
57
+
65
58
  INSTALLED_APPS = [
66
59
  'django.contrib.sessions',
67
60
  "corsheaders",
68
61
  'channels',
69
62
  'valar.apps.ValarConfig',
70
63
  ]
64
+
71
65
  MIDDLEWARE = [
72
66
  'django.contrib.sessions.middleware.SessionMiddleware',
73
67
  'corsheaders.middleware.CorsMiddleware',
74
68
  'django.middleware.common.CommonMiddleware',
75
69
  ]
70
+
76
71
  CHANNEL_LAYERS = {
77
72
  "default": {
78
73
  "BACKEND": "channels.layers.InMemoryChannelLayer"
79
74
  }
80
75
  }
76
+
81
77
  CORS_ORIGIN_ALLOW_ALL = True
82
78
  CORS_ALLOW_CREDENTIALS = True
83
79
  ROOT_URLCONF = "%s.urls" % BASE_APP
84
80
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
85
81
 
86
- """ Optional settings """
87
-
82
+ """ Optional settings """
88
83
  ALLOWED_HOSTS = ['*']
89
84
  LANGUAGE_CODE = 'en-us'
90
85
  TIME_ZONE = 'Asia/Shanghai'
@@ -95,6 +90,13 @@ SESSION_COOKIE_AGE = 60 * 60
95
90
  FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
96
91
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
97
92
 
93
+ """ Valar Options """
94
+
95
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
96
+ MONGO_URI = 'mongodb://username:password@host:27017'
97
+ MINIO_URL = "s3://username:password@host:9000"
98
+ MINIO_ROOT = "https://host:9001"
99
+
98
100
  ```
99
101
 
100
102
  # 2. asgi
@@ -103,6 +105,7 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
103
105
  from django.core.asgi import get_asgi_application
104
106
  from channels.routing import ProtocolTypeRouter, URLRouter
105
107
  from django.urls import re_path
108
+
106
109
  from valar.channels.consumer import ValarConsumer
107
110
 
108
111
  application = ProtocolTypeRouter({
@@ -112,39 +115,77 @@ application = ProtocolTypeRouter({
112
115
  ])
113
116
  })
114
117
 
118
+
115
119
  ```
116
120
 
117
121
  # 3. migrate
118
122
 
119
- no need, valar will auto migration
123
+ - no need to makemigrations and migrate for valar, valar will auto migration
120
124
 
121
125
  # 4. root urls
122
126
 
123
- no need, valar will auto set urlpatterns
127
+ no need to provide urls for val, valar will auto set urlpatterns for Morghulis (
128
+ see https://www.npmjs.com/package/morghulis)
124
129
 
125
- # 5. how to use valar_channel
130
+ # 5. how to register a channel handler for Morghulis async methods
126
131
 
127
- 5.1 set HANDLER_MAPPING in settings
132
+ ## 5.1 create a handler
128
133
 
129
134
  ```python
130
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
135
+ import time
136
+ from valar.channels.sender import ValarChannelSender
137
+ from valar.channels.counter import Counter
138
+
139
+
140
+ def valar_test_handler(sender: ValarChannelSender):
141
+ data = sender.data
142
+ length = data.get('length', 100)
143
+ counter = Counter(length)
144
+ for i in range(length):
145
+ time.sleep(0.1)
146
+ tick = counter.tick()
147
+ tick.update({'name': 'test1'})
148
+ sender.load(tick)
131
149
  ```
132
150
 
133
- 5.2 create a handler
151
+ ### 5.2 create a dict (e.g. using the name 'channel_mapping') to save your handler
152
+
153
+ - I'd like to put it in the root urls.py, you can put it anywhere
134
154
 
135
155
  ```python
136
- from valar.channels.sender import ValarSocketSender
156
+ channel_mapping = {
157
+ 'test': valar_test_handler,
158
+ }
159
+ ```
137
160
 
161
+ ## 5.2 register the channel_mapping in the settings.py
138
162
 
139
- def test_handler(sender: ValarSocketSender):
140
- data = sender.data
141
- sender.load(data)
163
+ ```python
164
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
142
165
  ```
143
166
 
144
- 5.3 register handler in channel_mapping
167
+ ### 5.4 you can copy the following codes to your urls.py
145
168
 
146
169
  ```python
170
+ import json
171
+
172
+ from django.urls import path
173
+
174
+ from valar.classes.valar_response import ValarResponse
175
+ from valar.views.handler import valar_test_handler
176
+
177
+
178
+ def test_request(request):
179
+ body = json.loads(request.body)
180
+ return ValarResponse(body)
181
+
182
+
183
+ urlpatterns = [
184
+ path('test', test_request),
185
+ ]
186
+
147
187
  channel_mapping = {
148
- 'test': test_handler,
188
+ 'test_handler': valar_test_handler,
149
189
  }
190
+
150
191
  ```
@@ -1,6 +1,6 @@
1
1
  valar for morghulis
2
2
 
3
- # 1. install
3
+ # 1. installation
4
4
 
5
5
  ```shell
6
6
  pip install valar
@@ -9,24 +9,16 @@ pip install valar
9
9
  # 1. settings
10
10
 
11
11
  ```python
12
- from django.core.management.utils import get_random_secret_key
13
12
  from pathlib import Path
14
13
 
15
- """ Compulsory settings """
16
-
14
+ """ Compulsory settings """
17
15
  DEBUG = True
18
16
  BASE_DIR = Path(__file__).resolve().parent.parent
19
17
  BASE_APP = str(BASE_DIR.name)
20
18
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
21
- SECRET_KEY = get_random_secret_key()
22
-
23
- """ Valar Options """
19
+ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^'
24
20
 
25
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
26
- MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
27
- MINIO_URL = "s3://admin:password@120.27.8.186:9000"
28
-
29
- """ Minimized compulsory settings """
21
+ """ Minimized compulsory settings """
30
22
 
31
23
  DATABASES = {
32
24
  'default': {
@@ -34,29 +26,32 @@ DATABASES = {
34
26
  'NAME': BASE_DIR / 'db.sqlite3',
35
27
  }
36
28
  }
29
+
37
30
  INSTALLED_APPS = [
38
31
  'django.contrib.sessions',
39
32
  "corsheaders",
40
33
  'channels',
41
34
  'valar.apps.ValarConfig',
42
35
  ]
36
+
43
37
  MIDDLEWARE = [
44
38
  'django.contrib.sessions.middleware.SessionMiddleware',
45
39
  'corsheaders.middleware.CorsMiddleware',
46
40
  'django.middleware.common.CommonMiddleware',
47
41
  ]
42
+
48
43
  CHANNEL_LAYERS = {
49
44
  "default": {
50
45
  "BACKEND": "channels.layers.InMemoryChannelLayer"
51
46
  }
52
47
  }
48
+
53
49
  CORS_ORIGIN_ALLOW_ALL = True
54
50
  CORS_ALLOW_CREDENTIALS = True
55
51
  ROOT_URLCONF = "%s.urls" % BASE_APP
56
52
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
57
53
 
58
- """ Optional settings """
59
-
54
+ """ Optional settings """
60
55
  ALLOWED_HOSTS = ['*']
61
56
  LANGUAGE_CODE = 'en-us'
62
57
  TIME_ZONE = 'Asia/Shanghai'
@@ -67,6 +62,13 @@ SESSION_COOKIE_AGE = 60 * 60
67
62
  FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
68
63
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
69
64
 
65
+ """ Valar Options """
66
+
67
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
68
+ MONGO_URI = 'mongodb://username:password@host:27017'
69
+ MINIO_URL = "s3://username:password@host:9000"
70
+ MINIO_ROOT = "https://host:9001"
71
+
70
72
  ```
71
73
 
72
74
  # 2. asgi
@@ -75,6 +77,7 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
75
77
  from django.core.asgi import get_asgi_application
76
78
  from channels.routing import ProtocolTypeRouter, URLRouter
77
79
  from django.urls import re_path
80
+
78
81
  from valar.channels.consumer import ValarConsumer
79
82
 
80
83
  application = ProtocolTypeRouter({
@@ -84,39 +87,77 @@ application = ProtocolTypeRouter({
84
87
  ])
85
88
  })
86
89
 
90
+
87
91
  ```
88
92
 
89
93
  # 3. migrate
90
94
 
91
- no need, valar will auto migration
95
+ - no need to makemigrations and migrate for valar, valar will auto migration
92
96
 
93
97
  # 4. root urls
94
98
 
95
- no need, valar will auto set urlpatterns
99
+ no need to provide urls for val, valar will auto set urlpatterns for Morghulis (
100
+ see https://www.npmjs.com/package/morghulis)
96
101
 
97
- # 5. how to use valar_channel
102
+ # 5. how to register a channel handler for Morghulis async methods
98
103
 
99
- 5.1 set HANDLER_MAPPING in settings
104
+ ## 5.1 create a handler
100
105
 
101
106
  ```python
102
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
107
+ import time
108
+ from valar.channels.sender import ValarChannelSender
109
+ from valar.channels.counter import Counter
110
+
111
+
112
+ def valar_test_handler(sender: ValarChannelSender):
113
+ data = sender.data
114
+ length = data.get('length', 100)
115
+ counter = Counter(length)
116
+ for i in range(length):
117
+ time.sleep(0.1)
118
+ tick = counter.tick()
119
+ tick.update({'name': 'test1'})
120
+ sender.load(tick)
103
121
  ```
104
122
 
105
- 5.2 create a handler
123
+ ### 5.2 create a dict (e.g. using the name 'channel_mapping') to save your handler
124
+
125
+ - I'd like to put it in the root urls.py, you can put it anywhere
106
126
 
107
127
  ```python
108
- from valar.channels.sender import ValarSocketSender
128
+ channel_mapping = {
129
+ 'test': valar_test_handler,
130
+ }
131
+ ```
109
132
 
133
+ ## 5.2 register the channel_mapping in the settings.py
110
134
 
111
- def test_handler(sender: ValarSocketSender):
112
- data = sender.data
113
- sender.load(data)
135
+ ```python
136
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
114
137
  ```
115
138
 
116
- 5.3 register handler in channel_mapping
139
+ ### 5.4 you can copy the following codes to your urls.py
117
140
 
118
141
  ```python
142
+ import json
143
+
144
+ from django.urls import path
145
+
146
+ from valar.classes.valar_response import ValarResponse
147
+ from valar.views.handler import valar_test_handler
148
+
149
+
150
+ def test_request(request):
151
+ body = json.loads(request.body)
152
+ return ValarResponse(body)
153
+
154
+
155
+ urlpatterns = [
156
+ path('test', test_request),
157
+ ]
158
+
119
159
  channel_mapping = {
120
- 'test': test_handler,
160
+ 'test_handler': valar_test_handler,
121
161
  }
162
+
122
163
  ```
@@ -16,7 +16,7 @@ requires = [
16
16
 
17
17
  setup(
18
18
  name="valar", # 包名
19
- version="1.2.3", # 版本号
19
+ version="1.2.4", # 版本号
20
20
  author="LYP", # 作者
21
21
  author_email="liuyinpeng@buaa.edu.cn", # 邮箱
22
22
  description="valar for morghulis", # 简短描述
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -28,7 +28,7 @@ Dynamic: summary
28
28
 
29
29
  valar for morghulis
30
30
 
31
- # 1. install
31
+ # 1. installation
32
32
 
33
33
  ```shell
34
34
  pip install valar
@@ -37,24 +37,16 @@ pip install valar
37
37
  # 1. settings
38
38
 
39
39
  ```python
40
- from django.core.management.utils import get_random_secret_key
41
40
  from pathlib import Path
42
41
 
43
- """ Compulsory settings """
44
-
42
+ """ Compulsory settings """
45
43
  DEBUG = True
46
44
  BASE_DIR = Path(__file__).resolve().parent.parent
47
45
  BASE_APP = str(BASE_DIR.name)
48
46
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
49
- SECRET_KEY = get_random_secret_key()
50
-
51
- """ Valar Options """
47
+ SECRET_KEY = 'django-insecure-of@tfouoq^_f$l!yki#m=6j7)@&kjri$1_$!mca-=%7=+@f@5^'
52
48
 
53
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
54
- MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
55
- MINIO_URL = "s3://admin:password@120.27.8.186:9000"
56
-
57
- """ Minimized compulsory settings """
49
+ """ Minimized compulsory settings """
58
50
 
59
51
  DATABASES = {
60
52
  'default': {
@@ -62,29 +54,32 @@ DATABASES = {
62
54
  'NAME': BASE_DIR / 'db.sqlite3',
63
55
  }
64
56
  }
57
+
65
58
  INSTALLED_APPS = [
66
59
  'django.contrib.sessions',
67
60
  "corsheaders",
68
61
  'channels',
69
62
  'valar.apps.ValarConfig',
70
63
  ]
64
+
71
65
  MIDDLEWARE = [
72
66
  'django.contrib.sessions.middleware.SessionMiddleware',
73
67
  'corsheaders.middleware.CorsMiddleware',
74
68
  'django.middleware.common.CommonMiddleware',
75
69
  ]
70
+
76
71
  CHANNEL_LAYERS = {
77
72
  "default": {
78
73
  "BACKEND": "channels.layers.InMemoryChannelLayer"
79
74
  }
80
75
  }
76
+
81
77
  CORS_ORIGIN_ALLOW_ALL = True
82
78
  CORS_ALLOW_CREDENTIALS = True
83
79
  ROOT_URLCONF = "%s.urls" % BASE_APP
84
80
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
85
81
 
86
- """ Optional settings """
87
-
82
+ """ Optional settings """
88
83
  ALLOWED_HOSTS = ['*']
89
84
  LANGUAGE_CODE = 'en-us'
90
85
  TIME_ZONE = 'Asia/Shanghai'
@@ -95,6 +90,13 @@ SESSION_COOKIE_AGE = 60 * 60
95
90
  FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
96
91
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
97
92
 
93
+ """ Valar Options """
94
+
95
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
96
+ MONGO_URI = 'mongodb://username:password@host:27017'
97
+ MINIO_URL = "s3://username:password@host:9000"
98
+ MINIO_ROOT = "https://host:9001"
99
+
98
100
  ```
99
101
 
100
102
  # 2. asgi
@@ -103,6 +105,7 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
103
105
  from django.core.asgi import get_asgi_application
104
106
  from channels.routing import ProtocolTypeRouter, URLRouter
105
107
  from django.urls import re_path
108
+
106
109
  from valar.channels.consumer import ValarConsumer
107
110
 
108
111
  application = ProtocolTypeRouter({
@@ -112,39 +115,77 @@ application = ProtocolTypeRouter({
112
115
  ])
113
116
  })
114
117
 
118
+
115
119
  ```
116
120
 
117
121
  # 3. migrate
118
122
 
119
- no need, valar will auto migration
123
+ - no need to makemigrations and migrate for valar, valar will auto migration
120
124
 
121
125
  # 4. root urls
122
126
 
123
- no need, valar will auto set urlpatterns
127
+ no need to provide urls for val, valar will auto set urlpatterns for Morghulis (
128
+ see https://www.npmjs.com/package/morghulis)
124
129
 
125
- # 5. how to use valar_channel
130
+ # 5. how to register a channel handler for Morghulis async methods
126
131
 
127
- 5.1 set HANDLER_MAPPING in settings
132
+ ## 5.1 create a handler
128
133
 
129
134
  ```python
130
- HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
135
+ import time
136
+ from valar.channels.sender import ValarChannelSender
137
+ from valar.channels.counter import Counter
138
+
139
+
140
+ def valar_test_handler(sender: ValarChannelSender):
141
+ data = sender.data
142
+ length = data.get('length', 100)
143
+ counter = Counter(length)
144
+ for i in range(length):
145
+ time.sleep(0.1)
146
+ tick = counter.tick()
147
+ tick.update({'name': 'test1'})
148
+ sender.load(tick)
131
149
  ```
132
150
 
133
- 5.2 create a handler
151
+ ### 5.2 create a dict (e.g. using the name 'channel_mapping') to save your handler
152
+
153
+ - I'd like to put it in the root urls.py, you can put it anywhere
134
154
 
135
155
  ```python
136
- from valar.channels.sender import ValarSocketSender
156
+ channel_mapping = {
157
+ 'test': valar_test_handler,
158
+ }
159
+ ```
137
160
 
161
+ ## 5.2 register the channel_mapping in the settings.py
138
162
 
139
- def test_handler(sender: ValarSocketSender):
140
- data = sender.data
141
- sender.load(data)
163
+ ```python
164
+ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
142
165
  ```
143
166
 
144
- 5.3 register handler in channel_mapping
167
+ ### 5.4 you can copy the following codes to your urls.py
145
168
 
146
169
  ```python
170
+ import json
171
+
172
+ from django.urls import path
173
+
174
+ from valar.classes.valar_response import ValarResponse
175
+ from valar.views.handler import valar_test_handler
176
+
177
+
178
+ def test_request(request):
179
+ body = json.loads(request.body)
180
+ return ValarResponse(body)
181
+
182
+
183
+ urlpatterns = [
184
+ path('test', test_request),
185
+ ]
186
+
147
187
  channel_mapping = {
148
- 'test': test_handler,
188
+ 'test_handler': valar_test_handler,
149
189
  }
190
+
150
191
  ```
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