root / cloudcms / cms.py @ 630dc5b7
History | View | Annotate | Download (5.9 kB)
1 |
# Copyright 2012 GRNET S.A. All rights reserved.
|
---|---|
2 |
#
|
3 |
# Redistribution and use in source and binary forms, with or
|
4 |
# without modification, are permitted provided that the following
|
5 |
# conditions are met:
|
6 |
#
|
7 |
# 1. Redistributions of source code must retain the above
|
8 |
# copyright notice, this list of conditions and the following
|
9 |
# disclaimer.
|
10 |
#
|
11 |
# 2. Redistributions in binary form must reproduce the above
|
12 |
# copyright notice, this list of conditions and the following
|
13 |
# disclaimer in the documentation and/or other materials
|
14 |
# provided with the distribution.
|
15 |
#
|
16 |
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 |
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 |
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 |
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 |
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 |
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 |
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 |
# POSSIBILITY OF SUCH DAMAGE.
|
28 |
#
|
29 |
# The views and conclusions contained in the software and
|
30 |
# documentation are those of the authors and should not be
|
31 |
# interpreted as representing official policies, either expressed
|
32 |
# or implied, of GRNET S.A.
|
33 |
|
34 |
|
35 |
import mptt |
36 |
|
37 |
from django import forms |
38 |
from django.db import models |
39 |
from django.utils.text import capfirst |
40 |
from django.utils.translation import ugettext_lazy as _ |
41 |
|
42 |
from feincms.module.page.models import Page |
43 |
from feincms.content.raw.models import RawContent |
44 |
from feincms.content.richtext.models import RichTextContent |
45 |
from feincms.content.image.models import ImageContent |
46 |
from feincms.content.application.models import ApplicationContent |
47 |
from feincms.module.page.extensions.navigation import NavigationExtension, \ |
48 |
PagePretender
|
49 |
from feincms.content.application.models import reverse |
50 |
from feincms.content.medialibrary.v2 import MediaFileContent |
51 |
from feincms.content.section.models import SectionContent |
52 |
from feincms.content.table.models import TableContent |
53 |
from feincms.content.template.models import TemplateContent |
54 |
from feincms.content.video.models import VideoContent |
55 |
from feincms.content.richtext.models import RichTextContent |
56 |
|
57 |
from cloudcmsresources.models import ResourcesList |
58 |
from cloudcms.content import * |
59 |
|
60 |
Page.register_extensions( |
61 |
'changedate',
|
62 |
'datepublisher',
|
63 |
'translations',
|
64 |
'seo',
|
65 |
'symlinks',
|
66 |
'navigation',
|
67 |
'sites',
|
68 |
'titles'
|
69 |
) |
70 |
|
71 |
|
72 |
# Feincms Page templates declaration
|
73 |
TEMPLATES = [{ |
74 |
'key': 'twocolwide', |
75 |
'title': 'Basic 2 columns template (left wider)', |
76 |
'path': 'cms/pages/twocolwide.html', |
77 |
'regions': (
|
78 |
('main', 'Main region'), |
79 |
('sidebar', 'Sidebar', 'inherited'), |
80 |
), |
81 |
}, |
82 |
{ |
83 |
'key': 'singlecol', |
84 |
'title': 'Basic (Top 1 col, Bottom 2 cols)', |
85 |
'path': 'cms/pages/onecol.html', |
86 |
'regions': (
|
87 |
('top', 'Top region'), |
88 |
('bottom_left', 'Bottom left region'), |
89 |
('bottom_right', 'Bottom right region'), |
90 |
), |
91 |
}, |
92 |
{ |
93 |
'key': 'blog', |
94 |
'title': 'Blog template', |
95 |
'path': 'cms/pages/blog.html', |
96 |
'regions': (
|
97 |
('main', 'Main region'), |
98 |
('sidebar', 'Sidebar', 'inherited'), |
99 |
), |
100 |
}, |
101 |
{ |
102 |
'key': 'faq', |
103 |
'title': 'FAQ\'s template', |
104 |
'path': 'cms/pages/faq.html', |
105 |
'regions': (
|
106 |
('top', 'Top region'), |
107 |
('bottom_left', 'Bottom left region'), |
108 |
('bottom_right', 'Bottom right region'), |
109 |
), |
110 |
}, |
111 |
{ |
112 |
'key': 'raw', |
113 |
'title': 'Empty content template', |
114 |
'path': 'cms/pages/empty.html', |
115 |
'regions': (
|
116 |
('main', 'Main region'), |
117 |
), |
118 |
}, |
119 |
] |
120 |
|
121 |
# register templates
|
122 |
map(Page.register_templates, TEMPLATES)
|
123 |
|
124 |
Page.create_content_type(TextileContent) |
125 |
Page.create_content_type(IntroBlock) |
126 |
Page.create_content_type(RichTextContent) |
127 |
Page.create_content_type(RawContent) |
128 |
Page.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),)) |
129 |
Page.create_content_type(TemplateContent) |
130 |
Page.create_content_type(TwitterFeed) |
131 |
Page.create_content_type(VideoContent) |
132 |
Page.create_content_type(VideoSection) |
133 |
Page.create_content_type(IntroButton) |
134 |
Page.create_content_type(ClientDownload) |
135 |
Page.create_content_type(ImageContent, POSITION_CHOICES=( |
136 |
('default', 'Default position'), |
137 |
)) |
138 |
Page.create_content_type(MediaFileContent, TYPE_CHOICES=( |
139 |
('lightbox', 'lightbox'), |
140 |
('download', 'as download') |
141 |
)) |
142 |
Page.create_content_type(ApplicationContent, APPLICATIONS=( |
143 |
('cloudcmsblog', 'Cloud blog', {'urls': 'cloudcmsblog.urls'}), |
144 |
('cloudcmsfaq', 'Cloud FAQ', {'urls': 'cloudcmsfaq.urls'}),)) |
145 |
|
146 |
# cloudcms specific content registration
|
147 |
Page.create_content_type(LoginForm) |
148 |
Page.create_content_type(AboutBlock) |
149 |
Page.create_content_type(ResourcesList) |
150 |
Page.create_content_type(BlockColor) |
151 |
|
152 |
|
153 |
|
154 |
# Extra cms applications
|
155 |
EXTRA_CONTENT_MODELS = [] |
156 |
|
157 |
if 'cloudcmsblog' in settings.INSTALLED_APPS: |
158 |
from cloudcmsblog.models import Entry, LatestEntries |
159 |
EXTRA_CONTENT_MODELS.append(Entry) |
160 |
Page.create_content_type(LatestEntries) |
161 |
|
162 |
if 'cloudcmsfaq' in settings.INSTALLED_APPS: |
163 |
from cloudcmsfaq.models import Question |
164 |
EXTRA_CONTENT_MODELS.append(Question) |
165 |
|
166 |
for model in EXTRA_CONTENT_MODELS: |
167 |
# Feincms specific registrations for our blog entry model
|
168 |
model.register_regions( |
169 |
('main', _('Main content area')), |
170 |
('sidebar', _('Right column')), |
171 |
) |
172 |
model.create_content_type(RawContent) |
173 |
model.create_content_type(TemplateContent) |
174 |
model.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),)) |
175 |
model.create_content_type(RichTextContent, cleanse=False, regions=('main',)) |
176 |
model.create_content_type(ImageContent, POSITION_CHOICES=( |
177 |
('default', 'Default position'), |
178 |
)) |
179 |
|