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