remotes/origin/stage6
Alexander Burdeiny 9 years ago
parent 335e91a65d
commit 0487534ea4
  1. 18
      conference/models.py
  2. 11
      exposition/models.py
  3. 48
      functions/model_mixin.py
  4. 6
      templates/client/includes/conference/conference_object.html
  5. 5
      templates/client/includes/conference/conference_paid.html
  6. 97
      templates/client/includes/exposition/expo_paid.html
  7. 37
      templates/client/includes/exposition/exposition_object.html

@ -157,15 +157,15 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin):
# excluded = ['tickets']
return super(Conference, self).get_services_detail(None, Service.type.conference)
def get_nearest_events(self):
if self.theme.all():
theme = self.theme.all()[0]
now = datetime.datetime.now()
now = now - datetime.timedelta(days=1)
conferences = Conference.objects.filter(theme__in=[theme], data_begin__gt=now).exclude(id=self.id).order_by('data_begin')
return conferences[:3]
else:
return []
# def get_nearest_events(self):
# if self.theme.all():
# theme = self.theme.all()[0]
# now = datetime.datetime.now()
# now = now - datetime.timedelta(days=1)
# conferences = Conference.objects.filter(theme__in=[theme], data_begin__gt=now).exclude(id=self.id).order_by('data_begin')
# return conferences[:3]
# else:
# return []
def get_news_url(self):
return reverse_lazy('news_conference', kwargs={'slug': self.url})

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import copy
import datetime
from dateutil.relativedelta import relativedelta
from bitfield import BitField
from django.conf import settings
@ -255,16 +256,6 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
0.33: _(u'Раз в 3 года'), 0.25: _(u'Раз в 4 года'), 0.2: _(u'Раз в 5 лет')}
return periodic.get(self.periodic)
def get_nearest_events(self):
if self.theme.all():
theme = self.theme.all()[0]
now = datetime.datetime.now()
now = now - datetime.timedelta(days=1)
expositions = Exposition.objects.filter(theme__in=[theme], data_begin__gt=now).exclude(id=self.id).order_by('data_begin')
return expositions[:3]
else:
return []
def get_catalog_url(self):
return self.catalog

@ -2,11 +2,15 @@
import copy
import calendar as python_calendar
from pytils.dt import ru_strftime
import datetime
from dateutil.relativedelta import relativedelta
from django.conf import settings
from django.db.models import Q
from django.utils.translation import ugettext as _
from django.utils.translation import get_language
from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse
from django.http import QueryDict
from hvad.utils import get_translation, set_cached_translation, get_cached_translation
@ -101,6 +105,50 @@ class EventMixin(object):
}
return ctx
def get_nearest_events(self):
if getattr(self, '_nearest_events', None) is None:
model = self.__class__
result = []
tags = self.tag.all().values_list('pk', flat=True)
themes = self.theme.all().values_list('pk', flat=True)
now = datetime.datetime.now()
month = now + relativedelta(months=1)
month2 = now + relativedelta(months=2)
exclude_pks = set([self.pk])
m0 = m1 = m2 = False
for params in [{'tag__in': tags}, {'theme__in': themes}]:
qs = model.objects.language().filter(**params).order_by('data_begin')
events_m2 = qs.filter(data_begin__gte=month2).exclude(pk__in=exclude_pks)
if not m2 and events_m2.exists():
result.extend(events_m2[:1])
exclude_pks.update([x.pk for x in result])
m2 = True
events_m = qs.filter(data_begin__gte=month).exclude(pk__in=exclude_pks)
if not m1 and events_m.exists():
offset = 2 - len(result)
result.extend(events_m[:offset])
exclude_pks.update([x.pk for x in result])
m1 = True
events = qs.filter(data_begin__gte=now).exclude(pk__in=exclude_pks)
if not m0 and events.exists():
offset = 3 - len(result)
result.extend(events[:offset])
exclude_pks.update([x.pk for x in result])
m0 = True
result.sort(key=lambda x: x.data_begin)
self._nearest_events = result
return self._nearest_events
def get_nearest_events_url(self):
url_params = QueryDict('', mutable=True)
url_params.update({
'date_from': datetime.datetime.now().strftime('%d.%m.%Y'),
'event_type': 1 if self.event_type == 'expo' else 2,
})
url_params.setlist('tag', self.tag.all().values_list('pk', flat=True))
url_params.setlist('theme', self.theme.all().values_list('pk', flat=True))
return mark_safe(reverse('events:main') + '?' + url_params.urlencode())
@property
def get_dates(self):
return get_dates(self.data_begin, self.data_end)

