From 9c3640d25fa79a767952eef8d2b48ae121eec89d Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Sat, 30 Dec 2017 18:52:02 +0100 Subject: [PATCH] Example docker configuration and /feeds path. --- Dockerfile | 11 +++++++++++ docker-compose.yml | 12 ++++++++++++ main.py | 47 +++++++++++++++++++++++++++++++++++----------- settings.ini | 1 + 4 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ac8a6a5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3-slim +MAINTAINER Benjamin Bouvier + +RUN mkdir /app +COPY . /app +RUN cd /app && \ + apt update && \ + apt install -y --force-yes libpq-dev build-essential && \ + pip install -r requirements.txt + +CMD ["python", "/app/main.py"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cd3ed39 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: "2" +services: + postgres: + image: postgres + volumes: + - ./data/:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=mysecretpassword + 2rss: + build: . + volumes: + - ./settings.ini:/app/settings.ini diff --git a/main.py b/main.py index 73fb2d9..171e4fe 100644 --- a/main.py +++ b/main.py @@ -53,14 +53,31 @@ else: raise Exception('unhandled db adapter: {}'.format(db_adapter)) db.generate_mapping(create_tables=True) -orm.set_sql_debug(True) def does_slug_exist(slug): with orm.db_session: return len(orm.select(f for f in Feed if f.slug == slug)[:1]) -@app.route('/feeds', methods=['POST']) + +@app.route('/feeds', methods=['GET', 'POST']) +@orm.db_session def add_feed(): + if request.method == 'GET': + feeds = orm.select(f for f in Feed if f.password is '') + + links = [] + for f in feeds: + link = ''.format(site_url, f.slug, f.title) + links.append(link) + + return """ + +
  • + {} +
  • + + """.format('\n'.join(links)) + data = request.get_json(silent=True) if 'slug' not in data: @@ -76,19 +93,19 @@ def add_feed(): url = site_url + slug - with orm.db_session: - feed = Feed(slug=slug, - admin_token=data['admin_token'], - title=data['title'], - atom_id=url, - description=data['description']) + feed = Feed(slug=slug, + admin_token=data['admin_token'], + title=data['title'], + atom_id=url, + description=data['description']) - if 'login' in data and 'password' in data: - feed.login = data['login'] - feed.password = data['password'] + if 'login' in data and 'password' in data: + feed.login = data['login'] + feed.password = data['password'] return "OK" + @app.route('/feeds/', methods=['GET', 'POST']) @orm.db_session def by_feed_name(slug): @@ -139,3 +156,11 @@ def by_feed_name(slug): fe.updated(date) return gen.atom_str(pretty=True).decode('utf8') + + +if __name__ == '__main__': + debug_str = config['general'].get('debug', 'False') + debug = debug_str != 'False' and debug_str != 'false' + + orm.set_sql_debug(debug) + app.run(debug=debug, host='0.0.0.0') diff --git a/settings.ini b/settings.ini index 7a8c4b9..a579212 100644 --- a/settings.ini +++ b/settings.ini @@ -1,5 +1,6 @@ [general] site_url=http://localhost:5000 +debug=true [db] adapter=postgres