fast Commit

remotes/origin/1203
Назар Котюк 11 years ago
parent 1e9734c12a
commit 786f5d724a
  1. 9
      article/models.py
  2. 4
      article/urls.py
  3. 40
      article/views.py
  4. 68
      exposition/management/commands/expo_old.py
  5. 2
      file/forms.py
  6. 3
      file/models.py
  7. 4
      functions/custom_views.py
  8. 9
      functions/search_forms.py
  9. 2
      templates/client/article/news_list.html
  10. 2
      templates/client/exposition/search.html
  11. 2
      templates/client/includes/article/article_preview.html
  12. 12
      templates/client/includes/catalog_paginator.html
  13. 4
      templates/client/includes/exposition/search_result.html
  14. 6
      templates/client/includes/footer.html
  15. 2
      templates/client/includes/index/confs.html
  16. 2
      templates/client/includes/index/expos.html
  17. 16
      templates/client/service/participation.html
  18. 4
      theme/models.py
  19. 16
      theme/search_indexes.py

@ -240,6 +240,15 @@ class Article(TranslatableModel):
return preview[0] return preview[0]
else: else:
return None return None
def get_blog_preview2(self):
preview = self.files.filter(purpose='preview2')
if preview:
return preview[0]
else:
return None
def get_catalog(self): def get_catalog(self):
if self.type == 1: if self.type == 1:
return '/blogs/' return '/blogs/'

@ -1,9 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, url from django.conf.urls import patterns, url
from views import BlogList, NewsList, BlogDetail, NewsDetail, NewsTagCatalog from views import BlogList, NewsList, BlogDetail, NewsDetail, NewsTagCatalog, BlogsTagCatalog
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^blogs/tag/(?P<slug>.*)/page/(?P<page>\d+)/$', BlogsTagCatalog.as_view()),
url(r'^blogs/page/(?P<page>\d+)/$', BlogList.as_view()), url(r'^blogs/page/(?P<page>\d+)/$', BlogList.as_view()),
url(r'^blogs/tag/(?P<slug>.*)/$', BlogsTagCatalog.as_view()),
url(r'^blogs/$', BlogList.as_view()), url(r'^blogs/$', BlogList.as_view()),

@ -161,8 +161,46 @@ class NewsTagCatalog(MetadataMixin, ListView):
class BlogsTagCatalog(MetadataMixin, ListView):
model = Article
template_name = 'client/article/catalog.html'
catalog_url = '/blogs/tag/'
filter_object = None
year = None
month = None
def get_queryset(self):
slug = self.kwargs.get('slug')
tag = get_object_or_404(Tag, url=slug)
self.filter_object = tag
qs = Article.objects.blogs().filter(tag=tag)
year = self.kwargs.get('year')
if year:
qs = qs.filter(publish_date__year=year)
# info for breadscrumbs
self.year = {'text': year, 'link': '%s%s/%s/'%(self.catalog_url, self.filter_object.url, year)}
month = self.kwargs.get('month')
monthes = {'jan': {'value': 1, 'name': _(u'Январь')}, 'feb': {'value': 2, 'name': _(u'Февраль')},
'mar': {'value': 3, 'name': _(u'Март')}, 'apr': {'value': 4, 'name': _(u'Апрель')},
'may': {'value': 5, 'name': _(u'Май')}, 'jun': {'value': 6, 'name': _(u'Июнь')},
'jul': {'value': 7, 'name': _(u'Июль')}, 'aug': {'value': 8, 'name': _(u'Август')},
'sep': {'value': 9, 'name': _(u'Сентябрь')}, 'oct': {'value': 10, 'name': _(u'Октябрь')},
'nov': {'value': 11, 'name': _(u'Ноябрь')}, 'dec': {'value': 12, 'name': _(u'Декабрь')}}
if month and monthes.get(month):
qs = qs.filter(publish_date__month=monthes[month]['value'])
self.month = {'text': monthes[month]['name'], 'link': '%s%s/%s/%s/'%(self.catalog_url, self.filter_object.url, year, month)}
return qs
return qs
def get_context_data(self, **kwargs):
context = super(BlogsTagCatalog, self).get_context_data(**kwargs)
context['filter_object'] = self.filter_object
context['year'] = self.year
context['month'] = self.month
context['catalog_url'] = self.catalog_url
return context

