Revision c1468bcc

b/cloudcms/admin.py
1
from django.contrib import admin
2
from cloudcms import models
3

  
4

  
5
class ApplicationAdmin(admin.ModelAdmin):
6
    raw_id_fields = ('logo', )
7

  
8

  
9
admin.site.register(models.Application, ApplicationAdmin)
10

  
b/cloudcms/astakos_cms.py
1
from feincms.module.page.extensions.navigation import NavigationExtension, \
2
        PagePretender
3
from django.utils.translation import ugettext as _
4

  
5
ASTAKOS_NAVIGATION = (
6
        ('Profile', 'astakos-profile'),
7
        ('Change password', 'astakos-profile')
8
)
9

  
10
class AstakosNavigationExtension(NavigationExtension):
11
    name = _('astakos pages')
12

  
13
    def children(self, page, **kwargs):
14
        from django.core.urlresolvers import reverse
15
        for title, url in dict(ASTAKOS_NAVIGATION).iteritems():
16
            yield PagePretender(title=title, url='/im/profile')
b/cloudcms/cms.py
1
import mptt
2

  
3
from django import forms
4
from django.db import models
5
from django.utils.text import capfirst
6
from django.utils.translation import ugettext_lazy as _
7

  
8
from feincms.module.page.models import Page
9
from feincms.content.raw.models import RawContent
10
from feincms.content.richtext.models import RichTextContent
11
from feincms.content.image.models import ImageContent
12
from feincms.content.application.models import ApplicationContent
13
from feincms.module.page.extensions.navigation import NavigationExtension, \
14
        PagePretender
15
from feincms.content.application.models import reverse
16
from feincms.content.medialibrary.v2 import MediaFileContent
17
from feincms.content.section.models import SectionContent
18
from feincms.content.table.models import TableContent
19
from feincms.content.template.models import TemplateContent
20
from feincms.content.video.models import VideoContent
21
from feincms.content.richtext.models import RichTextContent
22

  
23
from cloudcmsblog.models import Entry
24
from cloudcms.content import *
25

  
26
Page.register_extensions(
27
    'changedate',
28
    'datepublisher',
29
    'translations',
30
    'seo',
31
    'symlinks',
32
    'navigation',
33
    'sites',
34
    'titles'
35
)
36

  
37
# Feincms Page templates declaration
38
TEMPLATES = [{
39
    'key': 'basic',
40
    'title': 'Basic 2 columns template',
41
    'path': 'cms/pages/page.html',
42
    'regions': (
43
        ('main', 'Main region'),
44
        ('sidebar', 'Sidebar', 'inherited'),
45
        ),
46
    },
47
    {
48
    'key': 'twocolwide',
49
    'title': 'Basic 2 columns template (wider)',
50
    'path': 'cms/pages/twocolwide.html',
51
    'regions': (
52
        ('main', 'Main region'),
53
        ('sidebar', 'Sidebar', 'inherited'),
54
        ),
55
    },
56
    {
57
    'key': 'intro',
58
    'title': 'Intro page Template',
59
    'path': 'cms/pages/intro.html',
60
    'regions': (
61
        ('main', 'Main region'),
62
        ('sidebar', 'Sidebar', 'inherited'),
63
        ),
64
    },
65
    {
66
    'key': 'singlecol',
67
    'title': 'Basic 1 column template',
68
    'path': 'cms/pages/onecol.html',
69
    'regions': (
70
        ('main', 'Main region'),
71
        ),
72
    },
73
    {
74
    'key': 'blog',
75
    'title': 'Blog template',
76
    'path': 'cms/pages/blog.html',
77
    'regions': (
78
        ('main', 'Main region'),
79
        ('sidebar', 'Sidebar', 'inherited'),
80
        ),
81
    },
82
]
83

  
84
# register templates
85
map(Page.register_templates, TEMPLATES)
86

  
87
Page.create_content_type(RichTextContent)
88
Page.create_content_type(RawContent)
89
Page.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),))
90
Page.create_content_type(TemplateContent)
91
Page.create_content_type(TwitterFeed)
92
Page.create_content_type(VideoContent)
93
Page.create_content_type(VideoSection)
94
Page.create_content_type(ImageContent, POSITION_CHOICES=(
95
    ('default', 'Default position'),
96
))
97
Page.create_content_type(MediaFileContent, TYPE_CHOICES=(
98
  ('lightbox', 'lightbox'),
99
  ('download', 'as download')
100
))
101
Page.create_content_type(ApplicationContent, APPLICATIONS=(
102
    ('cloudcmsblog', 'Cloud blog', {'urls': 'cloudcmsblog.urls'}),))
103

  
104

  
105
# cloudcms specific content registration
106
Page.create_content_type(LoginForm)
107
Page.create_content_type(AboutBlock)
108

  
109

  
110
# Feincms specific registrations for our blog entry model
111
Entry.register_regions(
112
    ('main', _('Main content area')),
113
    ('sidebar', _('Right column')),
114
)
115
Entry.create_content_type(RichTextContent, cleanse=False, regions=('main',))
116
Entry.create_content_type(TemplateContent)
117
Entry.create_content_type(VideoContent)
118
Entry.create_content_type(TwitterFeed)
119
Entry.create_content_type(RawContent)
120
Entry.create_content_type(SectionContent, TYPE_CHOICES=(('block', 'Block'),))
121

  
b/cloudcms/common_settings.py
1
CLOUDCMS_APPS = [
2
    'cloudcms',
3
    'cloudcmsblog',
4
    'pagination',
5

  
6
    'django.contrib.auth',
7
    'django.contrib.contenttypes',
8
    'django.contrib.sessions',
9
    'django.contrib.sites',
10
    'django.contrib.messages',
11
    'django.contrib.admin',
12
    'django.contrib.admindocs',
13
    'django.contrib.sitemaps',
14

  
15
    'south',
16

  
17
    'feincms',
18
    'feincms.module.page',
19
    'feincms.module.medialibrary',
20
]
21
CLOUDCMS_MIDDLEWARES = [
22
    'django.contrib.sessions.middleware.SessionMiddleware',
23
    'django.contrib.auth.middleware.AuthenticationMiddleware',
24
    'django.contrib.messages.middleware.MessageMiddleware',
25
    'django.middleware.csrf.CsrfViewMiddleware',
26
    'pagination.middleware.PaginationMiddleware'
27
]
28
CLOUDCMS_STATICFILES = {
29
        'cloudcms': '',
30
        'feincms': ''
31
}
32
CLOUDCMS_CONTEXT_PROCESSORS = [
33
    'cloudcms.context_processors.application',
34
    'cloudcms.context_processors.cloudbar'
35
]
36

  
37

  
38
# Django settings
39
SOUTH_MIGRATION_MODULES = {
40
    'page': 'cloudcms.migrate.page',
41
    'medialibrary': 'cloudcms.migrate.medialibrary',
42
    'cloudcmsblog': 'cloudcms.migrate.cloudcmsblog',
43
}
44

  
45
CLOUDBAR_URL = '/static/im/cloudbar/cloudbar.js'
46
CLOUDBAR_ACTIVE_SERVICE = 'okeanos_cms'
b/cloudcms/content.py
1
from django.contrib.markup.templatetags.markup import textile
2
from django.db import models
3
from django import forms
4
from django.conf import settings
5
from django.utils.translation import ugettext_lazy as _
6
from django.template.loader import render_to_string
7
from django.utils import simplejson
8

  
9
from feincms.admin.editor import ItemEditorForm
10
from feincms.module.page.models import Page
11
from feincms.module.medialibrary.models import MediaFile
12
from feincms.content.medialibrary.models import MediaFileWidget
13
from feincms.module.medialibrary.fields import MediaFileForeignKey
14

  
15

  
16
DEFAULT_JQ_TWITTER_URL = settings.MEDIA_URL + 'cloudcms/' + 'js/' + 'twitter/' + \
17
                        'jquery.twitter.js'
