diff --git a/article/models.py b/article/models.py index b1a4d2c5..5b981113 100644 --- a/article/models.py +++ b/article/models.py @@ -45,7 +45,7 @@ class ArticleManager(TranslationManager): if cached_news: return cached_news else: - news = list(self.news().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date')[:3]) + news = list(self.news().filter(publish_date__isnull=False).order_by('-main_page', '-publish_date', '-modified')[:3]) cache.set(key, news, self.cache_time) return news diff --git a/specialist_catalog/urls.py b/specialist_catalog/urls.py index 91382837..d3853d9c 100644 --- a/specialist_catalog/urls.py +++ b/specialist_catalog/urls.py @@ -1,11 +1,19 @@ # -*- coding: utf-8 -*- from django.conf.urls import url, patterns -from .views import CatalogDetailedView, SpecCatalog +from .views import CatalogDetailedView, SpecCatalog, redirect_old + urlpatterns = patterns('', - url(r'^city/$', SpecCatalog.as_view(), {'type': 'city'}, name="spec_city"), - url(r'^country/$', SpecCatalog.as_view(), {'type': 'country'}, name="spec_country"), + url(r'^city/(?P.*)/all/page/(?P\d+)/$', redirect_old, {'type': 'city'}), + url(r'^city/(?P.*)/all/$', redirect_old, {'type': 'city'}), + url(r'^city/$', SpecCatalog.as_view(), {'type': 'city', 'meta_id': 86}, name="spec_city"), + url(r'^city/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'city', 'meta_id': 88}, name="spec_catalog_city"), - url(r'^city/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'city'}, name="spec_catalog_city"), - url(r'^country/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'country'}, name="spec_catalog_country"), + url(r'^country/(?P.*)/all/page/(?P\d+)/$', redirect_old), + url(r'^country/(?P.*)/all/$', redirect_old), + url(r'^country/$', SpecCatalog.as_view(), {'type': 'country', 'meta_id': 86}, name="spec_country"), + url(r'^country/(?P.*)/$', CatalogDetailedView.as_view(), {'type': 'country', 'meta_id': 87}, name="spec_catalog_country"), + url(r'^(?P.*)/$', redirect_old), + url(r'^page/(?P\d+)/$', redirect_old), + url(r'^$', redirect_old), ) \ No newline at end of file diff --git a/specialist_catalog/views.py b/specialist_catalog/views.py index b7ed1b44..fe81fccb 100644 --- a/specialist_catalog/views.py +++ b/specialist_catalog/views.py @@ -2,12 +2,13 @@ from django.views.generic import CreateView, UpdateView, DeleteView, ListView, FormView, DetailView from django.views.generic.detail import SingleObjectMixin from django.utils.translation import ugettext as _ +from meta.views import MetadataMixin from .forms import * from django.core.urlresolvers import reverse_lazy from django.conf import settings from django.shortcuts import get_object_or_404 from service.order_forms import TranslationForm -from django.http import HttpResponseRedirect, Http404 +from django.http import HttpResponseRedirect, Http404, HttpResponsePermanentRedirect from .models import _city, _country @@ -155,7 +156,7 @@ class FeedbackDeleteView(DeleteView): # ========= CLIENT VIEWS ============ -class CatalogDetailedView(SingleObjectMixin, FormView): +class CatalogDetailedView(MetadataMixin, SingleObjectMixin, FormView): model = SpecialistCatalog form_class = TranslationForm template_name = "client/specialist_catalog/catalog_detailed.html" @@ -164,12 +165,16 @@ class CatalogDetailedView(SingleObjectMixin, FormView): def get_catalog_obj(self): if self.kwargs.get('type') is "country": try: - return self.model.objects.language().get(type=1, country__url=self.kwargs.get('slug')) + spec_catalog = self.model.objects.language().get(type=1, country__url=self.kwargs.get('slug')) + self.kwargs['country'] = spec_catalog.country + return spec_catalog except self.model.DoesNotExist: raise Http404 else: try: - return self.model.objects.language().get(type=2, city__url=self.kwargs.get('slug')) + spec_catalog = self.model.objects.language().get(type=2, city__url=self.kwargs.get('slug')) + self.kwargs['city'] = spec_catalog.city + return spec_catalog except self.model.DoesNotExist: raise Http404 @@ -197,7 +202,7 @@ class CatalogDetailedView(SingleObjectMixin, FormView): init['city'] = obj.city.name return init -class SpecCatalog(ListView): +class SpecCatalog(MetadataMixin, ListView): model = SpecialistCatalog template_name = 'client/specialist_catalog/catalog.html' @@ -223,3 +228,11 @@ class SpecCatalog(ListView): else: context['title'] = _(u'Переводчики по городам') return context + + + +def redirect_old(request, *args, **kwargs): + if not kwargs.get('type'): + return HttpResponsePermanentRedirect('/translators/country/') + else: + return HttpResponsePermanentRedirect('/translators/city/') \ No newline at end of file