Skip to content

Commit

Permalink
дописаны прошлые начинания, исправлены ошибки
Browse files Browse the repository at this point in the history
  • Loading branch information
plazix committed Nov 28, 2011
1 parent e093eea commit cf0597d
Show file tree
Hide file tree
Showing 6 changed files with 192 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .gitignore
@@ -1,4 +1,4 @@
*.pyc
*.pyo
.DS_Store

.idea
172 changes: 172 additions & 0 deletions banner_rotator/migrations/0007_places_new_params.py
@@ -0,0 +1,172 @@
# 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 'Place'
db.create_table('banner_rotator_place', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, db_index=True)),
('width', self.gf('django.db.models.fields.SmallIntegerField')(default=None, null=True, blank=True)),
('height', self.gf('django.db.models.fields.SmallIntegerField')(default=None, null=True, blank=True)),
))
db.send_create_signal('banner_rotator', ['Place'])

# Adding unique constraint on 'Place', fields ['slug']
db.create_unique('banner_rotator_place', ['slug'])

# Adding field 'Banner.place'
db.add_column('banner_rotator_banner', 'place', self.gf('django.db.models.fields.related.ForeignKey')(default=None, related_name='banners', to=orm['banner_rotator.Place']), keep_default=False)

# Adding field 'Banner.alt'
db.add_column('banner_rotator_banner', 'alt', self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True), keep_default=False)

# Adding field 'Banner.url_target'
db.add_column('banner_rotator_banner', 'url_target', self.gf('django.db.models.fields.CharField')(default='', max_length=10, blank=True), keep_default=False)

# Adding field 'Banner.max_views'
db.add_column('banner_rotator_banner', 'max_views', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)

# Adding field 'Banner.max_clicks'
db.add_column('banner_rotator_banner', 'max_clicks', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)

# Adding field 'Banner.start_at'
db.add_column('banner_rotator_banner', 'start_at', self.gf('django.db.models.fields.DateTimeField')(default=None, null=True, blank=True), keep_default=False)

# Adding field 'Banner.finish_at'
db.add_column('banner_rotator_banner', 'finish_at', self.gf('django.db.models.fields.DateTimeField')(default=None, null=True, blank=True), keep_default=False)

# Changing field 'Banner.campaign'
db.alter_column('banner_rotator_banner', 'campaign_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['banner_rotator.Campaign']))

# Deleting field 'Campaign.slug'
db.delete_column('banner_rotator_campaign', 'slug')


def backwards(self, orm):

# Removing unique constraint on 'Place', fields ['slug']
db.delete_unique('banner_rotator_place', ['slug'])

# Deleting model 'Place'
db.delete_table('banner_rotator_place')

# Deleting field 'Banner.place'
db.delete_column('banner_rotator_banner', 'place_id')

# Deleting field 'Banner.alt'
db.delete_column('banner_rotator_banner', 'alt')

# Deleting field 'Banner.url_target'
db.delete_column('banner_rotator_banner', 'url_target')

# Deleting field 'Banner.max_views'
db.delete_column('banner_rotator_banner', 'max_views')

# Deleting field 'Banner.max_clicks'
db.delete_column('banner_rotator_banner', 'max_clicks')

# Deleting field 'Banner.start_at'
db.delete_column('banner_rotator_banner', 'start_at')

# Deleting field 'Banner.finish_at'
db.delete_column('banner_rotator_banner', 'finish_at')

# Changing field 'Banner.campaign'
db.alter_column('banner_rotator_banner', 'campaign_id', self.gf('django.db.models.fields.related.ForeignKey')(default=None, to=orm['banner_rotator.Campaign']))

# Adding field 'Campaign.slug'
db.add_column('banner_rotator_campaign', 'slug', self.gf('django_extensions.db.fields.AutoSlugField')(default='', populate_from='name', allow_duplicates=False, max_length=50, separator=u'-', blank=True, overwrite=False, db_index=True), keep_default=False)


models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'banner_rotator.banner': {
'Meta': {'object_name': 'Banner'},
'alt': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
'campaign': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'banners'", 'null': 'True', 'blank': 'True', 'to': "orm['banner_rotator.Campaign']"}),
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'finish_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'max_clicks': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'max_views': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'place': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'banners'", 'to': "orm['banner_rotator.Place']"}),
'start_at': ('django.db.models.fields.DateTimeField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'url': ('django.db.models.fields.URLField', [], {'max_length': '200'}),
'url_target': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'blank': 'True'}),
'views': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'weight': ('django.db.models.fields.IntegerField', [], {})
},
'banner_rotator.campaign': {
'Meta': {'object_name': 'Campaign'},
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
},
'banner_rotator.click': {
'Meta': {'object_name': 'Click'},
'banner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'clicks'", 'to': "orm['banner_rotator.Banner']"}),
'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ip': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
'referrer': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'banner_clicks'", 'null': 'True', 'to': "orm['auth.User']"}),
'user_agent': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
},
'banner_rotator.place': {
'Meta': {'unique_together': "(('slug',),)", 'object_name': 'Place'},
'height': ('django.db.models.fields.SmallIntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
'width': ('django.db.models.fields.SmallIntegerField', [], {'default': 'None', 'null': 'True', 'blank': 'True'})
},
'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 = ['banner_rotator']
Empty file.
4 changes: 2 additions & 2 deletions banner_rotator/models.py
Expand Up @@ -62,7 +62,7 @@ class Banner(models.Model):
max_clicks = models.IntegerField(_('Max clicks'), default=0)

weight = models.IntegerField(_('Weight'), help_text=_("A ten will display 10 times more often that a one."),
choices=[[i,i] for i in range(11)])
choices=[[i,i] for i in range(1, 11)])

