root / cloudcms / cms.py @ f6e90a2b
History | View | Annotate | Download (5.2 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 cloudcmsblog.models import Entry, LatestEntries |
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 |
# Feincms Page templates declaration
|
72 |
TEMPLATES = [{ |
73 |
'key': 'basic', |
74 |
'title': 'Basic 2 columns template', |
75 |
'path': 'cms/pages/page.html', |
76 |
'regions': (
|
77 |
('main', 'Main region'), |
78 |
('sidebar', 'Sidebar', 'inherited'), |
79 |
('bottom', 'Bottom section', 'inherited'), |
80 |
), |
81 |
}, |
82 |
{ |
83 |
'key': 'twocolwide', |
84 |
'title': 'Basic 2 columns template (wider)', |
85 |
'path': 'cms/pages/twocolwide.html', |
86 |
'regions': (
|
87 |
('main', 'Main region'), |
88 |
('sidebar', 'Sidebar', 'inherited'), |
89 |
), |
90 |
}, |
91 |
{ |
92 |
'key': 'intro', |
93 |
'title': 'Intro page Template', |
94 |
'path': 'cms/pages/intro.html', |
95 |
'regions': (
|
96 |
('main', 'Main region'), |
97 |
('sidebar', 'Sidebar', 'inherited'), |
98 |
('bottom', 'Bottom section', 'inherited'), |
99 |
), |
100 |
}, |
101 |
{ |
102 |
'key': 'singlecol', |
103 |
'title': 'Basic 1 column template', |
104 |
'path': 'cms/pages/onecol.html', |
105 |
'regions': (
|
106 |
('main', 'Main region'), |
107 |
), |
108 |
}, |
109 |
{ |
110 |
'key': 'blog', |
111 |
'title': 'Blog template', |
112 |
'path': 'cms/pages/blog.html', |
113 |
'regions': (
|
114 |
('main', 'Main region'), |
115 |
('sidebar', 'Sidebar', 'inherited'), |
116 |
), |
117 |
}, |
118 |
] |
119 |
|
120 |
# register templates
|
121 |
map(Page.register_templates, TEMPLATES)
|
122 |
|
123 |
Page.create_content_type(RichTextContent) |
124 |
Page.create_content_type(RawContent) |
125 |
Page.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),)) |
126 |
Page.create_content_type(TemplateContent) |
127 |
Page.create_content_type(TwitterFeed) |
128 |
Page.create_content_type(VideoContent) |
129 |
Page.create_content_type(VideoSection) |
130 |
Page.create_content_type(LatestEntries) |
131 |
Page.create_content_type(ImageContent, POSITION_CHOICES=( |
132 |
('default', 'Default position'), |
133 |
)) |
134 |
Page.create_content_type(MediaFileContent, TYPE_CHOICES=( |
135 |
('lightbox', 'lightbox'), |
136 |
('download', 'as download') |
137 |
)) |
138 |
Page.create_content_type(ApplicationContent, APPLICATIONS=( |
139 |
('cloudcmsblog', 'Cloud blog', {'urls': 'cloudcmsblog.urls'}),)) |
140 |
|
141 |
|
142 |
# cloudcms specific content registration
|
143 |
Page.create_content_type(LoginForm) |
144 |
Page.create_content_type(AboutBlock) |
145 |
|
146 |
|
147 |
# Feincms specific registrations for our blog entry model
|
148 |
Entry.register_regions( |
149 |
('main', _('Main content area')), |
150 |
('sidebar', _('Right column')), |
151 |
) |
152 |
Entry.create_content_type(RichTextContent, cleanse=False, regions=('main',)) |
153 |
Entry.create_content_type(TemplateContent) |
154 |
Entry.create_content_type(VideoContent) |
155 |
Entry.create_content_type(TwitterFeed) |
156 |
Entry.create_content_type(RawContent) |
157 |
Entry.create_content_type(LatestEntries) |
158 |
Entry.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),)) |
159 |
|