valar 1.3.3__py3-none-any.whl → 1.3.5__py3-none-any.whl

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/channels/sender.py CHANGED
@@ -39,7 +39,7 @@ class Sender:
39
39
 
40
40
  def __init__(self, request: HttpRequest):
41
41
  self.client = request.headers.get('CLIENT')
42
- self.uid = request.session.get('UID')
42
+ # self.uid = request.session.get('UID')
43
43
  self.group_send = async_to_sync(get_channel_layer().group_send)
44
44
 
45
45
 
@@ -88,6 +88,9 @@ class ValarChannelSender(Sender):
88
88
  def done(self, payload):
89
89
  self.__emit__('done', payload)
90
90
 
91
+ def error(self, payload):
92
+ self.__emit__('error', payload)
93
+
91
94
  def __emit__(self, status='proceed', data=None):
92
95
  scope = 'broadcast' if self.__channel__.broadcast else 'client'
93
96
  body = {
@@ -39,14 +39,14 @@ meta_field_key_defaults = {
39
39
  ]
40
40
  ),
41
41
  },
42
- 'valar.Vala': {
42
+ 'valar.Valar': {
43
43
  'simple': ('pick', ['id', 'name', 'text_field', 'boolean_field', 'integer_field', 'float_field']),
44
44
  'date': ('pick', ['id', 'name', 'date_field', 'datetime_field', 'time_field']),
45
45
  'special': ('pick', ['id', 'name', 'text_field', 'json_field', 'file', 'm2m']),
46
46
  'ref': ('pick', ['id', 'name', 'm2o', 'm2m', 'o2o_id']),
47
47
  },
48
48
  'valar.Account': {
49
- 'auth': ('pick', ['user_id', 'username', 'email', 'is_active', 'is_admin', 'roles']),
49
+ 'auth': ('pick', ['user_id', 'username', 'email', 'password', 'is_active', 'is_admin', 'roles']),
50
50
  },
51
51
  'valar.Role': {
52
52
  'auth': ('pick', ['name', 'duty', 'menu', 'account']),
valar/dao/meta.py CHANGED
@@ -45,7 +45,8 @@ class ValarMeta:
45
45
  if view.metafield_set.count() == 0:
46
46
  _fields = self.__initial_fields__()
47
47
  for _field in _fields:
48
- if _field['prop'] not in ['sort', 'create_time', 'modify_time', 'saved']:
48
+ if (_field['prop'] not in ['id', 'sort', 'create_time', 'modify_time', 'saved', 'disabled']
49
+ and _field['domain'] not in ['ManyToManyRel', 'OneToOneRel', 'ManyToOneRel']):
49
50
  _field.update({'view_id': view.id, "saved": True})
50
51
  field_dao.save_one(_field)
51
52
 
valar/dao/orm_dao.py CHANGED
@@ -77,6 +77,7 @@ class OrmDao(AbstractDao):
77
77
  return self.manager.filter(id=oid).first() if oid is not None else None
78
78
 
79
79
  def find(self, conditions=None, orders=None, size=0, page=1):
80
+
80
81
  includes, excludes, orders = Query(conditions, orders).orm()
81
82
  query_set = self.manager.filter(includes).exclude(excludes).order_by(*orders)
82
83
  total = query_set.count()
valar/models/auth.py CHANGED
@@ -13,7 +13,7 @@ class Role(VModel):
13
13
  class Account(VModel):
14
14
  """账户核心信息"""
15
15
  username = models.CharField(max_length=255, null=True, unique=True, verbose_name='账号')
16
- password = models.CharField(max_length=255, verbose_name='密码')
16
+ password = models.CharField(max_length=255, null=True, verbose_name='密码')
17
17
  email = models.CharField(max_length=255, null=True, unique=True, verbose_name='邮箱')
18
18
  """权限"""
19
19
  is_admin = models.BooleanField(default=False, verbose_name='超级管理员')
valar/views/auth.py CHANGED
@@ -41,7 +41,7 @@ def sign_in(request):
41
41
  })
42
42
  return ValarResponse(jwt.encode({
43
43
  "user_id": account.id,
44
- "exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
44
+ "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=2)
45
45
  }, settings.SECRET_KEY, algorithm="HS256"))
46
46
 
47
47
 
valar/views/handler.py CHANGED
@@ -1,3 +1,5 @@
1
+ import traceback
2
+
1
3
  from ..channels.counter import Counter
2
4
  from ..channels.sender import ValarChannelSender
3
5
  from ..dao import Dao
@@ -22,25 +24,30 @@ def batch_handler(sender: ValarChannelSender):
22
24
  entity, db, method = data.get("entity"), data.get("db"), data.get("method")
23
25
  dao = Dao(entity, db)
24
26
  body = {"method": method}
