Skip to content

Instantly share code, notes, and snippets.

@razum2um
Created May 10, 2011 04:43
Show Gist options
  • Save razum2um/963909 to your computer and use it in GitHub Desktop.
Save razum2um/963909 to your computer and use it in GitHub Desktop.
commit ce951e47a176ed6d460231e4f4606af443096b37
Author: Vlad Bokov <razum2um@mail.ru>
Date: Mon May 9 21:56:12 2011 +0700
banners block
diff --git a/.gitignore b/.gitignore
index 5f2338a..0235339 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/media/cms/*
/media/uploads/*
/search_index/*
+testproject
diff --git a/cms/admin.py b/cms/admin.py
index e2ac1bf..7e84d77 100644
--- a/cms/admin.py
+++ b/cms/admin.py
@@ -227,3 +227,7 @@ if "gallery" in getattr(settings, 'CMS_ENABLED_TYPES', []):
admin.site.register(Image, ImageAdmin)
cms.settings.CMS_ADMIN_MATERIALS.append('cms.models.Image')
+if "Banner" not in getattr(settings, 'CMS_EXCLUDE_BLOCKS', ["Banner"]):
+ cms.settings.CMS_ADMIN_STRUCTURE.append('cms.models.Banner')
+ admin.site.register(Banner)
+
diff --git a/cms/blocks/Banner/forms.py b/cms/blocks/Banner/forms.py
index 4838910..551376c 100644
--- a/cms/blocks/Banner/forms.py
+++ b/cms/blocks/Banner/forms.py
@@ -4,11 +4,14 @@ from django import forms
from django.contrib.admin.widgets import AdminFileWidget
from django.utils.translation import ugettext_lazy as _
+from cms.models import Banner
-class BannerConfigForm(forms.Form):
- banner_title = forms.CharField(label=_('Title'), max_length=180, required=True)
- image = forms.ImageField(label=_('Image'), widget=AdminFileWidget())
- link = forms.URLField(label=_('Link'), max_length=180, required=True)
- size = forms.CharField(label=_('Size'), max_length=50, required=False, help_text=_('Image\'ll resize to this values. Example: 100x100 or 100x0'))
+class BannerConfigForm(forms.ModelForm):
+ class Meta:
+ model = Banner
+ #banner_title = forms.CharField(label=_('Title'), max_length=180, required=True)
+ #image = forms.ImageField(label=_('Image'), widget=AdminFileWidget())
+ #link = forms.URLField(label=_('Link'), max_length=180, required=True)
+ #size = forms.CharField(label=_('Size'), max_length=50, required=False, help_text=_('Image\'ll resize to this values. Example: 100x100 or 100x0'))
diff --git a/cms/blocks/Banner/views.py b/cms/blocks/Banner/views.py
index 1b443e7..ad916ac 100644
--- a/cms/blocks/Banner/views.py
+++ b/cms/blocks/Banner/views.py
@@ -1,37 +1,69 @@
# -*- coding: utf-8 -*-
-from sugar.views.decorators import render_from, render_to
-from cms.blocks.Banner.forms import BannerConfigForm
-from django.http import HttpResponseRedirect
import os.path
+from datetime import datetime
+
+from django.http import HttpResponseRedirect
from django.conf import settings
from django.core.files import File
from django.core.files.storage import default_storage
+from django.db.models import Q
+from django.utils.safestring import mark_safe
+
+from sugar.views.decorators import render_from, render_to
+
+from cms.models import Banner
+from cms.blocks.Banner.forms import BannerConfigForm
-@render_from('cms/banner_block.html')
def default(request, block):
- if isinstance(block.data, dict):
- block.data['title'] = block.title
- return block.data
- return ""
+ '''
+ no rendering template, get html from db
+ sad and not true
+ '''
+ now = datetime.now()
+
+ weekday = now.date().weekday() # int
+ weekday_regexp = ['.']*7
+ weekday_regexp[weekday] = '1'
+ weekday_regexp = ''.join(weekday_regexp)
+
+ hour = now.hour # int
+ hours_regexp = ['.']*24
+ hours_regexp[hour] = '1'
+ hours_regexp = ''.join(hours_regexp)
+
+ blocks = Banner.objects.all()
+ blocks = blocks.filter(Q(num_shows_left=None)|Q(num_shows_left__gt=0))
+ blocks = blocks.filter(start_dt__lte=now.date()).filter(stop_dt__gte=now.date())
+ # no regex in sqlite?
+ blocks = blocks.filter(mode_hours__regex=hours_regexp).filter(mode_weekday__regex=weekday_regexp)
+ blocks = blocks.order_by('?')
+ block = blocks[0] # db-hit here
+ if block.num_shows_left:
+ block.num_shows_left -= 1
+ # TODO: wtf?? forced saving needed,
+ # otherwise got no '/banners/' into path
+ block.save()
+ resp = block.html
+ return mark_safe(resp)
@render_to('admin/cms/block_config.html')
def configure(request, block):
- if request.method == 'POST':
- form = BannerConfigForm(request.POST, request.FILES)
- if form.is_valid():
- image = form.files['image']
- path = default_storage.save(os.path.join("cms/banners/", image.name), image)
- block.data = form.cleaned_data
- block.data['image'] = path
- block.save()
- return HttpResponseRedirect('../')
- else:
- if not block.data == '':
- files = {}
- if block.data.has_key('image'):
- files['image'] = default_storage.open(block.data['image'])
- form = BannerConfigForm(block.data, files)
- else:
- form = BannerConfigForm()
+ form = BannerConfigForm(request.POST or None, request.FILES or None)
+ if form.is_valid():
+ #image = form.files['image']
+ #path = default_storage.save(os.path.join("cms/banners/", image.name), image)
+ #block.data = form.cleaned_data
+ #block.data['image'] = path
+ #block.save()
+ form.save()
+ return HttpResponseRedirect('../')
+
+ #if not block.data == '':
+ #files = {}
+ #if block.data.has_key('image'):
+ #files['image'] = default_storage.open(block.data['image'])
+ #form = BannerConfigForm(block.data, files)
+ #else:
+ #form = BannerConfigForm()
return {'block_obj': block, 'form': form}
diff --git a/cms/context_processors.py b/cms/context_processors.py
index fa741d9..830d522 100644
--- a/cms/context_processors.py
+++ b/cms/context_processors.py
@@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
+from datetime import datetime
+
from django.core.context_processors import request
from django.conf import settings
from cms.models import MenuItem, Link
@@ -28,3 +30,6 @@ def mitem_by_url(request):
return {'menu_item':mitem, 'breadcrumb_mitem':breadcrumb_mitem}
else:
return {}
+
+def now_sec(request):
+ return {'now_sec': datetime.now().strftime('%s')}
diff --git a/cms/migrations/0018_auto__add_banner.py b/cms/migrations/0018_auto__add_banner.py
new file mode 100644
index 0000000..0643f9a
--- /dev/null
+++ b/cms/migrations/0018_auto__add_banner.py
@@ -0,0 +1,158 @@
+# encoding: 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 model 'Banner'
+ db.create_table('cms_banner', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('num_shows_left', self.gf('django.db.models.fields.IntegerField')(null=True)),
+ ('start_dt', self.gf('django.db.models.fields.DateTimeField')()),
+ ('stop_dt', self.gf('django.db.models.fields.DateTimeField')()),
+ ('banner', self.gf('django.db.models.fields.files.FileField')(max_length=100, null=True, blank=True)),
+ ('alt_text', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
+ ('html', self.gf('django.db.models.fields.CharField')(max_length=255)),
+ ('mode_hours', self.gf('django.db.models.fields.CharField')(default='111111111111111111111111', max_length=24)),
+ ('mode_weekday', self.gf('django.db.models.fields.CharField')(default='1111111', max_length=7)),
+ ('referals', self.gf('django.db.models.fields.IntegerField')(default=0)),
+ ))
+ db.send_create_signal('cms', ['Banner'])
+
+
+ def backwards(self, orm):
+
+ # Deleting model 'Banner'
+ db.delete_table('cms_banner')
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'start_dt': ('django.db.models.fields.DateTimeField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/migrations/0019_auto__chg_field_banner_referals.py b/cms/migrations/0019_auto__chg_field_banner_referals.py
new file mode 100644
index 0000000..9022873
--- /dev/null
+++ b/cms/migrations/0019_auto__chg_field_banner_referals.py
@@ -0,0 +1,146 @@
+# encoding: 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):
+
+ # Changing field 'Banner.referals'
+ db.alter_column('cms_banner', 'referals', self.gf('django.db.models.fields.IntegerField')(null=True))
+
+
+ def backwards(self, orm):
+
+ # Changing field 'Banner.referals'
+ db.alter_column('cms_banner', 'referals', self.gf('django.db.models.fields.IntegerField')())
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+ 'start_dt': ('django.db.models.fields.DateTimeField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/migrations/0020_auto__chg_field_banner_html.py b/cms/migrations/0020_auto__chg_field_banner_html.py
new file mode 100644
index 0000000..414fa7e
--- /dev/null
+++ b/cms/migrations/0020_auto__chg_field_banner_html.py
@@ -0,0 +1,146 @@
+# encoding: 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):
+
+ # Changing field 'Banner.html'
+ db.alter_column('cms_banner', 'html', self.gf('django.db.models.fields.TextField')(max_length=255, null=True))
+
+
+ def backwards(self, orm):
+
+ # User chose to not deal with backwards NULL issues for 'Banner.html'
+ raise RuntimeError("Cannot reverse this migration. 'Banner.html' and its values cannot be restored.")
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+ 'start_dt': ('django.db.models.fields.DateTimeField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/migrations/0021_auto__chg_field_banner_html.py b/cms/migrations/0021_auto__chg_field_banner_html.py
new file mode 100644
index 0000000..12b97fc
--- /dev/null
+++ b/cms/migrations/0021_auto__chg_field_banner_html.py
@@ -0,0 +1,146 @@
+# encoding: 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):
+
+ # Changing field 'Banner.html'
+ db.alter_column('cms_banner', 'html', self.gf('django.db.models.fields.TextField')(null=True))
+
+
+ def backwards(self, orm):
+
+ # Changing field 'Banner.html'
+ db.alter_column('cms_banner', 'html', self.gf('django.db.models.fields.TextField')(max_length=255, null=True))
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+ 'start_dt': ('django.db.models.fields.DateTimeField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/migrations/0022_auto__add_field_banner_link.py b/cms/migrations/0022_auto__add_field_banner_link.py
new file mode 100644
index 0000000..2d6d7fe
--- /dev/null
+++ b/cms/migrations/0022_auto__add_field_banner_link.py
@@ -0,0 +1,147 @@
+# encoding: 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 'Banner.link'
+ db.add_column('cms_banner', 'link', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), keep_default=False)
+
+
+ def backwards(self, orm):
+
+ # Deleting field 'Banner.link'
+ db.delete_column('cms_banner', 'link')
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'link': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+ 'start_dt': ('django.db.models.fields.DateTimeField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateTimeField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/migrations/0023_auto__chg_field_banner_stop_dt__chg_field_banner_start_dt.py b/cms/migrations/0023_auto__chg_field_banner_stop_dt__chg_field_banner_start_dt.py
new file mode 100644
index 0000000..be69f8b
--- /dev/null
+++ b/cms/migrations/0023_auto__chg_field_banner_stop_dt__chg_field_banner_start_dt.py
@@ -0,0 +1,153 @@
+# encoding: 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):
+
+ # Changing field 'Banner.stop_dt'
+ db.alter_column('cms_banner', 'stop_dt', self.gf('django.db.models.fields.DateField')())
+
+ # Changing field 'Banner.start_dt'
+ db.alter_column('cms_banner', 'start_dt', self.gf('django.db.models.fields.DateField')())
+
+
+ def backwards(self, orm):
+
+ # Changing field 'Banner.stop_dt'
+ db.alter_column('cms_banner', 'stop_dt', self.gf('django.db.models.fields.DateTimeField')())
+
+ # Changing field 'Banner.start_dt'
+ db.alter_column('cms_banner', 'start_dt', self.gf('django.db.models.fields.DateTimeField')())
+
+
+ models = {
+ 'cms.article': {
+ 'Meta': {'object_name': 'Article'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_article_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_article_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.banner': {
+ 'Meta': {'object_name': 'Banner'},
+ 'alt_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'banner': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'html': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'link': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'mode_hours': ('django.db.models.fields.CharField', [], {'default': "'111111111111111111111111'", 'max_length': '24'}),
+ 'mode_weekday': ('django.db.models.fields.CharField', [], {'default': "'1111111'", 'max_length': '7'}),
+ 'num_shows_left': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'referals': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+ 'start_dt': ('django.db.models.fields.DateField', [], {}),
+ 'stop_dt': ('django.db.models.fields.DateField', [], {})
+ },
+ 'cms.block': {
+ 'Meta': {'object_name': 'Block'},
+ 'data': ('cms.fields.PickledObjectField', [], {'default': "''", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'region': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'view': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'visible_on': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'blocks'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'weight': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'cms.gallery': {
+ 'Meta': {'object_name': 'Gallery'},
+ 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Gallery']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.image': {
+ 'Meta': {'object_name': 'Image'},
+ 'gallery': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['cms.Gallery']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}),
+ 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '250', 'blank': 'True'})
+ },
+ 'cms.link': {
+ 'Meta': {'object_name': 'Link'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'redirect': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+ },
+ 'cms.listtype': {
+ 'Meta': {'object_name': 'ListType'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.menuitem': {
+ 'Meta': {'object_name': 'MenuItem'},
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
+ 'full_url': ('django.db.models.fields.CharField', [], {'max_length': '250', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.MenuItem']"}),
+ 'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'}),
+ 'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+ },
+ 'cms.news': {
+ 'Meta': {'object_name': 'News'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'date': ('django.db.models.fields.DateTimeField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'list_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'cms_news_type'", 'to': "orm['cms.ListType']"}),
+ 'menu_items': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'cms_news_items'", 'symmetrical': 'False', 'to': "orm['cms.MenuItem']"}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'cms.page': {
+ 'Meta': {'object_name': 'Page'},
+ 'body': ('django.db.models.fields.TextField', [], {}),
+ 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('cms.fields.RemovableImageField', [], {'max_length': '100', 'blank': 'True'}),
+ 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'short': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'slug': ('django.db.models.fields.SlugField', [], {'db_index': 'True', 'max_length': '250', 'blank': 'True'}),
+ 'template': ('django.db.models.fields.CharField', [], {'max_length': '250', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '250'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ }
+ }
+
+ complete_apps = ['cms']
diff --git a/cms/models.py b/cms/models.py
index 9db8312..e50bd02 100644
--- a/cms/models.py
+++ b/cms/models.py
@@ -1,5 +1,8 @@
# -*- coding: utf-8 -*-
+import os
+import re
+
# Main Imports
from django.db import models
from django.db.models.base import ModelBase
@@ -28,6 +31,8 @@ from fields import RemovableImageField
from easy_thumbnails.files import get_thumbnailer
+RE_IMAGE_FMT = re.compile(r'(%s)$' % '|'.join(settings.IMAGE_FORMATS))
+RE_FLASH_FMT = re.compile(r'(%s)$' % '|'.join(settings.FLASH_FORMATS))
class BaseMovedModel(object):
""" Базовый класс упорядоченной модели """
@@ -539,3 +544,66 @@ def gallery_connect(sender):
sender.gallery = property(gallery)
post_save.connect(Gallery._gallery_handler, sender=sender)
+
+class Banner(models.Model):
+ num_shows_left = models.IntegerField(_('show times left'),
+ null=True, blank=True,
+ help_text=_('Leave blank to infinite')) # null=infinite, 0=stop
+ start_dt = models.DateField(_('start show at'))
+ stop_dt = models.DateField(_('stop show at'))
+ banner = models.FileField(_('upload banner'), upload_to='banners', null=True, blank=True)
+ alt_text = models.CharField(_('alt-text for image'), max_length=255, null=True, blank=True)
+ html = models.TextField(_('raw html shown'),
+ null=True,
+ blank=True,
+ help_text = _('Plain html shown. Requiered if no banner. Ignored otherwise'))
+ # TODO: do spec. fields-rendering with checkboxes later
+ mode_hours = models.CharField(_('show at daytimes'),
+ max_length=24,
+ default='111111111111111111111111',
+ help_text=_('bit-wise array, "1" is "on": "[0-1][1-2]...[23-24]"'))
+ mode_weekday = models.CharField(_('show at weekdays'),
+ max_length=7,
+ default='1111111',
+ help_text=_('bit-wise array, "1" in "on": "[Mon],[Tue]...[Sun]"'))
+ referals = models.IntegerField(null=True, blank=True, default=0) # just statictics
+ link = models.CharField(max_length=255,
+ null=True, blank=True,
+ help_text=_('If no link given -> no link in output'))
+
+ def __unicode__(self):
+ if self.banner:
+ basename = os.path.basename(self.banner.name)
+ else:
+ basename = self.alt_text
+ return basename
+
+ def save(self, *args, **kwargs):
+ if not self.banner and not self.html:
+ raise Exception('Provide eiher `html` or `file`')
+ if self.banner:
+ basename = os.path.basename(self.banner.name)
+ if RE_IMAGE_FMT.search(basename):
+ self.html = '<img src="%s" alt="%s">' % (self.banner.url, self.alt_text)
+ elif RE_FLASH_FMT.search(basename):
+ self.html = '''
+ <object>
+ <param name="nobanner" value="%s">
+ <embed src="%s" width="550" height="400">
+ </embed>
+ </object>''' % (basename, self.banner.url)
+ else:
+ raise Exception('Unknown file format')
+ if self.link:
+ self.html = '<a href="%s">%s</a>' % (self.link, self.html)
+
+ # hanlde some input errors
+ if len(self.mode_weekday)!=7:
+ mode_weekday = self.mode_weekday[:7]
+ mode_weekday.extend((7-len(mode_weekday))*['1'])
+ self.mode_weekday = mode_weekday
+ if len(self.mode_hours)!=24:
+ mode_hours = self.mode_hours[:24]
+ mode_hours.extend((24-len(mode_hours))*['1'])
+ self.mode_hours = mode_hours
+ super(Banner, self).save(*args, **kwargs)
diff --git a/cms/settings.py b/cms/settings.py
index c36e9bf..c22a8c5 100644
--- a/cms/settings.py
+++ b/cms/settings.py
@@ -115,3 +115,4 @@ CMS_ADMIN_LINKS = [
[_('Sites'), '/admin/sites/site/'],
[_('File Browser'), '/admin/filebrowser/browse/'],
]
+
diff --git a/cms_admin/project_template/settings.py b/cms_admin/project_template/settings.py
index fced37a..b506161 100644
--- a/cms_admin/project_template/settings.py
+++ b/cms_admin/project_template/settings.py
@@ -201,6 +201,9 @@ CMS_EXCLUDE_BLOCKS = ['News', 'Menu', 'Banner']
REGIONS = ()
+IMAGE_FORMATS = ['jpg', 'gif', 'png']
+FLASH_FORMATS = ['swf']
+
### Import local settings ###
try:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment