summaryrefslogtreecommitdiff
path: root/chimere_rss/feeds.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere_rss/feeds.py')
-rw-r--r--chimere_rss/feeds.py230
1 files changed, 0 insertions, 230 deletions
diff --git a/chimere_rss/feeds.py b/chimere_rss/feeds.py
deleted file mode 100644
index 454b6ef..0000000
--- a/chimere_rss/feeds.py
+++ /dev/null
@@ -1,230 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2010 Pierre Clarenc <pierre.crc_AT_gmailDOTcom>,
-# Samuel Renard <renard.samuel_AT_gmailDOTcom>,
-# Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# See the file COPYING for details.
-
-from django.utils.translation import ugettext as _
-from django.contrib.syndication.feeds import Feed
-from django.contrib.syndication.feeds import FeedDoesNotExist
-from chimere.main.models import Category, SubCategory, Marker, Area
-from django.core.exceptions import ObjectDoesNotExist
-from django.contrib.gis.geos import *
-
-from django.conf import settings
-
-class BaseFeed(Feed):
- """
- Base feed for Chimere objects
- """
- def item_link(self, item):
- ''' Return POI permalink '''
- coord = item.point
- cat = 0
- if item.categories.all() and item.categories.all()[0]:
- cat = item.categories.all()[0].pk
- return settings.BASE_URL + '?zoom=16&lat=%d&lon=%d&current_feature=%d&\
-checked_categories=%d' % (coord.y, coord.x, item.id, cat)
-
- def item_pubdate(self, item):
- """
- Date of the Marker when it has been available
- """
- return item.available_date
-
- def description(self, obj):
- return ""
-
-class LatestPOIsByCategory(BaseFeed):
- '''
- Last Points of interests by category in Feeds
- '''
- title_template = "rss_title.html"
- description_template = "rss_descr.html"
-
- def get_object(self, bits):
- """
- Get extra url, after rss/category/ id of category
- """
- if len(bits) != 1:
- raise ObjectDoesNotExist
- return Category.objects.get(id__exact=bits[0])
-
- def title(self, obj):
- """
- Define the title of the feed
- """
- return u"%s - %s" % (settings.PROJECT_NAME, obj.name)
-
- def link(self, obj):
- """
- Define the link of the feed.
- """
- if not obj:
- raise FeedDoesNotExist
- return settings.BASE_URL + 'rss/category/' + str(obj.id)
-
- def items(self, obj):
- """
- Requests to marker where its category match the category is requested
- and its status is available
- This returns a list of the 15 last markers/POIs ordering by date
- """
- q = Marker.objects.filter(status__exact='A',
- categories__category__id__exact=obj.id,
- available_date__isnull=False).order_by('-available_date')[:15]
- return q
-
-class LatestPOIsBySubCategory(BaseFeed):
- '''
- Last Points of interests by SubCategory in Feeds
- '''
- title_template = "rss_title.html"
- description_template = "rss_descr.html"
-
- def get_object(self, bits):
- if len(bits) != 1:
- raise ObjectDoesNotExist
- return SubCategory.objects.get(id__exact=bits[0])
-
- def title(self, obj):
- return u"%s - %s - %s" % (settings.PROJECT_NAME, obj.category.name,
- obj.name)
-
- def link(self, obj):
- if not obj:
- raise FeedDoesNotExist
- return settings.BASE_URL + 'rss/subcategory/' + str(obj.id)
-
- def items(self, obj):
- q = Marker.objects.filter(categories__id__exact=obj.id,
- available_date__isnull=False, status__exact='A').order_by(
- '-available_date')[:15]
- return q
-
-class LatestPOIs(BaseFeed):
- '''
- Last Points of interests
- '''
- title_template = "rss_title.html"
- description_template = "rss_descr.html"
-
- def title(self):
- return settings.PROJECT_NAME + u" - " + _(u"Last points of interest")
-
- def link(self):
- return settings.BASE_URL + 'rss/categories/'
-
- def description(self):
- return _("Latest points of interest from ") + settings.PROJECT_NAME
-
- def items(self):
- q = Marker.objects.filter(status__exact='A',
- available_date__isnull=False).order_by('-available_date')[:15]
- return q
-
-class LatestPOIsByZone(BaseFeed):
- '''
- Last Points of interests by zone by coordinates
- '''
- title_template = "rss_title.html"
- description_template = "rss_descr.html"
- upper_left_lat = 0
- upper_left_lon = 0
- lower_right_lat = 0
- lower_right_lon = 0
-
- def get_object(self, bits):
- """
- Get the extra url. Parameters are the coordinates of the zone (the
- upper left and lower right points)
- """
- if len(bits) != 1:
- raise ObjectDoesNotExist
- # Then define the upper right and lower left points
- coordinates = str(bits[0]).split('_')
- upper_left_lat = float(coordinates[0])
- upper_left_lon = float(coordinates[1])
- lower_right_lat = float(coordinates[2])
- lower_right_lon = float(coordinates[3])
- upper_right_lat = upper_left_lat
- upper_right_lon = lower_right_lon
- lower_left_lat = lower_right_lat
- lower_left_lon = upper_left_lon
- # Define a Polygon with the 4 points of the zone.
- areaBox = Polygon(((upper_left_lon, upper_left_lat),
- (upper_right_lon, upper_right_lat),
- (lower_right_lon, lower_right_lat),
- (lower_left_lon, lower_left_lat),
- (upper_left_lon, upper_left_lat)),
- srid=settings.EPSG_DISPLAY_PROJECTION)
- return areaBox
-
- def title(self, obj):
- return settings.PROJECT_NAME + u" - " +\
- _(u"Last points of interest by area")
-
- def link(self, obj):
- """
- Define the link of the feed. It's the same url as we get in the method
- get_object
- """
- if not obj:
- raise FeedDoesNotExist
- return settings.BASE_URL + 'rss/area/' \
- + str(self.upper_left_lat) + '_' + str(self.upper_left_lon) + \
- '_' + str(self.lower_right_lat) + '_' + str(self.lower_right_lon)
-
- def items(self, obj):
- """
- Request to return Markers WHERE there points are containes in the zone
- which is requested.
- This returns a list of the 15 last markers/POIs ordering by date
- """
- q = Marker.objects.filter(point__contained=obj, status__exact='A',
- available_date__isnull=False).order_by('-available_date')[:15]
- return q
-
-class LatestPOIsByZoneID(BaseFeed):
- '''
- Last Points of interests by zone by id
- '''
- title_template = "rss_title.html"
- description_template = "rss_descr.html"
-
- def get_object(self, bits):
- if len(bits) != 1:
- raise ObjectDoesNotExist
- return Area.objects.get(id__exact=bits[0])
-
- def title(self, obj):
- return settings.PROJECT_NAME + u" - " + \
- _(u"Last points of interest") + u" - " + obj.name
-
- def link(self, obj):
- if not obj:
- raise FeedDoesNotExist
- return settings.BASE_URL + 'rss/areaid/' + str(obj.id)
-
- def items(self, obj):
- sql = 'select * from "main_marker" where ' + obj.getIncludeSql()
- sql += ' and "main_marker".available_date is not null'
- sql += ' and "main_marker".status=\'A\''
- sql += ' order by "main_marker".available_date desc limit 15'
- q = Marker.objects.raw(sql)
- return q