18
DEFAULT_LINKIFY_URL = settings.MEDIA_URL + 'cloudcms/' + 'js/' + 'twitter/' + \
19
                        'ba-linkify.js'
20
DEFAULT_JQ_TIMEAGO_URL = settings.MEDIA_URL + 'cloudcms/' + 'js/' + 'twitter/' + \
21
                        'jquery.timeago.js'
22
JQUERY_TWITTER_URL = getattr(settings, "JQUERY_TWITTER_URL",
23
        DEFAULT_JQ_TWITTER_URL)
24
LINKIFY_JS_URL = getattr(settings, "LINKIFY_JS_URL",
25
        DEFAULT_LINKIFY_URL)
26
JQUERY_TIMEAGO_URL = getattr(settings, "JQUERY_TIMEAGO_URL",
27
        DEFAULT_JQ_TIMEAGO_URL)
28

  
29

  
30
class VideoSection(models.Model):
31
    section_title = models.CharField(max_length=200, blank=True)
32
    video_title = models.CharField(max_length=200, blank=True)
33
    video_link = models.CharField(max_length=200, blank=True)
34
    video_width = models.PositiveIntegerField(default=700)
35
    video_height = models.PositiveIntegerField(default=550)
36
    image = MediaFileForeignKey(MediaFile, blank=True, null=True,
37
    related_name="as_image_for_video_section")
38
    image_hover = MediaFileForeignKey(MediaFile, blank=True, null=True,
39
            related_name="as_hover_for_video_section")
40
    alt_text = models.TextField(null=True, blank=True)
41
    extra_url_params = models.CharField(max_length=200, blank=True)
42

  
43
    class Meta:
44
        abstract = True
45
        verbose_name = _('video section')
46
        verbose_name_plural = _('video sections')
47

  
48
    def render(self, **kwargs):
49
        return render_to_string(['content/videosection.html'], {'content': self})
50

  
51

  
52
class TwitterFeed(models.Model):
53
    title = models.CharField(max_length=200, blank=True)
54
    account = models.CharField(max_length=200, blank=True)
55
    nots = models.CharField(max_length=200, help_text="Ugly words", blank=True)
56
    query = models.CharField(max_length=200, blank=True,
57
            help_text="Filter query")
58
    tag = models.CharField(max_length=200, blank=True, help_text="Hashtag")
59
    limit = models.PositiveIntegerField(default=10)
60
    replies = models.BooleanField(default=True)
61
    retweets = models.BooleanField(default=True)
62
    avatar = models.BooleanField(default=False)
63
    extra_params = models.TextField(blank=True,
64
            help_text="Json object to append to "
65
                      "JQuery-twitter-plugin settings. Change "
66
                      "this only if you know what you are doing.")
67

  
68
    class Meta:
69
        abstract = True
70
        verbose_name = _('twitter feed')
71
        verbose_name_plural = _('twitter feeds')
72

  
73
    @property
74
    def media(self):
75
        return forms.Media(js=(
76
                LINKIFY_JS_URL, JQUERY_TWITTER_URL, JQUERY_TIMEAGO_URL
77
            ))
78

  
79
    def js_conf(self):
80
        conf = {}
81
        if self.account:
82
            conf['from'] = self.account
83

  
84
        for f in ['nots', 'query', 'tag', 'limit', 'replies', 'retweets', 'avatar']:
85
            if type(getattr(self, f)) == bool:
86
                conf[f] = getattr(self, f)
87

  
88
            if getattr(self, f):
89
                conf[f] = getattr(self, f)
90

  
91
        xtraconf = {}
92
        try:
93
            xtraconf = simplejson.loads(self.extra_params)
94
        except:
95
            pass
96

  
97
        conf.update(xtraconf)
98
        return simplejson.dumps(conf)
99

  
100

  
101
    def render(self, **kwargs):
102
        return render_to_string(['content/twitter_feed.html'], {'content': self})
103

  
104

  
105
class AboutBlock(models.Model):
106

  
107
    title = models.CharField(max_length=200, blank=False)
108
    content = models.TextField(blank=False)
109
    image = MediaFileForeignKey(MediaFile, blank=True, null=True)
110
    image_position = models.CharField(max_length=200,
111
            choices=(('top', 'Top'), ('left', 'Left'), ('right', 'Right')))
112
    color = models.CharField(max_length=200, blank=False)
113
    offset_left = models.IntegerField(null=True, blank=True)
114
    offset_top = models.IntegerField(null=True, blank=True)
115

  
116
    class Meta:
117
        abstract = True
118
        verbose_name = _('about page block')
119
        verbose_name_plural = _('about page blocks')
120

  
121
    def render(self, **kwargs):
122
        return render_to_string(['content/about_block.html'], {'content': self})
123

  
124

  
125
class LoginForm(models.Model):
126
    """
127
    Login form
128
    """
129

  
130
    title = models.CharField(_('title'), max_length=200, blank=False)
131
    action_url = models.CharField(_('im url'), max_length=100, blank=False)