@ -13,6 +13,71 @@ from city.models import City
file_path = settings.MEDIA_ROOT + 'exposition/bad_expos.txt' file_path = settings.MEDIA_ROOT + 'exposition/bad_expos.txt'
import datetime
from theme.models import Theme
from conference.models import Conference
class Command(BaseCommand):
def handle(self, *args, **options):
db = MySQLdb.connect(host="localhost",
user="expomap",
passwd="7FbLtAGjse",
db="old_db",
charset='utf8',
cursorclass=DictCursor)
cursor = db.cursor()
conf_old = """
SELECT DISTINCT (products_to_categories.products_id), url as old_url
FROM `products_to_categories`
LEFT JOIN `products` ON products_to_categories.products_id=products.products_id
LEFT JOIN `products_description` ON products_to_categories.products_id=products_description.products_id
WHERE `products_status` =1
AND `conference` =0
"""
find_themes = "SELECT categories_id FROM `products_to_categories` WHERE `products_id` =%d"
cursor.execute(conf_old)
conferences = cursor.fetchall()
#for item in conferences:
cursor.execute(find_themes%conferences[0]['products_id'])
day = datetime.date.today()
day = day.replace(month=1, day=1)
for item in conferences:
old_url = item['old_url']
if not old_url:
continue
try:
expo = Exposition.objects.get(old_url=old_url)
except:
continue
if expo.data_begin > day:
continue
cursor.execute(find_themes%item['products_id'])
themes_id = [i['categories_id'] for i in cursor.fetchall()]
theme_qs = Theme.objects.filter(id__in=themes_id)
expo.theme.add(*theme_qs)
print(expo)
# if item['categories_id'] == 0:
# continue
# Theme.objects.get(id=item['categories_id'])
#print(result)
'''
class Command(BaseCommand): class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
db = MySQLdb.connect(host="localhost", db = MySQLdb.connect(host="localhost",
@ -100,4 +165,5 @@ class Command(BaseCommand):
file = open(file_path, 'w') file = open(file_path, 'w')
for item in bad_expos: for item in bad_expos:
file.write("%s\n" % item) file.write("%s\n" % item)
file.close() file.close()
'''

@ -17,7 +17,7 @@ import pytils, re
class FileForm(forms.Form): class FileForm(forms.Form):
file_path = forms.FileField(label='Выберите файл') file_path = forms.FileField(label='Выберите файл')
model = forms.CharField(required=False, widget=forms.HiddenInput()) model = forms.CharField(required=False, widget=forms.HiddenInput())
purposes = [('scheme teritory','Схема территории'),('preview','Превью')] purposes = [('scheme teritory','Схема территории'),('preview','Превью'), ('preview2','Превью2')]
purpose = forms.ChoiceField(label='Назначение', choices=purposes) purpose = forms.ChoiceField(label='Назначение', choices=purposes)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

@ -20,7 +20,8 @@ PURPOSES = (('photo', 'Фото'),
('map','Карта'), ('map','Карта'),
('scheme teritory','Схема територии'), ('scheme teritory','Схема територии'),
('diplom','Дипломы'), ('diplom','Дипломы'),
('preview','Превью') ('preview','Превью'),
('preview2','Превью'),
) )
class FileModel(TranslatableModel): class FileModel(TranslatableModel):

@ -227,7 +227,7 @@ class ExpoListView(ExpoMixin, ListView):
""" """
""" """
paginate_by = 10 paginate_by = settings.CLIENT_PAGINATION
params = None params = None
single_page = False single_page = False
search_form = None search_form = None
@ -320,7 +320,7 @@ class EventDetail(ExpoMixin, DetailView):
from haystack.query import EmptySearchQuerySet from haystack.query import EmptySearchQuerySet
class ExpoSearchView(ListView): class ExpoSearchView(ListView):
paginate_by = 10 paginate_by = settings.CLIENT_PAGINATION
template_name = None template_name = None
search_form = None search_form = None
model = None model = None

