X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrfeed.git/blobdiff_plain/f63ac6a290d2f4bfa251bf4a5202972c308f1ae0..3d4b59e19c17edbf8362e174026d166f6e7b59c8:/wrfeed/controllers/berichte.py diff --git a/wrfeed/controllers/berichte.py b/wrfeed/controllers/berichte.py index c4eba46..a319215 100644 --- a/wrfeed/controllers/berichte.py +++ b/wrfeed/controllers/berichte.py @@ -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"