132
    display_forgot_password = models.BooleanField(default=False, null=False)
133
    next_url = models.CharField(max_length=255, null=True, blank=True)
134

  
135
    class Meta:
136
        abstract = True
137
        verbose_name = _('login form')
138
        verbose_name_plural = _('login forms')
139

  
140
    def render(self, **kwargs):
141
        return render_to_string(['content/login_form.html'], {'content': self})
142

  
b/cloudcms/context_processors.py
1
from django.conf import settings
2

  
3
from cloudcms.models import Application
4

  
5
def cloudbar(request):
6
    return {
7
        'CLOUDBAR_BASE_URL': getattr(settings, 'CLOUDBAR_BASE_URL', ''),
8
        'CLOUDBAR_ACTIVE_SERVICE': getattr(settings,
9
                                    'CLOUDBAR_ACTIVE_SERVICE', 'okeanos_cms'),
10
    }
11

  
12
def application(request):
13
    try:
14
        return {'APP': Application.current()}
15
    except:
16
        return {'APP': None}
17

  
b/cloudcms/migrate/cloudcmsblog/0001_initial.py
1
# encoding: utf-8
2
import datetime
3
from south.db import db
4
from south.v2 import SchemaMigration
5
from django.db import models
6

  
7
class Migration(SchemaMigration):
8

  
9
    def forwards(self, orm):
10
        
11
        # Adding model 'Category'
12
        db.create_table('cloudcmsblog_category', (
13
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
            ('ordering', self.gf('django.db.models.fields.SmallIntegerField')(default=0)),
15
            ('display_on_menu', self.gf('django.db.models.fields.BooleanField')(default=False)),
16
        ))
17
        db.send_create_signal('cloudcmsblog', ['Category'])
18

  
19
        # Adding model 'CategoryTranslation'
20
        db.create_table('cloudcmsblog_categorytranslation', (
21
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
22
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', to=orm['cloudcmsblog.Category'])),
23
            ('language_code', self.gf('django.db.models.fields.CharField')(default='en', max_length=10)),
24
            ('title', self.gf('django.db.models.fields.CharField')(max_length=100)),
25
            ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50, db_index=True)),
26
            ('description', self.gf('django.db.models.fields.CharField')(max_length=250, blank=True)),
27
        ))
28
        db.send_create_signal('cloudcmsblog', ['CategoryTranslation'])
29

  
30
        # Adding model 'Entry'
31
        db.create_table('cloudcmsblog_entry', (
32
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
33
            ('is_active', self.gf('django.db.models.fields.BooleanField')(default=True)),
34
            ('is_featured', self.gf('django.db.models.fields.BooleanField')(default=False)),
35
            ('title', self.gf('django.db.models.fields.CharField')(max_length=100)),
36
            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=100, db_index=True)),
37
            ('author', self.gf('django.db.models.fields.related.ForeignKey')(related_name='blogentries', to=orm['auth.User'])),
38
            ('language', self.gf('django.db.models.fields.CharField')(max_length=255)),
39
            ('intro_text', self.gf('django.db.models.fields.TextField')(max_length=255, blank=True)),
40
            ('image', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(to=orm['medialibrary.MediaFile'], null=True, blank=True)),
41
            ('published_on', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, null=True, blank=True)),
42
            ('last_changed', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
43
        ))
44
        db.send_create_signal('cloudcmsblog', ['Entry'])
45

  
46
        # Adding M2M table for field application on 'Entry'
47
        db.create_table('cloudcmsblog_entry_application', (
48
            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
49
            ('entry', models.ForeignKey(orm['cloudcmsblog.entry'], null=False)),
50
            ('application', models.ForeignKey(orm['cloudcms.application'], null=False))
51
        ))
52
        db.create_unique('cloudcmsblog_entry_application', ['entry_id', 'application_id'])
53

  
54
        # Adding M2M table for field categories on 'Entry'
55
        db.create_table('cloudcmsblog_entry_categories', (
56
            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
57
            ('entry', models.ForeignKey(orm['cloudcmsblog.entry'], null=False)),
58
            ('category', models.ForeignKey(orm['cloudcmsblog.category'], null=False))
59
        ))
60
        db.create_unique('cloudcmsblog_entry_categories', ['entry_id', 'category_id'])
61

  
62
        # Adding model 'RichTextContent'
63
        db.create_table('cloudcmsblog_entry_richtextcontent', (
64
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
65
            ('text', self.gf('django.db.models.fields.TextField')(blank=True)),
66
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='richtextcontent_set', to=orm['cloudcmsblog.Entry'])),
67
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
68
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
69
        ))
70
        db.send_create_signal('cloudcmsblog', ['RichTextContent'])
71

  
72
        # Adding model 'TemplateContent'
73
        db.create_table('cloudcmsblog_entry_templatecontent', (
74
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
75
            ('filename', self.gf('django.db.models.fields.CharField')(max_length=100)),
76
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='templatecontent_set', to=orm['cloudcmsblog.Entry'])),
77
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
78
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
79
        ))
80
        db.send_create_signal('cloudcmsblog', ['TemplateContent'])
81

  
82
        # Adding model 'VideoContent'
83
        db.create_table('cloudcmsblog_entry_videocontent', (
84
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
85
            ('video', self.gf('django.db.models.fields.URLField')(max_length=200)),
86
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='videocontent_set', to=orm['cloudcmsblog.Entry'])),
87
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
88
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
89
        ))
90
        db.send_create_signal('cloudcmsblog', ['VideoContent'])
91

  
92
        # Adding model 'TwitterFeed'
93
        db.create_table('cloudcmsblog_entry_twitterfeed', (
94
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
95
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
96
            ('account', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
97
            ('nots', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
98
            ('query', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
99
            ('tag', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
100
            ('limit', self.gf('django.db.models.fields.PositiveIntegerField')(default=10)),
101
            ('replies', self.gf('django.db.models.fields.BooleanField')(default=True)),
102
            ('retweets', self.gf('django.db.models.fields.BooleanField')(default=True)),
103
            ('avatar', self.gf('django.db.models.fields.BooleanField')(default=False)),
104
            ('extra_params', self.gf('django.db.models.fields.TextField')(blank=True)),
105
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='twitterfeed_set', to=orm['cloudcmsblog.Entry'])),
106
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
107
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
108
        ))
109
        db.send_create_signal('cloudcmsblog', ['TwitterFeed'])
110

  
111
        # Adding model 'RawContent'
112
        db.create_table('cloudcmsblog_entry_rawcontent', (
113
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
114
            ('text', self.gf('django.db.models.fields.TextField')(blank=True)),
115
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='rawcontent_set', to=orm['cloudcmsblog.Entry'])),
116
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
117
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
118
        ))
