6
6
from django .utils import timezone
7
7
8
8
from ..exceptions import ADRException
9
- from .base import BaseModel
9
+ from .base import BaseModel , StrEnum
10
+
11
+
12
+ class ReportType (StrEnum ):
13
+ DEFAULT = ""
14
+ # Layouts
15
+ BASIC_LAYOUT = "Layout:basic"
16
+ PANEL_LAYOUT = "Layout:panel"
17
+ BOX_LAYOUT = "Layout:box"
18
+ TABS_LAYOUT = "Layout:tabs"
19
+ CAROUSEL_LAYOUT = "Layout:carousel"
20
+ SLIDER_LAYOUT = "Layout:slider"
21
+ FOOTER_LAYOUT = "Layout:footer"
22
+ HEADER_LAYOUT = "Layout:header"
23
+ ITERATOR_LAYOUT = "Layout:iterator"
24
+ TAG_PROPS_LAYOUT = "Layout:tagprops"
25
+ TOC_LAYOUT = "Layout:toc"
26
+ REPORT_LINK_LAYOUT = "Layout:reportlink"
27
+ PPTX_LAYOUT = "Layout:pptx"
28
+ PPTX_SLIDE_LAYOUT = "Layout:pptxslide"
29
+ DATA_FILTER_LAYOUT = "Layout:datafilter"
30
+ USER_DEFINED_LAYOUT = "Layout:userdefined"
31
+ # Generators
32
+ TABLE_MERGE_GENERATOR = "Generator:tablemerge"
33
+ TABLE_REDUCE_GENERATOR = "Generator:tablereduce"
34
+ TABLE_ROW_COLUMN_FILTER_GENERATOR = "Generator:tablerowcolumnfilter"
35
+ TABLE_VALUE_FILTER_GENERATOR = "Generator:tablevaluefilter"
36
+ TABLE_SORT_FILTER_GENERATOR = "Generator:tablesortfilter"
37
+ TREE_MERGE_GENERATOR = "Generator:treemerge"
38
+ SQL_QUERIES_GENERATOR = "Generator:sqlqueries"
39
+ ITEMS_COMPARISON_GENERATOR = "Generator:itemscomparison"
40
+ STATISTICAL_GENERATOR = "Generator:statistical"
41
+ ITERATOR_GENERATOR = "Generator:iterator"
10
42
11
43
12
44
class Template (BaseModel ):
@@ -16,7 +48,7 @@ class Template(BaseModel):
16
48
item_filter : str = field (compare = False , kw_only = True , default = "" )
17
49
parent : "Template" = field (compare = False , kw_only = True , default = None )
18
50
children : list ["Template" ] = field (compare = False , kw_only = True , default_factory = list )
19
- report_type : str = ""
51
+ report_type : ReportType = ReportType . DEFAULT # todo: make this read-only
20
52
_children_order : str = field (
21
53
compare = False , init = False , default = ""
22
54
) # computed from self.children
@@ -356,72 +388,72 @@ def set_skip(self, value=0):
356
388
357
389
358
390
class BasicLayout (Layout ):
359
- report_type : str = "Layout:basic"
391
+ report_type : ReportType = ReportType . BASIC_LAYOUT
360
392
361
393
362
394
class PanelLayout (Layout ):
363
- report_type : str = "Layout:panel"
395
+ report_type : ReportType = ReportType . PANEL_LAYOUT
364
396
365
397
366
398
class BoxLayout (Layout ):
367
- report_type : str = "Layout:box"
399
+ report_type : ReportType = ReportType . BOX_LAYOUT
368
400
369
401
370
402
class TabLayout (Layout ):
371
- report_type : str = "Layout:tabs"
403
+ report_type : ReportType = ReportType . TABS_LAYOUT
372
404
373
405
374
406
class CarouselLayout (Layout ):
375
- report_type : str = "Layout:carousel"
407
+ report_type : ReportType = ReportType . CAROUSEL_LAYOUT
376
408
377
409
378
410
class SliderLayout (Layout ):
379
- report_type : str = "Layout:slider"
411
+ report_type : ReportType = ReportType . SLIDER_LAYOUT
380
412
381
413
382
414
class FooterLayout (Layout ):
383
- report_type : str = "Layout:footer"
415
+ report_type : ReportType = ReportType . FOOTER_LAYOUT
384
416
385
417
386
418
class HeaderLayout (Layout ):
387
- report_type : str = "Layout:header"
419
+ report_type : ReportType = ReportType . HEADER_LAYOUT
388
420
389
421
390
422
class IteratorLayout (Layout ):
391
- report_type : str = "Layout:iterator"
423
+ report_type : ReportType = ReportType . ITERATOR_LAYOUT
392
424
393
425
394
426
class TagPropertyLayout (Layout ):
395
- report_type : str = "Layout:tagprops"
427
+ report_type : ReportType = ReportType . TAG_PROPS_LAYOUT
396
428
397
429
398
430
class TOCLayout (Layout ):
399
- report_type : str = "Layout:toc"
431
+ report_type : ReportType = ReportType . TOC_LAYOUT
400
432
401
433
402
434
class ReportLinkLayout (Layout ):
403
- report_type : str = "Layout:reportlink"
435
+ report_type : ReportType = ReportType . REPORT_LINK_LAYOUT
404
436
405
437
406
438
class PPTXLayout (Layout ):
407
- report_type : str = "Layout:pptx"
439
+ report_type : ReportType = ReportType . PPTX_LAYOUT
408
440
_properties = ("input_pptx" , "output_pptx" , "use_all_slides" )
409
441
410
442
411
443
class PPTXSlideLayout (Layout ):
412
- report_type : str = "Layout:pptxslide"
444
+ report_type : ReportType = ReportType . PPTX_SLIDE_LAYOUT
413
445
_properties = (
414
446
"source_slide" ,
415
447
"exclude_from_toc" ,
416
448
)
417
449
418
450
419
451
class DataFilterLayout (Layout ):
420
- report_type : str = "Layout:datafilter"
452
+ report_type : ReportType = ReportType . DATA_FILTER_LAYOUT
421
453
422
454
423
455
class UserDefinedLayout (Layout ):
424
- report_type : str = "Layout:userdefined"
456
+ report_type : ReportType = ReportType . USER_DEFINED_LAYOUT
425
457
426
458
427
459
class Generator (Template ):
@@ -449,40 +481,40 @@ def set_append_tags(self, value=True):
449
481
450
482
451
483
class TableMergeGenerator (Generator ):
452
- report_type : str = "Generator:tablemerge"
484
+ report_type : ReportType = ReportType . TABLE_MERGE_GENERATOR
453
485
454
486
455
487
class TableReduceGenerator (Generator ):
456
- report_type : str = "Generator:tablereduce"
488
+ report_type : ReportType = ReportType . TABLE_REDUCE_GENERATOR
457
489
458
490
459
491
class TableMergeRCFilterGenerator (Generator ):
460
- report_type : str = "Generator:tablerowcolumnfilter"
492
+ report_type : ReportType = ReportType . TABLE_ROW_COLUMN_FILTER_GENERATOR
461
493
462
494
463
495
class TableMergeValueFilterGenerator (Generator ):
464
- report_type : str = "Generator:tablevaluefilter"
496
+ report_type : ReportType = ReportType . TABLE_VALUE_FILTER_GENERATOR
465
497
466
498
467
499
class TableSortFilterGenerator (Generator ):
468
- report_type : str = "Generator:tablesortfilter"
500
+ report_type : ReportType = ReportType . TABLE_SORT_FILTER_GENERATOR
469
501
470
502
471
503
class TreeMergeGenerator (Generator ):
472
- report_type : str = "Generator:treemerge"
504
+ report_type : ReportType = ReportType . TREE_MERGE_GENERATOR
473
505
474
506
475
507
class SQLQueryGenerator (Generator ):
476
- report_type : str = "Generator:sqlqueries"
508
+ report_type : ReportType = ReportType . SQL_QUERIES_GENERATOR
477
509
478
510
479
511
class ItemsComparisonGenerator (Generator ):
480
- report_type : str = "Generator:itemscomparison"
512
+ report_type : ReportType = ReportType . ITEMS_COMPARISON_GENERATOR
481
513
482
514
483
515
class StatisticalGenerator (Generator ):
484
- report_type : str = "Generator:statistical"
516
+ report_type : ReportType = ReportType . STATISTICAL_GENERATOR
485
517
486
518
487
519
class IteratorGenerator (Generator ):
488
- report_type : str = "Generator:iterator"
520
+ report_type : ReportType = ReportType . ITERATOR_GENERATOR
0 commit comments