|
|
|
@ -1,13 +1,13 @@ |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
import hashlib |
|
|
|
import hashlib |
|
|
|
from datetime import datetime, date |
|
|
|
from datetime import datetime, date |
|
|
|
|
|
|
|
|
|
|
|
from django.db import models |
|
|
|
from django.db import models |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django.conf import settings |
|
|
|
from django.conf import settings |
|
|
|
from django.contrib.sites.models import Site |
|
|
|
from django.contrib.sites.models import Site |
|
|
|
|
|
|
|
from .managers import BiasedManager, BannerGroupCached, URLCached |
|
|
|
from .managers import BiasedManager, BannerGroupCached |
|
|
|
from theme.models import Theme |
|
|
|
|
|
|
|
from country.models import Country |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class URL(models.Model): |
|
|
|
class URL(models.Model): |
|
|
|
@ -20,6 +20,9 @@ class URL(models.Model): |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
objects = models.Manager() |
|
|
|
|
|
|
|
cached = URLCached() |
|
|
|
|
|
|
|
|
|
|
|
def __unicode__(self): |
|
|
|
def __unicode__(self): |
|
|
|
return self.title |
|
|
|
return self.title |
|
|
|
|
|
|
|
|
|
|
|
@ -42,6 +45,8 @@ class BannerGroup (models.Model): |
|
|
|
public = models.BooleanField(verbose_name=u'Активная', default=True) |
|
|
|
public = models.BooleanField(verbose_name=u'Активная', default=True) |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
objects = models.Manager() |
|
|
|
cached = BannerGroupCached() |
|
|
|
cached = BannerGroupCached() |
|
|
|
|
|
|
|
|
|
|
|
def size(self): |
|
|
|
def size(self): |
|
|
|
@ -68,6 +73,11 @@ class Banner(models.Model): |
|
|
|
text = models.TextField(verbose_name=u'Текст', blank=True, null=True) |
|
|
|
text = models.TextField(verbose_name=u'Текст', blank=True, null=True) |
|
|
|
img = models.FileField(verbose_name=u'Картинка', upload_to='expo_upload', blank=True, null=True) |
|
|
|
img = models.FileField(verbose_name=u'Картинка', upload_to='expo_upload', blank=True, null=True) |
|
|
|
url = models.CharField(verbose_name=u'URL', max_length=1024) |
|
|
|
url = models.CharField(verbose_name=u'URL', max_length=1024) |
|
|
|
|
|
|
|
fr = models.DateField(default=date.today()) |
|
|
|
|
|
|
|
to = models.DateField(blank=True, null=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theme = models.ManyToManyField(Theme, blank=True, null=True, verbose_name=u'Тематика') |
|
|
|
|
|
|
|
country = models.ManyToManyField(Country, blank=True, null=True, verbose_name=u'Страна') |
|
|
|
|
|
|
|
|
|
|
|
sort = models.PositiveSmallIntegerField(verbose_name=u'Сорт', default=500) |
|
|
|
sort = models.PositiveSmallIntegerField(verbose_name=u'Сорт', default=500) |
|
|
|
|
|
|
|
|
|
|
|
@ -75,7 +85,8 @@ class Banner(models.Model): |
|
|
|
often = models.PositiveSmallIntegerField( |
|
|
|
often = models.PositiveSmallIntegerField( |
|
|
|
verbose_name=_('Often'), |
|
|
|
verbose_name=_('Often'), |
|
|
|
help_text=_('A ten will display 10 times more often that a one.'), |
|
|
|
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(11)], |
|
|
|
|
|
|
|
default=1 |
|
|
|
) |
|
|
|
) |
|
|
|
urls = models.ManyToManyField(URL, related_name='url_banners', verbose_name=_('URLs'), null=True, blank=True) |
|
|
|
urls = models.ManyToManyField(URL, related_name='url_banners', verbose_name=_('URLs'), null=True, blank=True) |
|
|
|
|
|
|
|
|
|
|
|
@ -88,12 +99,6 @@ class Banner(models.Model): |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
created_at = models.DateTimeField(verbose_name=_('Created At'), auto_now_add=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
updated_at = models.DateTimeField(verbose_name=_('Updated At'), auto_now=True) |
|
|
|
|
|
|
|
|
|
|
|
theme = models.ForeignKey('theme.Theme', blank=True, null=True, verbose_name=u'Тематика') |
|
|
|
|
|
|
|
tag = models.ForeignKey('theme.Tag', blank=True, null=True, verbose_name=u'Тег') |
|
|
|
|
|
|
|
country = models.ForeignKey('country.Country', blank=True, null=True, verbose_name=u'Страна') |
|
|
|
|
|
|
|
city = models.ForeignKey('city.City', blank=True, null=True, verbose_name=u'Город') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_admin_url(self): |
|
|
|
def get_admin_url(self): |
|
|
|
return '/admin/expobanners/banners/banner/%d/edit/'%self.id |
|
|
|
return '/admin/expobanners/banners/banner/%d/edit/'%self.id |
|
|
|
|
|
|
|
|
|
|
|
|