119
        db.send_create_signal('cloudcmsblog', ['RawContent'])
120

  
121
        # Adding model 'SectionContent'
122
        db.create_table('cloudcmsblog_entry_sectioncontent', (
123
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
124
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
125
            ('richtext', self.gf('django.db.models.fields.TextField')(blank=True)),
126
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='sectioncontent_set', to=orm['cloudcmsblog.Entry'])),
127
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
128
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
129
            ('mediafile', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='cloudcmsblog_sectioncontent_set', null=True, to=orm['medialibrary.MediaFile'])),
130
            ('type', self.gf('django.db.models.fields.CharField')(default='block', max_length=10)),
131
        ))
132
        db.send_create_signal('cloudcmsblog', ['SectionContent'])
133

  
134

  
135
    def backwards(self, orm):
136
        
137
        # Deleting model 'Category'
138
        db.delete_table('cloudcmsblog_category')
139

  
140
        # Deleting model 'CategoryTranslation'
141
        db.delete_table('cloudcmsblog_categorytranslation')
142

  
143
        # Deleting model 'Entry'
144
        db.delete_table('cloudcmsblog_entry')
145

  
146
        # Removing M2M table for field application on 'Entry'
147
        db.delete_table('cloudcmsblog_entry_application')
148

  
149
        # Removing M2M table for field categories on 'Entry'
150
        db.delete_table('cloudcmsblog_entry_categories')
151

  
152
        # Deleting model 'RichTextContent'
153
        db.delete_table('cloudcmsblog_entry_richtextcontent')
154

  
155
        # Deleting model 'TemplateContent'
156
        db.delete_table('cloudcmsblog_entry_templatecontent')
157

  
158
        # Deleting model 'VideoContent'
159
        db.delete_table('cloudcmsblog_entry_videocontent')
160

  
161
        # Deleting model 'TwitterFeed'
162
        db.delete_table('cloudcmsblog_entry_twitterfeed')
163

  
164
        # Deleting model 'RawContent'
165
        db.delete_table('cloudcmsblog_entry_rawcontent')
166

  
167
        # Deleting model 'SectionContent'
168
        db.delete_table('cloudcmsblog_entry_sectioncontent')
169

  
170

  
171
    models = {
172
        'auth.group': {
173
            'Meta': {'object_name': 'Group'},
174
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
175
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
176
            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
177
        },
178
        'auth.permission': {
179
            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
180
            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
181
            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
182
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
183
            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
184
        },
185
        'auth.user': {
186
            'Meta': {'object_name': 'User'},
187
            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
188
            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
189
            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
190
            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
191
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
192
            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
193
            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
194
            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
195
            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
196
            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
197
            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
198
            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
199
            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
200
        },
201
        'cloudcms.application': {
202
            'Meta': {'object_name': 'Application'},
203
            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
204
            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
205
            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
206
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
207
            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
208
            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
209
            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
210
            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
211
            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
212
            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
213
        },
214
        'cloudcmsblog.category': {
215
            'Meta': {'ordering': "['-ordering']", 'object_name': 'Category'},
216
            'display_on_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
217
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
218
            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
219
        },
220
        'cloudcmsblog.categorytranslation': {
221
            'Meta': {'ordering': "['title']", 'object_name': 'CategoryTranslation'},
222
            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
223
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
224
            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
225
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcmsblog.Category']"}),
226
            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}),
227
            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
228
        },
229
        'cloudcmsblog.entry': {
230
            'Meta': {'ordering': "['-published_on']", 'object_name': 'Entry'},
231
            'application': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'blogentries'", 'symmetrical': 'False', 'to': "orm['cloudcms.Application']"}),
232
            'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'blogentries'", 'to': "orm['auth.User']"}),
233
            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blogentries'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cloudcmsblog.Category']"}),
234
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
235
            'image': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
236
            'intro_text': ('django.db.models.fields.TextField', [], {'max_length': '255', 'blank': 'True'}),
237
            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
238
            'is_featured': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
239
            'language': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
240
            'last_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
241
            'published_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'null': 'True', 'blank': 'True'}),
242
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'db_index': 'True'}),
243
            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'})
244
        },
245
        'cloudcmsblog.rawcontent': {
246
            'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "'cloudcmsblog_entry_rawcontent'"},
247
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
248
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
249
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': "orm['cloudcmsblog.Entry']"}),
250
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
251
            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
252
        },
253
        'cloudcmsblog.richtextcontent': {
254
            'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "'cloudcmsblog_entry_richtextcontent'"},
255
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
256
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
257
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': "orm['cloudcmsblog.Entry']"}),
258
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
259
            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
260
        },
261
        'cloudcmsblog.sectioncontent': {
262
            'Meta': {'ordering': "['ordering']", 'object_name': 'SectionContent', 'db_table': "'cloudcmsblog_entry_sectioncontent'"},
263
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
264
            'mediafile': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cloudcmsblog_sectioncontent_set'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
265
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
266
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectioncontent_set'", 'to': "orm['cloudcmsblog.Entry']"}),
267
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
268
            'richtext': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
269
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
270
            'type': ('django.db.models.fields.CharField', [], {'default': "'block'", 'max_length': '10'})
271
        },
272
        'cloudcmsblog.templatecontent': {
273
            'Meta': {'ordering': "['ordering']", 'object_name': 'TemplateContent', 'db_table': "'cloudcmsblog_entry_templatecontent'"},
274
            'filename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
275
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
276
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
277
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'templatecontent_set'", 'to': "orm['cloudcmsblog.Entry']"}),
278
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
279
        },
280
        'cloudcmsblog.twitterfeed': {
281
            'Meta': {'ordering': "['ordering']", 'object_name': 'TwitterFeed', 'db_table': "'cloudcmsblog_entry_twitterfeed'"},
282
            'account': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
283
            'avatar': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
284
            'extra_params': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
285
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
286
            'limit': ('django.db.models.fields.PositiveIntegerField', [], {'default': '10'}),
287
            'nots': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
288
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
289
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'twitterfeed_set'", 'to': "orm['cloudcmsblog.Entry']"}),
290
            'query': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
291
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
292
            'replies': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
293
            'retweets': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
294
            'tag': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
295
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'})
296
        },