@ -297,9 +297,9 @@
</div>
{% include 'client/includes/booking_block.html' with city=event.city place=event.place event=event %}
<hr />
{% if event.get_nearest_events|slice:":6" %}
{% if event.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие конференции по тематике' %} <a href="{{ expo_catalog }}theme/{{ event.theme.all.0.url }}">«{{ event.theme.all.0 }}»</a></div>
<div class="sect-title">{% trans 'Другие конференции, которые могут быть вам интересны' %}</div>
<ul class="cat-list cl-exhibitions">
{% for exp in event.get_nearest_events %}
<li class="cl-item">
@ -354,6 +354,8 @@
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ event.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}

@ -332,9 +332,9 @@
{% include 'client/includes/booking_block.html' with city=event.city place=event.place event=event %}
<hr />
{% if event.get_nearest_events|slice:":6" %}
{% if event.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие конференции по тематике' %} <a href="{{ expo_catalog }}theme/{{ event.theme.all.0.url }}">«{{ event.theme.all.0 }}»</a></div>
<div class="sect-title">{% trans 'Другие конференции, которые могут быть вам интересны' %}</div>
<ul class="cat-list cl-exhibitions">
{% for exp in event.get_nearest_events %}
<li class="cl-item">
@ -389,6 +389,7 @@
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ event.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}

@ -326,54 +326,67 @@
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
<hr />
{% if exposition.get_nearest_events|slice:":6" %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие выставки по тематике' %} <a href="{{ expo_catalog }}theme/{{ exposition.theme.all.0.url }}">«{{ exposition.theme.all.0 }}»</a></div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ exp.get_permanent_url }}">
<div class="cli-pict">
{% with obj=exp %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
{% if exposition.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">{% trans 'Другие выставки, которые могут быть вам интересны' %}</div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ exp.get_permanent_url }}">
<div class="cli-pict">
{% with obj=exp %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.approved %}
<div class="cli-approved">
<img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=exp %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=exp %}
{% include 'client/includes/show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="{{ exposition.catalog }}country/{{ exp.country.url }}/">{{ exp.country }}</a>, <a href="{{ exposition.catalog }}city/{{ exp.city.url }}/">{{ exp.city }}</a>
{% if exp.place %}
, <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %}
</div>
<div class="cli-place">
<a href="{{ exposition.catalog }}country/{{ exp.country.url }}/">{{ exp.country }}</a>, <a href="{{ exposition.catalog }}city/{{ exp.city.url }}/">{{ exp.city }}</a>
{% if exp.place %}
, <a href="{{ exp.place.get_permanent_url }}">{{ exp.place }}</a>
{% endif %}
</div>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ exposition.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% endif %}
<div class="e-cat look-also">
<div class="sect-title">{% trans 'Смотрите также:' %}</div>

@ -324,9 +324,9 @@
</div>
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
<hr />
{% if exposition.get_nearest_events|slice:":6" %}
{% if exposition.get_nearest_events %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие выставки по тематике' %} <a href="{{ expo_catalog }}theme/{{ exposition.theme.all.0.url }}">«{{ exposition.theme.all.0 }}»</a></div>
<div class="sect-title">{% trans 'Другие выставки, которые могут быть вам интересны' %}</div>
<ul class="cat-list cl-exhibitions">
{% for exp in exposition.get_nearest_events %}
<li class="cl-item">
@ -340,24 +340,26 @@
</a>
<div class="cli-info">
<div class="cli-top clearfix">
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.rsva.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/rsva.jpg' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.exporating.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/exporating_logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
{% if exp.quality_label.ufi.is_set %}
<div class="cli-approved">
<img width="52" height="42" src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
</div>
{% endif %}
<header>
<div class="cli-title"><a href="{{ exp.get_permanent_url }}">{{ exp.name|safe }}</a></div>
</header>
<div class="cli-descr">
{{ exp.main_title|safe|linebreaks }}
</div>
@ -379,6 +381,7 @@
</div>
</li>
{% endfor %}
<li><a class="button more" href="{{ exposition.get_nearest_events_url|safe }}">{% trans 'Смотреть все' %}</a></li>
</ul>
</div>
{% include 'client/includes/banners/detail_inner_3.html' %}

Loading…
Cancel
Save