Introduced georss and fixed some validation errors.
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Wed, 22 Dec 2010 22:00:09 +0000 (22:00 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Wed, 22 Dec 2010 22:00:09 +0000 (22:00 +0000)
git-svn-id: http://www.winterrodeln.org/svn/servermediawiki/trunk/wrfeed@715 7aebc617-e5e2-0310-91dc-80fb5f6d2477

setup.py
wrfeed/controllers/berichte.py

index 6a537652a2453b48f6acc6eda07ff62d7715a0f7..c6dc00e634db39c4b261623e543f14b5715cf909 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ except ImportError:
 
 setup(
     name='wrfeed',
-    version='0.1.2',
+    version='0.1.3',
     description='Provides Atom Feed for Winterrodeln snow reports',
     author='Philipp Spitzer',
     author_email='philipp.spitzer@winterrodeln.org',
index c4eba4642f48537a4c5f57876189359a65ae6d59..a319215724e81ab630697cdf2c13aa9fff9e13f3 100644 (file)
@@ -35,18 +35,18 @@ def create_feed(page_title=None, page_ids=None):
     engine = create_engine(config['sqlalchemy.url'])
     conn = engine.connect()
 
-    select = "select id, page_title, date_report, date_entry, `condition`, description, author_name, author_username from wrreport "
+    select = "select id, wrreport.page_title, date_report, date_entry, `condition`, description, author_name, author_username, position_longitude, position_latitude from wrreport left outer join wrsleddingcache on wrreport.page_id=wrsleddingcache.page_id "
     if not page_title is None:
         # page_title is given
         page_title = page_title.replace('_', ' ')
-        sql = select + "where lcase(page_title) = lcase(%s) and date_invalid > now() and delete_date is null order by id desc limit 50"
+        sql = select + "where lcase(wrreport.page_title) = lcase(%s) and date_invalid > now() and delete_date is null order by id desc limit 50"
         result = conn.execute(sql, page_title)
     elif not page_ids is None:
         # a list of page_ids is given
         sql = [select + "where "]
         if len(page_ids) > 0:
             sql += '('
-            sql += " or ".join(['page_id=%s' for page_id in page_ids])
+            sql += " or ".join(['wrreport.page_id=%s' for page_id in page_ids])
             sql += ') '
         sql += 'and date_invalid > now() and delete_date is null order by id desc limit 50'
         page_ids_str = [str(page_id) for page_id in page_ids]
@@ -57,29 +57,29 @@ def create_feed(page_title=None, page_ids=None):
         result = conn.execute(sql)
 
 
-    feed = Element("feed", xmlns="http://www.w3.org/2005/Atom")
+    feed = Element("feed", xmlns="http://www.w3.org/2005/Atom", attrib={'xmlns:georss': 'http://www.georss.org/georss'})
     feed_title = SubElement(feed, "title")
     feed_title.text = "Winterrodeln Rodelbahnberichte"
     feed_id = SubElement(feed, "id")
     if not page_title is None:
-        feed_id.text = url(controller='berichte', action='bahn', id=page_title)
+        feed_id.text = url(qualified=True, controller='berichte', action='bahn', id=page_title)
     elif not page_ids is None:
-        feed_id.text = url(controller='berichte', action='bahnen', id="+".join(page_ids_str))
+        feed_id.text = url(qualified=True, controller='berichte', action='bahnen', id="+".join(page_ids_str))
     else:
-        feed_id.text = url(controller='berichte', action='alle')
+        feed_id.text = url(qualified=True, controller='berichte', action='alle')
     feed_updated = SubElement(feed, "updated")
     feed.append(Element("link", rel="self", href=feed_id.text))
 
     last_updated = None
     for row in result:
-        id, page_title, date_report, date_entry, condition, description, author_name, author_username = row
+        id, page_title, date_report, date_entry, condition, description, author_name, author_username, lon, lat = row
         page_title_url = page_title.replace(u' ', u'_')
         entry = SubElement(feed, "entry")
         entry_title = SubElement(entry, "title")
         entry_title.text = page_title
         entry.append(Element("link", rel="alternate", href=u"http://www.winterrodeln.org/wiki/{0}".format(page_title_url), type="text/html", hreflang="de"))
         entry_id = SubElement(entry, "id")
-        entry_id.text = u"http://www.winterrodeln.org/feed/schneelage/{0}/{1}".format(page_title_url, id)
+        entry_id.text = u"http://www.winterrodeln.org/wiki/{0}#{1}".format(page_title_url, id)
         entry_updated = SubElement(entry, "updated")
         entry_updated.text = date_entry.isoformat() + "+01:00"
         if last_updated is None: last_updated = date_entry
@@ -100,8 +100,11 @@ def create_feed(page_title=None, page_ids=None):
         entry_content_description.text = description
         entry_author = SubElement(entry, "author")
         entry_author_name = SubElement(entry_author, "name")
-        if author_name is None: entry_author_name.text = "Anonymous user"
+        if author_name is None or len(author_name.strip()) == 0: entry_author_name.text = "Anonymous user"
         else: entry_author_name.text = author_name
+        if not lon is None and not lat is None:
+            entry_geo = SubElement(entry, "georss:point")
+            entry_geo.text = "{lat} {lon}".format(lat=lat, lon=lon)
 
     if last_updated is None: last_updated = datetime.datetime.now()
     feed_updated.text = last_updated.isoformat() + "+01:00"