297
        'cloudcmsblog.videocontent': {
298
            'Meta': {'ordering': "['ordering']", 'object_name': 'VideoContent', 'db_table': "'cloudcmsblog_entry_videocontent'"},
299
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
300
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
301
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'videocontent_set'", 'to': "orm['cloudcmsblog.Entry']"}),
302
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
303
            'video': ('django.db.models.fields.URLField', [], {'max_length': '200'})
304
        },
305
        'contenttypes.contenttype': {
306
            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
307
            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
308
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
309
            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
310
            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
311
        },
312
        'medialibrary.category': {
313
            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
314
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
315
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
316
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
317
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
318
        },
319
        'medialibrary.mediafile': {
320
            'Meta': {'object_name': 'MediaFile'},
321
            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
322
            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
323
            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
324
            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
325
            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
326
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
327
            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
328
        },
329
        'sites.site': {
330
            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
331
            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
332
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
333
            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
334
        }
335
    }
336

  
337
    complete_apps = ['cloudcmsblog']
b/cloudcms/migrate/medialibrary/0001_initial.py
1
# encoding: utf-8
2
import datetime
3
from south.db import db
4
from south.v2 import SchemaMigration
5
from django.db import models
6

  
7
class Migration(SchemaMigration):
8

  
9
    def forwards(self, orm):
10
        
11
        # Adding model 'Category'
12
        db.create_table('medialibrary_category', (
13
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
15
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='children', null=True, to=orm['medialibrary.Category'])),
16
            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=150, db_index=True)),
17
        ))
18
        db.send_create_signal('medialibrary', ['Category'])
19

  
20
        # Adding model 'MediaFile'
21
        db.create_table('medialibrary_mediafile', (
22
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
23
            ('file', self.gf('django.db.models.fields.files.FileField')(max_length=255)),
24
            ('type', self.gf('django.db.models.fields.CharField')(max_length=12)),
25
            ('created', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
26
            ('copyright', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
27
            ('file_size', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
28
        ))
29
        db.send_create_signal('medialibrary', ['MediaFile'])
30

  
31
        # Adding M2M table for field categories on 'MediaFile'
32
        db.create_table('medialibrary_mediafile_categories', (
33
            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
34
            ('mediafile', models.ForeignKey(orm['medialibrary.mediafile'], null=False)),
35
            ('category', models.ForeignKey(orm['medialibrary.category'], null=False))
36
        ))
37
        db.create_unique('medialibrary_mediafile_categories', ['mediafile_id', 'category_id'])
38

  
39
        # Adding model 'MediaFileTranslation'
40
        db.create_table('medialibrary_mediafiletranslation', (
41
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
42
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='translations', to=orm['medialibrary.MediaFile'])),
43
            ('language_code', self.gf('django.db.models.fields.CharField')(default='en', max_length=10)),
44
            ('caption', self.gf('django.db.models.fields.CharField')(max_length=200)),
45
            ('description', self.gf('django.db.models.fields.TextField')(blank=True)),
46
        ))
47
        db.send_create_signal('medialibrary', ['MediaFileTranslation'])
48

  
49

  
50
    def backwards(self, orm):
51
        
52
        # Deleting model 'Category'
53
        db.delete_table('medialibrary_category')
54

  
55
        # Deleting model 'MediaFile'
56
        db.delete_table('medialibrary_mediafile')
57

  
58
        # Removing M2M table for field categories on 'MediaFile'
59
        db.delete_table('medialibrary_mediafile_categories')
60

  
61
        # Deleting model 'MediaFileTranslation'
62
        db.delete_table('medialibrary_mediafiletranslation')
63

  
64

  
65
    models = {
66
        'medialibrary.category': {
67
            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
68
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
69
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
70
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
71
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
72
        },
73
        'medialibrary.mediafile': {
74
            'Meta': {'object_name': 'MediaFile'},
75
            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
76
            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
77
            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
78
            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
79
            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
80
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
81
            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
82
        },
83
        'medialibrary.mediafiletranslation': {
84
            'Meta': {'object_name': 'MediaFileTranslation'},
85
            'caption': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
86
            'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
87
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88
            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
89
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['medialibrary.MediaFile']"})
90
        }
91
    }
92

  
93
    complete_apps = ['medialibrary']
b/cloudcms/migrate/page/0001_initial.py
1
# encoding: utf-8
2
import datetime
3
from south.db import db
4
from south.v2 import SchemaMigration
5
from django.db import models
6

  
7
class Migration(SchemaMigration):
8

  
9
    def forwards(self, orm):
10
        
11
        # Adding model 'Page'
12
        db.create_table('page_page', (
13
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14
            ('lft', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
15
            ('rght', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
16
            ('tree_id', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
17
            ('level', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
18
            ('active', self.gf('django.db.models.fields.BooleanField')(default=False)),
19
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
20
            ('slug', self.gf('django.db.models.fields.SlugField')(max_length=150, db_index=True)),
21
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='children', null=True, to=orm['page.Page'])),
22
            ('in_navigation', self.gf('django.db.models.fields.BooleanField')(default=False)),
23
            ('override_url', self.gf('django.db.models.fields.CharField')(max_length=300, blank=True)),
24
            ('redirect_to', self.gf('django.db.models.fields.CharField')(max_length=300, blank=True)),
25
            ('_cached_url', self.gf('django.db.models.fields.CharField')(default='', max_length=300, db_index=True, blank=True)),
26
            ('creation_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
27
            ('modification_date', self.gf('django.db.models.fields.DateTimeField')(null=True)),
28
            ('publication_date', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 2, 22, 16, 0))),
29
            ('publication_end_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
30
            ('language', self.gf('django.db.models.fields.CharField')(default='en', max_length=10)),
31
            ('translation_of', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='translations', null=True, to=orm['page.Page'])),
32
            ('meta_keywords', self.gf('django.db.models.fields.TextField')(blank=True)),
33
            ('meta_description', self.gf('django.db.models.fields.TextField')(blank=True)),
34
            ('symlinked_page', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='page_page_symlinks', null=True, to=orm['page.Page'])),
35
            ('navigation_extension', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
36
            ('site', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['sites.Site'])),
37
            ('_content_title', self.gf('django.db.models.fields.TextField')(blank=True)),
38
            ('_page_title', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
39
            ('template_key', self.gf('django.db.models.fields.CharField')(default='basic', max_length=255)),
40
        ))
41
        db.send_create_signal('page', ['Page'])
42

  
43
        # Adding model 'RichTextContent'
44
        db.create_table('page_page_richtextcontent', (
45
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
46
            ('text', self.gf('django.db.models.fields.TextField')(blank=True)),
47
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='richtextcontent_set', to=orm['page.Page'])),
48
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
49
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
50
        ))
