parent
9939517870
commit
6ed30a1d4b
20 changed files with 285 additions and 186 deletions
@ -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] |
||||||
@ -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<slug>.*)/$', CountryFeeds()), |
||||||
|
url(r'^city/(?P<slug>.*)/$', CityFeeds()), |
||||||
|
url(r'^theme/(?P<slug>.*)/$', ThemeFeeds()), |
||||||
|
|
||||||
|
) |
||||||
Loading…
Reference in new issue