]> ToastFreeware Gitweb - philipp/winterrodeln/wrfeed.git/blobdiff - wrfeed/wrfeed.py
Set version number to 0.4.1.
[philipp/winterrodeln/wrfeed.git] / wrfeed / wrfeed.py
index b7b0502537d1c705ccb77e71f821cdab87003558..e55b30738b30326287d69bdb389531c3b909c8ad 100644 (file)
@@ -1,7 +1,59 @@
 # http://flask.pocoo.org/
-from flask import Flask
+# FLASK_APP=wrfeed FLASK_DEBUG=1 WRFEED_SETTINGS=development.cfg python3 -m flask run -p 5002
+# FLASK_APP=wrfeed WRFEED_SETTINGS=production.cfg python3 -m flask run
+from flask import Flask, send_from_directory, abort
+from flask_sqlalchemy import SQLAlchemy
+from wrfeed.berichte import create_feed
+
 app = Flask(__name__)
+app.config.from_envvar('WRFEED_SETTINGS')
+db = SQLAlchemy(app)
+db.reflect()
+
 
 @app.route("/")
 def hello():
-    return "Hello World!"
\ No newline at end of file
+    return send_from_directory('templates', 'index.html')  # actually, this is no template
+
+
+@app.route("/berichte/alle")
+def alle():
+    """Handles URLs like
+    http://127.0.0.1:5000/berichte/alle
+    http://www.winterrodeln.org/feed/berichte/alle
+    """
+    return app.response_class(create_feed(db, app.config['FEEDENTRYLIMIT']), mimetype='application/atom+xml')
+
+
+@app.route("/berichte/bahn/<bahn>")
+def bahn(bahn):
+    """Handles URLs like
+    http://127.0.0.1:5000/berichte/bahn/kemater_alm
+    http://www.winterrodeln.org/feed/berichte/bahn/kemater_alm
+    """
+    return app.response_class(create_feed(db, app.config['FEEDENTRYLIMIT'], page_title=bahn),
+                              mimetype='application/atom+xml')
+
+
+@app.route("/berichte/bahnen/<bahnen>")
+def bahnen(bahnen):
+    """Handles URLs like
+    http://127.0.0.1:5000/berichte/bahnen/5+280+251
+    http://www.winterrodeln.org/feed/berichte/bahnen/5+280+251
+    """
+    page_ids = bahnen.split('+')
+    try:
+        page_ids = [int(page_id) for page_id in page_ids]
+    except ValueError:
+        abort(400)  # bad request
+    return app.response_class(create_feed(db, app.config['FEEDENTRYLIMIT'], page_ids=page_ids),
+                              mimetype='application/atom+xml')
+
+
+@app.route("/berichte/region/<region>")
+def region(region):
+    """Handles URLs like
+    http://www.winterrodeln.org/feed/berichte/region/osttirol
+    """
+    return app.response_class(create_feed(db, app.config['FEEDENTRYLIMIT'], region_name=region),
+                              mimetype='application/atom+xml')