valar 1.2.0__tar.gz → 1.2.1__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 (59) hide show
  1. {valar-1.2.0/src/valar.egg-info → valar-1.2.1}/PKG-INFO +9 -14
  2. {valar-1.2.0 → valar-1.2.1}/README.md +8 -13
  3. {valar-1.2.0 → valar-1.2.1}/setup.py +1 -1
  4. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/auto_migration_mixin.py +2 -2
  5. {valar-1.2.0 → valar-1.2.1/src/valar.egg-info}/PKG-INFO +9 -14
  6. {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/SOURCES.txt +8 -1
  7. {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/top_level.txt +1 -0
  8. valar-1.2.1/src/vtest/__init__.py +0 -0
  9. valar-1.2.1/src/vtest/apps.py +17 -0
  10. valar-1.2.1/src/vtest/handlers.py +15 -0
  11. valar-1.2.1/src/vtest/migrations/0001_initial.py +155 -0
  12. valar-1.2.1/src/vtest/migrations/__init__.py +0 -0
  13. valar-1.2.1/src/vtest/models.py +59 -0
  14. valar-1.2.1/src/vtest/views.py +8 -0
  15. {valar-1.2.0 → valar-1.2.1}/LICENSE +0 -0
  16. {valar-1.2.0 → valar-1.2.1}/setup.cfg +0 -0
  17. {valar-1.2.0 → valar-1.2.1}/src/valar/__init__.py +0 -0
  18. {valar-1.2.0 → valar-1.2.1}/src/valar/apps.py +0 -0
  19. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/__init__.py +0 -0
  20. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/consumer.py +0 -0
  21. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/counter.py +0 -0
  22. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/executer.py +0 -0
  23. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/mapping.py +0 -0
  24. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/sender.py +0 -0
  25. {valar-1.2.0 → valar-1.2.1}/src/valar/channels/views.py +0 -0
  26. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/__init__.py +0 -0
  27. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/__init__.py +0 -0
  28. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
  29. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/singleton_meta.py +0 -0
  30. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/valar_minio.py +0 -0
  31. {valar-1.2.0 → valar-1.2.1}/src/valar/classes/valar_response.py +0 -0
  32. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/__init__.py +0 -0
  33. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/abstract.py +0 -0
  34. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/__init__.py +0 -0
  35. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/field_keys_default.py +0 -0
  36. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/field_values_default.py +0 -0
  37. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/view_defaults.py +0 -0
  38. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/engine.py +0 -0
  39. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/frame.py +0 -0
  40. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/meta.py +0 -0
  41. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/mon_dao.py +0 -0
  42. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/mon_field.py +0 -0
  43. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/orm_dao.py +0 -0
  44. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/orm_field.py +0 -0
  45. {valar-1.2.0 → valar-1.2.1}/src/valar/dao/query.py +0 -0
  46. {valar-1.2.0 → valar-1.2.1}/src/valar/migrations/0001_initial.py +0 -0
  47. {valar-1.2.0 → valar-1.2.1}/src/valar/migrations/__init__.py +0 -0
  48. {valar-1.2.0 → valar-1.2.1}/src/valar/models/__init__.py +0 -0
  49. {valar-1.2.0 → valar-1.2.1}/src/valar/models/core.py +0 -0
  50. {valar-1.2.0 → valar-1.2.1}/src/valar/models/frame.py +0 -0
  51. {valar-1.2.0 → valar-1.2.1}/src/valar/models/meta.py +0 -0
  52. {valar-1.2.0 → valar-1.2.1}/src/valar/urls.py +0 -0
  53. {valar-1.2.0 → valar-1.2.1}/src/valar/views/__init__.py +0 -0
  54. {valar-1.2.0 → valar-1.2.1}/src/valar/views/file.py +0 -0
  55. {valar-1.2.0 → valar-1.2.1}/src/valar/views/handler.py +0 -0
  56. {valar-1.2.0 → valar-1.2.1}/src/valar/views/meta.py +0 -0
  57. {valar-1.2.0 → valar-1.2.1}/src/valar/views/rest.py +0 -0
  58. {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/dependency_links.txt +0 -0
  59. {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/requires.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -27,12 +27,13 @@ Dynamic: requires-python
27
27
  Dynamic: summary
28
28
 
29
29
  valar for morghulis
30
+
30
31
  # 1. install
32
+
31
33
  ```shell
32
34
  pip install valar
33
35
  ```
34
36
 
35
-
36
37
  # 1. settings
37
38
 
38
39
  ```python
@@ -47,16 +48,12 @@ BASE_APP = str(BASE_DIR.name)
47
48
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
48
49
  SECRET_KEY = get_random_secret_key()
49
50
 
50
-
51
-
52
51
  """ Valar Options """
53
52
 
54
53
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
55
54
  MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
56
55
  MINIO_URL = "s3://admin:password@120.27.8.186:9000"
57
56
 
58
-
59
-
60
57
  """ Minimized compulsory settings """
61
58
 
62
59
  DATABASES = {
@@ -69,7 +66,7 @@ INSTALLED_APPS = [
69
66
  'django.contrib.sessions',
70
67
  "corsheaders",
71
68
  'channels',
72
- 'valar',
69
+ 'valar.apps.ValarConfig',
73
70
  ]
74
71
  MIDDLEWARE = [
75
72
  'django.contrib.sessions.middleware.SessionMiddleware',
@@ -99,6 +96,7 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
99
96
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
100
97
 
101
98
  ```
99
+
102
100
  # 2. asgi
103
101
 
104
102
  ```python
@@ -117,8 +115,8 @@ application = ProtocolTypeRouter({
117
115
  ```
118
116
 
119
117
  # 3. migrate
120
- no need, valar will auto migration
121
118
 
119
+ no need, valar will auto migration
122
120
 
123
121
  # 4. root urls
124
122
 
@@ -126,7 +124,6 @@ no need, valar will auto set urlpatterns
126
124
 
127
125
  # 5. how to use valar_channel
128
126
 
129
-
130
127
  5.1 set HANDLER_MAPPING in settings
131
128
 
132
129
  ```python
@@ -137,13 +134,11 @@ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
137
134
 
138
135
  ```python
139
136
  from valar.channels.sender import ValarSocketSender
137
+
138
+
140
139
  def test_handler(sender: ValarSocketSender):
141
140
  data = sender.data
142
- length = data.get('length',30)
143
- counter = sender.create_counter(length)
144
- for i in range(length):
145
- # sync method
146
- sender.to_clients(counter.tick() ,sender.client, wait=True)
141
+ sender.load(data)
147
142
  ```
148
143
 
149
144
  5.3 register handler in channel_mapping
@@ -1,10 +1,11 @@
1
1
  valar for morghulis
2
+
2
3
  # 1. install
4
+
3
5
  ```shell
4
6
  pip install valar
5
7
  ```
6
8
 
7
-
8
9
  # 1. settings
9
10
 
10
11
  ```python
@@ -19,16 +20,12 @@ BASE_APP = str(BASE_DIR.name)
19
20
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
20
21
  SECRET_KEY = get_random_secret_key()
21
22
 
22
-
23
-
24
23
  """ Valar Options """
25
24
 
26
25
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
27
26
  MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
28
27
  MINIO_URL = "s3://admin:password@120.27.8.186:9000"
29
28
 
30
-
31
-
32
29
  """ Minimized compulsory settings """
33
30
 
34
31
  DATABASES = {
@@ -41,7 +38,7 @@ INSTALLED_APPS = [
41
38
  'django.contrib.sessions',
42
39
  "corsheaders",
43
40
  'channels',
44
- 'valar',
41
+ 'valar.apps.ValarConfig',
45
42
  ]
46
43
  MIDDLEWARE = [
47
44
  'django.contrib.sessions.middleware.SessionMiddleware',
@@ -71,6 +68,7 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
71
68
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
72
69
 
73
70
  ```
71
+
74
72
  # 2. asgi
75
73
 
76
74
  ```python
@@ -89,8 +87,8 @@ application = ProtocolTypeRouter({
89
87
  ```
90
88
 
91
89
  # 3. migrate
92
- no need, valar will auto migration
93
90
 
91
+ no need, valar will auto migration
94
92
 
95
93
  # 4. root urls
96
94
 
@@ -98,7 +96,6 @@ no need, valar will auto set urlpatterns
98
96
 
99
97
  # 5. how to use valar_channel
100
98
 
101
-
102
99
  5.1 set HANDLER_MAPPING in settings
103
100
 
104
101
  ```python
@@ -109,13 +106,11 @@ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
109
106
 
110
107
  ```python
111
108
  from valar.channels.sender import ValarSocketSender
109
+
110
+
112
111
  def test_handler(sender: ValarSocketSender):
113
112
  data = sender.data
114
- length = data.get('length',30)
115
- counter = sender.create_counter(length)
116
- for i in range(length):
117
- # sync method
118
- sender.to_clients(counter.tick() ,sender.client, wait=True)
113
+ sender.load(data)
119
114
  ```
120
115
 
121
116
  5.3 register handler in channel_mapping
@@ -16,7 +16,7 @@ requires = [
16
16
 
17
17
  setup(
18
18
  name="valar", # 包名
19
- version="1.2.0", # 版本号
19
+ version="1.2.1", # 版本号
20
20
  author="LYP", # 作者
21
21
  author_email="liuyinpeng@buaa.edu.cn", # 邮箱
22
22
  description="valar for morghulis", # 简短描述
@@ -1,8 +1,8 @@
1
1
  class AutoMigrationMixin:
2
2
  name = None # 子类必须提供
3
+
3
4
  def auto_migrate(self):
4
5
  from django.core.management import call_command
5
- app = self.name.replace('src.','')
6
+ app = self.name.replace('src.', '')
6
7
  call_command('makemigrations', app, interactive=False, verbosity=0)
7
8
  call_command('migrate', app, interactive=False, verbosity=0)
8
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -27,12 +27,13 @@ Dynamic: requires-python
27
27
  Dynamic: summary
28
28
 
29
29
  valar for morghulis
30
+
30
31
  # 1. install
32
+
31
33
  ```shell
32
34
  pip install valar
33
35
  ```
34
36
 
35
-
36
37
  # 1. settings
37
38
 
38
39
  ```python
@@ -47,16 +48,12 @@ BASE_APP = str(BASE_DIR.name)
47
48
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
48
49
  SECRET_KEY = get_random_secret_key()
49
50
 
50
-
51
-
52
51
  """ Valar Options """
53
52
 
54
53
  HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
55
54
  MONGO_URI = 'mongodb://root:19870120@121.41.111.175:27017/'
56
55
  MINIO_URL = "s3://admin:password@120.27.8.186:9000"
57
56
 
58
-
59
-
60
57
  """ Minimized compulsory settings """
61
58
 
62
59
  DATABASES = {
@@ -69,7 +66,7 @@ INSTALLED_APPS = [
69
66
  'django.contrib.sessions',
70
67
  "corsheaders",
71
68
  'channels',
72
- 'valar',
69
+ 'valar.apps.ValarConfig',
73
70
  ]
74
71
  MIDDLEWARE = [
75
72
  'django.contrib.sessions.middleware.SessionMiddleware',
@@ -99,6 +96,7 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
99
96
  DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 100
100
97
 
101
98
  ```
99
+
102
100
  # 2. asgi
103
101
 
104
102
  ```python
@@ -117,8 +115,8 @@ application = ProtocolTypeRouter({
117
115
  ```
118
116
 
119
117
  # 3. migrate
120
- no need, valar will auto migration
121
118
 
119
+ no need, valar will auto migration
122
120
 
123
121
  # 4. root urls
124
122
 
@@ -126,7 +124,6 @@ no need, valar will auto set urlpatterns
126
124
 
127
125
  # 5. how to use valar_channel
128
126
 
129
-
130
127
  5.1 set HANDLER_MAPPING in settings
131
128
 
132
129
  ```python
@@ -137,13 +134,11 @@ HANDLER_MAPPING = "%s.urls.channel_mapping" % BASE_APP
137
134
 
138
135
  ```python
139
136
  from valar.channels.sender import ValarSocketSender
137
+
138
+
140
139
  def test_handler(sender: ValarSocketSender):
141
140
  data = sender.data
142
- length = data.get('length',30)
143
- counter = sender.create_counter(length)
144
- for i in range(length):
145
- # sync method
146
- sender.to_clients(counter.tick() ,sender.client, wait=True)
141
+ sender.load(data)
147
142
  ```
148
143
 
149
144
  5.3 register handler in channel_mapping
@@ -47,4 +47,11 @@ src/valar/views/__init__.py
47
47
  src/valar/views/file.py
48
48
  src/valar/views/handler.py
49
49
  src/valar/views/meta.py
50
- src/valar/views/rest.py
50
+ src/valar/views/rest.py
51
+ src/vtest/__init__.py
52
+ src/vtest/apps.py
53
+ src/vtest/handlers.py
54
+ src/vtest/models.py
55
+ src/vtest/views.py
56
+ src/vtest/migrations/0001_initial.py
57
+ src/vtest/migrations/__init__.py
File without changes
@@ -0,0 +1,17 @@
1
+ import os
2
+ from django.apps import AppConfig
3
+ from ..valar.classes.app_mixins.auto_migration_mixin import AutoMigrationMixin
4
+ from ..valar.classes.app_mixins.auto_urlpatterns_mixin import AutoUrlPatternsMixin
5
+
6
+ valar_app = __package__.replace('src.', '')
7
+
8
+
9
+ class VTestConfig(AutoMigrationMixin, AppConfig):
10
+ default_auto_field = 'django.db.models.BigAutoField'
11
+ name = __package__
12
+
13
+ def ready(self):
14
+ if os.environ.get('RUN_MAIN') == 'true':
15
+ from ..valar.dao.frame import MetaFrame
16
+ getattr(super(), 'auto_migrate', None)()
17
+ MetaFrame()
@@ -0,0 +1,15 @@
1
+ import time
2
+
3
+ from ..valar.channels.counter import Counter
4
+ from ..valar.channels.sender import ValarChannelSender
5
+
6
+
7
+ def valar_test_handler(sender: ValarChannelSender):
8
+ data = sender.data
9
+ length = data.get('length', 100)
10
+ counter = Counter(length)
11
+ for i in range(length):
12
+ time.sleep(0.1)
13
+ tick = counter.tick()
14
+ tick.update({'name': 'test1'})
15
+ sender.load(tick)
@@ -0,0 +1,155 @@
1
+ # Generated by Django 4.2.23 on 2025-08-28 10:15
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ initial = True
10
+
11
+ dependencies = [
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name='Case',
17
+ fields=[
18
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
20
+ ('name', models.CharField(max_length=50, null=True)),
21
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
22
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
23
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
24
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
25
+ ('a1', models.FloatField(default=0, verbose_name='余额')),
26
+ ('a2', models.FloatField(default=0, verbose_name='已用信用额度')),
27
+ ('a3', models.FloatField(default=0, verbose_name='年还款额')),
28
+ ('a4', models.FloatField(default=0, verbose_name='年收入/年还款')),
29
+ ('a5', models.FloatField(default=0, verbose_name='负债')),
30
+ ('a6', models.FloatField(default=0, verbose_name='利率*期数')),
31
+ ('a7', models.FloatField(default=0, verbose_name='分期付款/年收入')),
32
+ ('a8', models.FloatField(default=0, verbose_name='贷款人均负债')),
33
+ ('a9', models.FloatField(default=0, verbose_name='匿名特征加总')),
34
+ ('a10', models.FloatField(default=0, verbose_name='有效不良记录数')),
35
+ ],
36
+ options={
37
+ 'abstract': False,
38
+ },
39
+ ),
40
+ migrations.CreateModel(
41
+ name='Tree',
42
+ fields=[
43
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
44
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
45
+ ('name', models.CharField(max_length=50, null=True)),
46
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
47
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
48
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
49
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
50
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
51
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
52
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
53
+ ('text', models.TextField(null=True, verbose_name='text')),
54
+ ],
55
+ options={
56
+ 'verbose_name': '树形测试',
57
+ },
58
+ ),
59
+ migrations.CreateModel(
60
+ name='Vala',
61
+ fields=[
62
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
63
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
64
+ ('name', models.CharField(max_length=50, null=True)),
65
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
66
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
67
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
68
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
69
+ ('text_field', models.TextField(null=True, verbose_name='text')),
70
+ ('boolean_field', models.BooleanField(null=True, verbose_name='boolean')),
71
+ ('integer_field', models.IntegerField(null=True, verbose_name='integer')),
72
+ ('float_field', models.FloatField(null=True, verbose_name='float')),
73
+ ('date_field', models.DateField(null=True, verbose_name='date')),
74
+ ('datetime_field', models.DateTimeField(null=True, verbose_name='datetime')),
75
+ ('time_field', models.TimeField(null=True, verbose_name='time')),
76
+ ('json_field', models.JSONField(null=True, verbose_name='json')),
77
+ ('file', models.FileField(null=True, upload_to='', verbose_name='File')),
78
+ ],
79
+ options={
80
+ 'abstract': False,
81
+ },
82
+ ),
83
+ migrations.CreateModel(
84
+ name='O2O',
85
+ fields=[
86
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
87
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
88
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
89
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
90
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
91
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
92
+ ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
93
+ ('vala', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.vala', verbose_name='vala')),
94
+ ],
95
+ options={
96
+ 'abstract': False,
97
+ },
98
+ ),
99
+ migrations.CreateModel(
100
+ name='M2O',
101
+ fields=[
102
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
103
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
104
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
105
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
106
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
107
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
108
+ ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
109
+ ('vala', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.vala', verbose_name='vala')),
110
+ ],
111
+ options={
112
+ 'abstract': False,
113
+ },
114
+ ),
115
+ migrations.CreateModel(
116
+ name='M2M',
117
+ fields=[
118
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
119
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
120
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
121
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
122
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
123
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
124
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
125
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
126
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
127
+ ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
128
+ ('valas', models.ManyToManyField(to='vtest.vala', verbose_name='valas')),
129
+ ],
130
+ options={
131
+ 'abstract': False,
132
+ },
133
+ ),
134
+ migrations.CreateModel(
135
+ name='Forcast',
136
+ fields=[
137
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
138
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
139
+ ('name', models.CharField(max_length=50, null=True)),
140
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
141
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
142
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
143
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
144
+ ('type', models.CharField(max_length=100, verbose_name='类别')),
145
+ ('test', models.FloatField(default=0, verbose_name='测试集')),
146
+ ('train', models.FloatField(default=0, verbose_name='训练集')),
147
+ ('varify', models.FloatField(default=0, verbose_name='验证集')),
148
+ ('value', models.FloatField(default=0, verbose_name='预测结果')),
149
+ ('case', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='vtest.case')),
150
+ ],
151
+ options={
152
+ 'abstract': False,
153
+ },
154
+ ),
155
+ ]
File without changes
@@ -0,0 +1,59 @@
1
+ from django.db import models
2
+
3
+ from ..valar.models.core import VModel, VTree
4
+
5
+
6
+ class Case(VModel):
7
+ a1 = models.FloatField(default=0, verbose_name='余额')
8
+ a2 = models.FloatField(default=0, verbose_name='已用信用额度')
9
+ a3 = models.FloatField(default=0, verbose_name='年还款额')
10
+ a4 = models.FloatField(default=0, verbose_name='年收入/年还款')
11
+ a5 = models.FloatField(default=0, verbose_name='负债')
12
+ a6 = models.FloatField(default=0, verbose_name='利率*期数')
13
+ a7 = models.FloatField(default=0, verbose_name='分期付款/年收入')
14
+ a8 = models.FloatField(default=0, verbose_name='贷款人均负债')
15
+ a9 = models.FloatField(default=0, verbose_name='匿名特征加总')
16
+ a10 = models.FloatField(default=0, verbose_name='有效不良记录数')
17
+
18
+
19
+ class Forcast(VModel):
20
+ case = models.ForeignKey(Case, on_delete=models.CASCADE, null=True)
21
+ type = models.CharField(max_length=100, verbose_name='类别')
22
+ test = models.FloatField(default=0, verbose_name='测试集')
23
+ train = models.FloatField(default=0, verbose_name='训练集')
24
+ varify = models.FloatField(default=0, verbose_name='验证集')
25
+ value = models.FloatField(default=0, verbose_name='预测结果')
26
+
27
+
28
+ class Vala(VModel):
29
+ text_field = models.TextField(null=True, verbose_name='text')
30
+ boolean_field = models.BooleanField(null=True, verbose_name='boolean')
31
+ integer_field = models.IntegerField(null=True, verbose_name='integer')
32
+ float_field = models.FloatField(null=True, verbose_name='float')
33
+ date_field = models.DateField(null=True, verbose_name='date')
34
+ datetime_field = models.DateTimeField(null=True, verbose_name='datetime')
35
+ time_field = models.TimeField(null=True, verbose_name='time')
36
+ json_field = models.JSONField(null=True, verbose_name='json')
37
+ file = models.FileField(null=True, verbose_name='File')
38
+
39
+
40
+ class M2O(VModel):
41
+ vala = models.ForeignKey(to=Vala, null=True, on_delete=models.CASCADE, verbose_name='vala')
42
+ name = models.CharField(max_length=100, null=True, verbose_name='name')
43
+
44
+
45
+ class O2O(VModel):
46
+ vala = models.OneToOneField(to=Vala, null=True, on_delete=models.CASCADE, verbose_name='vala')
47
+ name = models.CharField(max_length=100, null=True, verbose_name='name')
48
+
49
+
50
+ class M2M(VTree):
51
+ valas = models.ManyToManyField(to=Vala, verbose_name='valas')
52
+ name = models.CharField(max_length=100, null=True, verbose_name='name')
53
+
54
+
55
+ class Tree(VTree):
56
+ text = models.TextField(null=True, verbose_name='text')
57
+
58
+ class Meta:
59
+ verbose_name = '树形测试'
@@ -0,0 +1,8 @@
1
+ import json
2
+
3
+ from ..valar.classes.valar_response import ValarResponse
4
+
5
+
6
+ def valar_test_request(request):
7
+ body = json.loads(request.body)
8
+ return ValarResponse(body)
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