remotes/origin/mitri4
spacenergy 10 years ago
parent dd252beb3a
commit fb38c10115
  1. 1
      batiskaf/settings.py
  2. 3
      batiskaf/templates/jinja2/base.jinja
  3. 73
      batiskaf/templates/jinja2/promo/detail.jinja
  4. 79
      batiskaf/templates/jinja2/promo/list.jinja
  5. 3
      batiskaf/urls.py
  6. 0
      promo/__init__.py
  7. 12
      promo/admin.py
  8. 32
      promo/migrations/0001_initial.py
  9. 0
      promo/migrations/__init__.py
  10. 55
      promo/models.py
  11. 3
      promo/tests.py
  12. 9
      promo/urls.py
  13. 32
      promo/views.py
  14. 25
      store/migrations/0039_auto_20151025_1211.py

@ -69,6 +69,7 @@ INSTALLED_APPS = (
'accounts',
'store',
'news',
'promo',
)
SITE_ID = 1

@ -164,9 +164,8 @@
</li>
</ul>
</li>
<li style="background: hsl(36, 100%, 50%)"><a href="/promo/"><span class="lead">Акции</span></a></li>
</ul>
</div>
</div>
</div>

@ -0,0 +1,73 @@
{% extends 'base.jinja' %}
{% block title %}
{{ object.title }} > Акции Батискаф-Казахстан
{% endblock %}
{% block meta_description %}
{{ object.title }} - Акции Батискаф-Казахстан.
{% endblock %}
{% block meta_keywords %}
Акции, Читать, Комментировать, {{ object.title }}, Батискаф-Казахстан
{% endblock %}
{% block content %}
<div class=" breadcrumbs">
<ol class="breadcrumb breadcrumb-arrow">
<li><a href="/">Главная</a></li>
<li><a href="/news/">Акции</a></li>
<li class="active"><span>{{ object.title }}</span></li>
</ol>
</div>
<h2 class="text-left">
{% if object.get_status() == 0 %}
{{ object.title }} <small><span class="text-muted">Акция еще не началась</span></small>
{% elif object.get_status() == 1 %}
{{ object.title }} <small><span class="text-success">Действующая акция</span></small>
{% else %}
<s>{{ object.title }}</s> <small><span class="text-danger">Акция завершена</span></small>
{% endif %}
</h2>
<br/>
<div class="well well-lg news-container">
<p class="text-muted">
<small>
<span class="glyphicon glyphicon-time"
aria-hidden="true"></span> {{ object.created.strftime('%d.%m.%Y') }}
</small>
</p>
<p class="text-center">
{% set im = object.image %}
<img src="/static/{{ im.url }}" alt="{{ object.title }}" title="{{ object.title }}" style="max-width: 100%" class=""/>
</p>
{{ object.text|linebreaks|safe }}
<hr/>
<div class="row">
<div class="tags col-xs-6">
<h5 class="text-left">
Поделиться ссылкой:</h5>
<script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="small"
data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,gplus"
data-yashareLink="http://batiskaf-kz.kz{{ object.get_absolute_url() }}"
data-yashareTitle="{{ object.title }}" data-yashareTheme="counter"></div>
</div>
</div>
</div>
{% endblock %}

