part meta inf + 126 task

remotes/origin/1203
Назар Котюк 11 years ago
parent bb0e161ae7
commit 33d4f40ada
  1. 9
      article/views.py
  2. 14
      exposition/urls.py
  3. 6
      exposition/views.py
  4. 37
      meta/models.py
  5. 45
      meta/views.py
  6. 2
      templates/admin/meta/meta_list.html
  7. 2
      templates/client/exposition/exposition_list.html

@ -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()

@ -26,7 +26,7 @@ urlpatterns = patterns('',
url(r'expo/country/(?P<slug>.*)/page/(?P<page>\d+)/$', ExpoCountryCatalog.as_view()),
url(r'expo/country/(?P<slug>.*)/(?P<year>\d+)/(?P<month>.*)/$', ExpoCountryCatalog.as_view()),
url(r'expo/country/(?P<slug>.*)/(?P<year>\d+)/$', ExpoCountryCatalog.as_view()),
url(r'expo/country/(?P<slug>.*)/$', ExpoCountryCatalog.as_view()),
url(r'expo/country/(?P<slug>.*)/$', ExpoCountryCatalog.as_view(), {'meta_id':5}),
# city catalog
url(r'expo/city/$', ExpositionByCity.as_view()),
url(r'expo/city/(?P<slug>.*)/(?P<year>\d+)/(?P<month>.*)/page/(?P<page>\d+)/$', ExpoCityCatalog.as_view()),
@ -67,14 +67,14 @@ urlpatterns = patterns('',
url(r'expo/(?P<slug>.*)/service/(?P<service_url>.*)/', ExpositionServiceView.as_view()),
# expo list
url(r'expo/(?P<year>\d+)/(?P<month>.*)/page/(?P<page>\d+)/$', ExpoList.as_view()),
url(r'expo/(?P<year>\d+)/page/(?P<page>\d+)/$', ExpoList.as_view()),
url(r'expo/(?P<year>\d+)/(?P<month>.*)/$', ExpoList.as_view()),
url(r'expo/(?P<year>\d+)/$', ExpoList.as_view()),
url(r'expo/page/(?P<page>\d+)/$', ExpoList.as_view()),
url(r'expo/(?P<year>\d+)/(?P<month>.*)/page/(?P<page>\d+)/$', ExpoList.as_view(), {'meta_id':4}),
url(r'expo/(?P<year>\d+)/page/(?P<page>\d+)/$', ExpoList.as_view(), {'meta_id':3}),
url(r'expo/(?P<year>\d+)/(?P<month>.*)/$', ExpoList.as_view(), {'meta_id':4}),
url(r'expo/(?P<year>\d+)/$', ExpoList.as_view(), {'meta_id':3}),
url(r'expo/page/(?P<page>\d+)/$', ExpoList.as_view(), {'meta_id':2}),
# expo page
url(r'expo/(?P<slug>.*)/$', ExpoDetail.as_view()),# event
url(r'expo/$', ExpoList.as_view()),
url(r'expo/$', ExpoList.as_view(), {'meta_id':2}),

@ -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

@ -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)

@ -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

@ -26,6 +26,7 @@
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Страница</th>
<th>&nbsp;</th>
</tr>
@ -34,6 +35,7 @@
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>

@ -23,7 +23,7 @@
{% block page_title %}
<div class="page-title">
<h1>{% trans 'Выставки' %}</h1>
<h1>{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Выставки' %}{% endif %}</h1>
</div>
{% include 'includes/exposition/catalog_filter_period.html' %}

Loading…
Cancel
Save