valar 1.3.7__tar.gz → 1.3.8__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 (69) hide show
  1. {valar-1.3.7/src/valar.egg-info → valar-1.3.8}/PKG-INFO +1 -1
  2. {valar-1.3.7 → valar-1.3.8}/setup.py +1 -1
  3. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/__init__.py +2 -2
  4. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/abstract.py +1 -1
  5. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/engine.py +3 -3
  6. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/mon_dao.py +1 -1
  7. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/orm_dao.py +4 -2
  8. valar-1.3.8/src/valar/migrations/0001_initial.py +301 -0
  9. valar-1.3.8/src/valar/migrations/0002_indicatortree.py +34 -0
  10. valar-1.3.8/src/valar/migrations/0003_remove_indicatortree_frequency_and_more.py +46 -0
  11. valar-1.3.8/src/valar/migrations/0004_delete_indicatortree.py +16 -0
  12. valar-1.3.8/src/valar/migrations/0005_indicatortree_indicatorset.py +54 -0
  13. valar-1.3.8/src/valar/migrations/0006_alter_indicatorset_unique_together_and_more.py +21 -0
  14. valar-1.3.8/src/valar/migrations/0007_indicatorset_file_indicatorset_unit.py +23 -0
  15. valar-1.3.8/src/valar/migrations/0008_indicatorset_object_id_alter_indicatorset_unit.py +23 -0
  16. valar-1.3.8/src/valar/migrations/0009_alter_indicatorset_object_id.py +18 -0
  17. valar-1.3.8/src/valar/models/__init__.py +1 -0
  18. valar-1.3.8/src/valar/models/indicator.py +24 -0
  19. {valar-1.3.7 → valar-1.3.8}/src/valar/views/rest.py +1 -1
  20. {valar-1.3.7 → valar-1.3.8/src/valar.egg-info}/PKG-INFO +1 -1
  21. {valar-1.3.7 → valar-1.3.8}/src/valar.egg-info/SOURCES.txt +10 -0
  22. valar-1.3.7/src/valar/models/__init__.py +0 -1
  23. {valar-1.3.7 → valar-1.3.8}/LICENSE +0 -0
  24. {valar-1.3.7 → valar-1.3.8}/README.md +0 -0
  25. {valar-1.3.7 → valar-1.3.8}/setup.cfg +0 -0
  26. {valar-1.3.7 → valar-1.3.8}/src/valar/__init__.py +0 -0
  27. {valar-1.3.7 → valar-1.3.8}/src/valar/apps.py +0 -0
  28. {valar-1.3.7 → valar-1.3.8}/src/valar/auth/Authentication.py +0 -0
  29. {valar-1.3.7 → valar-1.3.8}/src/valar/auth/Middleware.py +0 -0
  30. {valar-1.3.7 → valar-1.3.8}/src/valar/auth/__init__.py +0 -0
  31. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/__init__.py +0 -0
  32. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/consumer.py +0 -0
  33. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/counter.py +0 -0
  34. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/executer.py +0 -0
  35. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/mapping.py +0 -0
  36. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/sender.py +0 -0
  37. {valar-1.3.7 → valar-1.3.8}/src/valar/channels/views.py +0 -0
  38. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/__init__.py +0 -0
  39. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/app_mixins/__init__.py +0 -0
  40. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/app_mixins/auto_migration_mixin.py +0 -0
  41. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/app_mixins/auto_urlpatterns_mixin.py +0 -0
  42. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/singleton_meta.py +0 -0
  43. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/valar_minio.py +0 -0
  44. {valar-1.3.7 → valar-1.3.8}/src/valar/classes/valar_response.py +0 -0
  45. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/defaults/__init__.py +0 -0
  46. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/defaults/field_keys_default.py +0 -0
  47. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/defaults/field_values_default.py +0 -0
  48. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/defaults/view_defaults.py +0 -0
  49. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/frame.py +0 -0
  50. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/meta.py +0 -0
  51. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/mon_field.py +0 -0
  52. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/orm_field.py +0 -0
  53. {valar-1.3.7 → valar-1.3.8}/src/valar/dao/query.py +0 -0
  54. {valar-1.3.7 → valar-1.3.8}/src/valar/migrations/__init__.py +0 -0
  55. {valar-1.3.7 → valar-1.3.8}/src/valar/models/auth.py +0 -0
  56. {valar-1.3.7 → valar-1.3.8}/src/valar/models/core.py +0 -0
  57. {valar-1.3.7 → valar-1.3.8}/src/valar/models/frame.py +0 -0
  58. {valar-1.3.7 → valar-1.3.8}/src/valar/models/meta.py +0 -0
  59. {valar-1.3.7 → valar-1.3.8}/src/valar/models/test.py +0 -0
  60. {valar-1.3.7 → valar-1.3.8}/src/valar/urls.py +0 -0
  61. {valar-1.3.7 → valar-1.3.8}/src/valar/views/__init__.py +0 -0
  62. {valar-1.3.7 → valar-1.3.8}/src/valar/views/auth.py +0 -0
  63. {valar-1.3.7 → valar-1.3.8}/src/valar/views/file.py +0 -0
  64. {valar-1.3.7 → valar-1.3.8}/src/valar/views/handler.py +0 -0
  65. {valar-1.3.7 → valar-1.3.8}/src/valar/views/meta.py +0 -0
  66. {valar-1.3.7 → valar-1.3.8}/src/valar/views/password.py +0 -0
  67. {valar-1.3.7 → valar-1.3.8}/src/valar.egg-info/dependency_links.txt +0 -0
  68. {valar-1.3.7 → valar-1.3.8}/src/valar.egg-info/requires.txt +0 -0
  69. {valar-1.3.7 → valar-1.3.8}/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.7
