RSS feed to blog pages
authorOlga Brani <olgabrani@grnet.gr>
Fri, 9 May 2014 13:37:23 +0000 (16:37 +0300)
committerOlga Brani <olgabrani@grnet.gr>
Fri, 9 May 2014 13:37:23 +0000 (16:37 +0300)
cloudcms/migrations/0018_auto__add_field_application_show_rss_feed_on_blog__add_field_applicati.py [new file with mode: 0644]
cloudcms/migrations/0019_auto__del_field_application_rss_url.py [new file with mode: 0644]
cloudcms/models.py
cloudcms/static/cloudcms/css/modules.css
cloudcms/static/cloudcms/images/feed-icon-14x14.png [new file with mode: 0755]
cloudcms/static/cloudcms/images/feed-icon-28x28.png [new file with mode: 0755]
cloudcmsblog/templates/cloudcmsblog/archive.html
cloudcmsblog/templates/cloudcmsblog/detail.html

diff --git a/cloudcms/migrations/0018_auto__add_field_application_show_rss_feed_on_blog__add_field_applicati.py b/cloudcms/migrations/0018_auto__add_field_application_show_rss_feed_on_blog__add_field_applicati.py
new file mode 100644 (file)
index 0000000..82bd8fe
--- /dev/null
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'Application.show_rss_feed_on_blog'
+        db.add_column('cloudcms_application', 'show_rss_feed_on_blog',
+                      self.gf('django.db.models.fields.BooleanField')(default=False),
+                      keep_default=False)
+
+        # Adding field 'Application.rss_url'
+        db.add_column('cloudcms_application', 'rss_url',
+                      self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'Application.show_rss_feed_on_blog'
+        db.delete_column('cloudcms_application', 'show_rss_feed_on_blog')
+
+        # Deleting field 'Application.rss_url'
+        db.delete_column('cloudcms_application', 'rss_url')
+
+
+    models = {
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'accounts_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'custom_message': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'message_type': ('django.db.models.fields.CharField', [], {'default': "'NM'", 'max_length': '20'}),
+            'rss_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'show_rss_feed_on_blog': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.client': {
+            'Meta': {'object_name': 'Client'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'uid': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcms.clientversionsource': {
+            'Meta': {'object_name': 'ClientVersionSource'},
+            'architecture': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cloudcms.Client']"}),
+            'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'file_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'link': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'os': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'source_type': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+            'version_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_faq'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'image_userguide': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_userguide'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcms.servicetranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'ServiceTranslation'},
+            'cms_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['page.Page']", 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_faq': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'title_userguide': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'ordering': "['-created']", 'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'page.page': {
+            'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
+            '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'db_index': 'True', 'blank': 'True'}),
+            '_content_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            '_page_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'featured': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'meta_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'meta_keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'modification_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'navigation_extension': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'override_url': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 5, 9, 0, 0)'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['sites.Site']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}),
+            'symlinked_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_page_symlinks'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'template_key': ('django.db.models.fields.CharField', [], {'default': "'twocolwide'", 'max_length': '255'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcms']
\ No newline at end of file
diff --git a/cloudcms/migrations/0019_auto__del_field_application_rss_url.py b/cloudcms/migrations/0019_auto__del_field_application_rss_url.py
new file mode 100644 (file)
index 0000000..6b4c0f5
--- /dev/null
@@ -0,0 +1,140 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting field 'Application.rss_url'
+        db.delete_column('cloudcms_application', 'rss_url')
+
+
+    def backwards(self, orm):
+        # Adding field 'Application.rss_url'
+        db.add_column('cloudcms_application', 'rss_url',
+                      self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
+                      keep_default=False)
+
+
+    models = {
+        'cloudcms.application': {
+            'Meta': {'object_name': 'Application'},
+            'accounts_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'app_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'custom_message': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'extra_styles': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'facebook_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'favicon': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'as_favicon'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'footer_bottom': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'footer_top': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'index_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '255'}),
+            'linked_in_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'message_type': ('django.db.models.fields.CharField', [], {'default': "'NM'", 'max_length': '20'}),
+            'show_rss_feed_on_blog': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'show_twitter_feed_on_top': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'twitter_username': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'cloudcms.client': {
+            'Meta': {'object_name': 'Client'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'uid': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cloudcms.clientversionsource': {
+            'Meta': {'object_name': 'ClientVersionSource'},
+            'architecture': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'client': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cloudcms.Client']"}),
+            'default': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'file_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'link': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'logo': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'to': "orm['medialibrary.MediaFile']", 'null': 'True', 'blank': 'True'}),
+            'os': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'source_type': ('django.db.models.fields.CharField', [], {'max_length': '60'}),
+            'version_regex': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'cloudcms.service': {
+            'Meta': {'ordering': "['-ordering']", 'object_name': 'Service'},
+            'class_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image_faq': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_faq'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'image_userguide': ('feincms.module.medialibrary.fields.MediaFileForeignKey', [], {'blank': 'True', 'related_name': "'image_userguide'", 'null': 'True', 'to': "orm['medialibrary.MediaFile']"}),
+            'ordering': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'})
+        },
+        'cloudcms.servicetranslation': {
+            'Meta': {'ordering': "['title']", 'object_name': 'ServiceTranslation'},
+            'cms_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['page.Page']", 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'translations'", 'to': "orm['cloudcms.Service']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'title_faq': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'title_userguide': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
+        },
+        'medialibrary.category': {
+            'Meta': {'ordering': "['parent__title', 'title']", 'object_name': 'Category'},
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['medialibrary.Category']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+        },
+        'medialibrary.mediafile': {
+            'Meta': {'ordering': "['-created']", 'object_name': 'MediaFile'},
+            'categories': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['medialibrary.Category']", 'null': 'True', 'blank': 'True'}),
+            'copyright': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'file': ('django.db.models.fields.files.FileField', [], {'max_length': '255'}),
+            'file_size': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '12'})
+        },
+        'page.page': {
+            'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'},
+            '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '300', 'db_index': 'True', 'blank': 'True'}),
+            '_content_title': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            '_page_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
+            'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'featured': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'meta_description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'meta_keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'modification_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+            'navigation_extension': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'override_url': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 5, 9, 0, 0)'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': "orm['sites.Site']"}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}),
+            'symlinked_page': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'page_page_symlinks'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'template_key': ('django.db.models.fields.CharField', [], {'default': "'twocolwide'", 'max_length': '255'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': "orm['page.Page']"}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'sites.site': {
+            'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+
+    complete_apps = ['cloudcms']
\ No newline at end of file
index 0ea46a6..074f66a 100644 (file)
@@ -52,49 +52,53 @@ class Application(models.Model):
     Each cms deployment should contain at least one application object linked
     to the site object the cms is deployed for.
 
-    Enabling cloudcms.context_processors.application in CONTEXT_PROCESSROS setting
-    let you can access the application object throughout the html templates.
+    Enabling cloudcms.context_processors.application in CONTEXT_PROCESSROS
+    setting let you can access the application object throughout the html
+    templates.
     """
 
     MESSAGE_TYPE_CHOICES = (
-        ('NM','No Message'),
-        ('success','Success'),
-        ('error','Error'),
-        ('warning','Warning'),
-        ('info','Info'),
+        ('NM', 'No Message'),
+        ('success', 'Success'),
+        ('error', 'Error'),
+        ('warning', 'Warning'),
+        ('info', 'Info'),
     )
 
-
-    code = models.CharField('Identifier', max_length=100, null=False, blank=False,
-            help_text="Just a codename of the application, to be used in "\
-                    "several places where no free text is allowed"\
-                    "(e.g. urls, paths, etc)")
+    code = models.CharField('Identifier', max_length=100, null=False,
+                            blank=False, help_text="""Just a codename of the
+                            application, to be used in several places where"
+                            to be used in several places where no free text is
+                            allowed (e.g. urls, paths, etc)""")
     title = models.CharField(max_length=255, null=False, blank=False,
-            help_text="The title of the application")
+                             help_text="The title of the application")
 
     logo = MediaFileForeignKey(MediaFile, blank=True, null=True)
     favicon = MediaFileForeignKey(MediaFile, blank=True, null=True,
-            related_name="as_favicon")
+                                  related_name="as_favicon")
     site = models.ForeignKey(sites_models.Site)
-    app_url = models.URLField(help_text="The url of the application UI (not "\
-            "the cms)", verify_exists=False, blank=True, null=True)
+    app_url = models.URLField(help_text="""The url of the application UI (not
+                              the cms)""", verify_exists=False, blank=True,
+                              null=True)
     accounts_url = models.CharField(max_length=255, default="/", blank=True,
-            null=True, help_text="Tha accounts login page")
+                                    null=True, help_text="""Tha accounts login
+                                    page""")
     index_url = models.CharField(max_length=255, default="/", blank=False,
-            null=False)
+                                 null=False)
     linked_in_username = models.CharField(max_length=255, blank=True)
     twitter_username = models.CharField(max_length=255, blank=True)
     facebook_username = models.CharField(max_length=255, blank=True)
 
     show_twitter_feed_on_top = models.BooleanField(default=False)
+    show_rss_feed_on_blog = models.BooleanField(default=False)
     extra_styles = models.TextField(default="", blank=True)
 
     footer_top = models.TextField(default="", blank=True)
     footer_bottom = models.TextField(default="", blank=True)
 
     message_type = models.CharField(max_length=20,
-                                    choices= MESSAGE_TYPE_CHOICES,
-                                    default = 'NM' )
+                                    choices=MESSAGE_TYPE_CHOICES,
+                                    default='NM')
     custom_message = models.TextField(default="", blank=True)
 
     @classmethod
@@ -108,6 +112,7 @@ class Application(models.Model):
 # http://stackoverflow.com/a/2680060/114435
 dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime.datetime) else None
 
+
 class Client(models.Model):
     """
     Model which refers to a service/application client. Client model contains
@@ -127,7 +132,7 @@ class Client(models.Model):
 
     def to_json(self):
         return simplejson.dumps(list(self.get_sources().get_latest_versions()),
-                default=dthandler)
+                                default=dthandler)
 
     def get_default_os(self):
         try:
@@ -147,22 +152,26 @@ class ClientVersionSource(models.Model):
 
     default = models.BooleanField(default=True)
     source_type = models.CharField(max_length=60,
-            choices=(('link','Link'),
-                     ('direct','Direct'),
-                     ('pithos_xml','Pithos XML'),
-                     ('redmine_files','Redmine files')))
+                                   choices=(('link', 'Link'),
+                                            ('direct', 'Direct'),
+                                            ('pithos_xml', 'Pithos XML'),
+                                            ('redmine_files','Redmine files')))
     os = models.CharField(max_length=255)
     link = models.CharField(max_length=255)
     logo = MediaFileForeignKey(MediaFile, blank=True, null=True)
     architecture = models.CharField(max_length=255, null=True, blank=True,
-            help_text="""Depending the source type this can be left empty and
-            let source type identify the architecture""")
+                                    help_text="""Depending the source type this
+                                    can be left empty and let source type
+                                    identify the architecture""")
     client = models.ForeignKey(Client)