@ -221,7 +221,7 @@ class AbstactSearchForm(forms.Form):
sqs = sqs.filter(place_filter) sqs = sqs.filter(place_filter)
return sqs#.order_by('data_begin') return sqs#.order_by('data_begin')
import datetime
class ExpositionSearchForm(AbstactSearchForm): class ExpositionSearchForm(AbstactSearchForm):
search_url = '/expo/search/' search_url = '/expo/search/'
autocomplete_url = '/search-form/autosearch/exposition/' autocomplete_url = '/search-form/autosearch/exposition/'
@ -245,10 +245,10 @@ class ExpositionSearchForm(AbstactSearchForm):
choices=[(item.id, item.name) for item in City.used.expo_cities()] choices=[(item.id, item.name) for item in City.used.expo_cities()]
) )
fr = forms.DateField(required=False, fr = forms.DateField(required=False, input_formats=('%d.%m.%Y',),
widget=forms.DateInput(attrs={'class': 'date', 'id': 'dateFrom', widget=forms.DateInput(attrs={'class': 'date', 'id': 'dateFrom',
'placeholder': _(u'дд.мм.гггг')})) 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(required=False, to = forms.DateField(required=False, input_formats=('%d.%m.%Y',),
widget=forms.DateInput(attrs={'class': 'date', 'id': 'dateTo', widget=forms.DateInput(attrs={'class': 'date', 'id': 'dateTo',
'placeholder': _(u'дд.мм.гггг')})) 'placeholder': _(u'дд.мм.гггг')}))
@ -264,6 +264,8 @@ class ExpositionSearchForm(AbstactSearchForm):
q = self.cleaned_data.get('q') q = self.cleaned_data.get('q')
w = self.cleaned_data.get('w') w = self.cleaned_data.get('w')
fr = self.cleaned_data.get('fr') fr = self.cleaned_data.get('fr')
if not fr:
fr = datetime.date.today()
to = self.cleaned_data.get('to') to = self.cleaned_data.get('to')
th = self.cleaned_data.get('th') th = self.cleaned_data.get('th')
tg = self.cleaned_data.get('tg') tg = self.cleaned_data.get('tg')
@ -271,6 +273,7 @@ class ExpositionSearchForm(AbstactSearchForm):
ci = self.cleaned_data.get('ci') ci = self.cleaned_data.get('ci')
area = self.cleaned_data.get('area') area = self.cleaned_data.get('area')
sqs = SearchQuerySet().models(Exposition).all() sqs = SearchQuerySet().models(Exposition).all()
if q: if q:

@ -54,5 +54,5 @@
</script> </script>
{% endblock %} {% endblock %}
{% block paginator %} {% block paginator %}
{% include 'includes/catalog_paginator.html' with page_obj=page_obj %} {% include 'client/includes/catalog_paginator.html' with page_obj=page_obj %}
{% endblock %} {% endblock %}

@ -18,7 +18,7 @@
{% block content_list %} {% block content_list %}
{% with query=object_list %} {% with query=object_list %}
{% if query %} {% if query %}
{% include 'includes/exposition/search_result.html' %} {% include 'client/includes/exposition/search_result.html' %}
{% else %} {% else %}
<p class="message-not-found"> <p class="message-not-found">
<span> <span>

@ -2,7 +2,7 @@
{% load thumbnail %} {% load thumbnail %}
{% if obj.get_blog_preview %} {% if obj.get_blog_preview %}
{% thumbnail obj.get_blog_preview.file_path "250x180" as im %} {% thumbnail obj.get_blog_preview2.file_path "250x180" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="pic" alt=""> <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="pic" alt="">
{% endthumbnail %} {% endthumbnail %}
{% else %} {% else %}

@ -8,38 +8,38 @@
<div class="pg-info"> Показано {{ page_obj.start_index }} - {{ page_obj.end_index }} <i>(всего {{ page_obj.paginator.count }} позиций)</i></div> <div class="pg-info"> Показано {{ page_obj.start_index }} - {{ page_obj.end_index }} <i>(всего {{ page_obj.paginator.count }} позиций)</i></div>
<div class="pg-body"> <div class="pg-body">
{% if page_obj.has_previous %} {% if page_obj.has_previous %}
<a class="pg-prev" href="{{ path }}page/{{ page_obj.previous_page_number }}/">Предыдущая</a> <a class="pg-prev" href="{{ path }}page/{{ page_obj.previous_page_number }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">Предыдущая</a>
{% else %} {% else %}
<a class="pg-prev disabled" href="#">Предыдущая</a> <a class="pg-prev disabled" href="#">Предыдущая</a>
{% endif %} {% endif %}
<ul> <ul>
{% if page_obj.number > 2 %} {% if page_obj.number > 2 %}
<li><a href="{{ path }}page/{{ 1 }}/">{{ 1 }}</a></li> <li><a href="{{ path }}page/{{ 1 }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">{{ 1 }}</a></li>
{% if page_obj.number > 3 %} {% if page_obj.number > 3 %}
<li>...</li> <li>...</li>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if page_obj.has_previous %} {% if page_obj.has_previous %}
<li><a href="{{ path }}page/{{ page_obj.previous_page_number }}/">{{ page_obj.previous_page_number }}</a></li> <li><a href="{{ path }}page/{{ page_obj.previous_page_number }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">{{ page_obj.previous_page_number }}</a></li>
{% endif %} {% endif %}
<li><b>{{ page_obj.number }}</b></li> <li><b>{{ page_obj.number }}</b></li>
{% if page_obj.has_next %} {% if page_obj.has_next %}
<li><a href="{{ path }}page/{{ page_obj.next_page_number }}/">{{ page_obj.next_page_number }}</a></li> <li><a href="{{ path }}page/{{ page_obj.next_page_number }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">{{ page_obj.next_page_number }}</a></li>
{% endif %} {% endif %}
{% if page_obj.paginator.num_pages|subtract:page_obj.number > 1 %} {% if page_obj.paginator.num_pages|subtract:page_obj.number > 1 %}
{% if page_obj.paginator.num_pages|subtract:page_obj.number > 2 %} {% if page_obj.paginator.num_pages|subtract:page_obj.number > 2 %}
<li>...</li> <li>...</li>
{% endif %} {% endif %}
<li><a href="{{ path }}page/{{ page_obj.paginator.num_pages }}/">{{ page_obj.paginator.num_pages }}</a></li> <li><a href="{{ path }}page/{{ page_obj.paginator.num_pages }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">{{ page_obj.paginator.num_pages }}</a></li>
{% endif %} {% endif %}
</ul> </ul>
{% if page_obj.has_next %} {% if page_obj.has_next %}
<a class="pg-next" href="{{ path }}page/{{ page_obj.next_page_number }}/">Следующая</a> <a class="pg-next" href="{{ path }}page/{{ page_obj.next_page_number }}/{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}">Следующая</a>
{% else %} {% else %}
<a class="pg-next disabled" href="#">Следующая</a> <a class="pg-next disabled" href="#">Следующая</a>
{% endif %} {% endif %}

@ -41,9 +41,9 @@
</div> </div>
{% if result.object.country %} {% if result.object.country %}
<div class="cli-place"> <div class="cli-place">
<a href="#">{{ result.object.country }}</a>, <a href="#">{{ result.object.city }}</a>, <a href="{{ result.object.catalog }}country/{{ result.object.country.url }}/">{{ result.object.country }}</a>, <a href="{{ result.object.catalog }}city/{{ result.object.city.url }}/">{{ result.object.city }}</a>
{% if result.object.place %} {% if result.object.place %}
<a href="{{ result.object.place.get_permanent_url }}">{{ result.object.place }}</a> , <a href="{{ result.object.place.get_permanent_url }}">{{ result.object.place }}</a>
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}

@ -24,8 +24,8 @@
<ul class="main-menu"> <ul class="main-menu">
<li class="sub"><span>{% trans 'События' %}</span> <li class="sub"><span>{% trans 'События' %}</span>
<ul> <ul>
<li><a href="{{ expo_catalog }}">{% trans 'выставки' %}</a></li> <li><a href="/expo/">{% trans 'выставки' %}</a></li>
<li><a href="/conferences/">{% trans 'конференции' %}</a></li> <li><a href="/conference/">{% trans 'конференции' %}</a></li>
</ul> </ul>
</li> </li>
<li><a href="/places/">{% trans 'места' %}</a></li> <li><a href="/places/">{% trans 'места' %}</a></li>
@ -35,7 +35,7 @@
<ul class="s-menu"> <ul class="s-menu">
<li><a href="/about/">{% trans 'о нас' %}</a></li> <li><a href="/about/">{% trans 'о нас' %}</a></li>
<li><a href="/partners/">{% trans 'партнеры' %}</a></li> <li><a href="/partners/">{% trans 'партнеры' %}</a></li>
<li><a href="#">{% trans 'реклама' %}</a></li> <li><a href="/advertising/">{% trans 'реклама' %}</a></li>
{% comment %} {% comment %}
<!-- task EXPO-145--> <!-- task EXPO-145-->

@ -6,4 +6,4 @@
<li><a href="/conference/theme/{{ theme.url }}/"><span>{{ theme.name }}</span>&nbsp;<i>({{ theme.conferences_number }})</i></a></li> <li><a href="/conference/theme/{{ theme.url }}/"><span>{{ theme.name }}</span>&nbsp;<i>({{ theme.conferences_number }})</i></a></li>
{% endfor %} {% endfor %}
</ul> </ul>
<footer><a class="more" href="/conference/">{% trans 'Все конференции' %}</a></footer> <footer><a class="more" href="/conference/theme/">{% trans 'Все тематики' %}</a></footer>

@ -6,4 +6,4 @@
<li><a href="/expo/theme/{{ theme.url }}/"><span>{{ theme.name }}</span>&nbsp;<i>({{ theme.expositions_number }})</i></a></li> <li><a href="/expo/theme/{{ theme.url }}/"><span>{{ theme.name }}</span>&nbsp;<i>({{ theme.expositions_number }})</i></a></li>
{% endfor %} {% endfor %}
</ul> </ul>
<footer><a class="more" href="/expo/">{% trans 'Все выставки' %}</a></footer> <footer><a class="more" href="/expo/theme/">{% trans 'Все тематики' %}</a></footer>

@ -35,19 +35,18 @@
<div class="rqi-pict"><img src="{% static 'client/img/_del-temp/request-participation.png' %}" alt="" /></div> <div class="rqi-pict"><img src="{% static 'client/img/_del-temp/request-participation.png' %}" alt="" /></div>
<div class="rqi-body"> <div class="rqi-body">
<h2>{% trans 'Предлагаем Вам услуги профессиональной организации Вашего участия в выставке' %}{% if object %} {{ object.name }} {% endif %}</h2> <h2>{% trans 'Увеличим эффективность Вашего участия в выставке' %}{% if object %} {{ object.name }} {% endif %} {% trans 'как минимум на 50%' %}</h2>
<div class="rqi-cols"> <div class="rqi-cols">
<ul> <ul>
<li>{% trans 'вся информация о выставке' %}</li> <li>{% trans 'Мы поможем превратить посетителей стенда в клиентов' %}</li>
<li>{% trans 'экономия времени' %}</li> <li>{% trans 'Мы удержим Вас от пустых трат' %}</li>
<li>{% trans 'все потенциальные контакты' %}</li> <li>{% trans 'Мы посчитаем отдачу и покажем результаты в цифрах' %}</li>
</ul> </ul>
<ul> <ul>
<li>{% trans 'вся информация о выставке' %}</li> <li>{% trans 'Мы начнем привлекать Вам клиентов еще до выставки' %}</li>
<li>{% trans 'экономия времени' %}</li> <li>{% trans 'Мы знаем тонкости и узкие места организации' %}</li>
<li>{% trans 'все потенциальные контакты' %}</li>
</ul> </ul>
</div> </div>
@ -172,7 +171,8 @@
<hr /> <hr />
<div class="rq-note"> <div class="rq-note">
{% trans '<p>За организацию Вашего участия в зарубежной выставке наша компания берет дополнительный % от контракта с организатором. Его величина варьируется от 5 до 15% и зависит от метража арендуемой площади и необходимых дополнительных услуг, которые определяют общую трудоемкость процесса и состав специалистов.</p>' %} {% trans '<p>Укажите в запросе исходную информацию о Ваших целях и задачах, и мы проверим, насколько'%}
{% if object %} {{ object.name }} {%else %} {% trans 'событие' %}{%endif %} {% trans 'им соответствует. Если событие подходит, мы свяжемся с организаторами, чтобы уточнить наличие свободных площадей и вместе с Вами начнем создавать концепцию Вашего участия</p>' %}
</div> </div>
{% if messages %} {% if messages %}

@ -56,11 +56,11 @@ class Theme(TranslatableModel):
def expositions_number(self): def expositions_number(self):
return Exposition.objects.filter(theme__id=self.id).count() return Exposition.enable.upcoming().filter(theme__id=self.id).count()
def conferences_number(self): def conferences_number(self):
return Conference.objects.filter(theme__id=self.id).count() return Conference.enable.upcoming().filter(theme__id=self.id).count()
def seminars_number(self): def seminars_number(self):

@ -17,6 +17,14 @@ class ThemeIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin):
parent_ru = indexes.CharField() parent_ru = indexes.CharField()
catalog_name_en = indexes.CharField() catalog_name_en = indexes.CharField()
catalog_name_ru = indexes.CharField() catalog_name_ru = indexes.CharField()
data_begin = indexes.DateField()
data_end = indexes.DateField()
def prepare_data_begin(self, obj):
return None
def prepare_data_end(self, obj):
return None
def prepare_parent_en(self, obj): def prepare_parent_en(self, obj):
translation.activate('en') translation.activate('en')
@ -101,6 +109,14 @@ class TagIndex(indexes.SearchIndex, indexes.Indexable, ExpoSearchMixin):
parent_ru = indexes.CharField() parent_ru = indexes.CharField()
catalog_name_en = indexes.CharField() catalog_name_en = indexes.CharField()
catalog_name_ru = indexes.CharField() catalog_name_ru = indexes.CharField()
data_begin = indexes.DateField()
data_end = indexes.DateField()
def prepare_data_begin(self, obj):
return None
def prepare_data_end(self, obj):
return None
def prepare_parent_en(self, obj): def prepare_parent_en(self, obj):
#translation.activate('en') #translation.activate('en')

Loading…
Cancel
Save