51
        db.send_create_signal('page', ['RichTextContent'])
52

  
53
        # Adding model 'RawContent'
54
        db.create_table('page_page_rawcontent', (
55
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
56
            ('text', self.gf('django.db.models.fields.TextField')(blank=True)),
57
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='rawcontent_set', to=orm['page.Page'])),
58
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
59
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
60
        ))
61
        db.send_create_signal('page', ['RawContent'])
62

  
63
        # Adding model 'SectionContent'
64
        db.create_table('page_page_sectioncontent', (
65
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
66
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
67
            ('richtext', self.gf('django.db.models.fields.TextField')(blank=True)),
68
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='sectioncontent_set', to=orm['page.Page'])),
69
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
70
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
71
            ('mediafile', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='page_sectioncontent_set', null=True, to=orm['medialibrary.MediaFile'])),
72
            ('type', self.gf('django.db.models.fields.CharField')(default='block', max_length=10)),
73
        ))
74
        db.send_create_signal('page', ['SectionContent'])
75

  
76
        # Adding model 'TemplateContent'
77
        db.create_table('page_page_templatecontent', (
78
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
79
            ('filename', self.gf('django.db.models.fields.CharField')(max_length=100)),
80
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='templatecontent_set', to=orm['page.Page'])),
81
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
82
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
83
        ))
84
        db.send_create_signal('page', ['TemplateContent'])
85

  
86
        # Adding model 'TwitterFeed'
87
        db.create_table('page_page_twitterfeed', (
88
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
89
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
90
            ('account', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
91
            ('nots', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
92
            ('query', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
93
            ('tag', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
94
            ('limit', self.gf('django.db.models.fields.PositiveIntegerField')(default=10)),
95
            ('replies', self.gf('django.db.models.fields.BooleanField')(default=True)),
96
            ('retweets', self.gf('django.db.models.fields.BooleanField')(default=True)),
97
            ('avatar', self.gf('django.db.models.fields.BooleanField')(default=False)),
98
            ('extra_params', self.gf('django.db.models.fields.TextField')(blank=True)),
99
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='twitterfeed_set', to=orm['page.Page'])),
100
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
101
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
102
        ))
103
        db.send_create_signal('page', ['TwitterFeed'])
104

  
105
        # Adding model 'VideoContent'
106
        db.create_table('page_page_videocontent', (
107
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
108
            ('video', self.gf('django.db.models.fields.URLField')(max_length=200)),
109
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='videocontent_set', to=orm['page.Page'])),
110
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
111
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
112
        ))
113
        db.send_create_signal('page', ['VideoContent'])
114

  
115
        # Adding model 'VideoSection'
116
        db.create_table('page_page_videosection', (
117
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
118
            ('section_title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
119
            ('video_title', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
120
            ('video_link', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
121
            ('video_width', self.gf('django.db.models.fields.PositiveIntegerField')(default=700)),
122
            ('video_height', self.gf('django.db.models.fields.PositiveIntegerField')(default=550)),
123
            ('image', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(blank=True, related_name='as_image_for_video_section', null=True, to=orm['medialibrary.MediaFile'])),
124
            ('image_hover', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(blank=True, related_name='as_hover_for_video_section', null=True, to=orm['medialibrary.MediaFile'])),
125
            ('alt_text', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
126
            ('extra_url_params', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
127
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='videosection_set', to=orm['page.Page'])),
128
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
129
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
130
        ))
131
        db.send_create_signal('page', ['VideoSection'])
132

  
133
        # Adding model 'ImageContent'
134
        db.create_table('page_page_imagecontent', (
135
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
136
            ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=100)),
137
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='imagecontent_set', to=orm['page.Page'])),
138
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
139
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
140
            ('position', self.gf('django.db.models.fields.CharField')(default='default', max_length=10)),
141
        ))
142
        db.send_create_signal('page', ['ImageContent'])
143

  
144
        # Adding model 'MediaFileContent'
145
        db.create_table('page_page_mediafilecontent', (
146
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
147
            ('mediafile', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(related_name='+', to=orm['medialibrary.MediaFile'])),
148
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='mediafilecontent_set', to=orm['page.Page'])),
149
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
150
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
151
            ('type', self.gf('django.db.models.fields.CharField')(default='lightbox', max_length=20)),
152
        ))
153
        db.send_create_signal('page', ['MediaFileContent'])
154

  
155
        # Adding model 'ApplicationContent'
156
        db.create_table('page_page_applicationcontent', (
157
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
158
            ('parameters', self.gf('feincms.contrib.fields.JSONField')(null=True)),
159
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='applicationcontent_set', to=orm['page.Page'])),
160
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
161
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
162
            ('urlconf_path', self.gf('django.db.models.fields.CharField')(max_length=100)),
163
        ))
164
        db.send_create_signal('page', ['ApplicationContent'])
165

  
166
        # Adding model 'LoginForm'
167
        db.create_table('page_page_loginform', (
168
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
169
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
170
            ('action_url', self.gf('django.db.models.fields.CharField')(max_length=100)),
171
            ('display_forgot_password', self.gf('django.db.models.fields.BooleanField')(default=False)),
172
            ('next_url', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
173
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='loginform_set', to=orm['page.Page'])),
174
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
175
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
176
        ))
177
        db.send_create_signal('page', ['LoginForm'])
178

  
179
        # Adding model 'AboutBlock'
