From 2c0a281dc3323c9c6dd676d94a2a635fc430470c Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 13:23:44 +0800 Subject: [PATCH 1/7] chg: dev: use filter instead list comprehension --- bukuserver/server.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bukuserver/server.py b/bukuserver/server.py index af52249..c7ca8c1 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -173,7 +173,7 @@ def search_bookmarks(): 'id': bookmark[0], 'url': bookmark[1], 'title': bookmark[2], - 'tags': list([_f for _f in bookmark[3].split(',') if _f]), + 'tags': filter(lambda x: x, bookmark[3].split(',')), 'description': bookmark[4] } result['bookmarks'].append(result_bookmark) @@ -335,7 +335,7 @@ class ApiBookmarkView(MethodView): result_bookmark = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': list([_f for _f in bookmark[3].split(',') if _f]), + 'tags': filter(lambda x: x, bookmark[3].split(',')), 'description': bookmark[4] } if not request.path.startswith('/api/'): @@ -349,7 +349,7 @@ class ApiBookmarkView(MethodView): result = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': list([_f for _f in bookmark[3].split(',') if _f]), + 'tags': filter(lambda x: x, bookmark[3].split(',')), 'description': bookmark[4] } res = jsonify(result) @@ -431,7 +431,7 @@ class ApiBookmarkRangeView(MethodView): result['bookmarks'][i] = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': list([_f for _f in bookmark[3].split(',') if _f]), + 'tags': filter(lambda x: x, bookmark[3].split(',')), 'description': bookmark[4] } res = jsonify(result) @@ -505,7 +505,7 @@ class ApiBookmarkSearchView(MethodView): 'id': bookmark[0], 'url': bookmark[1], 'title': bookmark[2], - 'tags': list([_f for _f in bookmark[3].split(',') if _f]), + 'tags': filter(lambda x: x, bookmark[3].split(',')), 'description': bookmark[4] } result['bookmarks'].append(result_bookmark) From 3ba5d6f93a514d85478ea6ea82c0e575383b67e5 Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 13:28:34 +0800 Subject: [PATCH 2/7] chg: dev: default value for DISABLE_FAVICON --- bukuserver/README.md | 2 +- bukuserver/server.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bukuserver/README.md b/bukuserver/README.md index d9f8e88..957d98e 100644 --- a/bukuserver/README.md +++ b/bukuserver/README.md @@ -108,7 +108,7 @@ Following are available os env config available for bukuserver. | SECRET_KEY | server secret key | string [default: os.urandom(24)] | | URL_RENDER_MODE | url render mode | `full` or `netloc` [default: `full`] | | DB_FILE | full path to db file | path string [default: standard path for buku] | -| DISABLE_FAVICON | disable favicon | boolean [default: `false`] | +| DISABLE_FAVICON | disable favicon | boolean [default: `true`] | | OPEN_IN_NEW_TAB | url link open in new tab | boolean [default: `false`] | | REVERSE_PROXY_PATH | reverse proxy path | string | diff --git a/bukuserver/server.py b/bukuserver/server.py index c7ca8c1..cfff706 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -225,9 +225,9 @@ def create_app(db_file=None): url_render_mode = views.DEFAULT_URL_RENDER_MODE app.config['BUKUSERVER_URL_RENDER_MODE'] = url_render_mode app.config['SECRET_KEY'] = os.getenv('BUKUSERVER_SECRET_KEY') or os.urandom(24) - disable_favicon = os.getenv('BUKUSERVER_DISABLE_FAVICON', 'false') + disable_favicon = os.getenv('BUKUSERVER_DISABLE_FAVICON', 'true') app.config['BUKUSERVER_DISABLE_FAVICON'] = \ - False if disable_favicon.lower() in ['false', '0'] else bool(disable_favicon) + True if disable_favicon.lower() in ['true', '1'] else bool(disable_favicon) open_in_new_tab = os.getenv('BUKUSERVER_OPEN_IN_NEW_TAB', 'false') app.config['BUKUSERVER_OPEN_IN_NEW_TAB'] = \ False if open_in_new_tab.lower() in ['false', '0'] else bool(open_in_new_tab) From 4b46293379a0cd7d1224cad713520b8c9a3fc5bd Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 13:42:45 +0800 Subject: [PATCH 3/7] chg: dev: use list instead filter --- bukuserver/server.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bukuserver/server.py b/bukuserver/server.py index cfff706..ee6a755 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -173,7 +173,7 @@ def search_bookmarks(): 'id': bookmark[0], 'url': bookmark[1], 'title': bookmark[2], - 'tags': filter(lambda x: x, bookmark[3].split(',')), + 'tags': list(filter(lambda x: x, bookmark[3].split(','))), 'description': bookmark[4] } result['bookmarks'].append(result_bookmark) @@ -335,7 +335,7 @@ class ApiBookmarkView(MethodView): result_bookmark = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': filter(lambda x: x, bookmark[3].split(',')), + 'tags': list(filter(lambda x: x, bookmark[3].split(','))), 'description': bookmark[4] } if not request.path.startswith('/api/'): @@ -349,7 +349,7 @@ class ApiBookmarkView(MethodView): result = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': filter(lambda x: x, bookmark[3].split(',')), + 'tags': list(filter(lambda x: x, bookmark[3].split(','))), 'description': bookmark[4] } res = jsonify(result) @@ -431,7 +431,7 @@ class ApiBookmarkRangeView(MethodView): result['bookmarks'][i] = { 'url': bookmark[1], 'title': bookmark[2], - 'tags': filter(lambda x: x, bookmark[3].split(',')), + 'tags': list(filter(lambda x: x, bookmark[3].split(','))), 'description': bookmark[4] } res = jsonify(result) @@ -505,7 +505,7 @@ class ApiBookmarkSearchView(MethodView): 'id': bookmark[0], 'url': bookmark[1], 'title': bookmark[2], - 'tags': filter(lambda x: x, bookmark[3].split(',')), + 'tags': list(filter(lambda x: x, bookmark[3].split(','))), 'description': bookmark[4] } result['bookmarks'].append(result_bookmark) From ed9bfe12d9c67f713535eefb8f2d65d8def898d3 Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 13:57:50 +0800 Subject: [PATCH 4/7] new: dev: get bool from env var func --- bukuserver/server.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bukuserver/server.py b/bukuserver/server.py index ee6a755..e1cc017 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -214,6 +214,18 @@ def search_bookmarks(): return res +def get_bool_from_env_var(key: str, default_value: bool)->bool: + """Get bool value from env var.""" + value = os.getenv(key) + if value is None: + return default_value + if value.lower() in ['true', '1']: + return True + if value.lower() in ['false', '0']: + return False + return default_value + + def create_app(db_file=None): """create app.""" app = FlaskAPI(__name__) @@ -225,9 +237,8 @@ def create_app(db_file=None): url_render_mode = views.DEFAULT_URL_RENDER_MODE app.config['BUKUSERVER_URL_RENDER_MODE'] = url_render_mode app.config['SECRET_KEY'] = os.getenv('BUKUSERVER_SECRET_KEY') or os.urandom(24) - disable_favicon = os.getenv('BUKUSERVER_DISABLE_FAVICON', 'true') app.config['BUKUSERVER_DISABLE_FAVICON'] = \ - True if disable_favicon.lower() in ['true', '1'] else bool(disable_favicon) + get_bool_from_env_var('BUKUSERVER_DISABLE_FAVICON', True) open_in_new_tab = os.getenv('BUKUSERVER_OPEN_IN_NEW_TAB', 'false') app.config['BUKUSERVER_OPEN_IN_NEW_TAB'] = \ False if open_in_new_tab.lower() in ['false', '0'] else bool(open_in_new_tab) From 5e2aaecf4f994bfa16a0674a26805dd9c3f224a8 Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 14:05:20 +0800 Subject: [PATCH 5/7] new: test: get_bool_from_env_var func --- tests/test_server.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/test_server.py b/tests/test_server.py index 8d6650a..939840f 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -6,6 +6,8 @@ from click.testing import CliRunner from bukuserver import server from bukuserver.response import response_template +from bukuserver.server import get_bool_from_env_var + @pytest.mark.parametrize( 'args,word', @@ -234,3 +236,18 @@ def test_bookmark_search(client): assert rd.get_json() == response_template['success'] rd = client.get('/api/bookmarks') assert rd.get_json() == {'bookmarks': []} + + +@pytest.mark.parametrize('env_val, exp_val', [ + ['true', True], + ['false', False], + ['0', False], + ['1', True], + [None, True], + ['random', True] +]) +def test_get_bool_from_env_var(monkeypatch, env_val, exp_val): + key = 'BUKUSERVER_TEST' + if env_val is not None: + monkeypatch.setenv(key, env_val) + assert get_bool_from_env_var(key, True) == exp_val From e178fcbb301acda4e9783ddab4a98eae5f26b5cd Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 14:06:22 +0800 Subject: [PATCH 6/7] chg: dev: use get_bool_from_env_var on BUKUSERVER_OPEN_IN_NEW_TAB --- bukuserver/server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bukuserver/server.py b/bukuserver/server.py index e1cc017..e5d462e 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -239,9 +239,8 @@ def create_app(db_file=None): app.config['SECRET_KEY'] = os.getenv('BUKUSERVER_SECRET_KEY') or os.urandom(24) app.config['BUKUSERVER_DISABLE_FAVICON'] = \ get_bool_from_env_var('BUKUSERVER_DISABLE_FAVICON', True) - open_in_new_tab = os.getenv('BUKUSERVER_OPEN_IN_NEW_TAB', 'false') app.config['BUKUSERVER_OPEN_IN_NEW_TAB'] = \ - False if open_in_new_tab.lower() in ['false', '0'] else bool(open_in_new_tab) + get_bool_from_env_var('BUKUSERVER_OPEN_IN_NEW_TAB', False) app.config['BUKUSERVER_DB_FILE'] = os.getenv('BUKUSERVER_DB_FILE') or db_file reverse_proxy_path = os.getenv('BUKUSERVER_REVERSE_PROXY_PATH') if reverse_proxy_path: From e5021a220af484da151cbf9a6f8c364cee4e9459 Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 28 Feb 2021 14:13:39 +0800 Subject: [PATCH 7/7] fix: test: pylint --- bukuserver/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bukuserver/server.py b/bukuserver/server.py index e5d462e..c800d87 100644 --- a/bukuserver/server.py +++ b/bukuserver/server.py @@ -214,7 +214,7 @@ def search_bookmarks(): return res -def get_bool_from_env_var(key: str, default_value: bool)->bool: +def get_bool_from_env_var(key: str, default_value: bool) -> bool: """Get bool value from env var.""" value = os.getenv(key) if value is None: