valar 1.3.0__tar.gz → 1.3.3__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.3.0/src/valar.egg-info → valar-1.3.3}/PKG-INFO +26 -1
- {valar-1.3.0 → valar-1.3.3}/README.md +25 -0
- {valar-1.3.0 → valar-1.3.3}/setup.py +1 -1
- {valar-1.3.0 → valar-1.3.3}/src/valar/auth/Authentication.py +1 -1
- {valar-1.3.0 → valar-1.3.3}/src/valar/auth/Middleware.py +2 -2
- valar-1.3.3/src/valar/migrations/0001_initial.py +285 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/auth.py +0 -1
- {valar-1.3.0 → valar-1.3.3/src/valar.egg-info}/PKG-INFO +26 -1
- {valar-1.3.0 → valar-1.3.3}/src/valar.egg-info/SOURCES.txt +1 -0
- {valar-1.3.0 → valar-1.3.3}/LICENSE +0 -0
- {valar-1.3.0 → valar-1.3.3}/setup.cfg +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/apps.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/auth/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/consumer.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/counter.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/executer.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/mapping.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/sender.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/channels/views.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/app_mixins/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/app_mixins/auto_migration_mixin.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/singleton_meta.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/valar_minio.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/classes/valar_response.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/abstract.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/defaults/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/defaults/field_keys_default.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/defaults/field_values_default.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/defaults/view_defaults.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/engine.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/frame.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/meta.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/mon_dao.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/mon_field.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/orm_dao.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/orm_field.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/dao/query.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/migrations/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/auth.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/core.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/frame.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/meta.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/models/test.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/urls.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/__init__.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/file.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/handler.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/meta.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/password.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar/views/rest.py +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar.egg-info/dependency_links.txt +0 -0
- {valar-1.3.0 → valar-1.3.3}/src/valar.egg-info/requires.txt +0 -0
- {valar-1.3.0 → valar-1.3.3}/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.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Home-page: https://gitee.com/GRIFFIN120/valar_dev
|
|
6
6
|
Author: LYP
|
|
@@ -76,6 +76,7 @@ MIDDLEWARE = [
|
|
|
76
76
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
77
77
|
'corsheaders.middleware.CorsMiddleware',
|
|
78
78
|
'django.middleware.common.CommonMiddleware',
|
|
79
|
+
'valar.auth.Middleware.ValarMiddleware'
|
|
79
80
|
]
|
|
80
81
|
|
|
81
82
|
CHANNEL_LAYERS = {
|
|
@@ -107,6 +108,15 @@ MONGO_URI = 'mongodb://username:password@host:27017'
|
|
|
107
108
|
MINIO_URL = "s3://username:password@host:9000"
|
|
108
109
|
MINIO_ROOT = "https://host:9001"
|
|
109
110
|
|
|
111
|
+
""" Email Options """
|
|
112
|
+
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
|
113
|
+
EMAIL_HOST = 'xxx.xx.xx.xx'
|
|
114
|
+
EMAIL_PORT = 465
|
|
115
|
+
EMAIL_DOMAIN = 'http://xx.xx.xx'
|
|
116
|
+
EMAIL_HOST_USER = "xxx@xx.xx.xx"
|
|
117
|
+
EMAIL_HOST_PASSWORD = '*******'
|
|
118
|
+
EMAIL_USE_TLS = False
|
|
119
|
+
EMAIL_USE_SSL = True
|
|
110
120
|
```
|
|
111
121
|
|
|
112
122
|
## 2.2 asgi.py
|
|
@@ -200,3 +210,18 @@ channel_mapping = {
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
```
|
|
213
|
+
|
|
214
|
+
# 5. create an orm model extends the AbstractUser class, enable the authentication of Valar
|
|
215
|
+
|
|
216
|
+
```pycon
|
|
217
|
+
|
|
218
|
+
class User(AbstractUser):
|
|
219
|
+
"""
|
|
220
|
+
any fields you want
|
|
221
|
+
"""
|
|
222
|
+
description = models.TextField(null=True, verbose_name='备注')
|
|
223
|
+
|
|
224
|
+
class Meta:
|
|
225
|
+
verbose_name = 'User'
|
|
226
|
+
|
|
227
|
+
```
|
|
@@ -47,6 +47,7 @@ MIDDLEWARE = [
|
|
|
47
47
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
48
48
|
'corsheaders.middleware.CorsMiddleware',
|
|
49
49
|
'django.middleware.common.CommonMiddleware',
|
|
50
|
+
'valar.auth.Middleware.ValarMiddleware'
|
|
50
51
|
]
|
|
51
52
|
|
|
52
53
|
CHANNEL_LAYERS = {
|
|
@@ -78,6 +79,15 @@ MONGO_URI = 'mongodb://username:password@host:27017'
|
|
|
78
79
|
MINIO_URL = "s3://username:password@host:9000"
|
|
79
80
|
MINIO_ROOT = "https://host:9001"
|
|
80
81
|
|
|
82
|
+
""" Email Options """
|
|
83
|
+
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
|
|
81
91
|
```
|
|
82
92
|
|
|
83
93
|
## 2.2 asgi.py
|
|
@@ -170,4 +180,19 @@ channel_mapping = {
|
|
|
170
180
|
'test_handler': valar_test_handler,
|
|
171
181
|
}
|
|
172
182
|
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
# 5. create an orm model extends the AbstractUser class, enable the authentication of Valar
|
|
186
|
+
|
|
187
|
+
```pycon
|
|
188
|
+
|
|
189
|
+
class User(AbstractUser):
|
|
190
|
+
"""
|
|
191
|
+
any fields you want
|
|
192
|
+
"""
|
|
193
|
+
description = models.TextField(null=True, verbose_name='备注')
|
|
194
|
+
|
|
195
|
+
class Meta:
|
|
196
|
+
verbose_name = 'User'
|
|
197
|
+
|
|
173
198
|
```
|
|
@@ -4,8 +4,8 @@ import json
|
|
|
4
4
|
from django.http import HttpRequest
|
|
5
5
|
from django.utils.deprecation import MiddlewareMixin
|
|
6
6
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
7
|
+
from ..auth.Authentication import validate
|
|
8
|
+
from ..classes.valar_response import ValarResponse
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ValarMiddleware(MiddlewareMixin):
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Generated by Django 4.2.23 on 2025-09-06 15:12
|
|
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='Meta',
|
|
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
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
21
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
22
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
23
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
24
|
+
('db', models.CharField(max_length=100, null=True, verbose_name='数据库')),
|
|
25
|
+
('entity', models.CharField(max_length=100, null=True, verbose_name='数据源')),
|
|
26
|
+
('name', models.CharField(max_length=50, null=True, verbose_name='实体别名')),
|
|
27
|
+
('tree', models.BooleanField(default=False, verbose_name='是否树形')),
|
|
28
|
+
],
|
|
29
|
+
options={
|
|
30
|
+
'verbose_name': '数据实体',
|
|
31
|
+
'unique_together': {('db', 'entity')},
|
|
32
|
+
},
|
|
33
|
+
),
|
|
34
|
+
migrations.CreateModel(
|
|
35
|
+
name='MetaFieldTool',
|
|
36
|
+
fields=[
|
|
37
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
38
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
39
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
40
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
41
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
42
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
43
|
+
('pid', models.IntegerField(default=0, verbose_name='父节点')),
|
|
44
|
+
('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
|
|
45
|
+
('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
|
|
46
|
+
('name', models.CharField(max_length=255, null=True, verbose_name='名称')),
|
|
47
|
+
('code', models.CharField(max_length=100, null=True, unique=True, verbose_name='代码')),
|
|
48
|
+
('align', models.CharField(max_length=10, null=True, verbose_name='对齐方式')),
|
|
49
|
+
],
|
|
50
|
+
options={
|
|
51
|
+
'verbose_name': '元数据字段工具',
|
|
52
|
+
},
|
|
53
|
+
),
|
|
54
|
+
migrations.CreateModel(
|
|
55
|
+
name='Role',
|
|
56
|
+
fields=[
|
|
57
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
58
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
59
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
60
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
61
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
62
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
63
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
64
|
+
('duty', models.TextField(null=True, verbose_name='职责描述')),
|
|
65
|
+
],
|
|
66
|
+
options={
|
|
67
|
+
'verbose_name': '角色',
|
|
68
|
+
},
|
|
69
|
+
),
|
|
70
|
+
migrations.CreateModel(
|
|
71
|
+
name='Valar',
|
|
72
|
+
fields=[
|
|
73
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
74
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
75
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
76
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
77
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
78
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
79
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
80
|
+
('text_field', models.TextField(null=True, verbose_name='Text Field')),
|
|
81
|
+
('boolean_field', models.BooleanField(null=True, verbose_name='Boolean Field')),
|
|
82
|
+
('integer_field', models.IntegerField(null=True, verbose_name='Integer Field')),
|
|
83
|
+
('float_field', models.FloatField(null=True, verbose_name='Float Field')),
|
|
84
|
+
('date_field', models.DateField(null=True, verbose_name='Date Field')),
|
|
85
|
+
('datetime_field', models.DateTimeField(null=True, verbose_name='Datetime Field')),
|
|
86
|
+
('time_field', models.TimeField(null=True, verbose_name='Time Field')),
|
|
87
|
+
('json_field', models.JSONField(null=True, verbose_name='Json Field')),
|
|
88
|
+
('file', models.FileField(null=True, upload_to='', verbose_name='File Field')),
|
|
89
|
+
],
|
|
90
|
+
options={
|
|
91
|
+
'abstract': False,
|
|
92
|
+
},
|
|
93
|
+
),
|
|
94
|
+
migrations.CreateModel(
|
|
95
|
+
name='Voo',
|
|
96
|
+
fields=[
|
|
97
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
98
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
99
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
100
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
101
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
102
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
103
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='Name')),
|
|
104
|
+
('valar', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='valar.valar', verbose_name='Valar')),
|
|
105
|
+
],
|
|
106
|
+
options={
|
|
107
|
+
'abstract': False,
|
|
108
|
+
},
|
|
109
|
+
),
|
|
110
|
+
migrations.CreateModel(
|
|
111
|
+
name='Vmo',
|
|
112
|
+
fields=[
|
|
113
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
114
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
115
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
116
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
117
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
118
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
119
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='Name')),
|
|
120
|
+
('valar', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='valar.valar', verbose_name='Valar')),
|
|
121
|
+
],
|
|
122
|
+
options={
|
|
123
|
+
'abstract': False,
|
|
124
|
+
},
|
|
125
|
+
),
|
|
126
|
+
migrations.CreateModel(
|
|
127
|
+
name='Vmm',
|
|
128
|
+
fields=[
|
|
129
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
130
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
131
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
132
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
133
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
134
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
135
|
+
('pid', models.IntegerField(default=0, verbose_name='父节点')),
|
|
136
|
+
('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
|
|
137
|
+
('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
|
|
138
|
+
('name', models.CharField(max_length=100, null=True, verbose_name='name')),
|
|
139
|
+
('valars', models.ManyToManyField(to='valar.valar', verbose_name='valars')),
|
|
140
|
+
],
|
|
141
|
+
options={
|
|
142
|
+
'abstract': False,
|
|
143
|
+
},
|
|
144
|
+
),
|
|
145
|
+
migrations.CreateModel(
|
|
146
|
+
name='MetaView',
|
|
147
|
+
fields=[
|
|
148
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
149
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
150
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
151
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
152
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
153
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
154
|
+
('property', models.JSONField(default=dict, verbose_name='属性')),
|
|
155
|
+
('code', models.CharField(default='default ', max_length=50, verbose_name='类视图')),
|
|
156
|
+
('name', models.CharField(max_length=50, null=True, verbose_name='视图名称')),
|
|
157
|
+
('lock', models.BooleanField(default=False, verbose_name='锁定元数据')),
|
|
158
|
+
('enable', models.BooleanField(default=True, verbose_name='是否启用')),
|
|
159
|
+
('form_width', models.IntegerField(null=True, verbose_name='表单宽度')),
|
|
160
|
+
('form_height', models.IntegerField(null=True, verbose_name='表单高度')),
|
|
161
|
+
('table_width', models.IntegerField(null=True, verbose_name='表格宽度')),
|
|
162
|
+
('table_height', models.IntegerField(null=True, verbose_name='表格高度')),
|
|
163
|
+
('allow_search', models.BooleanField(default=True, verbose_name='检索功能')),
|
|
164
|
+
('allow_order', models.BooleanField(default=True, verbose_name='排序功能')),
|
|
165
|
+
('allow_insert', models.BooleanField(default=True, verbose_name='新增功能')),
|
|
166
|
+
('allow_edit', models.BooleanField(default=True, verbose_name='编辑功能')),
|
|
167
|
+
('allow_edit_on_form', models.BooleanField(default=True, verbose_name='表单编辑')),
|
|
168
|
+
('allow_edit_on_cell', models.BooleanField(default=True, verbose_name='表内编辑')),
|
|
169
|
+
('allow_edit_on_sort', models.BooleanField(default=True, verbose_name='移动功能')),
|
|
170
|
+
('allow_remove', models.BooleanField(default=True, verbose_name='删除功能')),
|
|
171
|
+
('allow_download', models.BooleanField(default=True, verbose_name='下载功能')),
|
|
172
|
+
('allow_upload', models.BooleanField(default=True, verbose_name='上传功能')),
|
|
173
|
+
('meta', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='valar.meta', verbose_name='元数据')),
|
|
174
|
+
],
|
|
175
|
+
options={
|
|
176
|
+
'verbose_name': '数据视图',
|
|
177
|
+
'unique_together': {('meta', 'code')},
|
|
178
|
+
},
|
|
179
|
+
),
|
|
180
|
+
migrations.CreateModel(
|
|
181
|
+
name='MetaFieldDomain',
|
|
182
|
+
fields=[
|
|
183
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
184
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
185
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
186
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
187
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
188
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
189
|
+
('name', models.CharField(max_length=255, null=True, unique=True, verbose_name='名称')),
|
|
190
|
+
('default', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='valar.metafieldtool', verbose_name='默认工具')),
|
|
191
|
+
('tools', models.ManyToManyField(to='valar.metafieldtool', verbose_name='工具集')),
|
|
192
|
+
],
|
|
193
|
+
options={
|
|
194
|
+
'verbose_name': '元数据字段类型',
|
|
195
|
+
},
|
|
196
|
+
),
|
|
197
|
+
migrations.CreateModel(
|
|
198
|
+
name='MetaField',
|
|
199
|
+
fields=[
|
|
200
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
201
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
202
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
203
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
204
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
205
|
+
('prop', models.CharField(max_length=100, verbose_name='字段名称')),
|
|
206
|
+
('label', models.CharField(max_length=100, verbose_name='字段标签')),
|
|
207
|
+
('name', models.CharField(max_length=100, verbose_name='字段别名')),
|
|
208
|
+
('domain', models.CharField(max_length=100, verbose_name='字段类型')),
|
|
209
|
+
('tool', models.CharField(default='default', max_length=100, verbose_name='工具组件')),
|
|
210
|
+
('refer', models.JSONField(default=dict, verbose_name='索引')),
|
|
211
|
+
('format', models.JSONField(default=dict, verbose_name='格式')),
|
|
212
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
213
|
+
('not_null', models.BooleanField(default=False, verbose_name='不为空')),
|
|
214
|
+
('allow_edit', models.BooleanField(default=True, verbose_name='可编辑')),
|
|
215
|
+
('allow_order', models.BooleanField(default=True, verbose_name='可排序')),
|
|
216
|
+
('allow_search', models.BooleanField(default=True, verbose_name='可搜索')),
|
|
217
|
+
('allow_download', models.BooleanField(default=True, verbose_name='可下载')),
|
|
218
|
+
('allow_upload', models.BooleanField(default=True, verbose_name='可上传')),
|
|
219
|
+
('allow_update', models.BooleanField(default=True, verbose_name='可更新')),
|
|
220
|
+
('unit', models.CharField(max_length=55, null=True, verbose_name='单位符')),
|
|
221
|
+
('column_width', models.FloatField(default=0, verbose_name='表头宽度')),
|
|
222
|
+
('align', models.CharField(max_length=55, null=True, verbose_name='对齐方式')),
|
|
223
|
+
('fixed', models.CharField(max_length=100, null=True, verbose_name='固定位置')),
|
|
224
|
+
('header_color', models.CharField(max_length=55, null=True, verbose_name='表头颜色')),
|
|
225
|
+
('cell_color', models.CharField(max_length=55, null=True, verbose_name='单元颜色')),
|
|
226
|
+
('edit_on_table', models.BooleanField(default=True, verbose_name='表格编辑')),
|
|
227
|
+
('hide_on_table', models.BooleanField(default=False, verbose_name='表内隐藏')),
|
|
228
|
+
('span', models.IntegerField(default=0, verbose_name='表单占位')),
|
|
229
|
+
('hide_on_form', models.BooleanField(default=False, verbose_name='表单隐藏')),
|
|
230
|
+
('hide_on_form_edit', models.BooleanField(default=False, verbose_name='编辑隐藏')),
|
|
231
|
+
('hide_on_form_insert', models.BooleanField(default=False, verbose_name='新增隐藏')),
|
|
232
|
+
('hide_on_form_branch', models.BooleanField(default=False, verbose_name='分支隐藏')),
|
|
233
|
+
('hide_on_form_leaf', models.BooleanField(default=False, verbose_name='叶子隐藏')),
|
|
234
|
+
('view', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='valar.metaview', verbose_name='数据视图')),
|
|
235
|
+
],
|
|
236
|
+
options={
|
|
237
|
+
'verbose_name': '视图字段',
|
|
238
|
+
},
|
|
239
|
+
),
|
|
240
|
+
migrations.CreateModel(
|
|
241
|
+
name='Account',
|
|
242
|
+
fields=[
|
|
243
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
244
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
245
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
246
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
247
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
248
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
249
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
250
|
+
('username', models.CharField(max_length=255, null=True, unique=True, verbose_name='账号')),
|
|
251
|
+
('password', models.CharField(max_length=255, verbose_name='密码')),
|
|
252
|
+
('email', models.CharField(max_length=255, null=True, unique=True, verbose_name='邮箱')),
|
|
253
|
+
('is_admin', models.BooleanField(default=False, verbose_name='超级管理员')),
|
|
254
|
+
('is_active', models.BooleanField(default=False, verbose_name='激活状态')),
|
|
255
|
+
('token', models.CharField(max_length=255, null=True, verbose_name='Token')),
|
|
256
|
+
('roles', models.ManyToManyField(to='valar.role')),
|
|
257
|
+
],
|
|
258
|
+
options={
|
|
259
|
+
'verbose_name': '账户信息',
|
|
260
|
+
},
|
|
261
|
+
),
|
|
262
|
+
migrations.CreateModel(
|
|
263
|
+
name='Menu',
|
|
264
|
+
fields=[
|
|
265
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
266
|
+
('sort', models.BigIntegerField(null=True, verbose_name='序号')),
|
|
267
|
+
('name', models.CharField(max_length=50, null=True)),
|
|
268
|
+
('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
|
|
269
|
+
('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
|
|
270
|
+
('disabled', models.BooleanField(default=False, verbose_name='禁用')),
|
|
271
|
+
('saved', models.BooleanField(default=False, verbose_name='已保存')),
|
|
272
|
+
('pid', models.IntegerField(default=0, verbose_name='父节点')),
|
|
273
|
+
('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
|
|
274
|
+
('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
|
|
275
|
+
('scope', models.CharField(max_length=100, null=True, verbose_name='域')),
|
|
276
|
+
('path', models.CharField(max_length=255, null=True, verbose_name='地址')),
|
|
277
|
+
('is_admin', models.BooleanField(default=False, null=True, verbose_name='超管权限')),
|
|
278
|
+
('roles', models.ManyToManyField(to='valar.role')),
|
|
279
|
+
],
|
|
280
|
+
options={
|
|
281
|
+
'verbose_name': '菜单',
|
|
282
|
+
'unique_together': {('scope', 'path')},
|
|
283
|
+
},
|
|
284
|
+
),
|
|
285
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: valar
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: valar for morghulis
|
|
5
5
|
Home-page: https://gitee.com/GRIFFIN120/valar_dev
|
|
6
6
|
Author: LYP
|
|
@@ -76,6 +76,7 @@ MIDDLEWARE = [
|
|
|
76
76
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
77
77
|
'corsheaders.middleware.CorsMiddleware',
|
|
78
78
|
'django.middleware.common.CommonMiddleware',
|
|
79
|
+
'valar.auth.Middleware.ValarMiddleware'
|
|
79
80
|
]
|
|
80
81
|
|
|
81
82
|
CHANNEL_LAYERS = {
|
|
@@ -107,6 +108,15 @@ MONGO_URI = 'mongodb://username:password@host:27017'
|
|
|
107
108
|
MINIO_URL = "s3://username:password@host:9000"
|
|
108
109
|
MINIO_ROOT = "https://host:9001"
|
|
109
110
|
|
|
111
|
+
""" Email Options """
|
|
112
|
+
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
|
113
|
+
EMAIL_HOST = 'xxx.xx.xx.xx'
|
|
114
|
+
EMAIL_PORT = 465
|
|
115
|
+
EMAIL_DOMAIN = 'http://xx.xx.xx'
|
|
116
|
+
EMAIL_HOST_USER = "xxx@xx.xx.xx"
|
|
117
|
+
EMAIL_HOST_PASSWORD = '*******'
|
|
118
|
+
EMAIL_USE_TLS = False
|
|
119
|
+
EMAIL_USE_SSL = True
|
|
110
120
|
```
|
|
111
121
|
|
|
112
122
|
## 2.2 asgi.py
|
|
@@ -200,3 +210,18 @@ channel_mapping = {
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
```
|
|
213
|
+
|
|
214
|
+
# 5. create an orm model extends the AbstractUser class, enable the authentication of Valar
|
|
215
|
+
|
|
216
|
+
```pycon
|
|
217
|
+
|
|
218
|
+
class User(AbstractUser):
|
|
219
|
+
"""
|
|
220
|
+
any fields you want
|
|
221
|
+
"""
|
|
222
|
+
description = models.TextField(null=True, verbose_name='备注')
|
|
223
|
+
|
|
224
|
+
class Meta:
|
|
225
|
+
verbose_name = 'User'
|
|
226
|
+
|
|
227
|
+
```
|
|
@@ -40,6 +40,7 @@ src/valar/dao/defaults/__init__.py
|
|
|
40
40
|
src/valar/dao/defaults/field_keys_default.py
|
|
41
41
|
src/valar/dao/defaults/field_values_default.py
|
|
42
42
|
src/valar/dao/defaults/view_defaults.py
|
|
43
|
+
src/valar/migrations/0001_initial.py
|
|
43
44
|
src/valar/migrations/__init__.py
|
|
44
45
|
src/valar/models/__init__.py
|
|
45
46
|
src/valar/models/auth.py
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|