diff --git a/digimarks.py b/digimarks.py index 9d72588..af2e9d9 100644 --- a/digimarks.py +++ b/digimarks.py @@ -12,19 +12,19 @@ import bs4 import requests from dateutil import tz from feedgen.feed import FeedGenerator -from flask import (Flask, abort, jsonify, make_response, redirect, - render_template, request, url_for) -from peewee import * # noqa +#from flask import (Flask, abort, jsonify, make_response, redirect, +# render_template, request, url_for) +from typing import List -try: - # Python 3 - from urllib.parse import urljoin, urlparse, urlunparse -except ImportError: - # Python 2 - from urlparse import urljoin, urlparse, urlunparse +import databases +import sqlalchemy +from fastapi import FastAPI +from pydantic import BaseModel + +from urlparse import urljoin, urlparse, urlunparse -DIGIMARKS_USER_AGENT = 'digimarks/1.2.0-dev' +DIGIMARKS_USER_AGENT = 'digimarks/2.0.0-dev' DEFAULT_THEME = 'freshgreen' themes = { @@ -164,13 +164,18 @@ DATABASE = { 'name': os.path.join(APP_ROOT, 'bookmarks.db'), 'engine': 'peewee.SqliteDatabase', } +DATABASE_URL = os.path.join(APP_ROOT, 'bookmarks.db') #PHANTOM = '/usr/local/bin/phantomjs' #SCRIPT = os.path.join(APP_ROOT, 'screenshot.js') # create our flask app and a database wrapper -app = Flask(__name__) -app.config.from_object(__name__) -database = SqliteDatabase(os.path.join(APP_ROOT, 'bookmarks.db')) +#app = Flask(__name__) +#app.config.from_object(__name__) +#database = SqliteDatabase(os.path.join(APP_ROOT, 'bookmarks.db')) + +database = databases.Database(DATABASE_URL) + +metadata = sqlalchemy.MetaData() # Strip unnecessary whitespace due to jinja2 codeblocks app.jinja_env.trim_blocks = True diff --git a/requirements-dev.txt b/requirements-dev.txt index fa6d866..7b45dfc 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,6 +4,8 @@ # # pip-compile requirements-dev.in # +anyio==3.6.1 + # via starlette astroid==2.11.7 # via pylint beautifulsoup4==4.11.1 @@ -14,34 +16,30 @@ certifi==2022.6.15 # via requests charset-normalizer==2.1.0 # via requests -click==8.1.3 - # via flask dill==0.3.5.1 # via pylint +fastapi==0.79.0 + # via -r requirements.in feedgen==0.9.0 # via -r requirements.in -flask==2.1.3 - # via -r requirements.in +greenlet==1.1.2 + # via sqlalchemy idna==3.3 - # via requests + # via + # anyio + # requests isort==5.10.1 # via pylint -itsdangerous==2.1.2 - # via flask -jinja2==3.1.2 - # via flask lazy-object-proxy==1.7.1 # via astroid lxml==4.9.1 # via feedgen -markupsafe==2.1.1 - # via jinja2 mccabe==0.7.0 # via pylint -peewee==3.15.1 - # via -r requirements.in platformdirs==2.5.2 # via pylint +pydantic==1.9.1 + # via fastapi pylint==2.14.5 # via -r requirements-dev.in python-dateutil==2.8.2 @@ -50,16 +48,22 @@ requests==2.28.1 # via -r requirements.in six==1.16.0 # via python-dateutil +sniffio==1.2.0 + # via anyio soupsieve==2.3.2.post1 # via beautifulsoup4 +sqlalchemy==1.4.39 + # via -r requirements.in +starlette==0.19.1 + # via fastapi tomli==2.0.1 # via pylint tomlkit==0.11.1 # via pylint -urllib3==1.26.10 +typing-extensions==4.3.0 + # via pydantic +urllib3==1.26.11 # via requests -werkzeug==2.1.2 - # via flask wrapt==1.14.1 # via astroid diff --git a/requirements.in b/requirements.in index 1b379b0..7eac957 100644 --- a/requirements.in +++ b/requirements.in @@ -1,6 +1,6 @@ # Core application -flask -peewee +fastapi +sqlalchemy # Fetch title etc from links bs4