180
        db.create_table('page_page_aboutblock', (
181
            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
182
            ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
183
            ('content', self.gf('django.db.models.fields.TextField')()),
184
            ('image', self.gf('feincms.module.medialibrary.fields.MediaFileForeignKey')(to=orm['medialibrary.MediaFile'], null=True, blank=True)),
185
            ('image_position', self.gf('django.db.models.fields.CharField')(max_length=200)),
186
            ('color', self.gf('django.db.models.fields.CharField')(max_length=200)),
187
            ('offset_left', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
188
            ('offset_top', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
189
            ('parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='aboutblock_set', to=orm['page.Page'])),
190
            ('region', self.gf('django.db.models.fields.CharField')(max_length=255)),
191
            ('ordering', self.gf('django.db.models.fields.IntegerField')(default=0)),
192
        ))
193
        db.send_create_signal('page', ['AboutBlock'])
194

  
195

  
196
    def backwards(self, orm):
197
        
198
        # Deleting model 'Page'
199
        db.delete_table('page_page')
200

  
201
        # Deleting model 'RichTextContent'
202
        db.delete_table('page_page_richtextcontent')
203

  
204
        # Deleting model 'RawContent'
205
        db.delete_table('page_page_rawcontent')
206

  
207
        # Deleting model 'SectionContent'
208
        db.delete_table('page_page_sectioncontent')
209

  
210
        # Deleting model 'TemplateContent'
211
        db.delete_table('page_page_templatecontent')
212

  
213
        # Deleting model 'TwitterFeed'
214
        db.delete_table('page_page_twitterfeed')
215

  
216
        # Deleting model 'VideoContent'
217
        db.delete_table('page_page_videocontent')
218

  
219
        # Deleting model 'VideoSection'
220
        db.delete_table('page_page_videosection')
221

  
222
        # Deleting model 'ImageContent'
223
        db.delete_table('page_page_imagecontent')
224

  
225
        # Deleting model 'MediaFileContent'
226
        db.delete_table('page_page_mediafilecontent')
227

  
228
        # Deleting model 'ApplicationContent'
229
        db.delete_table('page_page_applicationcontent')
230

  
231
        # Deleting model 'LoginForm'
232
        db.delete_table('page_page_loginform')
233

  
234
        # Deleting model 'AboutBlock'
235
        db.delete_table('page_page_aboutblock')
236

  
237

  
238
    models = {
239
        'medialibrary.category': {
240
            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
241
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
243
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
244
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
245
        },
246
        'medialibrary.mediafile': {
247
            'Meta': {'object_name': 'MediaFile'},
248
            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
249
            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
250
            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
251
            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
252
            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
253
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
254
            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
255
        },
256
        'page.aboutblock': {
257
            'Meta': {'ordering': "['ordering']", 'object_name': 'AboutBlock', 'db_table': "'page_page_aboutblock'"},
258
            'color': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
259
            'content': ('django.db.models.fields.TextField', [], {}),
260
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
261
            'image': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
262
            'image_position': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
263
            'offset_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
264
            'offset_top': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
265
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
266
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'aboutblock_set'", 'to': "orm['page.Page']"}),
267
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
268
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
269
        },
270
        'page.applicationcontent': {
271
            'Meta': {'ordering': "['ordering']", 'object_name': 'ApplicationContent', 'db_table': "'page_page_applicationcontent'"},
272
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
273
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
274
            'parameters': ('feincms.contrib.fields.JSONField', [], {'null': 'True'}),
275
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'applicationcontent_set'", 'to': "orm['page.Page']"}),
276
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
277
            'urlconf_path': ('django.db.models.fields.CharField', [], {'max_length': '100'})
278
        },
279
        'page.imagecontent': {
280
            'Meta': {'ordering': "['ordering']", 'object_name': 'ImageContent', 'db_table': "'page_page_imagecontent'"},
281
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
282
            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
283
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
284
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'imagecontent_set'", 'to': "orm['page.Page']"}),
285
            'position': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '10'}),
286
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
287
        },
288
        'page.loginform': {
289
            'Meta': {'ordering': "['ordering']", 'object_name': 'LoginForm', 'db_table': "'page_page_loginform'"},
290
            'action_url': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
291
            'display_forgot_password': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
292
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
293
            'next_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
294
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
295
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'loginform_set'", 'to': "orm['page.Page']"}),
296
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
297
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
298
        },
299
        'page.mediafilecontent': {
300
            'Meta': {'ordering': "['ordering']", 'object_name': 'MediaFileContent', 'db_table': "'page_page_mediafilecontent'"},
301
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
302
            'mediafile': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'related_name': "'+'", 'to': "orm['medialibrary.MediaFile']"}),
303
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
304
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'mediafilecontent_set'", 'to': "orm['page.Page']"}),
305
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
306
            'type': ('django.db.models.fields.CharField', [], {'default': "'lightbox'", 'max_length': '20'})
307
        },
308
        'page.page': {
309
            'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
310
            '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'db_index': 'True', 'blank': 'True'}),
311
            '_content_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
312
            '_page_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
313
            'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
314
            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
315
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
316
            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
317
            'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
318
            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
319
            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
320
            'meta_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
321
            'meta_keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
322
            'modification_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
323
            'navigation_extension': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
324
            'override_url': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
325
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['page.Page']"}),
326
            'publication_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 2, 22, 16, 0)'}),
327
            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
328
            'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
329
            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
330
            'site': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['sites.Site']"}),
331
            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150', 'db_index': 'True'}),
332
            'symlinked_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_page_symlinks'", 'null': 'True', 'to': "orm['page.Page']"}),
333
            'template_key': ('django.db.models.fields.CharField', [], {'default': "'basic'", 'max_length': '255'}),
334
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
335
            'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': "orm['page.Page']"}),
336
            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
337
        },
338
        'page.rawcontent': {
339
            'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "'page_page_rawcontent'"},
340
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
341
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
342
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': "orm['page.Page']"}),
343
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
344
            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
345
        },
346
        'page.richtextcontent': {
347
            'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "'page_page_richtextcontent'"},
348
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
349
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
350
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': "orm['page.Page']"}),
351
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
352
            'text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
353
        },
354
        'page.sectioncontent': {
355
            'Meta': {'ordering': "['ordering']", 'object_name': 'SectionContent', 'db_table': "'page_page_sectioncontent'"},
356
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
357
            'mediafile': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_sectioncontent_set'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
358
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
359
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sectioncontent_set'", 'to': "orm['page.Page']"}),
360
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
361
            'richtext': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
362
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
363
            'type': ('django.db.models.fields.CharField', [], {'default': "'block'", 'max_length': '10'})
364
        },
365
        'page.templatecontent': {
366
            'Meta': {'ordering': "['ordering']", 'object_name': 'TemplateContent', 'db_table': "'page_page_templatecontent'"},
367
            'filename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
368
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
369
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
370
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'templatecontent_set'", 'to': "orm['page.Page']"}),
371
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'})
372
        },
373
        'page.twitterfeed': {
374
            'Meta': {'ordering': "['ordering']", 'object_name': 'TwitterFeed', 'db_table': "'page_page_twitterfeed'"},
375
            'account': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
376
            'avatar': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
377
            'extra_params': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
378
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
379
            'limit': ('django.db.models.fields.PositiveIntegerField', [], {'default': '10'}),
380
            'nots': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
381
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
382
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'twitterfeed_set'", 'to': "orm['page.Page']"}),
383
            'query': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
384
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
385
            'replies': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
386
            'retweets': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
387
            'tag': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
388
            'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'})
