diff --git a/article/views.py b/article/views.py index ef671190..2d3bc7d8 100644 --- a/article/views.py +++ b/article/views.py @@ -84,6 +84,15 @@ class BlogList(ListView): context = super(BlogList, self).get_context_data(object_list=self.object_list) if self.request.GET: filter_form = ArticleFilterForm(self.request.GET) + tags = self.request.GET.getlist('tag') + if u'' in tags: + tags.remove(u'') + if tags: + tags = tags[0].split(',') + tag_qs = Tag.objects.filter(id__in=tags) + tags = [{'id': str(tag.id), 'text': tag.name} for tag in tag_qs] + filter_form.fields['tag'].widget.attrs['data-predifined'] = json.dumps(tags) + filter_form.fields['tag'].widget.attrs['value'] = '' else: filter_form = ArticleFilterForm() diff --git a/exposition/urls.py b/exposition/urls.py index 47ddd7d9..bef39cb4 100644 --- a/exposition/urls.py +++ b/exposition/urls.py @@ -26,7 +26,7 @@ urlpatterns = patterns('', url(r'expo/country/(?P.*)/page/(?P\d+)/$', ExpoCountryCatalog.as_view()), url(r'expo/country/(?P.*)/(?P\d+)/(?P.*)/$', ExpoCountryCatalog.as_view()), url(r'expo/country/(?P.*)/(?P\d+)/$', ExpoCountryCatalog.as_view()), - url(r'expo/country/(?P.*)/$', ExpoCountryCatalog.as_view()), + url(r'expo/country/(?P.*)/$', ExpoCountryCatalog.as_view(), {'meta_id':5}), # city catalog url(r'expo/city/$', ExpositionByCity.as_view()), url(r'expo/city/(?P.*)/(?P\d+)/(?P.*)/page/(?P\d+)/$', ExpoCityCatalog.as_view()), @@ -67,14 +67,14 @@ urlpatterns = patterns('', url(r'expo/(?P.*)/service/(?P.*)/', ExpositionServiceView.as_view()), # expo list - url(r'expo/(?P\d+)/(?P.*)/page/(?P\d+)/$', ExpoList.as_view()), - url(r'expo/(?P\d+)/page/(?P\d+)/$', ExpoList.as_view()), - url(r'expo/(?P\d+)/(?P.*)/$', ExpoList.as_view()), - url(r'expo/(?P\d+)/$', ExpoList.as_view()), - url(r'expo/page/(?P\d+)/$', ExpoList.as_view()), + url(r'expo/(?P\d+)/(?P.*)/page/(?P\d+)/$', ExpoList.as_view(), {'meta_id':4}), + url(r'expo/(?P\d+)/page/(?P\d+)/$', ExpoList.as_view(), {'meta_id':3}), + url(r'expo/(?P\d+)/(?P.*)/$', ExpoList.as_view(), {'meta_id':4}), + url(r'expo/(?P\d+)/$', ExpoList.as_view(), {'meta_id':3}), + url(r'expo/page/(?P\d+)/$', ExpoList.as_view(), {'meta_id':2}), # expo page url(r'expo/(?P.*)/$', ExpoDetail.as_view()),# event - url(r'expo/$', ExpoList.as_view()), + url(r'expo/$', ExpoList.as_view(), {'meta_id':2}), diff --git a/exposition/views.py b/exposition/views.py index f960cf63..7eed4ccd 100644 --- a/exposition/views.py +++ b/exposition/views.py @@ -22,6 +22,7 @@ from note.models import Note from service.order_forms import AdvertiseForm from functions.search_forms import ExpositionSearchForm from functions.custom_views import ExpoSearchView +from meta.views import MetadataMixin @@ -216,7 +217,7 @@ class ExpositionServiceView(FormMixin, DetailView): return self.initial.copy() -class ExpoList(ListView): +class ExpoList(MetadataMixin, ListView): model = Exposition paginate_by = settings.CLIENT_PAGINATION template_name = 'client/exposition/exposition_list.html' @@ -320,12 +321,13 @@ class ExpoCatalog(ListView): context['catalog_url'] = self.catalog_url return context -class ExpoCountryCatalog(ExpoCatalog): +class ExpoCountryCatalog(MetadataMixin, ExpoCatalog): catalog_url = '/expo/country/' def get_filtered_qs(self): #this method used in parent get_queryset slug = self.kwargs.get('slug') country = get_object_or_404(Country, url=slug) + self.kwargs['country'] = country self.filter_object = country qs = self.model.enable.filter(country=country) return qs diff --git a/meta/models.py b/meta/models.py index d3b8c36b..f00f6485 100644 --- a/meta/models.py +++ b/meta/models.py @@ -2,6 +2,7 @@ from django.db import models from django.utils import translation from django.db.models.signals import post_save +from django.utils.translation import ugettext_lazy as _ from hvad.models import TranslatableModel, TranslatedFields, TranslationManager from pymorphy.django_conf import default_morph as morph from functions.signal_handlers import post_save_handler @@ -15,7 +16,7 @@ class MetaSetting(TranslatableModel): h1 = models.CharField(max_length=255, blank=True), ) - params = {'EXPONAME':{'name': 'name'}, + object_params = {'EXPONAME':{'name': 'name'}, 'EXPONAME_YA':{'name': 'name', 'inflect': True}, 'EXPOCOUNTRY':{'name': 'country'}, 'EXPOCOUNTRY_YA':{'name': 'country', 'inflect': True}, @@ -26,21 +27,32 @@ class MetaSetting(TranslatableModel): 'EXPOMONTH':{'name': 'month'}, 'EXPOYEAR':{'name': 'year'}, } - + params = {} + monthes = {'jan': _(u'январе'), 'feb': _(u'феврале'), 'mar': _(u'марте'), 'apr': _(u'апреле'), + 'may': _(u'мае'), 'jun': _(u'июне'), u'jul': _(u'июле'), 'aug': _(u'августе'), + 'sep': _(u'сентябре'), 'oct': _(u'октябре'), 'nov': _(u'ноябре'), 'dec': _(u'декабре'),} def __unicode__(self): return self.name - def generate_meta(self, obj): + def generate_meta(self, params, obj=None): """ obj must be in current language """ + lang = translation.get_language() - params = {'EXPONAME': getattr(obj, 'name', '')} + if obj: + params.update({'EXPONAME': getattr(obj, 'name', '')}) + + if params.get('month'): + month = params['month'] + params['month'] = self.monthes[month] + tr = self.translations.get(language_code=lang) title = tr.title.format(**params) description = tr.description.format(**params) keywords = []#tr.keywords.format(**params) h1 = tr.h1.format(**params) + return {'title': title, 'description': description, 'keywords': keywords, 'h1': h1} def get_param(self, obj, field): @@ -53,4 +65,21 @@ class MetaSetting(TranslatableModel): return s + def get_title(self): + title = self.title + return title + + def get_h1(self): + h1 = self.h1 + return h1 + + def get_description(self): + description = self.description + return description + + def get_keywords(self): + keywords = self.keywords + return [] + + post_save.connect(post_save_handler, sender=MetaSetting) \ No newline at end of file diff --git a/meta/views.py b/meta/views.py index f362194a..bcbebe11 100644 --- a/meta/views.py +++ b/meta/views.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals from django.core.exceptions import ImproperlyConfigured +from models import MetaSetting from . import settings @@ -150,18 +151,34 @@ class MetadataMixin(object): return self.site_name or settings.SITE_NAME def get_context_data(self, **kwargs): + context = super(MetadataMixin, self).get_context_data(**kwargs) - context['meta'] = self.get_meta_class()( - use_og=self.use_og, - use_sites=self.use_sites, - title=self.get_meta_title(context=context), - h1=self.get_meta_h1(context=context), - - description=self.get_meta_description(context=context), - keywords=self.get_meta_keywords(context=context), - image=self.get_meta_image(context=context), - url=self.get_meta_url(context=context), - object_type=self.get_meta_object_type(context=context), - site_name=self.get_meta_site_name(context=context), - ) - return context + + meta_id = self.kwargs.get('meta_id') + if meta_id: + try: + meta_set = MetaSetting.objects.get(id=meta_id) + except MetaSetting.DoesNotExist: + return context + params = dict(self.kwargs) + data = meta_set.generate_meta(params) + + self.title = data.get('title') + self.h1 = data.get('h1') + self.description = data.get('description') + self.keywords = data.get('keywords', []) + + context['meta'] = self.get_meta_class()( + use_og=self.use_og, + use_sites=self.use_sites, + title=self.get_meta_title(context=context), + h1=self.get_meta_h1(context=context), + description=self.get_meta_description(context=context), + keywords=self.get_meta_keywords(context=context), + image=self.get_meta_image(context=context), + url=self.get_meta_url(context=context), + object_type=self.get_meta_object_type(context=context), + site_name=self.get_meta_site_name(context=context), + ) + + return context \ No newline at end of file diff --git a/templates/admin/meta/meta_list.html b/templates/admin/meta/meta_list.html index f03f661b..d3eb5384 100644 --- a/templates/admin/meta/meta_list.html +++ b/templates/admin/meta/meta_list.html @@ -26,6 +26,7 @@ + @@ -34,6 +35,7 @@ {% for item in object_list %} + diff --git a/templates/client/exposition/exposition_list.html b/templates/client/exposition/exposition_list.html index 75b744b7..8fc3bfd1 100644 --- a/templates/client/exposition/exposition_list.html +++ b/templates/client/exposition/exposition_list.html @@ -23,7 +23,7 @@ {% block page_title %}
-

{% trans 'Выставки' %}

+

{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Выставки' %}{% endif %}

{% include 'includes/exposition/catalog_filter_period.html' %}
id Страница  
{{ item.id }} {{ item.name }}