3
+ Version: 1.3.8
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
  with open("README.md", "r", encoding="utf-8") as f:
4
4
  long_description = f.read()
5
5
 
6
- version = "1.3.7"
6
+ version = "1.3.8"
7
7
 
8
8
  requires = [
9
9
  'channels==3.0.3',
@@ -17,8 +17,8 @@ class Dao(AbstractDao):
17
17
  def save_many(self, array: list):
18
18
  self.dao.save_many(array)
19
19
 
20
- def save_one(self, item, with_id=False):
21
- return self.dao.save_one(item, with_id)
20
+ def save_one(self, item):
21
+ return self.dao.save_one(item)
22
22
 
23
23
  def delete_one(self, _id):
24
24
  return self.dao.delete_one(_id)
@@ -46,7 +46,7 @@ class AbstractDao(ABC):
46
46
  return self.fields[prop]
47
47
 
48
48
  @abstractmethod
49
- def save_one(self, item, with_id=False):
49
+ def save_one(self, item):
50
50
  pass
51
51
 
52
52
  @abstractmethod
@@ -1,10 +1,10 @@
1
- import pymongo
2
1
  from django.apps import apps
3
2
  from django.conf import settings
4
3
  from urllib.parse import urlparse
5
4
 
6
5
  from django.core.mail import EmailMessage
7
6
  from minio import Minio
7
+ from pymongo import MongoClient
8
8
  from pymongo.synchronous.collection import Collection
9
9
 
10
10
  from ..classes.singleton_meta import SingletonMeta
@@ -26,7 +26,7 @@ class ValarEngine(metaclass=SingletonMeta):
26
26
 
27
27
  # mon
28
28
  if hasattr(settings, 'MONGO_URI'):
29
- self.mongo_client = pymongo.MongoClient(
29
+ self.mongo_client: MongoClient = MongoClient(
30
30
  settings.MONGO_URI,
31
31
  **{
32
32
  'maxPoolSize': 10,
@@ -39,7 +39,7 @@ class ValarEngine(metaclass=SingletonMeta):
39
39
  )
40
40
  self.mongo_engine = self.mongo_client[settings.BASE_APP]
41
41
  else:
42
- self.mongo_client = None
42
+ self.mongo_client: MongoClient = None
43
43
  self.mongo_engine = None
44
44
 
45
45
  # minio
@@ -57,7 +57,7 @@ class MonDao(AbstractDao):
57
57
  def values(self, conditions, props):
58
58
  return None
59
59
 
60
- def save_one(self, item, with_id=False):
60
+ def save_one(self, item):
61
61
  oid, item = self.__detach_item__(item)
62
62
  if oid:
63
63
  self.manager.update_one({'_id': oid}, {'$set': item})
@@ -38,7 +38,9 @@ class OrmDao(AbstractDao):
38
38
  self.fields = fields
39
39
 
40
40
  def save_many(self, array: list):
41
- pass
41
+ for item in array:
42
+ item.update({'saved': True})
43
+ self.save_one(item)
42
44
 
43
45
  def values(self, conditions, props: list):
44
46
  query_set, _ = self.find(conditions)
@@ -46,7 +48,7 @@ class OrmDao(AbstractDao):
46
48
  props.append('id')
47
49
  return list(query_set.values(*props))
48
50
 
49
- def save_one(self, item, with_id=False):
51
+ def save_one(self, item):
50
52
  oid, simple_item, complex_item = self.__detach_item__(item)
51
53
  query_set = self.manager.filter(id=oid) if oid else []
52
54
  if len(query_set):
@@ -0,0 +1,301 @@
1
+ # Generated by Django 4.2.24 on 2025-09-18 18:23
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='MetaViewDefault',
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
+ ],
65
+ options={
66
+ 'verbose_name': '元数据字段类型',
67
+ },
68
+ ),
69
+ migrations.CreateModel(
70
+ name='Role',
71
+ fields=[
72
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
73
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
74
+ ('name', models.CharField(max_length=50, null=True)),
75
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
76
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
77
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
78
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
79
+ ('duty', models.TextField(null=True, verbose_name='职责描述')),
80
+ ],
81
+ options={
82
+ 'verbose_name': '角色',
83
+ },
84
+ ),
85
+ migrations.CreateModel(
86
+ name='Valar',
87
+ fields=[
88
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
89
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
90
+ ('name', models.CharField(max_length=50, null=True)),
91
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
92
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
93
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
94
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
95
+ ('text_field', models.TextField(null=True, verbose_name='Text Field')),
96
+ ('boolean_field', models.BooleanField(null=True, verbose_name='Boolean Field')),
97
+ ('integer_field', models.IntegerField(null=True, verbose_name='Integer Field')),
98
+ ('float_field', models.FloatField(null=True, verbose_name='Float Field')),
99
+ ('date_field', models.DateField(null=True, verbose_name='Date Field')),
100
+ ('datetime_field', models.DateTimeField(null=True, verbose_name='Datetime Field')),
101
+ ('time_field', models.TimeField(null=True, verbose_name='Time Field')),
102
+ ('json_field', models.JSONField(null=True, verbose_name='Json Field')),
103
+ ('file', models.FileField(null=True, upload_to='', verbose_name='File Field')),
104
+ ],
105
+ options={
106
+ 'abstract': False,
107
+ },
108
+ ),
109
+ migrations.CreateModel(
110
+ name='Voo',
111
+ fields=[
112
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
113
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
114
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
115
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
116
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
117
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
118
+ ('name', models.CharField(max_length=100, null=True, verbose_name='Name')),
119
+ ('valar', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='valar.valar', verbose_name='Valar')),
120
+ ],
121
+ options={
122
+ 'abstract': False,
123
+ },
124
+ ),
125
+ migrations.CreateModel(
126
+ name='Vmo',
127
+ fields=[
128
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
129
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
130
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
131
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
132
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
133
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
134
+ ('name', models.CharField(max_length=100, null=True, verbose_name='Name')),
135
+ ('valar', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='valar.valar', verbose_name='Valar')),
136
+ ],
137
+ options={
138
+ 'abstract': False,
139
+ },
140
+ ),
141
+ migrations.CreateModel(
142
+ name='Vmm',
143
+ fields=[
144
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
145
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
146
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
147
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
148
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
149
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
150
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
151
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
152
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
153
+ ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
154
+ ('valars', models.ManyToManyField(to='valar.valar', verbose_name='valars')),
155
+ ],
156
+ options={
157
+ 'abstract': False,
158
+ },
159
+ ),
160
+ migrations.CreateModel(
161
+ name='MetaView',
162
+ fields=[
163
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
164
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
165
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
166
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
167
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
168
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
169
+ ('property', models.JSONField(default=dict, verbose_name='属性')),
170
+ ('code', models.CharField(default='default ', max_length=50, verbose_name='类视图')),
171
+ ('name', models.CharField(max_length=50, null=True, verbose_name='视图名称')),
172
+ ('lock', models.BooleanField(default=False, verbose_name='锁定元数据')),
173
+ ('enable', models.BooleanField(default=True, verbose_name='是否启用')),
174
+ ('form_width', models.IntegerField(null=True, verbose_name='表单宽度')),
175
+ ('form_height', models.IntegerField(null=True, verbose_name='表单高度')),
176
+ ('table_width', models.IntegerField(null=True, verbose_name='表格宽度')),
177
+ ('table_height', models.IntegerField(null=True, verbose_name='表格高度')),
178
+ ('allow_search', models.BooleanField(default=True, verbose_name='检索功能')),
179
+ ('allow_order', models.BooleanField(default=True, verbose_name='排序功能')),
180
+ ('allow_insert', models.BooleanField(default=True, verbose_name='新增功能')),
181
+ ('allow_edit', models.BooleanField(default=True, verbose_name='编辑功能')),
182
+ ('allow_edit_on_form', models.BooleanField(default=True, verbose_name='表单编辑')),
183
+ ('allow_edit_on_cell', models.BooleanField(default=True, verbose_name='表内编辑')),
184
+ ('allow_edit_on_sort', models.BooleanField(default=True, verbose_name='移动功能')),
185
+ ('allow_remove', models.BooleanField(default=True, verbose_name='删除功能')),
186
+ ('allow_download', models.BooleanField(default=True, verbose_name='下载功能')),
187
+ ('allow_upload', models.BooleanField(default=True, verbose_name='上传功能')),
188
+ ('meta', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='valar.meta', verbose_name='元数据')),
189
+ ],
190
+ options={
191
+ 'verbose_name': '数据视图',
192
+ 'unique_together': {('meta', 'code')},
193
+ },
194
+ ),
195
+ migrations.CreateModel(
196
+ name='MetaFieldDomain',
197
+ fields=[
198
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
199
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
200
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
201
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
202
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
203
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
204
+ ('name', models.CharField(max_length=255, null=True, unique=True, verbose_name='名称')),
205
+ ('default', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='valar.metafieldtool', verbose_name='默认工具')),
206
+ ('tools', models.ManyToManyField(to='valar.metafieldtool', verbose_name='工具集')),
207
+ ],
208
+ options={
209
+ 'verbose_name': '元数据字段类型',
210
+ },
211
+ ),
212
+ migrations.CreateModel(
213
+ name='MetaField',
214
+ fields=[
215
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
216
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
217
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
218
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
219
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
220
+ ('prop', models.CharField(max_length=100, verbose_name='字段名称')),
221
+ ('label', models.CharField(max_length=100, verbose_name='字段标签')),
222
+ ('name', models.CharField(max_length=100, verbose_name='字段别名')),
223
+ ('domain', models.CharField(max_length=100, verbose_name='字段类型')),
224
+ ('tool', models.CharField(default='default', max_length=100, verbose_name='工具组件')),
225
+ ('refer', models.JSONField(default=dict, verbose_name='索引')),
226
+ ('format', models.JSONField(default=dict, verbose_name='格式')),
227
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
228
+ ('not_null', models.BooleanField(default=False, verbose_name='不为空')),
229
+ ('allow_edit', models.BooleanField(default=True, verbose_name='可编辑')),
230
+ ('allow_order', models.BooleanField(default=True, verbose_name='可排序')),
231
+ ('allow_search', models.BooleanField(default=True, verbose_name='可搜索')),
232
+ ('allow_download', models.BooleanField(default=True, verbose_name='可下载')),
233
+ ('allow_upload', models.BooleanField(default=True, verbose_name='可上传')),
234
+ ('allow_update', models.BooleanField(default=True, verbose_name='可更新')),
235
+ ('unit', models.CharField(max_length=55, null=True, verbose_name='单位符')),
236
+ ('column_width', models.FloatField(default=0, verbose_name='表头宽度')),
237
+ ('align', models.CharField(max_length=55, null=True, verbose_name='对齐方式')),
238
+ ('fixed', models.CharField(max_length=100, null=True, verbose_name='固定位置')),
239
+ ('header_color', models.CharField(max_length=55, null=True, verbose_name='表头颜色')),
240
+ ('cell_color', models.CharField(max_length=55, null=True, verbose_name='单元颜色')),
241
+ ('edit_on_table', models.BooleanField(default=True, verbose_name='表格编辑')),
242
+ ('hide_on_table', models.BooleanField(default=False, verbose_name='表内隐藏')),
243
+ ('span', models.IntegerField(default=0, verbose_name='表单占位')),
244
+ ('hide_on_form', models.BooleanField(default=False, verbose_name='表单隐藏')),
245
+ ('hide_on_form_edit', models.BooleanField(default=False, verbose_name='编辑隐藏')),
246
+ ('hide_on_form_insert', models.BooleanField(default=False, verbose_name='新增隐藏')),
247
+ ('hide_on_form_branch', models.BooleanField(default=False, verbose_name='分支隐藏')),
248
+ ('hide_on_form_leaf', models.BooleanField(default=False, verbose_name='叶子隐藏')),
249
+ ('view', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='valar.metaview', verbose_name='数据视图')),
250
+ ],
251
+ options={
252
+ 'verbose_name': '视图字段',
253
+ },
254
+ ),
255
+ migrations.CreateModel(
256
+ name='Account',
257
+ fields=[
258
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
259
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
260
+ ('name', models.CharField(max_length=50, null=True)),
261
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
262
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
263
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
264
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
265
+ ('username', models.CharField(max_length=255, null=True, unique=True, verbose_name='账号')),
266
+ ('password', models.CharField(max_length=255, null=True, verbose_name='密码')),
267
+ ('email', models.CharField(max_length=255, null=True, unique=True, verbose_name='邮箱')),
268
+ ('is_admin', models.BooleanField(default=False, verbose_name='超级管理员')),
269
+ ('is_active', models.BooleanField(default=False, verbose_name='激活状态')),
270
+ ('token', models.CharField(max_length=255, null=True, verbose_name='Token')),
271
+ ('roles', models.ManyToManyField(to='valar.role')),
272
+ ],
273
+ options={
274
+ 'verbose_name': '账户信息',
275
+ },
276
+ ),
277
+ migrations.CreateModel(
278
+ name='Menu',
279
+ fields=[
280
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
281
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
282
+ ('name', models.CharField(max_length=50, null=True)),
283
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
284
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
285
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
286
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
287
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
288
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
289
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
290
+ ('scope', models.CharField(max_length=100, null=True, verbose_name='域')),
291
+ ('path', models.CharField(max_length=255, null=True, verbose_name='地址')),
292
+ ('is_admin', models.BooleanField(default=False, null=True, verbose_name='超管权限')),
293
+ ('is_auth', models.BooleanField(default=False, null=True, verbose_name='需要登录')),
294
+ ('roles', models.ManyToManyField(to='valar.role')),
295
+ ],
296
+ options={
297
+ 'verbose_name': '菜单',
298
+ 'unique_together': {('scope', 'path')},
299
+ },
300
+ ),
301
+ ]
@@ -0,0 +1,34 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:24
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.CreateModel(
14
+ name='IndicatorTree',
15
+ fields=[
16
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
18
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
19
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
20
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
21
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
22
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
23
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
24
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
25
+ ('name', models.CharField(max_length=100, null=True, verbose_name='名称')),
26
+ ('frequency', models.CharField(max_length=100, null=True, verbose_name='频度')),
27
+ ('scope', models.CharField(max_length=100, null=True, verbose_name='尺度')),
28
+ ],
29
+ options={
30
+ 'verbose_name': '指标集',
31
+ 'unique_together': {('name', 'pid')},
32
+ },
33
+ ),
34
+ ]
@@ -0,0 +1,46 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:55
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0002_indicatortree'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.RemoveField(
14
+ model_name='indicatortree',
15
+ name='frequency',
16
+ ),
17
+ migrations.RemoveField(
18
+ model_name='indicatortree',
19
+ name='scope',
20
+ ),
21
+ migrations.AddField(
22
+ model_name='indicatortree',
23
+ name='V1',
24
+ field=models.CharField(max_length=100, null=True),
25
+ ),
26
+ migrations.AddField(
27
+ model_name='indicatortree',
28
+ name='V2',
29
+ field=models.CharField(max_length=100, null=True),
30
+ ),
31
+ migrations.AddField(
32
+ model_name='indicatortree',
33
+ name='V3',
34
+ field=models.CharField(max_length=100, null=True),
35
+ ),
36
+ migrations.AddField(
37
+ model_name='indicatortree',
38
+ name='V4',
39
+ field=models.CharField(max_length=100, null=True),
40
+ ),
41
+ migrations.AlterField(
42
+ model_name='indicatortree',
43
+ name='name',
44
+ field=models.CharField(max_length=50, null=True),
45
+ ),
46
+ ]
@@ -0,0 +1,16 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:55
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0003_remove_indicatortree_frequency_and_more'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.DeleteModel(
14
+ name='IndicatorTree',
15
+ ),
16
+ ]
@@ -0,0 +1,54 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:55
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0004_delete_indicatortree'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.CreateModel(
14
+ name='IndicatorTree',
15
+ fields=[
16
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
18
+ ('name', models.CharField(max_length=50, null=True)),
19
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
20
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
21
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
22
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
23
+ ('pid', models.IntegerField(default=0, verbose_name='父节点')),
24
+ ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
25
+ ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
26
+ ('V1', models.CharField(max_length=100, null=True)),
27
+ ('V2', models.CharField(max_length=100, null=True)),
28
+ ('V3', models.CharField(max_length=100, null=True)),
29
+ ('V4', models.CharField(max_length=100, null=True)),
30
+ ],
31
+ options={
32
+ 'verbose_name': '指标集',
33
+ 'unique_together': {('name', 'pid')},
34
+ },
35
+ ),
36
+ migrations.CreateModel(
37
+ name='IndicatorSet',
38
+ fields=[
39
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
40
+ ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
41
+ ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
42
+ ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
43
+ ('disabled', models.BooleanField(default=False, verbose_name='禁用')),
44
+ ('saved', models.BooleanField(default=False, verbose_name='已保存')),
45
+ ('name', models.CharField(max_length=100, null=True, verbose_name='名称')),
46
+ ('frequency', models.CharField(max_length=100, null=True, verbose_name='频度')),
47
+ ('scope', models.CharField(max_length=100, null=True, verbose_name='尺度')),
48
+ ],
49
+ options={
50
+ 'verbose_name': '指标集',
51
+ 'unique_together': {('name', 'pid')},
52
+ },
53
+ ),
54
+ ]
@@ -0,0 +1,21 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:56
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0005_indicatortree_indicatorset'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterUniqueTogether(
14
+ name='indicatorset',
15
+ unique_together=set(),
16
+ ),
17
+ migrations.AlterUniqueTogether(
18
+ name='indicatortree',
19
+ unique_together=set(),
20
+ ),
21
+ ]
@@ -0,0 +1,23 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:58
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0006_alter_indicatorset_unique_together_and_more'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='indicatorset',
15
+ name='file',
16
+ field=models.FileField(null=True, upload_to='', verbose_name='数据文件'),
17
+ ),
18
+ migrations.AddField(
19
+ model_name='indicatorset',
20
+ name='unit',
21
+ field=models.CharField(max_length=100, null=True, verbose_name='尺度'),
22
+ ),
23
+ ]
@@ -0,0 +1,23 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:58
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0007_indicatorset_file_indicatorset_unit'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='indicatorset',
15
+ name='object_id',
16
+ field=models.CharField(max_length=100, null=True, verbose_name='尺度'),
17
+ ),
18
+ migrations.AlterField(
19
+ model_name='indicatorset',
20
+ name='unit',
21
+ field=models.CharField(max_length=100, null=True, verbose_name='单位'),
22
+ ),
23
+ ]
@@ -0,0 +1,18 @@
1
+ # Generated by Django 4.2.24 on 2025-09-19 09:58
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('valar', '0008_indicatorset_object_id_alter_indicatorset_unit'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name='indicatorset',
15
+ name='object_id',
16
+ field=models.CharField(max_length=100, null=True, verbose_name='ObjectId'),
17
+ ),
18
+ ]
@@ -0,0 +1 @@
1
+ from . import core, frame, meta, auth, test, indicator
@@ -0,0 +1,24 @@
1
+ from ..models.core import VTree, VModel
2
+ from django.db import models
3
+
4
+
5
+ class IndicatorTree(VTree):
6
+ V1 = models.CharField(max_length=100, null=True)
7
+ V2 = models.CharField(max_length=100, null=True)
8
+ V3 = models.CharField(max_length=100, null=True)
9
+ V4 = models.CharField(max_length=100, null=True)
10
+
11
+ class Meta:
12
+ verbose_name = '指标集'
13
+
14
+
15
+ class IndicatorSet(VModel):
16
+ name = models.CharField(max_length=100, verbose_name='名称', null=True)
17
+ frequency = models.CharField(max_length=100, verbose_name='频度', null=True)
18
+ unit = models.CharField(max_length=100, verbose_name='单位', null=True)
19
+ scope = models.CharField(max_length=100, verbose_name='尺度', null=True)
20
+ object_id = models.CharField(max_length=100, verbose_name='ObjectId', null=True)
21
+ file = models.FileField(null=True, verbose_name='数据文件')
22
+
23
+ class Meta:
24
+ verbose_name = '指标集'
@@ -78,7 +78,7 @@ def search(request, db, entity):
78
78
  dao = Dao(entity, db)
79
79
 
80
80
  qs, _ = dao.find(conditions)
81
- qs.filter(saved=False).delete()
81
+ if db == 'orm': qs.filter(saved=False).delete()
82
82
 
83
83
  if _type == 'tree':
84
84
  query_set = dao.tree(root, conditions)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.3.7
3
+ Version: 1.3.8
4
4
  Summary: valar for morghulis
5
5
  Home-page: https://gitee.com/GRIFFIN120/valar_dev
6
6
  Author: LYP
@@ -40,11 +40,21 @@ 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
44
+ src/valar/migrations/0002_indicatortree.py
45
+ src/valar/migrations/0003_remove_indicatortree_frequency_and_more.py
46
+ src/valar/migrations/0004_delete_indicatortree.py
47
+ src/valar/migrations/0005_indicatortree_indicatorset.py
48
+ src/valar/migrations/0006_alter_indicatorset_unique_together_and_more.py
49
+ src/valar/migrations/0007_indicatorset_file_indicatorset_unit.py
50
+ src/valar/migrations/0008_indicatorset_object_id_alter_indicatorset_unit.py
51
+ src/valar/migrations/0009_alter_indicatorset_object_id.py
43
52
  src/valar/migrations/__init__.py
44
53
  src/valar/models/__init__.py
45
54
  src/valar/models/auth.py
46
55
  src/valar/models/core.py
47
56
  src/valar/models/frame.py
57
+ src/valar/models/indicator.py
48
58
  src/valar/models/meta.py
49
59
  src/valar/models/test.py
50
60
  src/valar/views/__init__.py
@@ -1 +0,0 @@
1
- from . import core, frame, meta, auth, test
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