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.
- {valar-1.2.0/src/valar.egg-info → valar-1.2.1}/PKG-INFO +9 -14
- {valar-1.2.0 → valar-1.2.1}/README.md +8 -13
- {valar-1.2.0 → valar-1.2.1}/setup.py +1 -1
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/auto_migration_mixin.py +2 -2
- {valar-1.2.0 → valar-1.2.1/src/valar.egg-info}/PKG-INFO +9 -14
- {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/SOURCES.txt +8 -1
- {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/top_level.txt +1 -0
- valar-1.2.1/src/vtest/__init__.py +0 -0
- valar-1.2.1/src/vtest/apps.py +17 -0
- valar-1.2.1/src/vtest/handlers.py +15 -0
- valar-1.2.1/src/vtest/migrations/0001_initial.py +155 -0
- valar-1.2.1/src/vtest/migrations/__init__.py +0 -0
- valar-1.2.1/src/vtest/models.py +59 -0
- valar-1.2.1/src/vtest/views.py +8 -0
- {valar-1.2.0 → valar-1.2.1}/LICENSE +0 -0
- {valar-1.2.0 → valar-1.2.1}/setup.cfg +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/apps.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/consumer.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/counter.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/executer.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/mapping.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/sender.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/channels/views.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/singleton_meta.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/valar_minio.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/classes/valar_response.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/abstract.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/field_keys_default.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/field_values_default.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/defaults/view_defaults.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/engine.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/frame.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/meta.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/mon_dao.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/mon_field.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/orm_dao.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/orm_field.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/dao/query.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/migrations/0001_initial.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/migrations/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/models/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/models/core.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/models/frame.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/models/meta.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/urls.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/views/__init__.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/views/file.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/views/handler.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/views/meta.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar/views/rest.py +0 -0
- {valar-1.2.0 → valar-1.2.1}/src/valar.egg-info/dependency_links.txt +0 -0
- {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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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.
|
|
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
|
-
|
|
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 = '树形测试'
|
|
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
|
|
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
|