diff --git a/conference/views.py b/conference/views.py index ee558ea7..3363cc12 100644 --- a/conference/views.py +++ b/conference/views.py @@ -167,17 +167,7 @@ class ConferenceCountryCatalog(ConferenceCatalog): def get_filtered_qs(self): #this method used in parent get_queryset slug = self.kwargs.get('slug') - try: - country = Country.objects.get(url=slug) - except Country.DoesNotExist: - try: - country = Country.objects.get(old_url=slug) - except Country.DoesNotExist: - raise Http404 - except Country.MultipleObjectsReturned: - country = Country.objects.filter(old_url=slug)[0] - - #country = get_object_or_404(Country, url=slug) + country = get_object_or_404(Country, url=slug) self.kwargs['country'] = country self.filter_object = country qs = self.model.enable.upcoming().filter(country=country) @@ -206,16 +196,7 @@ class ConferenceThemeCatalog(ConferenceCatalog): slug = self.kwargs.get('slug') country_slug = self.kwargs.get('country_slug') city_slug = self.kwargs.get('city_slug') - try: - theme = Theme.objects.get(url=slug) - except Theme.DoesNotExist: - try: - theme = Theme.objects.get(old_url=slug) - except Theme.DoesNotExist: - raise Http404 - except Theme.MultipleObjectsReturned: - theme = Theme.objects.filter(old_url=slug)[0] - #theme = get_object_or_404(Theme, url=slug) + theme = get_object_or_404(Theme, url=slug) self.kwargs['theme'] = theme qs = self.model.enable.upcoming().filter(theme=theme) @@ -246,17 +227,7 @@ class ConferenceTagCatalog(ConferenceCatalog): def get_filtered_qs(self): #this method used in parent get_queryset slug = self.kwargs.get('slug') - try: - tag = Tag.objects.get(url=slug) - except Tag.DoesNotExist: - try: - tag = Tag.objects.get(old_url=slug) - except Tag.DoesNotExist: - raise Http404 - except Tag.MultipleObjectsReturned: - tag = Tag.objects.filter(old_url=slug)[0] - - #tag = get_object_or_404(Tag, url=slug) + tag = get_object_or_404(Tag, url=slug) self.kwargs['tag'] = tag qs = self.model.enable.upcoming().filter(tag=tag) self.filter_object = tag @@ -392,10 +363,6 @@ class ConferenceDetail(JitterCacheMixin, DetailView): return HttpResponseRedirect('/conference/city/%s/'%city.url) except City.DoesNotExist: return super(ConferenceDetail, self).dispatch(request, *args, **kwargs) - except City.MultipleObjectsReturned: - city = City.objects.filter(old_url=slug)[0] - return HttpResponseRedirect('/conference/city/%s/'%city.url) - diff --git a/core/models.py b/core/models.py index 71a83623..dad86ae2 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,88 @@ -from django.db import models +# -*- coding: utf-8 -*- +from django.contrib.syndication.views import Feed +from django.shortcuts import get_object_or_404 -# Create your models here. +from exposition.models import Exposition +from theme.models import Theme +from country.models import Country +from city.models import City + +EXPO_ON_PAGE = 10 + +# nearest expositions at all + +class LatestExpositions(Feed): + title = u"Ближайшие выставки на expomap.ru" + link = '/rss/latest/' + description = u'Подписывайтесь на наш RSS-канал' + + def items(self): + return Exposition.enable.upcoming()[:EXPO_ON_PAGE] + + def item_title(self, item): + return item.name + + def item_description(self, item): + return item.main_title + + def item_link(self, item): + return '/expo/%s/'%item.url + +NUM_ITEMS_ON_PAGE = 20 + + +class CountryFeeds(Feed): + description_template = '/rss/country_feeds/' + + def get_object(self, request, slug): + return get_object_or_404(Country, url=slug) + + def title(self, obj): + return u"Ближайшие выставки %s:" % obj.inflect + + def link(self,obj): + return obj.get_permanent_url() + + def item_description(self, obj): + return obj.main_title + + def items(self, obj): + return Exposition.enable.upcoming().filter(country=obj)[:NUM_ITEMS_ON_PAGE] + + +class CityFeeds(Feed): + description_template = '/rss/city_feeds/' + + def get_object(self, request, slug): + return get_object_or_404(City, url=slug) + + def title(self, obj): + return u"Ближайшие выставки в %s: " % obj.inflect + + def link(self,obj): + return obj.get_permanent_url() + + def item_description(self, obj): + return obj.main_title + + def items(self, obj): + return Exposition.enable.upcoming().filter(city = obj)[:NUM_ITEMS_ON_PAGE] + + +class ThemeFeeds(Feed): + description_template = '/rss/theme_feeds/' + + def get_object(self, request, slug): + return get_object_or_404(Theme, url=slug) + + def title(self, obj): + return u"Ближайшие выставки %s: " % obj.inflect + + def link(self,obj): + return obj.url + + def item_description(self, obj): + return obj.main_title + + def items(self, obj): + return Exposition.enable.upcoming().filter(theme = obj)[:NUM_ITEMS_ON_PAGE] \ No newline at end of file diff --git a/core/urls.py b/core/urls.py new file mode 100644 index 00000000..88f2e7c0 --- /dev/null +++ b/core/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import url, patterns +from models import LatestExpositions, CountryFeeds, CityFeeds, ThemeFeeds + + +urlpatterns = patterns('', + url(r'^latest/$', LatestExpositions()), + url(r'^country/(?P.*)/$', CountryFeeds()), + url(r'^city/(?P.*)/$', CityFeeds()), + url(r'^theme/(?P.*)/$', ThemeFeeds()), + +) diff --git a/proj/urls.py b/proj/urls.py index ab5bb5cb..92cf2c80 100644 --- a/proj/urls.py +++ b/proj/urls.py @@ -29,6 +29,7 @@ sitemaps = { handler404 = 'proj.views.error404' urlpatterns = patterns('', + url(r'^rss/', include('core.urls')), #url(r'^__debug__/', include(debug_toolbar.urls)), url(r'^sitemap-(?P
.+)\.xml$', views.sitemap, {'sitemaps': sitemaps}), url(r'^admin/', include('proj.admin_urls')), diff --git a/proj/views.py b/proj/views.py index b307f98e..f93b2a0c 100644 --- a/proj/views.py +++ b/proj/views.py @@ -46,7 +46,7 @@ class MainPageView(JitterCacheMixin,TemplateView): def get_context_data(self, **kwargs): context = super(MainPageView, self).get_context_data(**kwargs) - events = Exposition.objects.language().select_related('country', 'city', 'place').filter(main_page=1) + events = Exposition.objects.language().select_related('country', 'city', 'place').filter(main_page__gte=1).order_by('-main_page') exposition_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.exposition)[:6] conference_themes = Theme.objects.language().order_by('-main_page').filter(types=Theme.types.conference)[:6] diff --git a/settings/conference_old_urls.py b/settings/conference_old_urls.py index c8abcb62..c741904a 100644 --- a/settings/conference_old_urls.py +++ b/settings/conference_old_urls.py @@ -41,5 +41,4 @@ urlpatterns = patterns('', url(r'^conference/theme-(?P.*)/page-(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/page/{page}/'}), url(r'^conference/theme-(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/page/{page}/'}), url(r'^conference/theme-(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/'}), - ) diff --git a/settings/old_urls.py b/settings/old_urls.py index 07a4e58b..f64a48d1 100644 --- a/settings/old_urls.py +++ b/settings/old_urls.py @@ -142,10 +142,6 @@ urlpatterns = patterns('', url(r'^catalog/theme-(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/page/{page}/'}), url(r'^catalog/theme-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/'}), url(r'^catalog/theme/$', old_redirect, {'redirect_url': '/expo/theme/'}), - - # - url(r'^catalog/time/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/{year}/'}), - url(r'^catalog/time/$', old_redirect, {'redirect_url': '/expo/'}), # tag diff --git a/settings/redirect_views.py b/settings/redirect_views.py index c10b6b57..74eccd85 100644 --- a/settings/redirect_views.py +++ b/settings/redirect_views.py @@ -15,12 +15,11 @@ class RedirectMixin(object): def get_object_url(self, key, value): Model = self.model + try: obj = Model.objects.get(old_url=value) - except Model.DoesNotExist: + except: obj = get_object_or_404(Model, url=value) - except Model.MultipleObjectsReturned: - obj = Model.objects.filter(old_url=value)[0] if obj: return {key: obj.url} else: @@ -46,12 +45,12 @@ class TagRedirect(RedirectMixin): try: obj = Model.objects.get(url=value) except Model.DoesNotExist: - if value.endswith('-expo'): + if value.endwith('-expo'): value = value.replace('-expo', '') - elif value.endswith('-conf'): + elif value.endwith('-conf'): value = value.replace('-conf', '') - obj = get_object_or_404(Model, old_url=value) + obj = get_object_or_404(old_url=value) if obj: return {key: obj.url} diff --git a/templates/client/static_client/img/fancybox/blank.gif b/templates/client/static_client/img/fancybox/blank.gif new file mode 100644 index 00000000..35d42e80 Binary files /dev/null and b/templates/client/static_client/img/fancybox/blank.gif differ diff --git a/templates/client/static_client/img/fancybox/fancybox_loading.gif b/templates/client/static_client/img/fancybox/fancybox_loading.gif new file mode 100644 index 00000000..a03a40c0 Binary files /dev/null and b/templates/client/static_client/img/fancybox/fancybox_loading.gif differ diff --git a/templates/client/static_client/img/fancybox/fancybox_loading@2x.gif b/templates/client/static_client/img/fancybox/fancybox_loading@2x.gif new file mode 100644 index 00000000..9205aeb0 Binary files /dev/null and b/templates/client/static_client/img/fancybox/fancybox_loading@2x.gif differ diff --git a/templates/client/static_client/img/fancybox/fancybox_overlay.png b/templates/client/static_client/img/fancybox/fancybox_overlay.png new file mode 100644 index 00000000..a4391396 Binary files /dev/null and b/templates/client/static_client/img/fancybox/fancybox_overlay.png differ diff --git a/templates/client/static_client/img/fancybox/fancybox_sprite.png b/templates/client/static_client/img/fancybox/fancybox_sprite.png new file mode 100644 index 00000000..fd8d5ca5 Binary files /dev/null and b/templates/client/static_client/img/fancybox/fancybox_sprite.png differ diff --git a/templates/client/static_client/img/fancybox/fancybox_sprite@2x.png b/templates/client/static_client/img/fancybox/fancybox_sprite@2x.png new file mode 100644 index 00000000..d0e4779f Binary files /dev/null and b/templates/client/static_client/img/fancybox/fancybox_sprite@2x.png differ