valar 1.0.19__tar.gz → 1.0.21__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 (33) hide show
  1. {valar-1.0.19/src/valar.egg-info → valar-1.0.21}/PKG-INFO +29 -11
  2. {valar-1.0.19 → valar-1.0.21}/README.md +28 -10
  3. {valar-1.0.19 → valar-1.0.21}/setup.py +1 -1
  4. {valar-1.0.19 → valar-1.0.21}/src/valar/data/models.py +0 -1
  5. valar-1.0.21/src/valar/data/orm/meta_frame.py +100 -0
  6. {valar-1.0.19 → valar-1.0.21/src/valar.egg-info}/PKG-INFO +29 -11
  7. {valar-1.0.19 → valar-1.0.21}/src/valar.egg-info/SOURCES.txt +0 -1
  8. valar-1.0.19/src/valar/data/migrations/0001_initial.py +0 -238
  9. valar-1.0.19/src/valar/data/orm/meta_frame.py +0 -49
  10. {valar-1.0.19 → valar-1.0.21}/LICENSE +0 -0
  11. {valar-1.0.19 → valar-1.0.21}/setup.cfg +0 -0
  12. {valar-1.0.19 → valar-1.0.21}/src/valar/__init__.py +0 -0
  13. {valar-1.0.19 → valar-1.0.21}/src/valar/channels/__init__.py +0 -0
  14. {valar-1.0.19 → valar-1.0.21}/src/valar/channels/utils.py +0 -0
  15. {valar-1.0.19 → valar-1.0.21}/src/valar/channels/views.py +0 -0
  16. {valar-1.0.19 → valar-1.0.21}/src/valar/data/__init__.py +0 -0
  17. {valar-1.0.19 → valar-1.0.21}/src/valar/data/file/__init__.py +0 -0
  18. {valar-1.0.19 → valar-1.0.21}/src/valar/data/handlers.py +0 -0
  19. {valar-1.0.19 → valar-1.0.21}/src/valar/data/migrations/__init__.py +0 -0
  20. {valar-1.0.19 → valar-1.0.21}/src/valar/data/mon/__init__.py +0 -0
  21. {valar-1.0.19 → valar-1.0.21}/src/valar/data/mon/query_translator.py +0 -0
  22. {valar-1.0.19 → valar-1.0.21}/src/valar/data/orm/__init__.py +0 -0
  23. {valar-1.0.19 → valar-1.0.21}/src/valar/data/orm/detacher.py +0 -0
  24. {valar-1.0.19 → valar-1.0.21}/src/valar/data/orm/meta.py +0 -0
  25. {valar-1.0.19 → valar-1.0.21}/src/valar/data/orm/meta_loader.py +0 -0
  26. {valar-1.0.19 → valar-1.0.21}/src/valar/data/orm/values.py +0 -0
  27. {valar-1.0.19 → valar-1.0.21}/src/valar/data/query.py +0 -0
  28. {valar-1.0.19 → valar-1.0.21}/src/valar/data/urls.py +0 -0
  29. {valar-1.0.19 → valar-1.0.21}/src/valar/data/utils.py +0 -0
  30. {valar-1.0.19 → valar-1.0.21}/src/valar/data/views.py +0 -0
  31. {valar-1.0.19 → valar-1.0.21}/src/valar.egg-info/dependency_links.txt +0 -0
  32. {valar-1.0.19 → valar-1.0.21}/src/valar.egg-info/requires.txt +0 -0
  33. {valar-1.0.19 → valar-1.0.21}/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.0.19
3
+ Version: 1.0.21
4
4
  Summary: valar for morghulis
5
5
  Author: LYP
6
6
  Author-email: liuyinpeng@buaa.edu.cn
@@ -36,7 +36,8 @@ BASE_DIR = Path(__file__).resolve().parent.parent
36
36
  BASE_APP = str(BASE_DIR.name)
37
37
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
38
38
 
39
- """ Minimized compulsory settings """
39
+
40
+ """ DataSource """
40
41
 