@ -0,0 +1,79 @@
{% extends 'base.jinja' %}
{% block title %}
Акции Батискаф-Казахстан
{% endblock %}
{% block meta_description %}
Акции интернет-магазина подводной охоты и дайвинга Батискаф-Казахстан
{% endblock %}
{% block meta_keywords %}
Акции, Читать, Комментировать, Снаряжение, Батискаф-Казахстан
{% endblock %}
{% block content %}
<div class=" breadcrumbs">
<ol class="breadcrumb breadcrumb-arrow">
<li><a href="/">Главная</a></li>
<li class="active"><span>Акции</span></li>
</ol>
</div>
<script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script>
{% if object_list %}
{% for object in object_list %}
<div class="well well-lg news-container">
<h2 class="text-left">
{% if object.get_status() == 0 %}
<a href="{{ url('promo_detail', args=(object.slug,)) }}">{{ object.title }}</a> <small><span class="text-muted">Акция еще не началась</span></small>
{% elif object.get_status() == 1 %}
<a href="{{ url('promo_detail', args=(object.slug,)) }}">{{ object.title }}</a> <small><span class="text-success">Действующая акция</span></small>
{% else %}
<s><a href="{{ url('promo_detail', args=(object.slug,)) }}">{{ object.title }}</a></s> <small><span class="text-danger">Акция завершена</span></small>
{% endif %}
</h2>
<p class="text-muted">
<small>
Акция действует с <strong>{{ object.act_from.strftime('%d.%m.%Y') }}</strong> до <strong>{{ object.act_to.strftime('%d.%m.%Y') }}</strong>
</small>
</p>
<p class="text-center">
{# {% set im = object.image|thumbnail("400x400") %}#}
<a href="{{ url('promo_detail', args=(object.slug,)) }}"><img src="/static/{{ object.image.url }}"
alt="{{ object.title }}"
title="{{ object.title }}"
style="max-width: 100%"/></a>
</p>
{{ object.text|truncate(520)|linebreaks|safe }}
<p class="text-right"><a href="{{ url('promo_detail', args=(object.slug,)) }}">Продолжить читать &rarr;</a>
</p>
<hr/>
<div class="social-links">
<strong>
Поделиться ссылкой:
<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="small"
data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,gplus"
data-yashareLink="http://batiskaf-kz.kz{{ object.get_absolute_url() }}"
data-yashareTitle="{{ object.title }}" data-yashareTheme="counter"></div>
</strong>
</div>
</div>
{% endfor %}
{% else %}
<div class="alert alert-warning alert-dismissable">
<h4>Пока не проводится ни одной акции</h4>
<p>Пожалуйста, зайдите в этот раздел позже.</p>
<p><a class="btn btn-warning" href="/">Перейти на главную страницу</a>
</p>
</div>
{% endif %}
{% endblock %}

@ -3,6 +3,7 @@ from django.contrib import admin
from django.http import HttpResponse
from api.views import call_order
from news.views import NewsSitemap
from promo.views import PromoSitemap
from store.views import order_view, order_print, ProductSitemap, CategorySitemap, order_kkb, kkb_result
from main.views import *
from rest_framework import routers
@ -57,6 +58,7 @@ sitemaps1 = {
'static': StaticViewSitemap,
'items': ProductSitemap,
'news': NewsSitemap,
'promo': PromoSitemap,
'categories': CategorySitemap,
}
@ -88,6 +90,7 @@ urlpatterns = patterns(
url(r'^api/item/(?P<article>.+)/$', 'main.views.temp_count_update', name='temp_count_update'),
url(r'^api/', include(router.urls)),
url(r'^news/', include('news.urls')),
url(r'^promo/', include('promo.urls')),
url(r'^get_order_amount/$', 'store.views.get_order_amount'),
url(r'^order_call/$', 'api.views.call_order'),
url(r'^order_order/$', 'api.views.order_order'),

@ -0,0 +1,12 @@
from django.contrib import admin
from .models import *
@admin.register(Promo)
class PromoAdmin(admin.ModelAdmin):
list_display = ('title', 'is_public', 'act_from', 'act_to')
prepopulated_fields = {"slug": ("title",)}
list_editable = ('is_public',)
list_filter = ('is_public',)

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import promo.models
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Promo',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)),
('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время')),
('act_from', models.DateTimeField(verbose_name='От')),
('act_to', models.DateTimeField(verbose_name='До')),
('title', models.CharField(max_length=512, verbose_name='Заголовок', unique=True)),
('slug', models.SlugField(max_length=512, verbose_name='Ссылка', unique=True)),
('text', models.TextField(verbose_name='Акция')),
('is_public', models.BooleanField(verbose_name='Публиковать', default=True)),
('image', models.ImageField(verbose_name='Картинка', upload_to=promo.models.photo_filename)),
],
options={
'verbose_name_plural': 'акции',
'verbose_name': 'акция',
},
),
]

@ -0,0 +1,55 @@
from django.core.urlresolvers import reverse
from django.db import models
from django.utils import timezone
def photo_filename(instance, filename):
from slugify import slugify_filename
return 'photo_uploads/' + slugify_filename(filename)
class Promo(models.Model):
created = models.DateTimeField('Дата и время', auto_now_add=True, editable=False)
act_from = models.DateTimeField('От', editable=True)
act_to = models.DateTimeField('До', editable=True)
title = models.CharField('Заголовок', max_length=512, null=False, blank=False, unique=True)
slug = models.SlugField('Ссылка', max_length=512, null=False, blank=False, unique=True)
text = models.TextField('Акция', null=False, blank=False)
is_public = models.BooleanField('Публиковать', default=True)
image = models.ImageField('Картинка', upload_to=photo_filename)
class Meta:
verbose_name = 'акция'
verbose_name_plural = 'акции'
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('promo_detail', args=(self.slug,))
def get_status(self):
from datetime import datetime
if datetime.now() < self.act_from:
return 0
elif self.act_from < datetime.now() < self.act_to:
return 1
else:
return 2
# class NewsComment(models.Model):
# created = models.DateTimeField('Дата и время', auto_now_add=True, editable=False)
# name = models.CharField('Имя', max_length=45, null=False, blank=False)
# email = models.EmailField('Email (не будет опубликован)', null=False, blank=False)
# text = models.TextField('Комментарий', null=False, blank=False)
# reply_to = models.ForeignKey('self', null=True, blank=True)
# news = models.ForeignKey(News, related_name='comments')
# class Meta:
# verbose_name = 'комментарий'
# verbose_name_plural = 'комментарии'
# def __str__(self):
# return '{}: {}'.format(self.name, self.news.title)

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,9 @@
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
from .views import *
urlpatterns = patterns('',
url(r'^$', PromoList.as_view(), name='promo_index'),
url(r'^(?P<slug>[-\w]+)/$',
promo_detail, name='promo_detail'),
)

@ -0,0 +1,32 @@
from django.contrib import messages
from django.contrib.sitemaps import Sitemap
from django.core.mail import mail_managers
from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, DetailView
from django.views.generic.edit import FormView, CreateView
from .models import *
class PromoList(ListView):
model = Promo
template_name = 'promo/list.jinja'
queryset = Promo.objects.filter(is_public=True).order_by('-pk')
def promo_detail(request, slug):
object = get_object_or_404(Promo, slug__iexact=slug, is_public=True)
c = dict(
object=object,
)
return render(request, 'promo/detail.jinja', c)
class PromoSitemap(Sitemap):
changefreq = "never"
priority = 0.7
def items(self):
return Promo.objects.filter(is_public=True)
def lastmod(self, obj):
return obj.created

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save