Skip to content

Commit 0af7991

Browse files
author
a.shtyrnyaev
committed
- add control banners
1 parent 02d6bae commit 0af7991

File tree

17 files changed

+144
-99
lines changed

17 files changed

+144
-99
lines changed

apps/banners/admin.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
from django.contrib import admin
2-
from apps.banners.models import Banner, OutputTemplates, Position
2+
from apps.banners.models import Banner, Position
33

44

55
class BannerAdmin(admin.ModelAdmin):
66
list_display = (
77
'name', 'date_from', 'date_to', 'date_days', 'priority', 'active')
88

99

10-
class OutputTemplatesAdmin(admin.ModelAdmin):
11-
list_display = ('name', 'template')
12-
13-
1410
class PositionAdmin(admin.ModelAdmin):
15-
list_display = ('name', 'template')
11+
list_display = ('name', 'tag')
1612

1713

1814
admin.site.register(Banner, BannerAdmin)
19-
admin.site.register(OutputTemplates, OutputTemplatesAdmin)
20-
admin.site.register(Position, PositionAdmin)
15+
admin.site.register(Position, PositionAdmin)

apps/banners/migrations/0001_initial.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Generated by Django 2.0.1 on 2018-02-26 16:48
1+
# Generated by Django 2.0.1 on 2018-06-24 16:39
22

3-
import datetime
43
from django.db import migrations, models
54
import django.db.models.deletion
5+
import django.utils.timezone
66

77

88
class Migration(migrations.Migration):
@@ -22,8 +22,8 @@ class Migration(migrations.Migration):
2222
('file_img', models.FileField(blank=True, null=True, upload_to='data-img/', verbose_name='Файл изображения')),
2323
('width', models.CharField(blank=True, help_text='Например, 100px, 720px или 100%', max_length=7, verbose_name='Ширина отображения баннера')),
2424
('height', models.CharField(blank=True, help_text='Например, 100px, 200px или 100%', max_length=7, verbose_name='Высота отображения баннера')),
25-
('link_to', models.CharField(help_text='Главная ссылка перехода. Передается параметром _clickTAG1. Например, http://vk.com/', max_length=255, verbose_name='Ссылка перехода')),
26-
('date_from', models.DateField(default=datetime.datetime(2018, 2, 26, 19, 48, 29, 196960), verbose_name='Дата старта показа баннеров')),
25+
('link_to', models.CharField(help_text='Главная ссылка перехода.', max_length=255, verbose_name='Ссылка перехода')),
26+
('date_from', models.DateField(default=django.utils.timezone.now, verbose_name='Дата старта показа баннеров')),
2727
('date_to', models.DateField(help_text='В эту дату ещё будут показы.', verbose_name='Дата окончания показа баннеров')),
2828
('date_days', models.IntegerField(default=254, help_text='Вычисляется как сумма: Понедельник = 2, Вторник = 4, Среда = 8, Четверг = 16, Пятница = 32, Суббота = 64, Воскресенье = 128. Для всей недели = 254, Только выходные = 192, Только будни = 62', verbose_name='Дни недели для показа')),
2929
('date_time_from', models.IntegerField(default=0, help_text='Например, 12 или 20', verbose_name='Час начала показа каждый указанный день')),
@@ -32,33 +32,20 @@ class Migration(migrations.Migration):
3232
('active', models.BooleanField(verbose_name='Активность баннера')),
3333
],
3434
options={
35-
'verbose_name_plural': 'Баннеры',
3635
'verbose_name': 'Баннер',
37-
},
38-
),
39-
migrations.CreateModel(
40-
name='OutputTemplates',
41-
fields=[
42-
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
43-
('name', models.CharField(max_length=256, verbose_name='Название шаблона')),
44-
('template', models.TextField(help_text='HTML-код для вставки баннера.', verbose_name='Шаблон')),
45-
],
46-
options={
47-
'verbose_name_plural': 'Шаблоны',
48-
'verbose_name': 'Шаблон',
36+
'verbose_name_plural': 'Баннеры',
4937
},
5038
),
5139
migrations.CreateModel(
5240
name='Position',
5341
fields=[
5442
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
5543
('name', models.CharField(max_length=255, verbose_name='Название места где будет размещатся банер')),
56-
('code_id', models.CharField(max_length=10, verbose_name='id где будет размещатся банер')),
57-
('template', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='banners.OutputTemplates', verbose_name='Шаблон для этого места')),
44+
('tag', models.CharField(max_length=10, verbose_name='id где будет размещатся банер')),
5845
],
5946
options={
60-
'verbose_name_plural': 'Расположение баннеров',
6147
'verbose_name': 'Расположение',
48+
'verbose_name_plural': 'Расположение баннеров',
6249
},
6350
),
6451
migrations.AddField(

apps/banners/models.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
11
from django.db import models
2-
from datetime import datetime
3-
4-
5-
class OutputTemplates(models.Model):
6-
name = models.CharField(max_length=256, blank=False, verbose_name='Название шаблона')
7-
template = models.TextField(blank=False, verbose_name='Шаблон', help_text='HTML-код для вставки баннера.')
8-
9-
def __str__(self):
10-
return 'Шаблон {}'.format(self.name)
11-
12-
class Meta:
13-
verbose_name = "Шаблон"
14-
verbose_name_plural = "Шаблоны"
2+
from django.utils import timezone
153

164

175
class Position(models.Model):
186
name = models.CharField(max_length=255, verbose_name='Название места где будет размещатся банер')
197
tag = models.CharField(max_length=10, verbose_name='id где будет размещатся банер')
20-
template = models.ForeignKey(OutputTemplates, verbose_name='Шаблон для этого места', on_delete=models.CASCADE)
218

229
def __str__(self):
2310
return 'Расположение {}'.format(self.name)
@@ -39,7 +26,7 @@ class Banner(models.Model):
3926
help_text='Например, 100px, 200px или 100%')
4027
link_to = models.CharField(max_length=255, blank=False, verbose_name='Ссылка перехода',
4128
help_text='Главная ссылка перехода.')
42-
date_from = models.DateField(default=datetime.now(), verbose_name='Дата старта показа баннеров', help_text='')
29+
date_from = models.DateField(default=timezone.now, verbose_name='Дата старта показа баннеров', help_text='')
4330
date_to = models.DateField(verbose_name='Дата окончания показа баннеров', help_text='В эту дату ещё будут показы.')
4431
date_days = models.IntegerField(default=254, verbose_name='Дни недели для показа',
4532
help_text='Вычисляется как сумма: Понедельник = 2, Вторник = 4, Среда = 8, '
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from django import template
2+
from datetime import *
3+
from functools import reduce
4+
from apps.banners.models import Banner
5+
from django.template import Context, Template, loader
6+
from django.db.models import Q
7+
from operator import or_
8+
9+
register = template.Library()
10+
11+
12+
@register.simple_tag(takes_context=True)
13+
def get_banner(context, place):
14+
""" banner """
15+
request = context.get('request')
16+
if not request:
17+
return ''
18+
19+
now = datetime.now()
20+
nowtime = now.strftime("%H")
21+
22+
weekday = ['128', '2', '4', '8', '16', '32', '64']
23+
day = []
24+
25+
d = int(now.strftime('%w'))
26+
27+
if d == 0:
28+
day.append(128)
29+
day.append(192)
30+
day.append(254)
31+
else:
32+
if d <= 5:
33+
day.append(weekday[d])
34+
day.append(62)
35+
day.append(254)
36+
else:
37+
day.append(weekday[d])
38+
day.append(192)
39+
day.append(254)
40+
41+
all_banners = Banner.objects.filter(date_from__lte=now, date_to__gte=now, date_time_from__lte=nowtime, date_time_to__gte=nowtime, position__tag=place, active=True)
42+
banners = all_banners.filter(reduce(or_, [Q(date_days=dt) for dt in day]))
43+
44+
if not banners:
45+
return ''
46+
for banner in banners:
47+
48+
response = loader.render_to_string("blocks/banner.html", {
49+
'image': banner.file_img,
50+
'place': place,
51+
'width': banner.width,
52+
'height': banner.height,
53+
})
54+
return response

apps/news/migrations/0005_auto_20180113_1337.py

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# -*- coding: utf-8 -*-
2-
# Generated by Django 1.9.8 on 2018-01-13 11:39
3-
from __future__ import unicode_literals
1+
# Generated by Django 2.0.1 on 2018-06-24 16:39
42

53
import ckeditor_uploader.fields
64
from django.db import migrations, models
@@ -9,18 +7,28 @@
97
class Migration(migrations.Migration):
108

119
dependencies = [
12-
('news', '0005_auto_20180113_1337'),
10+
('news', '0004_auto_20161002_2204'),
1311
]
1412

1513
operations = [
14+
migrations.AddField(
15+
model_name='article',
16+
name='is_our',
17+
field=models.BooleanField(default=False, verbose_name='Наш пост?'),
18+
),
19+
migrations.AddField(
20+
model_name='article',
21+
name='text',
22+
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, default='', verbose_name='Текст'),
23+
),
1624
migrations.AlterField(
1725
model_name='article',
1826
name='language',
1927
field=models.CharField(choices=[('ru', '🇷🇺'), ('en', '🇬🇧')], max_length=2, verbose_name='Язык'),
2028
),
2129
migrations.AlterField(
2230
model_name='article',
23-
name='text',
24-
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, default='', verbose_name='Текст'),
31+
name='url',
32+
field=models.URLField(blank=True, null=True, verbose_name='URL'),
2533
),
2634
]

apps/news/migrations/0007_auto_20180225_2107.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

assets/css/all.css

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,24 @@ th {
466466
.icon-twitter:before {
467467
content: "\ea96";
468468
}
469-
469+
.icon-vk:before {
470+
content: "\ea98";
471+
}
472+
.icon-yt:before {
473+
content: "\ea9d";
474+
}
475+
.icon-youtube:before {
476+
content: "\ea9e";
477+
}
478+
.icon-telegram:before {
479+
content: "\ea95";
480+
}
481+
.icon-g-plus:before {
482+
content: "\ea8b";
483+
}
484+
.icon-linkd:before {
485+
content: "\eac9";
486+
}
470487

471488
.social-networks,
472489
.primary-menu,

assets/fonts/icomoon.eot

100755100644
File mode changed.

assets/fonts/icomoon.svg

100755100644
File mode changed.

0 commit comments

Comments
 (0)