-
Notifications
You must be signed in to change notification settings - Fork 6
/
admin.py
104 lines (84 loc) · 2.92 KB
/
admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from adminsortable2.admin import SortableInlineAdminMixin
from django.contrib import admin
from .forms import GlobalOptionsInlineForm, ChartOptionsInlineForm, DatasetOptionsInlineForm, AxisOptionsInlineForm, \
ColorInputForm
from .models import GlobalOptionsGroupModel, GlobalOptionsModel, \
ChartOptionsGroupModel, ChartOptionsModel, \
DatasetOptionsGroupModel, DatasetOptionsModel, \
AxisOptionsGroupModel, AxisOptionsModel, ChartSpecificOptionsModel, DatasetSpecificOptionsModel
from .models_colors import ColorModel, ColorGroupModel
# ------------------------
# Inline Forms for Options
# ------------------------
class OptionsInlineBase(admin.TabularInline):
fields = ['label', 'type', 'value']
list_display = ('label', 'type', 'value')
extra = 0
# Options Groups Inlines
# ------------------------
class GlobalOptionsInlineAdmin(OptionsInlineBase):
model = GlobalOptionsModel
form = GlobalOptionsInlineForm
class ChartOptionsInlineAdmin(OptionsInlineBase):
model = ChartOptionsModel
form = ChartOptionsInlineForm
class DatasetOptionsInlineAdmin(OptionsInlineBase):
model = DatasetOptionsModel
form = DatasetOptionsInlineForm
class AxisOptionsInlineAdmin(OptionsInlineBase):
model = AxisOptionsModel
form = AxisOptionsInlineForm
# Specific Options inlines
# ------------------------
class ChartSpecificOptionsInlineAdmin(OptionsInlineBase):
model = ChartSpecificOptionsModel
form = ChartOptionsInlineForm
class DatasetSpecificOptionsInlineAdmin(OptionsInlineBase):
model = DatasetSpecificOptionsModel
form = DatasetOptionsInlineForm
# Register Options Groups
# ------------------------
@admin.register(GlobalOptionsGroupModel)
class GlobalOptionsAdmin(admin.ModelAdmin):
fields = ['name', 'enabled', 'site', 'colors']
list_display = ('name', 'enabled')
inlines = [
GlobalOptionsInlineAdmin,
]
@admin.register(ChartOptionsGroupModel)
class ChartsOptionsAdmin(admin.ModelAdmin):
fields = ['name', ]
list_display = ('name',)
inlines = [
ChartOptionsInlineAdmin,
]
@admin.register(DatasetOptionsGroupModel)
class DatasetOptionsAdmin(admin.ModelAdmin):
fields = ['name', ]
list_display = ('name',)
inlines = [
DatasetOptionsInlineAdmin,
]
@admin.register(AxisOptionsGroupModel)
class AxisOptionsAdmin(admin.ModelAdmin):
fields = ['name', 'slug', 'type', 'display', 'weight']
readonly_fields = ['slug']
list_display = ('name', 'type')
inlines = [
AxisOptionsInlineAdmin,
]
# Register Colour Admins
# ------------------------
class ColorsInline(admin.TabularInline):
fields = ['types', 'labels', 'colors']
list_display = ['types', 'labels', 'colors']
extra = 0
model = ColorModel
form = ColorInputForm
@admin.register(ColorGroupModel)
class ColorGroupAdmin(admin.ModelAdmin):
fields = ['name']
list_display = ('name',)
inlines = [
ColorsInline,
]