389
        },
390
        'page.videocontent': {
391
            'Meta': {'ordering': "['ordering']", 'object_name': 'VideoContent', 'db_table': "'page_page_videocontent'"},
392
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
393
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
394
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'videocontent_set'", 'to': "orm['page.Page']"}),
395
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
396
            'video': ('django.db.models.fields.URLField', [], {'max_length': '200'})
397
        },
398
        'page.videosection': {
399
            'Meta': {'ordering': "['ordering']", 'object_name': 'VideoSection', 'db_table': "'page_page_videosection'"},
400
            'alt_text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
401
            'extra_url_params': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
402
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
403
            'image': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_image_for_video_section'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
404
            'image_hover': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_hover_for_video_section'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
405
            'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
406
            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'videosection_set'", 'to': "orm['page.Page']"}),
407
            'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
408
            'section_title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
409
            'video_height': ('django.db.models.fields.PositiveIntegerField', [], {'default': '550'}),
410
            'video_link': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
411
            'video_title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
412
            'video_width': ('django.db.models.fields.PositiveIntegerField', [], {'default': '700'})
413
        },
414
        'sites.site': {
415
            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
416
            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
417
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
418
            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
419
        }
420
    }
421

  
422
    complete_apps = ['page']
b/cloudcms/models.py
1
from django.db import models
2
from django.conf import settings
3
from django.contrib.sites import models as sites_models
4

  
5
from feincms.module.medialibrary.fields import MediaFileForeignKey
6
from feincms.module.medialibrary.models import MediaFile
7

  
8

  
9
class Application(models.Model):
10
    code = models.CharField('Identifier', max_length=100, null=False, blank=False,
11
            help_text="Just a codename of the application, to be used in "\
12
                    "several places where no free text is allowed"\
13
                    "(e.g. urls, paths, etc)")
14
    title = models.CharField(max_length=255, null=False, blank=False,
15
            help_text="The title of the application")
16

  
17
    logo = MediaFileForeignKey(MediaFile, blank=True, null=True)
18
    site = models.ForeignKey(sites_models.Site)
19
    app_url = models.URLField(help_text="The url of the application UI (not "\
20
            "the cms", verify_exists=False, blank=True, null=True)
21

  
22
    linked_in_username = models.CharField(max_length=255, blank=True)
23
    twitter_username = models.CharField(max_length=255, blank=True)
24
    facebook_username = models.CharField(max_length=255, blank=True)
25

  
26
    show_twitter_feed_on_top = models.BooleanField(default=False)
27

  
28
    @classmethod
29
    def current(cls):
30
        return cls.objects.get(site__pk=settings.SITE_ID)
31

  
32
    def __unicode__(self):
33
        return self.title
34

  
35
# hook for feincms configuration, is this appropriate place ??? who knows
36
from cloudcms.cms import *
37

  
b/cloudcms/static/cloudcms/css/okeanos.css
1
body {
2
    background-color: #4085A5;
3
    background-position: 20px 34px;
4
}
b/cloudcms/static/cloudcms/css/servicesbar.css
1
/*!
2
 * Bootstrap @VERSION
3
 *
4
 * Copyright 2011 Twitter, Inc
5
 * Licensed under the Apache License v2.0
6
 * http://www.apache.org/licenses/LICENSE-2.0
7
 *
8
 * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
 * Date: @DATE
10
 */
11
/* Reset.less
12
 * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here	that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
13
 * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
14
html, body {
15
  margin: 0;
16
  padding: 0;
17
}
18
h1,
19
h2,
20
h3,
21
h4,
22
h5,
23
h6,
24
p,
25
blockquote,
26
pre,
27
a,
28
abbr,
29
acronym,
30
address,
31
cite,
32
code,
33
del,
34
dfn,
35
em,
36
img,
37
q,
38
s,
39
samp,
40
small,
41
strike,
42
strong,
43
sub,
44
sup,
45
tt,
46
var,
47
dd,
48
dl,
49
dt,
50
li,
51
ol,
52
ul,
53
fieldset,
54
form,
55
label,
56
legend,
57
button,
58
table,
59
caption,
60
tbody,
61
tfoot,
62
thead,
63
tr,
64
th,
65
td {
66
  margin: 0;
67
  padding: 0;
68
  border: 0;
69
  font-weight: normal;
70
  font-style: normal;
71
  font-size: 100%;
72
  line-height: 1;
73
  font-family: inherit;
74
}
75
table {
76
  border-collapse: collapse;
77
  border-spacing: 0;
78
}
79
ol, ul {
80
  list-style: none;
81
}
82
q:before,
83
q:after,
84
blockquote:before,
85
blockquote:after {
86
  content: "";
87
}
88
html {
89
  overflow-y: scroll;
90
  font-size: 100%;
91
  -webkit-text-size-adjust: 100%;
92
  -ms-text-size-adjust: 100%;
93
}
94
a:focus {
95
  outline: thin dotted;
96
}
97
a:hover, a:active {
98
  outline: 0;
99
}
100
article,
101
aside,
102
details,
103
figcaption,
104
figure,
105
footer,
106
header,
107
hgroup,
108
nav,
109
section {
110
  display: block;
111
}
112
audio, canvas, video {
113
  display: inline-block;
114
  *display: inline;
115
  *zoom: 1;
116
}
117
audio:not([controls]) {
118
  display: none;
119
}
120
sub, sup {
121
  font-size: 75%;
122
  line-height: 0;
123
  position: relative;
124
  vertical-align: baseline;
125
}
126
sup {
127
  top: -0.5em;
128
}
129
sub {
130
  bottom: -0.25em;
131
}
132
img {
133
  border: 0;
134
  -ms-interpolation-mode: bicubic;
135
}
136
button,
137
input,
138
select,
139
textarea {
140
  font-size: 100%;
141
  margin: 0;
142
  vertical-align: baseline;
143
  *vertical-align: middle;
144
}
145
button, input {
146
  line-height: normal;
147
  *overflow: visible;
148
}
149
button::-moz-focus-inner, input::-moz-focus-inner {
150
  border: 0;
151
  padding: 0;
152
}
153
button,
154
input[type="button"],
155
input[type="reset"],
156
input[type="submit"] {
157
  cursor: pointer;
158
  -webkit-appearance: button;
159
}
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff