valar 1.0.17__tar.gz → 1.0.18__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 (34) hide show
  1. {valar-1.0.17/src/valar.egg-info → valar-1.0.18}/PKG-INFO +1 -1
  2. {valar-1.0.17 → valar-1.0.18}/setup.py +1 -1
  3. {valar-1.0.17 → valar-1.0.18}/src/valar/channels/__init__.py +7 -3
  4. {valar-1.0.17 → valar-1.0.18}/src/valar/channels/views.py +3 -2
  5. valar-1.0.18/src/valar/data/migrations/0001_initial.py +582 -0
  6. valar-1.0.18/src/valar/data/migrations/0002_valatree_alter_metafield_allow_sort.py +36 -0
  7. {valar-1.0.17 → valar-1.0.18}/src/valar/data/models.py +11 -7
  8. {valar-1.0.17 → valar-1.0.18}/src/valar/data/mon/__init__.py +44 -5
  9. valar-1.0.18/src/valar/data/mon/query_translator.py +91 -0
  10. {valar-1.0.17 → valar-1.0.18}/src/valar/data/orm/__init__.py +25 -2
  11. valar-1.0.18/src/valar/data/orm/meta.py +46 -0
  12. {valar-1.0.17 → valar-1.0.18}/src/valar/data/orm/meta_loader.py +19 -5
  13. {valar-1.0.17 → valar-1.0.18}/src/valar/data/query.py +14 -14
  14. valar-1.0.18/src/valar/data/urls.py +21 -0
  15. {valar-1.0.17 → valar-1.0.18}/src/valar/data/views.py +56 -8
  16. {valar-1.0.17 → valar-1.0.18/src/valar.egg-info}/PKG-INFO +1 -1
  17. {valar-1.0.17 → valar-1.0.18}/src/valar.egg-info/SOURCES.txt +2 -0
  18. valar-1.0.17/src/valar/data/migrations/0001_initial.py +0 -210
  19. valar-1.0.17/src/valar/data/orm/meta.py +0 -24
  20. valar-1.0.17/src/valar/data/urls.py +0 -15
  21. {valar-1.0.17 → valar-1.0.18}/LICENSE +0 -0
  22. {valar-1.0.17 → valar-1.0.18}/README.md +0 -0
  23. {valar-1.0.17 → valar-1.0.18}/setup.cfg +0 -0
  24. {valar-1.0.17 → valar-1.0.18}/src/valar/__init__.py +0 -0
  25. {valar-1.0.17 → valar-1.0.18}/src/valar/channels/utils.py +0 -0
  26. {valar-1.0.17 → valar-1.0.18}/src/valar/data/__init__.py +0 -0
  27. {valar-1.0.17 → valar-1.0.18}/src/valar/data/handlers.py +0 -0
  28. {valar-1.0.17 → valar-1.0.18}/src/valar/data/migrations/__init__.py +0 -0
  29. {valar-1.0.17 → valar-1.0.18}/src/valar/data/orm/detacher.py +0 -0
  30. {valar-1.0.17 → valar-1.0.18}/src/valar/data/orm/values.py +0 -0
  31. {valar-1.0.17 → valar-1.0.18}/src/valar/data/utils.py +0 -0
  32. {valar-1.0.17 → valar-1.0.18}/src/valar.egg-info/dependency_links.txt +0 -0
  33. {valar-1.0.17 → valar-1.0.18}/src/valar.egg-info/requires.txt +0 -0
  34. {valar-1.0.17 → valar-1.0.18}/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.17
3
+ Version: 1.0.18
4
4
  Summary: valar for morghulis
5
5
  Author: LYP
6
6
  Author-email: liuyinpeng@buaa.edu.cn
@@ -10,7 +10,7 @@ requires = ['channels==3.0.3','pymongo~=4.11.2','asgiref~=3.8.1','django-cors-he
10
10
 
11
11
  setup(
12
12
  name="valar", # 包名
13
- version="1.0.17", # 版本号
13
+ version="1.0.18", # 版本号
14
14
  author="LYP", # 作者
15
15
  author_email="liuyinpeng@buaa.edu.cn", # 邮箱
16
16
  description="valar for morghulis", # 简短描述
@@ -1,3 +1,4 @@
1
+ import json
1
2
  from datetime import datetime
2
3
 
3
4
  from asgiref.sync import async_to_sync
@@ -13,7 +14,8 @@ except AttributeError:
13
14
  GROUP = 'VALAR'
14
15
 
15
16
  class ValarSocketSender:
16
- def __init__(self, handler: str, request: HttpRequest):
17
+ def __init__(self, request: HttpRequest):
18
+ body = json.loads(request.body)
17
19
  client = request.headers.get('CLIENT')
18
20
  auth = request.headers.get('AUTH')
19
21
  uid = request.session.get('UID')
@@ -21,7 +23,8 @@ class ValarSocketSender:
21
23
  raise Exception('Unauthorized!')
22
24
  self.client = client
23
25
  self.uid = uid
24
- self.handler = handler
26
+ self.handlerKey = body.get('handlerKey')
27
+ self.channelKey = body.get('channelKey', 'default')
25
28
  self.send = get_channel_layer().group_send
26
29
 
27
30
 
@@ -31,7 +34,8 @@ class ValarSocketSender:
31
34
  'type': emit,
32
35
  'data': {
33
36
  'status': status,
34
- 'handler': self.handler,
37
+ 'handlerKey': self.handlerKey,
38
+ 'channelKey': self.channelKey,
35
39
  'payload': data,
36
40
  'timestamp': datetime.now().timestamp()
37
41
  },
@@ -7,8 +7,9 @@ from ..channels import ValarSocketSender
7
7
 
8
8
  async def handel_channel(request, handler):
9
9
  method = get_channel_handler(handler)
10
- data = json.loads(request.body)
11
- sender = ValarSocketSender(handler,request)
10
+ body = json.loads(request.body)
11
+ data = body.get('data')
12
+ sender = ValarSocketSender(request)
12
13
  await execute_channel(method, data, sender)
13
14
  return ValarResponse(True)
14
15
 
@@ -0,0 +1,582 @@
1
+ # Generated by Django 4.2.20 on 2025-05-03 03:39
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
+ operations = [
14
+ migrations.CreateModel(
15
+ name="Meta",
16
+ fields=[
17
+ (
18
+ "id",
19
+ models.BigAutoField(
20
+ auto_created=True,
21
+ primary_key=True,
22
+ serialize=False,
23
+ verbose_name="ID",
24
+ ),
25
+ ),
26
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
27
+ (
28
+ "create_time",
29
+ models.DateTimeField(
30
+ auto_now_add=True, null=True, verbose_name="创建时间"
31
+ ),
32
+ ),
33
+ (
34
+ "modify_time",
35
+ models.DateTimeField(
36
+ auto_now=True, null=True, verbose_name="修改时间"
37
+ ),
38
+ ),
39
+ ("saved", models.BooleanField(default=False)),
40
+ (
41
+ "entity",
42
+ models.CharField(
43
+ max_length=100, null=True, unique=True, verbose_name="数据源"
44
+ ),
45
+ ),
46
+ (
47
+ "name",
48
+ models.CharField(max_length=50, null=True, verbose_name="实体别名"),
49
+ ),
50
+ ],
51
+ options={
52
+ "verbose_name": "数据实体",
53
+ },
54
+ ),
55
+ migrations.CreateModel(
56
+ name="MetaFieldTool",
57
+ fields=[
58
+ (
59
+ "id",
60
+ models.BigAutoField(
61
+ auto_created=True,
62
+ primary_key=True,
63
+ serialize=False,
64
+ verbose_name="ID",
65
+ ),
66
+ ),
67
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
68
+ (
69
+ "create_time",
70
+ models.DateTimeField(
71
+ auto_now_add=True, null=True, verbose_name="创建时间"
72
+ ),
73
+ ),
74
+ (
75
+ "modify_time",
76
+ models.DateTimeField(
77
+ auto_now=True, null=True, verbose_name="修改时间"
78
+ ),
79
+ ),
80
+ ("saved", models.BooleanField(default=False)),
81
+ ("pid", models.IntegerField(default=0, verbose_name="父节点")),
82
+ ("isLeaf", models.BooleanField(default=False, verbose_name="叶子节点")),
83
+ (
84
+ "icon",
85
+ models.CharField(max_length=255, null=True, verbose_name="图标"),
86
+ ),
87
+ (
88
+ "name",
89
+ models.CharField(max_length=255, null=True, verbose_name="名称"),
90
+ ),
91
+ (
92
+ "code",
93
+ models.CharField(
94
+ max_length=100, null=True, unique=True, verbose_name="代码"
95
+ ),
96
+ ),
97
+ ("format", models.JSONField(default=dict, verbose_name="格式参数")),
98
+ ],
99
+ options={
100
+ "verbose_name": "元数据字段工具",
101
+ },
102
+ ),
103
+ migrations.CreateModel(
104
+ name="Vala",
105
+ fields=[
106
+ (
107
+ "id",
108
+ models.BigAutoField(
109
+ auto_created=True,
110
+ primary_key=True,
111
+ serialize=False,
112
+ verbose_name="ID",
113
+ ),
114
+ ),
115
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
116
+ ("name", models.CharField(max_length=50, null=True)),
117
+ (
118
+ "create_time",
119
+ models.DateTimeField(
120
+ auto_now_add=True, null=True, verbose_name="创建时间"
121
+ ),
122
+ ),
123
+ (
124
+ "modify_time",
125
+ models.DateTimeField(
126
+ auto_now=True, null=True, verbose_name="修改时间"
127
+ ),
128
+ ),
129
+ ("saved", models.BooleanField(default=False)),
130
+ ("text_field", models.TextField(null=True, verbose_name="text")),
131
+ (
132
+ "boolean_field",
133
+ models.BooleanField(null=True, verbose_name="boolean"),
134
+ ),
135
+ (
136
+ "integer_field",
137
+ models.IntegerField(null=True, verbose_name="integer"),
138
+ ),
139
+ ("float_field", models.FloatField(null=True, verbose_name="float")),
140
+ ("date_field", models.DateField(null=True, verbose_name="date")),
141
+ (
142
+ "datetime_field",
143
+ models.DateTimeField(null=True, verbose_name="datetime"),
144
+ ),
145
+ ("time_field", models.TimeField(null=True, verbose_name="time")),
146
+ ("json_field", models.JSONField(null=True, verbose_name="json")),
147
+ (
148
+ "file",
149
+ models.FileField(null=True, upload_to="", verbose_name="File"),
150
+ ),
151
+ ],
152
+ options={
153
+ "abstract": False,
154
+ },
155
+ ),
156
+ migrations.CreateModel(
157
+ name="O2O",
158
+ fields=[
159
+ (
160
+ "id",
161
+ models.BigAutoField(
162
+ auto_created=True,
163
+ primary_key=True,
164
+ serialize=False,
165
+ verbose_name="ID",
166
+ ),
167
+ ),
168
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
169
+ (
170
+ "create_time",
171
+ models.DateTimeField(
172
+ auto_now_add=True, null=True, verbose_name="创建时间"
173
+ ),
174
+ ),
175
+ (
176
+ "modify_time",
177
+ models.DateTimeField(
178
+ auto_now=True, null=True, verbose_name="修改时间"
179
+ ),
180
+ ),
181
+ ("saved", models.BooleanField(default=False)),
182
+ (
183
+ "name",
184
+ models.CharField(max_length=100, null=True, verbose_name="name"),
185
+ ),
186
+ (
187
+ "vala",
188
+ models.OneToOneField(
189
+ null=True,
190
+ on_delete=django.db.models.deletion.CASCADE,
191
+ to="data.vala",
192
+ verbose_name="vala",
193
+ ),
194
+ ),
195
+ ],
196
+ options={
197
+ "abstract": False,
198
+ },
199
+ ),
200
+ migrations.CreateModel(
201
+ name="MetaView",
202
+ fields=[
203
+ (
204
+ "id",
205
+ models.BigAutoField(
206
+ auto_created=True,
207
+ primary_key=True,
208
+ serialize=False,
209
+ verbose_name="ID",
210
+ ),
211
+ ),
212
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
213
+ ("name", models.CharField(max_length=50, null=True)),
214
+ (
215
+ "create_time",
216
+ models.DateTimeField(
217
+ auto_now_add=True, null=True, verbose_name="创建时间"
218
+ ),
219
+ ),
220
+ (
221
+ "modify_time",
222
+ models.DateTimeField(
223
+ auto_now=True, null=True, verbose_name="修改时间"
224
+ ),
225
+ ),
226
+ ("saved", models.BooleanField(default=False)),
227
+ (
228
+ "code",
229
+ models.CharField(
230
+ default="default ", max_length=50, verbose_name="类视图"
231
+ ),
232
+ ),
233
+ (
234
+ "view_name",
235
+ models.CharField(max_length=50, null=True, verbose_name="视图名称"),
236
+ ),
237
+ ("form_width", models.IntegerField(default=0, verbose_name="表单宽度")),
238
+ (
239
+ "form_height",
240
+ models.IntegerField(default=0, verbose_name="表单高度"),
241
+ ),
242
+ (
243
+ "table_width",
244
+ models.IntegerField(default=0, verbose_name="表格宽度"),
245
+ ),
246
+ (
247
+ "table_height",
248
+ models.IntegerField(default=0, verbose_name="表格高度"),
249
+ ),
250
+ ("enable", models.BooleanField(default=True, verbose_name="是否启用")),
251
+ (
252
+ "show_header",
253
+ models.BooleanField(default=True, verbose_name="展示头部"),
254
+ ),
255
+ (
256
+ "allow_batch",
257
+ models.BooleanField(default=True, verbose_name="批处理"),
258
+ ),
259
+ (
260
+ "allow_search",
261
+ models.BooleanField(default=True, verbose_name="检索功能"),
262
+ ),
263
+ (
264
+ "allow_sort",
265
+ models.BooleanField(default=True, verbose_name="排序功能"),
266
+ ),
267
+ (
268
+ "allow_pop",
269
+ models.BooleanField(default=True, verbose_name="移动功能"),
270
+ ),
271
+ (
272
+ "allow_insert",
273
+ models.BooleanField(default=True, verbose_name="新增功能"),
274
+ ),
275
+ (
276
+ "allow_edit",
277
+ models.BooleanField(default=True, verbose_name="编辑功能"),
278
+ ),
279
+ (
280
+ "allow_remove",
281
+ models.BooleanField(default=True, verbose_name="删除功能"),
282
+ ),
283
+ (
284
+ "allow_download",
285
+ models.BooleanField(default=True, verbose_name="下载功能"),
286
+ ),
287
+ (
288
+ "allow_upload",
289
+ models.BooleanField(default=True, verbose_name="上传功能"),
290
+ ),
291
+ (
292
+ "meta",
293
+ models.ForeignKey(
294
+ on_delete=django.db.models.deletion.CASCADE,
295
+ to="data.meta",
296
+ verbose_name="元数据",
297
+ ),
298
+ ),
299
+ ],
300
+ options={
301
+ "verbose_name": "数据视图",
302
+ "unique_together": {("meta", "code")},
303
+ },
304
+ ),
305
+ migrations.CreateModel(
306
+ name="MetaFieldDomain",
307
+ fields=[
308
+ (
309
+ "id",
310
+ models.BigAutoField(
311
+ auto_created=True,
312
+ primary_key=True,
313
+ serialize=False,
314
+ verbose_name="ID",
315
+ ),
316
+ ),
317
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
318
+ (
319
+ "create_time",
320
+ models.DateTimeField(
321
+ auto_now_add=True, null=True, verbose_name="创建时间"
322
+ ),
323
+ ),
324
+ (
325
+ "modify_time",
326
+ models.DateTimeField(
327
+ auto_now=True, null=True, verbose_name="修改时间"
328
+ ),
329
+ ),
330
+ ("saved", models.BooleanField(default=False)),
331
+ (
332
+ "name",
333
+ models.CharField(
334
+ max_length=255, null=True, unique=True, verbose_name="名称"
335
+ ),
336
+ ),
337
+ (
338
+ "align",
339
+ models.CharField(max_length=10, null=True, verbose_name="对齐方式"),
340
+ ),
341
+ (
342
+ "default",
343
+ models.ForeignKey(
344
+ null=True,
345
+ on_delete=django.db.models.deletion.SET_NULL,
346
+ related_name="+",
347
+ to="data.metafieldtool",
348
+ verbose_name="默认工具",
349
+ ),
350
+ ),
351
+ (
352
+ "search",
353
+ models.ForeignKey(
354
+ null=True,
355
+ on_delete=django.db.models.deletion.SET_NULL,
356
+ related_name="+",
357
+ to="data.metafieldtool",
358
+ verbose_name="搜索工具",
359
+ ),
360
+ ),
361
+ (
362
+ "tools",
363
+ models.ManyToManyField(
364
+ to="data.metafieldtool", verbose_name="工具集"
365
+ ),
366
+ ),
367
+ ],
368
+ options={
369
+ "verbose_name": "元数据字段类型",
370
+ },
371
+ ),
372
+ migrations.CreateModel(
373
+ name="MetaField",
374
+ fields=[
375
+ (
376
+ "id",
377
+ models.BigAutoField(
378
+ auto_created=True,
379
+ primary_key=True,
380
+ serialize=False,
381
+ verbose_name="ID",
382
+ ),
383
+ ),
384
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
385
+ (
386
+ "create_time",
387
+ models.DateTimeField(
388
+ auto_now_add=True, null=True, verbose_name="创建时间"
389
+ ),
390
+ ),
391
+ (
392
+ "modify_time",
393
+ models.DateTimeField(
394
+ auto_now=True, null=True, verbose_name="修改时间"
395
+ ),
396
+ ),
397
+ ("saved", models.BooleanField(default=False)),
398
+ ("prop", models.CharField(max_length=100, verbose_name="字段名称")),
399
+ ("label", models.CharField(max_length=100, verbose_name="字段标签")),
400
+ ("name", models.CharField(max_length=100, verbose_name="字段别名")),
401
+ ("domain", models.CharField(max_length=100, verbose_name="字段类型")),
402
+ (
403
+ "tool",
404
+ models.CharField(
405
+ default="default", max_length=100, verbose_name="工具组件"
406
+ ),
407
+ ),
408
+ ("refer", models.JSONField(default=dict, verbose_name="索引")),
409
+ ("format", models.JSONField(default=dict, verbose_name="格式")),
410
+ ("not_null", models.BooleanField(default=False, verbose_name="不为空")),
411
+ (
412
+ "allow_edit",
413
+ models.BooleanField(default=True, verbose_name="可编辑"),
414
+ ),
415
+ (
416
+ "allow_sort",
417
+ models.BooleanField(default=False, verbose_name="可排序"),
418
+ ),
419
+ (
420
+ "allow_search",
421
+ models.BooleanField(default=True, verbose_name="可搜索"),
422
+ ),
423
+ (
424
+ "allow_download",
425
+ models.BooleanField(default=True, verbose_name="可下载"),
426
+ ),
427
+ (
428
+ "allow_upload",
429
+ models.BooleanField(default=False, verbose_name="可上传"),
430
+ ),
431
+ (
432
+ "allow_update",
433
+ models.BooleanField(default=False, verbose_name="可更新"),
434
+ ),
435
+ (
436
+ "unit",
437
+ models.CharField(max_length=55, null=True, verbose_name="单位符"),
438
+ ),
439
+ ("column_width", models.FloatField(default=0, verbose_name="表头宽度")),
440
+ (
441
+ "align",
442
+ models.CharField(
443
+ default="left", max_length=55, verbose_name="对齐方式"
444
+ ),
445
+ ),
446
+ (
447
+ "fixed",
448
+ models.CharField(
449
+ max_length=100, null=True, verbose_name="固定位置"
450
+ ),
451
+ ),
452
+ (
453
+ "header_color",
454
+ models.CharField(max_length=55, null=True, verbose_name="表头颜色"),
455
+ ),
456
+ (
457
+ "cell_color",
458
+ models.CharField(max_length=55, null=True, verbose_name="单元颜色"),
459
+ ),
460
+ (
461
+ "edit_on_table",
462
+ models.BooleanField(default=True, verbose_name="表格编辑"),
463
+ ),
464
+ (
465
+ "hide_on_table",
466
+ models.BooleanField(default=False, verbose_name="表内隐藏"),
467
+ ),
468
+ ("span", models.IntegerField(default=0, verbose_name="表单占位")),
469
+ (
470
+ "hide_on_form",
471
+ models.BooleanField(default=False, verbose_name="表单隐藏"),
472
+ ),
473
+ (
474
+ "hide_on_form_edit",
475
+ models.BooleanField(default=False, verbose_name="编辑隐藏"),
476
+ ),
477
+ (
478
+ "hide_on_form_insert",
479
+ models.BooleanField(default=False, verbose_name="新增隐藏"),
480
+ ),
481
+ (
482
+ "hide_on_form_branch",
483
+ models.BooleanField(default=False, verbose_name="分支隐藏"),
484
+ ),
485
+ (
486
+ "hide_on_form_leaf",
487
+ models.BooleanField(default=False, verbose_name="叶子隐藏"),
488
+ ),
489
+ (
490
+ "view",
491
+ models.ForeignKey(
492
+ on_delete=django.db.models.deletion.CASCADE,
493
+ to="data.metaview",
494
+ verbose_name="数据视图",
495
+ ),
496
+ ),
497
+ ],
498
+ options={
499
+ "verbose_name": "视图字段",
500
+ },
501
+ ),
502
+ migrations.CreateModel(
503
+ name="M2O",
504
+ fields=[
505
+ (
506
+ "id",
507
+ models.BigAutoField(
508
+ auto_created=True,
509
+ primary_key=True,
510
+ serialize=False,
511
+ verbose_name="ID",
512
+ ),
513
+ ),
514
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
515
+ (
516
+ "create_time",
517
+ models.DateTimeField(
518
+ auto_now_add=True, null=True, verbose_name="创建时间"
519
+ ),
520
+ ),
521
+ (
522
+ "modify_time",
523
+ models.DateTimeField(
524
+ auto_now=True, null=True, verbose_name="修改时间"
525
+ ),
526
+ ),
527
+ ("saved", models.BooleanField(default=False)),
528
+ (
529
+ "name",
530
+ models.CharField(max_length=100, null=True, verbose_name="name"),
531
+ ),
532
+ (
533
+ "vala",
534
+ models.ForeignKey(
535
+ null=True,
536
+ on_delete=django.db.models.deletion.CASCADE,
537
+ to="data.vala",
538
+ verbose_name="vala",
539
+ ),
540
+ ),
541
+ ],
542
+ options={
543
+ "abstract": False,
544
+ },
545
+ ),
546
+ migrations.CreateModel(
547
+ name="M2M",
548
+ fields=[
549
+ (
550
+ "id",
551
+ models.BigAutoField(
552
+ auto_created=True,
553
+ primary_key=True,
554
+ serialize=False,
555
+ verbose_name="ID",
556
+ ),
557
+ ),
558
+ ("sort", models.BigIntegerField(null=True, verbose_name="序号")),
559
+ (
560
+ "create_time",
561
+ models.DateTimeField(
562
+ auto_now_add=True, null=True, verbose_name="创建时间"
563
+ ),
564
+ ),
565
+ (
566
+ "modify_time",
567
+ models.DateTimeField(
568
+ auto_now=True, null=True, verbose_name="修改时间"
569
+ ),
570
+ ),
571
+ ("saved", models.BooleanField(default=False)),
572
+ (
573
+ "name",
574
+ models.CharField(max_length=100, null=True, verbose_name="name"),
575
+ ),
576
+ ("valas", models.ManyToManyField(to="data.vala", verbose_name="valas")),
577
+ ],
578
+ options={
579
+ "abstract": False,
580
+ },
581
+ ),
582
+ ]
@@ -0,0 +1,36 @@
1
+ # Generated by Django 4.2.20 on 2025-05-05 06:50
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('data', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.CreateModel(
14
+ name='ValaTree',
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
+ ('saved', models.BooleanField(default=False)),
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
+ ('text', models.TextField(null=True, verbose_name='text')),
26
+ ],
27
+ options={
28
+ 'verbose_name': '树形测试',
29
+ },
30
+ ),
31
+ migrations.AlterField(
32
+ model_name='metafield',
33
+ name='allow_sort',
34
+ field=models.BooleanField(default=True, verbose_name='可排序'),
35
+ ),
36
+ ]