-    version_regex = models.CharField(max_length=255, help_text="""Regular expression to
-            match the version of the file based on retrieved source filenames
-            (used in redmine source types)""", null=True, blank=True)
-    file_regex = models.CharField(max_length=255, help_text="""Return only files that
-            match this expression""", null=True, blank=True)
+    version_regex = models.CharField(max_length=255, help_text="""Regular
+                                     expression to match the version of the
+                                     file based on retrieved source filenames
+                                     (used in redmine source types)""",
+                                     null=True, blank=True)
+    file_regex = models.CharField(max_length=255, help_text="""Return only
+                                  files that match this expression""",
+                                  null=True, blank=True)
 
     def __unicode__(self):
         return "[%s] %s" % (self.get_source_type_display(), self.os)
@@ -171,21 +180,23 @@ class ClientVersionSource(models.Model):
 # hook for feincms configuration, is this appropriate place ??? who knows
 from cloudcms.cms import *
 
+
 class Service(models.Model, translations.TranslatedObjectMixin):
     """
     Service.
     """
 
     ordering = models.SmallIntegerField(_('ordering'), default=0)
-    image_faq = MediaFileForeignKey(MediaFile, blank=True, null=True, related_name='image_faq')
-    image_userguide = MediaFileForeignKey(MediaFile, blank=True, null=True,related_name='image_userguide')
+    image_faq = MediaFileForeignKey(MediaFile, blank=True, null=True,
+                                    related_name='image_faq')
+    image_userguide = MediaFileForeignKey(MediaFile, blank=True, null=True,
+                                          related_name='image_userguide')
     class_name = models.CharField(_('class name'), max_length=100, blank=True)
 