41
42
  DATABASES = {
42
43
  'default': {
@@ -45,6 +46,22 @@ DATABASES = {
45
46
  }
46
47
  }
47
48
 
49
+ MONGO_SETTINGS = {
50
+ 'host': '47.98.192.120',
51
+ 'port': 27017,
52
+ "username": "admin",
53
+ "password": '19870120'
54
+ }
55
+
56
+ MINIO_SETTINGS = {
57
+ 'endpoint': '10.134.10.92:9000',
58
+ 'access_key': 'admin',
59
+ "secret_key": "19870120",
60
+ 'secure': False
61
+ }
62
+
63
+ """ Minimized compulsory settings """
64
+
48
65
  INSTALLED_APPS = [
49
66
  'django.contrib.sessions',
50
67
  "corsheaders",
@@ -71,6 +88,7 @@ ROOT_URLCONF = "%s.urls" % BASE_APP
71
88
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
72
89
  VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
73
90
 
91
+
74
92
  """ Optional settings """
75
93
  # ALLOWED_HOSTS = ['*']
76
94
  # LANGUAGE_CODE = 'en-us'
@@ -85,27 +103,27 @@ VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
85
103
 
86
104
  # root urls
87
105
  ```python
88
- from django.urls import path
106
+ from django.urls import path, include
89
107
 
90
108
  from valar.channels import ValarSocketSender
91
109
  from valar.channels.views import handel_channel
92
110
 
93
111
  urlpatterns = [
94
112
  path('socket/<str:handler>', handel_channel),
113
+ path('data/', include('valar.data.urls')),
95
114
  ]
96
115
 
97
116
 
98
- async def test_handler(data, sender: ValarSocketSender):
99
- # print(data, sender.handler, sender.client, sender.uid)
100
- await sender.to_users({'user': 15}, 15)
101
- for i in range(3):
102
- await sender.to_clients({'h': i},sender.client)
103
-
104
-
105
117
  channel_handler_mapping = {
106
- 'test': test_handler
118
+ # 'test': test_handler
107
119
  }
108
120
 
121
+ # async def test_handler(data, sender: ValarSocketSender):
122
+ # # print(data, sender.handler, sender.client, sender.uid)
123
+ # await sender.to_users({'user': 15}, 15)
124
+ # for i in range(3):
125
+ # await sender.to_clients({'h': i},sender.client)
126
+
109
127
  ```
110
128
 
111
129
 
@@ -10,7 +10,8 @@ BASE_DIR = Path(__file__).resolve().parent.parent
10
10
  BASE_APP = str(BASE_DIR.name)
11
11
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
12
12
 
13
- """ Minimized compulsory settings """
13
+
14
+ """ DataSource """
14
15
 
15
16
  DATABASES = {
16
17
  'default': {
@@ -19,6 +20,22 @@ DATABASES = {
19
20
  }
20
21
  }
21
22
 
23
+ MONGO_SETTINGS = {
24
+ 'host': '47.98.192.120',
25
+ 'port': 27017,
26
+ "username": "admin",
27
+ "password": '19870120'
28
+ }
29
+
30
+ MINIO_SETTINGS = {
31
+ 'endpoint': '10.134.10.92:9000',
32
+ 'access_key': 'admin',
33
+ "secret_key": "19870120",
34
+ 'secure': False
35
+ }
36
+
37
+ """ Minimized compulsory settings """
38
+
22
39
  INSTALLED_APPS = [
23
40
  'django.contrib.sessions',
24
41
  "corsheaders",
@@ -45,6 +62,7 @@ ROOT_URLCONF = "%s.urls" % BASE_APP
45
62
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
46
63
  VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
47
64
 
65
+
48
66
  """ Optional settings """
49
67
  # ALLOWED_HOSTS = ['*']
50
68
  # LANGUAGE_CODE = 'en-us'
@@ -59,27 +77,27 @@ VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
59
77
 
60
78
  # root urls
61
79
  ```python
62
- from django.urls import path
80
+ from django.urls import path, include
63
81
 
64
82
  from valar.channels import ValarSocketSender
65
83
  from valar.channels.views import handel_channel
66
84
 
67
85
  urlpatterns = [
68
86
  path('socket/<str:handler>', handel_channel),
87
+ path('data/', include('valar.data.urls')),
69
88
  ]
70
89
 
71
90
 
72
- async def test_handler(data, sender: ValarSocketSender):
73
- # print(data, sender.handler, sender.client, sender.uid)
74
- await sender.to_users({'user': 15}, 15)
75
- for i in range(3):
76
- await sender.to_clients({'h': i},sender.client)
77
-
78
-
79
91
  channel_handler_mapping = {
80
- 'test': test_handler
92
+ # 'test': test_handler
81
93
  }
82
94
 
95
+ # async def test_handler(data, sender: ValarSocketSender):
96
+ # # print(data, sender.handler, sender.client, sender.uid)
97
+ # await sender.to_users({'user': 15}, 15)
98
+ # for i in range(3):
99
+ # await sender.to_clients({'h': i},sender.client)
100
+
83
101
  ```
84
102
 
85
103
 
@@ -19,7 +19,7 @@ requires = [
19
19
 
20
20
  setup(
21
21
  name="valar", # 包名
22
- version="1.0.19", # 版本号
22
+ version="1.0.21", # 版本号
23
23
  author="LYP", # 作者
24
24
  author_email="liuyinpeng@buaa.edu.cn", # 邮箱
25
25
  description="valar for morghulis", # 简短描述
@@ -175,7 +175,6 @@ class MetaField(VModel):
175
175
  class MetaFieldTool(VTree):
176
176
  name = models.CharField(max_length=255, null=True, verbose_name='名称')
177
177
  code = models.CharField(max_length=100, unique=True, null=True, verbose_name='代码') #
178
- format = models.JSONField(default=dict, verbose_name='格式参数') #
179
178
 
180
179
  class Meta:
181
180
  verbose_name = '元数据字段工具'
@@ -0,0 +1,100 @@
1
+
2
+ from django.db import OperationalError
3
+
4
+ from ...data.models import MetaFieldDomain, MetaFieldTool
5
+
6
+
7
+ def load_meta_frame():
8
+ try:
9
+ MetaFieldTool.objects.all().delete()
10
+ MetaFieldDomain.objects.all().delete()
11
+ for row in meta_field_tool:
12
+ row['saved'] = True
13
+ MetaFieldTool.objects.create(**row)
14
+ for row in meta_field_domain:
15
+ row['saved'] = True
16
+ tools = row.get('tools', '').split(';')
17
+ del row['tools']
18
+ item = MetaFieldDomain.objects.create(**row)
19
+ for tk in tools:
20
+ item.tools.add(tk)
21
+ except OperationalError as e:
22
+ print('initialization')
23
+
24
+
25
+ def convert_meta_fields(fields, entity):
26
+ values = MetaFieldDomain.objects.all().values('name', 'default__code', 'align')
27
+ mapping = {vs['name']: {
28
+ "tool": vs['default__code'],
29
+ "align": vs['align']
30
+ } for vs in values}
31
+ array = []
32
+ for field in fields:
33
+ node = mapping[field.domain]
34
+ _field = field.json
35
+ if field.tool == 'default':
36
+ _field['tool'] = node['tool']
37
+ _field['align'] = node['align']
38
+ _field['entity'] = entity
39
+ array.append(_field)
40
+ return array
41
+
42
+
43
+
44
+ meta_field_tool = [
45
+ {'id': 2, 'sort': 32, 'pid': 7, 'isLeaf': True, 'name': '输入框', 'code': 'text'},
46
+ {'id': 3, 'sort': 17, 'pid': 0, 'isLeaf': False, 'name': 'SPEC', 'code': '特殊工具集'},
47
+ {'id': 5, 'sort': 22, 'pid': 0, 'isLeaf': False, 'name': 'DATE', 'code': '日期时间工具集'},
48
+ {'id': 6, 'sort': 21, 'pid': 8, 'isLeaf': True, 'name': '数字输入', 'code': 'number'},
49
+ {'id': 7, 'sort': 36, 'pid': 0, 'isLeaf': False, 'name': 'TEXT', 'code': '文本工具集'},
50
+ {'id': 8, 'sort': 26, 'pid': 0, 'isLeaf': False, 'name': 'NUMB', 'code': '数字工具集'},
51
+ {'id': 9, 'sort': 10, 'pid': 0, 'isLeaf': False, 'name': 'FILE', 'code': '文件工具集'},
52
+ {'id': 10, 'sort': 27, 'pid': 0, 'isLeaf': False, 'name': 'BOOL', 'code': '逻辑工具集'},
53
+ {'id': 11, 'sort': 31, 'pid': 0, 'isLeaf': False, 'name': 'LIST', 'code': '列表工具集'},
54
+ {'id': 12, 'sort': 8, 'pid': 3, 'isLeaf': True, 'name': '对象', 'code': 'object'},
55
+ {'id': 13, 'sort': 5, 'pid': 9, 'isLeaf': True, 'name': '图片上传', 'code': 'image'},
56
+ {'id': 14, 'sort': 2, 'pid': 9, 'isLeaf': True, 'name': '文件上传', 'code': 'file'},
57
+ {'id': 15, 'sort': 13, 'pid': 9, 'isLeaf': True, 'name': '富文本', 'code': 'rich'},
58
+ {'id': 17, 'sort': 11, 'pid': 10, 'isLeaf': True, 'name': '开关', 'code': 'switch'},
59
+ {'id': 18, 'sort': 7, 'pid': 3, 'isLeaf': True, 'name': '元数据', 'code': 'meta'},
60
+ {'id': 19, 'sort': 9, 'pid': 7, 'isLeaf': True, 'name': '颜色选择', 'code': 'color'},
61
+ {'id': 20, 'sort': 14, 'pid': 11, 'isLeaf': True, 'name': '穿梭框', 'code': 'transfer'},
62
+ {'id': 21, 'sort': 16, 'pid': 7, 'isLeaf': True, 'name': '自动填充', 'code': 'auto'},
63
+ {'id': 22, 'sort': 35, 'pid': 5, 'isLeaf': True, 'name': '日期选择', 'code': 'date'},
64
+ {'id': 23, 'sort': 12, 'pid': 10, 'isLeaf': True, 'name': '逻辑选择', 'code': 'boolean'},
65
+ {'id': 24, 'sort': 24, 'pid': 11, 'isLeaf': True, 'name': '列表选择', 'code': 'select'},
66
+ {'id': 25, 'sort': 15, 'pid': 11, 'isLeaf': True, 'name': '树形选择', 'code': 'tree'},
67
+ {'id': 26, 'sort': 23, 'pid': 11, 'isLeaf': True, 'name': '及联选择', 'code': 'cascade'},
68
+ {'id': 27, 'sort': 39, 'pid': 0, 'isLeaf': True, 'name': '默认', 'code': 'default'},
69
+ {'id': 28, 'sort': 25, 'pid': 7, 'isLeaf': True, 'name': '图标', 'code': 'icon'},
70
+ {'id': 31, 'sort': 6, 'pid': 0, 'isLeaf': True, 'name': '无', 'code': 'none'},
71
+ {'id': 32, 'sort': 30, 'pid': 7, 'isLeaf': True, 'name': '文本框', 'code': 'textarea'},
72
+ {'id': 33, 'sort': 18, 'pid': 36, 'isLeaf': True, 'name': '时间区间', 'code': 'timerange'},
73
+ {'id': 35, 'sort': 33, 'pid': 5, 'isLeaf': True, 'name': '时间选择', 'code': 'time'},
74
+ {'id': 36, 'sort': 20, 'pid': 0, 'isLeaf': False, 'name': 'RANGE', 'code': '区间工具集'},
75
+ {'id': 37, 'sort': 38, 'pid': 36, 'isLeaf': True, 'name': '日期区间', 'code': 'daterange'},
76
+ {'id': 39, 'sort': 3, 'pid': 36, 'isLeaf': True, 'name': '多日期', 'code': 'dates'},
77
+ {'id': 54, 'sort': 54, 'pid': 7, 'isLeaf': True, 'name': '集合', 'code': 'set'}
78
+ ]
79
+
80
+ meta_field_domain = [
81
+ {'id': 12, 'sort': 22, 'name': 'CharField', 'default_id': 2, 'align': 'left', 'tools': '2;6;18;19;21;22;24;25;26;27;28;31;32;33;37;39;54'},
82
+ {'id': 11, 'sort': 21, 'name': 'TextField', 'default_id': 32, 'align': 'left', 'tools': '2;27;31;32'},
83
+ {'id': 13, 'sort': 20, 'name': 'BooleanField', 'default_id': 17, 'align': 'center', 'tools': '17;23;27;31'},
84
+ {'id': 9, 'sort': 18, 'name': 'IntegerField', 'default_id': 6, 'align': 'right', 'tools': '6;27;31'},
85
+ {'id': 8, 'sort': 16, 'name': 'FloatField', 'default_id': 6, 'align': 'right', 'tools': '6;27;31'},
86
+ {'id': 4, 'sort': 15, 'name': 'ForeignKey', 'default_id': 24, 'align': 'left', 'tools': '24;25;26;27;31'},
87
+ {'id': 2, 'sort': 13, 'name': 'ManyToOneRel', 'default_id': 24, 'align': 'center', 'tools': '20;24;25;26;27;31'},
88
+ {'id': 1, 'sort': 12, 'name': 'ManyToManyField', 'default_id': 24, 'align': 'center', 'tools': '20;24;25;26;27;31'},
89
+ {'id': 22, 'sort': 11, 'name': 'ManyToManyRel', 'default_id': 24, 'align': 'center', 'tools': '20;24;25;26;27;31'},
90
+ {'id': 5, 'sort': 10, 'name': 'OneToOneRel', 'default_id': 31, 'align': 'left', 'tools': '27;31'},
91
+ {'id': 21, 'sort': 9, 'name': 'OneToOneField', 'default_id': 31, 'align': 'left', 'tools': '27;31'},
92
+ {'id': 6, 'sort': 8, 'name': 'DateField', 'default_id': 22, 'align': 'center', 'tools': '22;27;31'},
93
+ {'id': 20, 'sort': 7, 'name': 'TimeField', 'default_id': 35, 'align': 'center', 'tools': '27;31;35'},
94
+ {'id': 7, 'sort': 6, 'name': 'DateTimeField', 'default_id': 22, 'align': 'center', 'tools': '22;27;31'},
95
+ {'id': 3, 'sort': 5, 'name': 'JSONField', 'default_id': 12, 'align': 'center', 'tools': '12;27;31'},
96
+ {'id': 15, 'sort': 4, 'name': 'FileField', 'default_id': 14, 'align': 'center', 'tools': '13;14;15;27;31'},
97
+ {'id': 16, 'sort': 3, 'name': 'BigAutoField', 'default_id': 31, 'align': 'right', 'tools': '27;31'},
98
+ {'id': 18, 'sort': 2, 'name': 'UUIDField', 'default_id': 31, 'align': 'left', 'tools': '27;31'},
99
+ {'id': 10, 'sort': 1, 'name': 'Custom', 'default_id': 31, 'align': 'left', 'tools': '27;31'}
100
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: valar
3
- Version: 1.0.19
3
+ Version: 1.0.21
4
4
  Summary: valar for morghulis
5
5
  Author: LYP
6
6
  Author-email: liuyinpeng@buaa.edu.cn
@@ -36,7 +36,8 @@ BASE_DIR = Path(__file__).resolve().parent.parent
36
36
  BASE_APP = str(BASE_DIR.name)
37
37
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
38
38
 
39
- """ Minimized compulsory settings """
39
+
40
+ """ DataSource """
40
41
 
41
42
  DATABASES = {
42
43
  'default': {
@@ -45,6 +46,22 @@ DATABASES = {
45
46
  }
46
47
  }
47
48
 
49
+ MONGO_SETTINGS = {
50
+ 'host': '47.98.192.120',
51
+ 'port': 27017,
52
+ "username": "admin",
53
+ "password": '19870120'
54
+ }
55
+
56
+ MINIO_SETTINGS = {
57
+ 'endpoint': '10.134.10.92:9000',
58
+ 'access_key': 'admin',
59
+ "secret_key": "19870120",
60
+ 'secure': False
61
+ }
62
+
63
+ """ Minimized compulsory settings """
64
+
48
65
  INSTALLED_APPS = [
49
66
  'django.contrib.sessions',
50
67
  "corsheaders",
@@ -71,6 +88,7 @@ ROOT_URLCONF = "%s.urls" % BASE_APP
71
88
  ASGI_APPLICATION = "%s.asgi.application" % BASE_APP
72
89
  VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
73
90
 
91
+
74
92
  """ Optional settings """
75
93
  # ALLOWED_HOSTS = ['*']
76
94
  # LANGUAGE_CODE = 'en-us'
@@ -85,27 +103,27 @@ VALAR_CHANNEL_HANDLER_MAPPING = "%s.urls.channel_handler_mapping" % BASE_APP
85
103
 
86
104
  # root urls
87
105
  ```python
88
- from django.urls import path
106
+ from django.urls import path, include
89
107
 
90
108
  from valar.channels import ValarSocketSender
91
109
  from valar.channels.views import handel_channel
92
110
 
93
111
  urlpatterns = [
94
112
  path('socket/<str:handler>', handel_channel),
113
+ path('data/', include('valar.data.urls')),
95
114
  ]
96
115
 
97
116
 
98
- async def test_handler(data, sender: ValarSocketSender):
99
- # print(data, sender.handler, sender.client, sender.uid)
100
- await sender.to_users({'user': 15}, 15)
101
- for i in range(3):
102
- await sender.to_clients({'h': i},sender.client)
103
-
104
-
105
117
  channel_handler_mapping = {
106
- 'test': test_handler
118
+ # 'test': test_handler
107
119
  }
108
120
 
121
+ # async def test_handler(data, sender: ValarSocketSender):
122
+ # # print(data, sender.handler, sender.client, sender.uid)
123
+ # await sender.to_users({'user': 15}, 15)
124
+ # for i in range(3):
125
+ # await sender.to_clients({'h': i},sender.client)
126
+
109
127
  ```
110
128
 
111
129
 
@@ -18,7 +18,6 @@ src/valar/data/urls.py
18
18
  src/valar/data/utils.py
19
19
  src/valar/data/views.py
20
20
  src/valar/data/file/__init__.py
21
- src/valar/data/migrations/0001_initial.py
22
21
  src/valar/data/migrations/__init__.py
23
22
  src/valar/data/mon/__init__.py
24
23
  src/valar/data/mon/query_translator.py
@@ -1,238 +0,0 @@
1
- # Generated by Django 4.2.21 on 2025-05-17 11:07
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
- ('saved', models.BooleanField(default=False)),
23
- ('entity', models.CharField(max_length=100, null=True, unique=True, verbose_name='数据源')),
24
- ('name', models.CharField(max_length=50, null=True, verbose_name='实体别名')),
25
- ],
26
- options={
27
- 'verbose_name': '数据实体',
28
- },
29
- ),
30
- migrations.CreateModel(
31
- name='MetaFieldTool',
32
- fields=[
33
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
34
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
35
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
36
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
37
- ('saved', models.BooleanField(default=False)),
38
- ('pid', models.IntegerField(default=0, verbose_name='父节点')),
39
- ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
40
- ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
41
- ('name', models.CharField(max_length=255, null=True, verbose_name='名称')),
42
- ('code', models.CharField(max_length=100, null=True, unique=True, verbose_name='代码')),
43
- ('format', models.JSONField(default=dict, verbose_name='格式参数')),
44
- ],
45
- options={
46
- 'verbose_name': '元数据字段工具',
47
- },
48
- ),
49
- migrations.CreateModel(
50
- name='TestM',
51
- fields=[
52
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
53
- ('name', models.CharField(max_length=100, verbose_name='<UNK>')),
54
- ],
55
- ),
56
- migrations.CreateModel(
57
- name='Vala',
58
- fields=[
59
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
60
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
61
- ('name', models.CharField(max_length=50, null=True)),
62
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
63
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
64
- ('saved', models.BooleanField(default=False)),
65
- ('text_field', models.TextField(null=True, verbose_name='text')),
66
- ('boolean_field', models.BooleanField(null=True, verbose_name='boolean')),
67
- ('integer_field', models.IntegerField(null=True, verbose_name='integer')),
68
- ('float_field', models.FloatField(null=True, verbose_name='float')),
69
- ('date_field', models.DateField(null=True, verbose_name='date')),
70
- ('datetime_field', models.DateTimeField(null=True, verbose_name='datetime')),
71
- ('time_field', models.TimeField(null=True, verbose_name='time')),
72
- ('json_field', models.JSONField(null=True, verbose_name='json')),
73
- ('file', models.FileField(null=True, upload_to='', verbose_name='File')),
74
- ],
75
- options={
76
- 'abstract': False,
77
- },
78
- ),
79
- migrations.CreateModel(
80
- name='ValaTree',
81
- fields=[
82
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
83
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
84
- ('name', models.CharField(max_length=50, null=True)),
85
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
86
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
87
- ('saved', models.BooleanField(default=False)),
88
- ('pid', models.IntegerField(default=0, verbose_name='父节点')),
89
- ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
90
- ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
91
- ('text', models.TextField(null=True, verbose_name='text')),
92
- ],
93
- options={
94
- 'verbose_name': '树形测试',
95
- },
96
- ),
97
- migrations.CreateModel(
98
- name='O2O',
99
- fields=[
100
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
101
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
102
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
103
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
104
- ('saved', models.BooleanField(default=False)),
105
- ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
106
- ('vala', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='data.vala', verbose_name='vala')),
107
- ],
108
- options={
109
- 'abstract': False,
110
- },
111
- ),
112
- migrations.CreateModel(
113
- name='MetaView',
114
- fields=[
115
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
116
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
117
- ('name', models.CharField(max_length=50, null=True)),
118
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
119
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
120
- ('saved', models.BooleanField(default=False)),
121
- ('code', models.CharField(default='default ', max_length=50, verbose_name='类视图')),
122
- ('view_name', models.CharField(max_length=50, null=True, verbose_name='视图名称')),
123
- ('form_width', models.IntegerField(default=0, verbose_name='表单宽度')),
124
- ('form_height', models.IntegerField(default=0, verbose_name='表单高度')),
125
- ('table_width', models.IntegerField(default=0, verbose_name='表格宽度')),
126
- ('table_height', models.IntegerField(default=0, verbose_name='表格高度')),
127
- ('enable', models.BooleanField(default=True, verbose_name='是否启用')),
128
- ('show_header', models.BooleanField(default=True, verbose_name='展示头部')),
129
- ('allow_batch', models.BooleanField(default=True, verbose_name='批处理')),
130
- ('allow_search', models.BooleanField(default=True, verbose_name='检索功能')),
131
- ('allow_sort', models.BooleanField(default=True, verbose_name='排序功能')),
132
- ('allow_pop', models.BooleanField(default=True, verbose_name='移动功能')),
133
- ('allow_insert', models.BooleanField(default=True, verbose_name='新增功能')),
134
- ('allow_edit', models.BooleanField(default=True, verbose_name='编辑功能')),
135
- ('allow_remove', models.BooleanField(default=True, verbose_name='删除功能')),
136
- ('allow_download', models.BooleanField(default=True, verbose_name='下载功能')),
137
- ('allow_upload', models.BooleanField(default=True, verbose_name='上传功能')),
138
- ('meta', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='data.meta', verbose_name='元数据')),
139
- ],
140
- options={
141
- 'verbose_name': '数据视图',
142
- 'unique_together': {('meta', 'code')},
143
- },
144
- ),
145
- migrations.CreateModel(
146
- name='MetaFieldDomain',
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
- ('saved', models.BooleanField(default=False)),
153
- ('name', models.CharField(max_length=255, null=True, unique=True, verbose_name='名称')),
154
- ('align', models.CharField(max_length=10, null=True, verbose_name='对齐方式')),
155
- ('default', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='data.metafieldtool', verbose_name='默认工具')),
156
- ('search', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='data.metafieldtool', verbose_name='搜索工具')),
157
- ('tools', models.ManyToManyField(to='data.metafieldtool', verbose_name='工具集')),
158
- ],
159
- options={
160
- 'verbose_name': '元数据字段类型',
161
- },
162
- ),
163
- migrations.CreateModel(
164
- name='MetaField',
165
- fields=[
166
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
167
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
168
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
169
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
170
- ('saved', models.BooleanField(default=False)),
171
- ('prop', models.CharField(max_length=100, verbose_name='字段名称')),
172
- ('label', models.CharField(max_length=100, verbose_name='字段标签')),
173
- ('name', models.CharField(max_length=100, verbose_name='字段别名')),
174
- ('domain', models.CharField(max_length=100, verbose_name='字段类型')),
175
- ('tool', models.CharField(default='default', max_length=100, verbose_name='工具组件')),
176
- ('refer', models.JSONField(default=dict, verbose_name='索引')),
177
- ('format', models.JSONField(default=dict, verbose_name='格式')),
178
- ('not_null', models.BooleanField(default=False, verbose_name='不为空')),
179
- ('allow_edit', models.BooleanField(default=True, verbose_name='可编辑')),
180
- ('allow_sort', models.BooleanField(default=True, verbose_name='可排序')),
181
- ('allow_search', models.BooleanField(default=True, verbose_name='可搜索')),
182
- ('allow_download', models.BooleanField(default=True, verbose_name='可下载')),
183
- ('allow_upload', models.BooleanField(default=False, verbose_name='可上传')),
184
- ('allow_update', models.BooleanField(default=False, verbose_name='可更新')),
185
- ('unit', models.CharField(max_length=55, null=True, verbose_name='单位符')),
186
- ('column_width', models.FloatField(default=0, verbose_name='表头宽度')),
187
- ('align', models.CharField(default='left', max_length=55, verbose_name='对齐方式')),
188
- ('fixed', models.CharField(max_length=100, null=True, verbose_name='固定位置')),
189
- ('header_color', models.CharField(max_length=55, null=True, verbose_name='表头颜色')),
190
- ('cell_color', models.CharField(max_length=55, null=True, verbose_name='单元颜色')),
191
- ('edit_on_table', models.BooleanField(default=True, verbose_name='表格编辑')),
192
- ('hide_on_table', models.BooleanField(default=False, verbose_name='表内隐藏')),
193
- ('span', models.IntegerField(default=0, verbose_name='表单占位')),
194
- ('hide_on_form', models.BooleanField(default=False, verbose_name='表单隐藏')),
195
- ('hide_on_form_edit', models.BooleanField(default=False, verbose_name='编辑隐藏')),
196
- ('hide_on_form_insert', models.BooleanField(default=False, verbose_name='新增隐藏')),
197
- ('hide_on_form_branch', models.BooleanField(default=False, verbose_name='分支隐藏')),
198
- ('hide_on_form_leaf', models.BooleanField(default=False, verbose_name='叶子隐藏')),
199
- ('view', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='data.metaview', verbose_name='数据视图')),
200
- ],
201
- options={
202
- 'verbose_name': '视图字段',
203
- },
204
- ),
205
- migrations.CreateModel(
206
- name='M2O',
207
- fields=[
208
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
209
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
210
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
211
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
212
- ('saved', models.BooleanField(default=False)),
213
- ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
214
- ('vala', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='data.vala', verbose_name='vala')),
215
- ],
216
- options={
217
- 'abstract': False,
218
- },
219
- ),
220
- migrations.CreateModel(
221
- name='M2M',
222
- fields=[
223
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
224
- ('sort', models.BigIntegerField(null=True, verbose_name='序号')),
225
- ('create_time', models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间')),
226
- ('modify_time', models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间')),
227
- ('saved', models.BooleanField(default=False)),
228
- ('pid', models.IntegerField(default=0, verbose_name='父节点')),
229
- ('isLeaf', models.BooleanField(default=False, verbose_name='叶子节点')),
230
- ('icon', models.CharField(max_length=255, null=True, verbose_name='图标')),
231
- ('name', models.CharField(max_length=100, null=True, verbose_name='name')),
232
- ('valas', models.ManyToManyField(to='data.vala', verbose_name='valas')),
233
- ],
234
- options={
235
- 'abstract': False,
236
- },
237
- ),
238
- ]
@@ -1,49 +0,0 @@
1
- import os
2
-
3
- from django.db import OperationalError
4
-
5
- from src.valar.data.models import MetaFieldDomain, MetaFieldTool
6
- import pandas as pd
7
-
8
-
9
- def load_meta_frame():
10
- try:
11
- MetaFieldTool.objects.all().delete()
12
- MetaFieldDomain.objects.all().delete()
13
- project_root = os.path.dirname(os.path.abspath(__file__))
14
- file_path = os.path.join(project_root, 'meta_frame.xlsx')
15
- array = pd.read_excel(file_path, sheet_name='tool').to_dict("records")
16
- for row in array:
17
- row['saved'] = True
18
- MetaFieldTool.objects.create(**row)
19
- array = pd.read_excel(file_path, sheet_name='domain').to_dict("records")
20
- for row in array:
21
- row['saved'] = True
22
- tools = row.get('tools', '').split(';')
23
- del row['tools']
24
- item = MetaFieldDomain.objects.create(**row)
25
- for tk in tools:
26
- item.tools.add(tk)
27
- except OperationalError as e:
28
- print('initialization')
29
-
30
-
31
- def convert_meta_fields(fields, entity):
32
- values = MetaFieldDomain.objects.all().values('name', 'default__code', 'align')
33
- mapping = {vs['name']: {
34
- "tool": vs['default__code'],
35
- "align": vs['align']
36
- } for vs in values}
37
- array = []
38
- for field in fields:
39
- node = mapping[field.domain]
40
- _field = field.json
41
- if field.tool == 'default':
42
- _field['tool'] = node['tool']
43
- _field['align'] = node['align']
44
- _field['entity'] = entity
45
- array.append(_field)
46
- return array
47
-
48
-
49
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes