Skip to content

Commit fc23e2e

Browse files
committed
Merge branch 'develop' of github.com:moscowpython/python.ru into develop
# Conflicts: # python_ru/settings/base.py
2 parents a9bef44 + f9f23ac commit fc23e2e

33 files changed

+346
-75
lines changed

.env.example

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
DJANGO_SETTINGS_MODULE=python_py.settings.development
2+
DJANGO_SECRET_KEY=(t(ga4%7#r%9)m&41%6&)cz&o%j%y^*$uuv)f%5i)eh-&*j+7y
3+
DEBUG=True
4+
5+
DATABASES_ENGINE=django.db.backends.postgresql_psycopg2
6+
DATABASES_NAME=python_ru
7+
DATABASES_USER=postgres
8+
DATABASES_PASSWORD=postgres
9+
DATABASES_HOST=localhost
10+
DATABASES_PORT=5432

apps/__init__.py

Whitespace-only changes.

apps/banners/__init__.py

Whitespace-only changes.

apps/banners/admin.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from django.contrib import admin
2+
from apps.banners.models import Banner, OutputTemplates, Position
3+
4+
5+
class BannerAdmin(admin.ModelAdmin):
6+
list_display = (
7+
'name', 'date_from', 'date_to', 'date_days', 'priority', 'active')
8+
9+
10+
class OutputTemplatesAdmin(admin.ModelAdmin):
11+
list_display = ('name', 'template')
12+
13+
14+
class PositionAdmin(admin.ModelAdmin):
15+
list_display = ('name', 'template')
16+
17+
18+
admin.site.register(Banner, BannerAdmin)
19+
admin.site.register(OutputTemplates, OutputTemplatesAdmin)
20+
admin.site.register(Position, PositionAdmin)

apps/banners/apps.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
4+
class BannersConfig(AppConfig):
5+
name = 'apps.banners'
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Generated by Django 2.0.1 on 2018-02-26 16:48
2+
3+
import datetime
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Banner',
18+
fields=[
19+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('name', models.CharField(help_text='Назовите баннер так, чтобы было удобно в дальнейшем определять его среди других баннеров', max_length=255, verbose_name='Название баннера')),
21+
('file_swf', models.FileField(blank=True, null=True, upload_to='data/', verbose_name='Swf-файл')),
22+
('file_img', models.FileField(blank=True, null=True, upload_to='data-img/', verbose_name='Файл изображения')),
23+
('width', models.CharField(blank=True, help_text='Например, 100px, 720px или 100%', max_length=7, verbose_name='Ширина отображения баннера')),
24+
('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='Дата старта показа баннеров')),
27+
('date_to', models.DateField(help_text='В эту дату ещё будут показы.', verbose_name='Дата окончания показа баннеров')),
28+
('date_days', models.IntegerField(default=254, help_text='Вычисляется как сумма: Понедельник = 2, Вторник = 4, Среда = 8, Четверг = 16, Пятница = 32, Суббота = 64, Воскресенье = 128. Для всей недели = 254, Только выходные = 192, Только будни = 62', verbose_name='Дни недели для показа')),
29+
('date_time_from', models.IntegerField(default=0, help_text='Например, 12 или 20', verbose_name='Час начала показа каждый указанный день')),
30+
('date_time_to', models.IntegerField(default=24, help_text='Не может быть меньше, чем час начала. Например, 12 или 20', verbose_name='Час окончания показа каждый указанный день')),
31+
('priority', models.IntegerField(verbose_name='Приоритет показа от 1 до 100')),
32+
('active', models.BooleanField(verbose_name='Активность баннера')),
33+
],
34+
options={
35+
'verbose_name_plural': 'Баннеры',
36+
'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': 'Шаблон',
49+
},
50+
),
51+
migrations.CreateModel(
52+
name='Position',
53+
fields=[
54+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
55+
('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='Шаблон для этого места')),
58+
],
59+
options={
60+
'verbose_name_plural': 'Расположение баннеров',
61+
'verbose_name': 'Расположение',
62+
},
63+
),
64+
migrations.AddField(
65+
model_name='banner',
66+
name='position',
67+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='banners.Position', verbose_name='Место размещение банера'),
68+
),
69+
]

apps/banners/migrations/__init__.py

Whitespace-only changes.

apps/banners/models.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
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 = "Шаблоны"
15+
16+
17+
class Position(models.Model):
18+
name = models.CharField(max_length=255, verbose_name='Название места где будет размещатся банер')
19+
tag = models.CharField(max_length=10, verbose_name='id где будет размещатся банер')
20+
template = models.ForeignKey(OutputTemplates, verbose_name='Шаблон для этого места', on_delete=models.CASCADE)
21+
22+
def __str__(self):
23+
return 'Расположение {}'.format(self.name)
24+
25+
class Meta:
26+
verbose_name = "Расположение"
27+
verbose_name_plural = "Расположение баннеров"
28+
29+
30+
class Banner(models.Model):
31+
name = models.CharField(max_length=255, blank=False, verbose_name='Название баннера',
32+
help_text='Назовите баннер так, чтобы было удобно в дальнейшем '
33+
'определять его среди других баннеров')
34+
file_swf = models.FileField(upload_to='data/', verbose_name='Swf-файл', blank=True, null=True)
35+
file_img = models.FileField(upload_to='data-img/', verbose_name='Файл изображения', blank=True, null=True)
36+
width = models.CharField(max_length=7, blank=True, verbose_name='Ширина отображения баннера',
37+
help_text='Например, 100px, 720px или 100%')
38+
height = models.CharField(max_length=7, blank=True, verbose_name='Высота отображения баннера',
39+
help_text='Например, 100px, 200px или 100%')
40+
link_to = models.CharField(max_length=255, blank=False, verbose_name='Ссылка перехода',
41+
help_text='Главная ссылка перехода.')
42+
date_from = models.DateField(default=datetime.now(), verbose_name='Дата старта показа баннеров', help_text='')
43+
date_to = models.DateField(verbose_name='Дата окончания показа баннеров', help_text='В эту дату ещё будут показы.')
44+
date_days = models.IntegerField(default=254, verbose_name='Дни недели для показа',
45+
help_text='Вычисляется как сумма: Понедельник = 2, Вторник = 4, Среда = 8, '
46+
'Четверг = 16, Пятница = 32, Суббота = 64, Воскресенье = 128. '
47+
'Для всей недели = 254, Только выходные = 192, Только будни = 62')
48+
date_time_from = models.IntegerField(default=0, verbose_name='Час начала показа каждый указанный день',
49+
help_text='Например, 12 или 20')
50+
date_time_to = models.IntegerField(default=24, verbose_name='Час окончания показа каждый указанный день',
51+
help_text='Не может быть меньше, чем час начала. Например, 12 или 20')
52+
priority = models.IntegerField(verbose_name='Приоритет показа от 1 до 100', help_text='')
53+
position = models.ForeignKey(Position, verbose_name='Место размещение банера', on_delete=models.CASCADE)
54+
active = models.BooleanField(verbose_name='Активность баннера')
55+
56+
def __str__(self):
57+
return u'Баннер {}'.format(self.name)
58+
59+
def __unicode__(self):
60+
return u'#{} {}'.format(self.id, self.name)
61+
62+
class Meta:
63+
verbose_name = "Баннер"
64+
verbose_name_plural = "Баннеры"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# coding: utf-8

apps/banners/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

0 commit comments

Comments
 (0)