-
     class Meta:
         verbose_name = _('service')
         verbose_name_plural = _('services')
-        ordering = ['-ordering',]
+        ordering = ['-ordering', ]
 
     objects = translations.TranslatedObjectManager()
 
@@ -212,10 +223,13 @@ class ServiceTranslation(translations.Translation(Service)):
     """
     title = models.CharField(_('service title'), max_length=100)
     slug = models.SlugField(_('slug'), unique=True)
-    description = models.CharField(_('description'), max_length=250, blank=True)
+    description = models.CharField(_('description'), max_length=250,
+                                   blank=True)
     cms_page = models.ForeignKey(Page, null=True, blank=True)
-    title_faq = models.CharField(_('service title (faq section)'), max_length=100, blank=True)
-    title_userguide = models.CharField(_('service title (userguide section)'), max_length=100, blank=True)
+    title_faq = models.CharField(_('service title (faq section)'),
+                                 max_length=100, blank=True)
+    title_userguide = models.CharField(_('service title (userguide section)'),
+                                       max_length=100, blank=True)
 
     class Meta:
         verbose_name = _('service translation')
@@ -230,4 +244,3 @@ class ServiceTranslation(translations.Translation(Service)):
             self.slug = slugify(self.title)
 
         super(ServiceTranslation, self).save(*args, **kwargs)
-
index 04e67d0..73cdb3c 100644 (file)
@@ -663,4 +663,5 @@ a.prompt:hover                                  { text-decoration: none; positio
 
 ul.socials-share                                { list-style: none outside none; margin: 1em 0; padding: 0;}
 ul.socials-share li                             { display: inline-block; margin-right: 5px;}
-ul.socials-share li .fb-share-button            { position: relative; top: -5px; left:-3px;}
\ No newline at end of file
+ul.socials-share li .fb-share-button            { position: relative; top: -5px; left:-3px;}
+.rss-icon                                       { display: block; float: right; height: 19px; width: 19px; background: url('../images/feed-icon-28x28.png'); background-size:100%; }
\ No newline at end of file
diff --git a/cloudcms/static/cloudcms/images/feed-icon-14x14.png b/cloudcms/static/cloudcms/images/feed-icon-14x14.png
new file mode 100755 (executable)
index 0000000..b3c949d
Binary files /dev/null and b/cloudcms/static/cloudcms/images/feed-icon-14x14.png differ
diff --git a/cloudcms/static/cloudcms/images/feed-icon-28x28.png b/cloudcms/static/cloudcms/images/feed-icon-28x28.png
new file mode 100755 (executable)
index 0000000..d64c669
Binary files /dev/null and b/cloudcms/static/cloudcms/images/feed-icon-28x28.png differ
index db839a6..df65784 100644 (file)
@@ -2,7 +2,10 @@
 
 {% autopaginate entries ENTRIES_PER_PAGE %}
 {% fragment request "maincol" %}
-<div class="posts">
+<div class="posts">{{ APP.app_url }}
+       {% if APP.show_rss_feed_on_blog %}
+               <a href="{{APP.index_url}}feed/" title="rss feed" class="rss-icon" rel="alternate" type="application/rss+xml">&nbsp;</a>
+       {% endif %}
        <ul>
            {% for entry in entries %}
            <li>
index 0ab81bf..2840118 100644 (file)
@@ -2,6 +2,9 @@
 
 {% fragment request "maincol" %}
 <div class="article">
+    {% if APP.show_rss_feed_on_blog %}
+        <a href="{{APP.index_url}}feed/" title="rss feed" class="rss-icon" rel="alternate" type="application/rss+xml">&nbsp;</a>
+    {% endif %}
     <p class="date">{{ entry.published_on|date:"d M Y"|upper}}</p>
     <h2>{{ entry.title|upper }}</h2>