file = models.FileField(_('File'), upload_to='banners')

Expand All @@ -80,7 +80,7 @@ def __unicode__(self):
return self.name

def is_swf(self):
return self.file.filename.lower().endswith("swf")
return self.file.name.lower().endswith("swf")

def view(self):
self.views = models.F('views') + 1
Expand Down
12 changes: 9 additions & 3 deletions banner_rotator/templates/banner_rotator/place.html
Expand Up @@ -3,11 +3,17 @@
var rndnum = Math.round(Math.random()*65535);

{% if banner.is_swf %}
{# todo написать #}
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"');
{% if banner.place.width %}document.write(' width="{{ banner.place.width }}"');{% endif %}
{% if banner.place.height %}document.write(' height="{{ banner.place.height }}"');{% endif %}
document.write('><param name="allowScriptAccess" value="Always"><param name="menu" value="false"><param name="quality" value="high"><param name="wmode" value="opaque">');
document.write('<param name="movie" value="{{ banner.file.url }}?rnd='+rndnum+'"><param name="flashvars" value="url={% url banner_click banner.id %}">');
document.write('<embed src="{{ banner.file.url }}?rnd='+rndnum+'" flashvars="url={% url banner_click banner.id %}" quality="high" allowscriptaccess="Always" wmode="opaque" menu="false" swliveconnect="FALSE" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"');
{% if banner.place.width %}document.write(' width="{{ banner.place.width }}"');{% endif %}
{% if banner.place.height %}document.write(' height="{{ banner.place.height }}"');{% endif %}
document.write('></object>');
{% else %}
document.write('<a href="{% url banner_click banner.id %}"><img src="{{ banner.file.url }}?rnd='+rndnum+'" alt="{{ banner.alt }}"/></a>');
{% endif %}
</script>
{% else %}
&nbsp;
{% endif %}
12 changes: 8 additions & 4 deletions banner_rotator/templatetags/banners.py
Expand Up @@ -3,6 +3,7 @@
import logging

from django import template
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _

from banner_rotator.models import Banner
Expand All @@ -22,6 +23,7 @@ def render(self, context):

try:
banner_obj = Banner.objects.biased_choice(self.place_slug)
banner_obj.view()
except Banner.DoesNotExist:
banner_obj = None

Expand All @@ -31,7 +33,11 @@ def render(self, context):
context.update(local_context)
return ''
else:
pass
templates = [
#'banner_rotator/place_%s.html' % banner_obj.place.slug,
'banner_rotator/place.html'
]
return render_to_string(templates, local_context)


@register.tag
Expand All @@ -44,13 +50,11 @@ def banner(parser, token):
if len(bits) not in [2, 4]:
raise template.TemplateSyntaxError(_("banner tag takes three of four arguments"))

if 'as' == bits[2]:
if 4 == len(bits) and 'as' == bits[2]:
place_slug = bits[1]
varname = bits[3]
else:
place_slug = bits[1]
varname = None

return BannerNode(place_slug, varname)

# todo

0 comments on commit cf0597d

Please sign in to comment.