25
- if method == 'save_many':
26
- array = data.get("array", [])
27
- counter = Counter(array)
28
- keys = []
29
- for item in array:
30
- item.update({'saved': True})
31
- bean = dao.save_one(item)
32
- keys.append(bean.id)
33
- payload = counter.tick()
34
- sender.load(payload)
35
- body.update({'keys': keys})
36
- sender.done(body)
37
- elif method == 'delete_many':
38
- conditions = data.get("conditions", [])
39
- paths = dao.delete(conditions)
40
- counter = Counter(len(paths))
41
- minio = ValarEngine().get_minio_bucket(entity)
42
- for path in paths:
43
- minio.remove(path)
44
- payload = counter.tick()
45
- sender.load(payload)
46
- sender.done(body)
27
+
28
+ try:
29
+ if method == 'save_many':
30
+ array = data.get("array", [])
31
+ counter = Counter(array)
32
+ keys = []
33
+ for item in array:
34
+ item.update({'saved': True})
35
+ bean = dao.save_one(item)
36
+ keys.append(bean.id)
37
+ payload = counter.tick()
38
+ sender.load(payload)
39
+ body.update({'keys': keys})
40
+ sender.done(body)
41
+ elif method == 'delete_many':
42
+ conditions = data.get("conditions", [])
43
+ paths = dao.delete(conditions)
44
+ counter = Counter(len(paths))
45
+ minio = ValarEngine().get_minio_bucket(entity)
46
+ for path in paths:
47
+ minio.remove(path)
48
+ payload = counter.tick()
49
+ sender.load(payload)
50
+ sender.done(body)
51
+ except Exception as e:
52
+ traceback.print_exc()
53
+ sender.error(str(e))
valar/views/rest.py CHANGED
@@ -71,6 +71,9 @@ def search(request, db, entity):
71
71
  size = body.get('size')
72
72
  page = body.get('page')
73
73
  root = body.get('root')
74
+
75
+ print(root, 'root', entity)
76
+
74
77
  code = body.get('code', 'default')
75
78
  conditions = body.get('conditions')
76
79
  dao = Dao(entity, db)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.3.3
3
+ Version: 1.3.5
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -9,7 +9,7 @@ valar/channels/consumer.py,sha256=fEP52wBHWccturn2QAkqOt9-_Fr8akiw95AoVc6dEMM,13
9
9
  valar/channels/counter.py,sha256=K8aQUI1RiIrSOg3280tV102soC-ZC1qSRZvBXuwNYQ0,377
10
10
  valar/channels/executer.py,sha256=_Ap859nvxRl8Ln0BWMqhnL6cQNl-1NQSmMR4Akh-afY,333
11
11
  valar/channels/mapping.py,sha256=1SBqxEYO4epbRkSOUw5zm6gau15imz1gokrRTQcy94A,755
12
- valar/channels/sender.py,sha256=QSIkInIYHtuv8ZPqKUbXqhbMl0y0GtaA_vQdqhbGBdI,3732
12
+ valar/channels/sender.py,sha256=65hylPGXreN4hDetg5Ysl_72BbbRIVF2ERDk7Nky1Lg,3805
13
13
  valar/channels/views.py,sha256=4J_f-Bn3VR0o0spOa9D52aRcxMRZ0YYgo-dMzJqFrd4,375
14
14
  valar/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  valar/classes/singleton_meta.py,sha256=aa9DZKG4Q9Cr67ZWrQ0yaFLrEjwFoTMQbDrpoIqgJZs,245
@@ -22,33 +22,32 @@ valar/dao/__init__.py,sha256=WGjXrnjmgcfOvtTYIVjtdsmh9mlc0IJCrZD2ScZ6Kx0,1335
22
22
  valar/dao/abstract.py,sha256=wBqSwfZkPrkhlGX7Ue__UmhblIllP87Bwt5G7shWX8E,2449
23
23
  valar/dao/engine.py,sha256=YM8YdhWmdO2BX_T51u9q64a2GAaVCdaYHBmOpCKM4sA,3023
24
24
  valar/dao/frame.py,sha256=9vDsJfB-Ztb4YN8Lt6pHJeF_RndqHsVeA_ygWIOgALM,7468
25
- valar/dao/meta.py,sha256=qEdTmdLrurp3CCMiGGtsDwVkXys6Rb5P0s_pru2w90A,4930
25
+ valar/dao/meta.py,sha256=2o720rFqPdDxQ0yXW74zHU0m914PfKkzvLwPINtiRbg,5051
26
26
  valar/dao/mon_dao.py,sha256=TRrHUBdWBbOn47uV5ot_B2GcvWGoNpadJW_CkS0TEhc,3588
27
27
  valar/dao/mon_field.py,sha256=AJp-KS19oRiRHtMidC_1uTv2oCplqO4-bdKNDLMllWU,570
28
- valar/dao/orm_dao.py,sha256=yq3WoWsRQQCXKsX-jBMmyNBicpE22K1SkEldRbGPCHI,12322
28
+ valar/dao/orm_dao.py,sha256=su3ah1lhpAlZj-yytPJpwfyzxCEcFIqI8t_sKv6GEJQ,12323
29
29
  valar/dao/orm_field.py,sha256=qADDGPM_EUVxP2VEGfnb2m97gYeSFxXt5fOmY2Df11c,4981
30
30
  valar/dao/query.py,sha256=7MqCdwjdhXWBWjEggHVFQfC0zlZH3TrwuVxKE7E0OKA,1049
31
31
  valar/dao/defaults/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- valar/dao/defaults/field_keys_default.py,sha256=JksKXn-X1DhODw2WOOzua8jrXcO-XR1HYvcNlxVK-E0,2140
32
+ valar/dao/defaults/field_keys_default.py,sha256=ZgF-7s4yABz2uoInxuhg4uy9flbAR7btHDipJkqZj0M,2153
33
33
  valar/dao/defaults/field_values_default.py,sha256=6zKPqbw0vJKW_9ilj6PC7IgDyayiWjHsNc4y7aVzuNw,3552
34
34
  valar/dao/defaults/view_defaults.py,sha256=v2wEgiaXqEcM4lcjM2uV83cLA5EJZf6qHfLZ7YJikIg,572
35
- valar/migrations/0001_initial.py,sha256=zD6G8HX_f3OeI3bZH-3BXtvM-kTJ1L_gIR5MERZF3ng,19484
36
35
  valar/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
36
  valar/models/__init__.py,sha256=ueEan3T0sdZRiKJJrIpwrRj_6BXdKfMecIqKIqOGnzA,44
38
- valar/models/auth.py,sha256=9jmtHZuqavo07f2_j_M8yWvZvetc3nlbf9CHGabWwig,1610
37
+ valar/models/auth.py,sha256=ymjg4B-Xj9h0_DvyG8o1dlo7ahgpoqAUHxI814NMxvs,1621
39
38
  valar/models/core.py,sha256=ghtfs8uFH6SC0xvd-gkARr-FUWDXG0IMGWSuETOvecw,3695
40
39
  valar/models/frame.py,sha256=N13Bok7XNJDLoYDCpCIq8tEUktQVNerrLtk_U0KDJAE,851
41
40
  valar/models/meta.py,sha256=JPa-Rap2sdSYnG6Sk7_vFrg5flP3r6fAM7tRvlwb4Vw,4871
42
41
  valar/models/test.py,sha256=3yfyZHJgviEybV1NyN4Qs1BGKE3DvAtb_e4oFI2MVos,1319
43
42
  valar/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- valar/views/auth.py,sha256=HFGINsqH6mlrKyW7qPG0bVHnD4QZKdhxm5S3A2zYquA,4097
43
+ valar/views/auth.py,sha256=KZiWPEcL_ZpF6DT99D3U3EdX0qjhOBFNAmnLWNJCXsU,4094
45
44
  valar/views/file.py,sha256=NxfbxT4EJRDFgXol06kD0vcSp4lN4BCVJ5wq43rh8Yg,1537
46
- valar/views/handler.py,sha256=C7-aRfoA6YvBVul9ioswMRSRvYmxslFF4ETTZBvjX6o,1417
45
+ valar/views/handler.py,sha256=KlXWhVU-b_b5uxrUwQBHW7H4shSPy4NnXj6AINM_Joo,1619
47
46
  valar/views/meta.py,sha256=H3_raG-LEcfg1p_CBpluhPXBsLFQB_jtaI5CKGgYOKk,4774
48
47
  valar/views/password.py,sha256=O094qG8Sh4ilT_wpEMw4IZtAlcQjrDVcFD5BHaWKg2Q,2127
49
- valar/views/rest.py,sha256=HnmPR6_Q_NTtotaeDjfwIGwVG7eigtKBXfoaedUgar8,2349
50
- valar-1.3.3.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
51
- valar-1.3.3.dist-info/METADATA,sha256=6hUTYRWzHaEHJ4ZbMTiY-HJ628cqPA1P6jJ3ABnyCtQ,5142
52
- valar-1.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
- valar-1.3.3.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
54
- valar-1.3.3.dist-info/RECORD,,
48
+ valar/views/rest.py,sha256=_KC2BPsAiTdYCDd3RPt5MTvaWiHd9W3PEx_3l7EwOWE,2383
49
+ valar-1.3.5.dist-info/licenses/LICENSE,sha256=2bm9uFabQZ3Ykb_SaSU_uUbAj2-htc6WJQmS_65qD00,1073
50
+ valar-1.3.5.dist-info/METADATA,sha256=ZkkGNPXArta8QA3ANkeIrGa10uA8mSBFAT60J3bFgN4,5142
51
+ valar-1.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
+ valar-1.3.5.dist-info/top_level.txt,sha256=TVi6VcvvYfVYZ_WnUVwT4psI8p6inaP3KfmQEWrrvYg,6
53
+ valar-1.3.5.dist-info/RECORD,,
@@ -1,285 +0,0 @@
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
- ]
File without changes