Implement multi db backend support;
This commit is contained in:
parent
e07a749e4a
commit
4a5ea453c3
30
main.py
30
main.py
@ -1,5 +1,6 @@
|
||||
import json
|
||||
import dateutil
|
||||
import configparser
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from flask import Flask, request, abort
|
||||
@ -8,10 +9,15 @@ from feedgen.feed import FeedGenerator
|
||||
from pony import orm
|
||||
from pony.orm import Required, Optional, Set
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('settings.ini')
|
||||
|
||||
site_url = config['general']['site_url']
|
||||
if site_url[:-1] != '/':
|
||||
site_url += '/'
|
||||
site_url += 'feeds/'
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
SITE_URL = 'http://localhost:5000/feeds/'
|
||||
|
||||
db = orm.Database()
|
||||
|
||||
class Feed(db.Entity):
|
||||
@ -31,7 +37,21 @@ class Item(db.Entity):
|
||||
content = Required(str)
|
||||
date = Required(datetime)
|
||||
|
||||
db.bind(provider='sqlite', filename='db.sqlite', create_db=True)
|
||||
db_config = config['db']
|
||||
db_adapter = db_config['adapter']
|
||||
|
||||
if db_adapter == 'sqlite':
|
||||
filename = db_config['filename']
|
||||
db.bind(provider='sqlite', filename=filename, create_db=True)
|
||||
elif db_adapter == 'postgres':
|
||||
user = db_config['user']
|
||||
password = db_config['password']
|
||||
host = db_config['host']
|
||||
database = db_config['database']
|
||||
db.bind(provider='postgres', user=user, password=password, host=host, database=database)
|
||||
else:
|
||||
raise Exception('unhandled db adapter: {}'.format(db_adapter))
|
||||
|
||||
db.generate_mapping(create_tables=True)
|
||||
orm.set_sql_debug(True)
|
||||
|
||||
@ -54,7 +74,7 @@ def add_feed():
|
||||
if 'title' not in data or 'description' not in data or 'admin_token' not in data:
|
||||
abort(400, "missing title or description or admin_token")
|
||||
|
||||
url = SITE_URL + slug
|
||||
url = site_url + slug
|
||||
|
||||
with orm.db_session:
|
||||
feed = Feed(slug=slug,
|
||||
|
@ -1,3 +1,4 @@
|
||||
Flask
|
||||
feedgen
|
||||
pony
|
||||
psycopg2cffi
|
||||
|
9
settings.ini
Normal file
9
settings.ini
Normal file
@ -0,0 +1,9 @@
|
||||
[general]
|
||||
site_url=http://localhost:5000
|
||||
|
||||
[db]
|
||||
adapter=postgres
|
||||
host=localhost
|
||||
user=postgres
|
||||
password=mysecretpassword
|
||||
database=postgres
|
Loading…
Reference in New Issue
Block a user