Completed
Pull Request — master (#155)
by
unknown
41s
created

LeftColumnElementWidgetInline   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 11
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 10
c 0
b 0
f 0
wmc 2
1
import logging
2
logger = logging.getLogger(__name__)
3
4
from django.conf import settings
5
from django.contrib import admin
6
from django.forms.models import ModelForm
7
from django.contrib.admin import TabularInline
8
9
from mezzanine.core.admin import TabularDynamicInlineAdmin
10
from mezzanine.core.admin import StackedDynamicInlineAdmin
11
from mezzanine.forms.models import Form
12
from mezzanine.forms.admin import FormAdmin
13
from mezzanine.pages.admin import PageAdmin
14
from mezzanine.pages.models import RichTextPage
15
from mezzanine.utils.admin import SingletonAdmin
16
17
from website.jdpages.models import BlogCategoryPage
18
from website.jdpages.models import Footer
19
from website.jdpages.models import FooterLink
20
from website.jdpages.models import FooterLinks
21
from website.jdpages.models import FooterInfo
22
from website.jdpages.models import HomePage
23
from website.jdpages.models import VisionPage
24
from website.jdpages.models import VisionsPage
25
from website.jdpages.models import ActionBanner
26
from website.jdpages.models import PageHeaderImage
27
from website.jdpages.models import SidebarAgenda
28
from website.jdpages.models import SidebarSocial
29
from website.jdpages.models import SidebarTwitter
30
from website.jdpages.models import SidebarLink
31
from website.jdpages.models import SidebarRichText
32
33
34
class AlwaysChangedModelForm(ModelForm):
35
    """
36
    A django modelform that is always changed and will thus always be saved and validated.
37
    To be used for inlines that should also be created with their default/initial values.
38
    """
39
    def has_changed(self):
40
        """
41
        Should return True if data differs from initial.
42
        Unchanged inlines will also get validated and saved by always returning true here.
43
        """
44
        return True
45
46
47
class FooterLinkInline(TabularDynamicInlineAdmin):
48
    model = FooterLink
49
50
51
class FooterLinksAdmin(admin.ModelAdmin):
52
    model = FooterLinks
53
    inlines = [FooterLinkInline]
54
55
56
class PageHeaderImageInline(TabularDynamicInlineAdmin):
57
    model = PageHeaderImage
58
    verbose_name = "Header image"
59
    verbose_name_plural = "Header images"
60
61
62
class ActionBannerInline(StackedDynamicInlineAdmin):
63
    model = ActionBanner
64
    extra = 1
65
    verbose_name = "Action banner"
66
    verbose_name_plural = "Action banner"
67
68
69
class SidebarAgendaInline(TabularDynamicInlineAdmin):
70
    model = SidebarAgenda
71
    extra = 0
72
    verbose_name = "Sidebar agenda"
73
    verbose_name_plural = "Sidebar agenda"
74
75
76
class SidebarSocialInline(TabularDynamicInlineAdmin):
77
    model = SidebarSocial
78
    extra = 0
79
    verbose_name = "Sidebar social"
80
    verbose_name_plural = "Sidebar social"
81
82
83
class SidebarTwitterInline(TabularDynamicInlineAdmin):
84
    model = SidebarTwitter
85
    extra = 0
86
    verbose_name = "Sidebar twitter"
87
    verbose_name_plural = "Sidebar twitter"
88
89
90
class SidebarLinkInline(TabularDynamicInlineAdmin):
91
    model = SidebarLink
92
    extra = 0
93
    verbose_name = "Sidebar links"
94
    verbose_name_plural = "Sidebar links"
95
96
97
class SidebarRichTextInline(TabularDynamicInlineAdmin):
98
    model = SidebarRichText
99
    extra = 0
100
    verbose_name = "Sidebar content"
101
    verbose_name_plural = "Sidebar content"
102
103
104
class HomePageAdmin(PageAdmin):
105
    model = HomePage
106
    inlines = [PageHeaderImageInline, ActionBannerInline, SidebarAgendaInline, SidebarTwitterInline, SidebarSocialInline]
107
108
109
class VisionsPageAdmin(PageAdmin):
110
    model = VisionsPage
111
    inlines = [PageHeaderImageInline, SidebarTwitterInline]
112
113
114
class VisionPageAdmin(PageAdmin):
115
    model = VisionPage
116
    inlines = [PageHeaderImageInline, SidebarTwitterInline]
117
118
119
class RichtTextPageAdmin(PageAdmin):
120
    inlines = [
121
        PageHeaderImageInline, SidebarAgendaInline, SidebarSocialInline,
122
        SidebarTwitterInline, SidebarLinkInline, SidebarRichTextInline
123
    ]
124
125
126
class BlogPageAdmin(PageAdmin):
127
    inlines = [PageHeaderImageInline]
128
129
130
class CustomFormAdmin(FormAdmin):
131
    model = Form
132
    inlines = [PageHeaderImageInline]
133
    inlines.insert(0, FormAdmin.inlines[0])
134
135
136
class FooterAdmin(SingletonAdmin):
137
    model = Footer
138
    verbose_name = "Footer"
139
    verbose_name_plural = "Footer"
140
141
142
admin.site.unregister(RichTextPage)
143
admin.site.register(RichTextPage, RichtTextPageAdmin)
144
145
admin.site.unregister(Form)
146
admin.site.register(Form, CustomFormAdmin)
147
148
admin.site.register(HomePage, HomePageAdmin)
149
admin.site.register(VisionPage, VisionPageAdmin)
150
admin.site.register(VisionsPage, VisionsPageAdmin)
151
admin.site.register(BlogCategoryPage, BlogPageAdmin)
152
153
admin.site.register(Footer, FooterAdmin)
154
admin.site.register(FooterInfo)
155
admin.site.register(FooterLinks, FooterLinksAdmin)
156