From 1c30ef578537f8ada53132744801ffc4aa03c52e Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Mon, 1 May 2017 21:49:28 -0700 Subject: [PATCH] Further separate front & back; Create frontends folder New frontends folder will hold all front-end interfaces for etiquette. Existing flask site moved here and refers to itself as a package with external launcher. etiquette_site renamed to etiquette_flask --- .../etiquette_flask}/__init__.py | 3 + .../etiquette_flask}/decorators.py | 0 .../etiquette_flask/etiquette_flask.py | 73 +++++++++--------- .../etiquette_flask}/jsonify.py | 0 .../etiquette_flask}/sessions.py | 0 .../etiquette_flask/etiquette_flask_launch.py | 6 +- .../static}/basic_thumbnails/archive.png | Bin .../static}/basic_thumbnails/archive.svg | 0 .../static}/basic_thumbnails/audio.png | Bin .../static}/basic_thumbnails/audio.svg | 0 .../static}/basic_thumbnails/other.png | Bin .../static}/basic_thumbnails/other.svg | 0 .../static}/basic_thumbnails/svg.png | Bin .../static}/basic_thumbnails/svg.svg | 0 .../static}/basic_thumbnails/txt.png | Bin .../static}/basic_thumbnails/txt.svg | 0 .../static}/basic_thumbnails/video.png | Bin .../static}/basic_thumbnails/video.svg | 0 .../etiquette_flask/static}/common.css | 0 .../etiquette_flask/static}/common.js | 0 .../etiquette_flask/static}/favicon.png | Bin .../etiquette_flask/static}/favicon.svg | 0 .../etiquette_flask/templates}/album.html | 0 .../etiquette_flask/templates}/albums.html | 0 .../etiquette_flask/templates}/bookmarks.html | 0 .../etiquette_flask/templates}/header.html | 0 .../etiquette_flask/templates}/login.html | 0 .../etiquette_flask/templates}/photo.html | 0 .../templates}/photo_card.html | 0 .../etiquette_flask/templates}/root.html | 0 .../etiquette_flask/templates}/search.html | 0 .../etiquette_flask/templates}/tags.html | 0 .../etiquette_flask/templates}/template.html | 0 .../etiquette_flask/templates}/user.html | 0 .../etiquette_repl.py | 0 35 files changed, 44 insertions(+), 38 deletions(-) rename {etiquette_flask => frontends/etiquette_flask/etiquette_flask}/__init__.py (54%) rename {etiquette_flask => frontends/etiquette_flask/etiquette_flask}/decorators.py (100%) rename etiquette_site.py => frontends/etiquette_flask/etiquette_flask/etiquette_flask.py (91%) rename {etiquette_flask => frontends/etiquette_flask/etiquette_flask}/jsonify.py (100%) rename {etiquette_flask => frontends/etiquette_flask/etiquette_flask}/sessions.py (100%) rename etiquette_site_launch.py => frontends/etiquette_flask/etiquette_flask_launch.py (84%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/archive.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/archive.svg (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/audio.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/audio.svg (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/other.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/other.svg (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/svg.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/svg.svg (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/txt.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/txt.svg (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/video.png (100%) rename {static => frontends/etiquette_flask/static}/basic_thumbnails/video.svg (100%) rename {static => frontends/etiquette_flask/static}/common.css (100%) rename {static => frontends/etiquette_flask/static}/common.js (100%) rename {static => frontends/etiquette_flask/static}/favicon.png (100%) rename {static => frontends/etiquette_flask/static}/favicon.svg (100%) rename {templates => frontends/etiquette_flask/templates}/album.html (100%) rename {templates => frontends/etiquette_flask/templates}/albums.html (100%) rename {templates => frontends/etiquette_flask/templates}/bookmarks.html (100%) rename {templates => frontends/etiquette_flask/templates}/header.html (100%) rename {templates => frontends/etiquette_flask/templates}/login.html (100%) rename {templates => frontends/etiquette_flask/templates}/photo.html (100%) rename {templates => frontends/etiquette_flask/templates}/photo_card.html (100%) rename {templates => frontends/etiquette_flask/templates}/root.html (100%) rename {templates => frontends/etiquette_flask/templates}/search.html (100%) rename {templates => frontends/etiquette_flask/templates}/tags.html (100%) rename {templates => frontends/etiquette_flask/templates}/template.html (100%) rename {templates => frontends/etiquette_flask/templates}/user.html (100%) rename etiquette_repl.py => frontends/etiquette_repl.py (100%) diff --git a/etiquette_flask/__init__.py b/frontends/etiquette_flask/etiquette_flask/__init__.py similarity index 54% rename from etiquette_flask/__init__.py rename to frontends/etiquette_flask/etiquette_flask/__init__.py index 334daa4..fc5fa31 100644 --- a/etiquette_flask/__init__.py +++ b/frontends/etiquette_flask/etiquette_flask/__init__.py @@ -1,3 +1,6 @@ from . import decorators +from . import etiquette_flask from . import jsonify from . import sessions + +site = etiquette_flask.site diff --git a/etiquette_flask/decorators.py b/frontends/etiquette_flask/etiquette_flask/decorators.py similarity index 100% rename from etiquette_flask/decorators.py rename to frontends/etiquette_flask/etiquette_flask/decorators.py diff --git a/etiquette_site.py b/frontends/etiquette_flask/etiquette_flask/etiquette_flask.py similarity index 91% rename from etiquette_site.py rename to frontends/etiquette_flask/etiquette_flask/etiquette_flask.py index db0f98f..b44eada 100644 --- a/etiquette_site.py +++ b/frontends/etiquette_flask/etiquette_flask/etiquette_flask.py @@ -10,13 +10,16 @@ import warnings import zipstream import etiquette -import etiquette_flask + +from . import decorators +from . import jsonify +from . import sessions from voussoirkit import pathclass -root_dir = pathclass.Path(__file__).parent - +root_dir = pathclass.Path(__file__).parent.parent +print(root_dir) TEMPLATE_DIR = root_dir.with_child('templates') STATIC_DIR = root_dir.with_child('static') FAVICON_PATH = STATIC_DIR.with_child('favicon.png') @@ -37,7 +40,7 @@ site.debug = True P = etiquette.photodb.PhotoDB() -session_manager = etiquette_flask.sessions.SessionManager() +session_manager = sessions.SessionManager() #################################################################################################### #################################################################################################### @@ -86,7 +89,7 @@ def P_wrapper(function): flask.abort(status, e.error_message) else: response = etiquette.jsonify.exception(e) - response = etiquette_flask.jsonify.make_json_response(response, status=status) + response = jsonify.make_json_response(response, status=status) flask.abort(response) except Exception as e: @@ -213,12 +216,12 @@ def get_register(): @site.route('/login', methods=['POST']) @session_manager.give_token -@etiquette_flask.decorators.required_fields(['username', 'password']) +@decorators.required_fields(['username', 'password']) def post_login(): if session_manager.get(request): e = etiquette.exceptions.AlreadySignedIn() response = etiquette.jsonify.exception(e) - return etiquette_flask.jsonify.make_json_response(response, status=403) + return jsonify.make_json_response(response, status=403) username = request.form['username'] password = request.form['password'] @@ -232,19 +235,19 @@ def post_login(): except (etiquette.exceptions.NoSuchUser, etiquette.exceptions.WrongLogin): e = etiquette.exceptions.WrongLogin() response = etiquette.jsonify.exception(e) - return etiquette_flask.jsonify.make_json_response(response, status=422) - session = etiquette_flask.sessions.Session(request, user) + return jsonify.make_json_response(response, status=422) + session = sessions.Session(request, user) session_manager.add(session) - return etiquette_flask.jsonify.make_json_response({}) + return jsonify.make_json_response({}) @site.route('/register', methods=['POST']) @session_manager.give_token -@etiquette_flask.decorators.required_fields(['username', 'password_1', 'password_2']) +@decorators.required_fields(['username', 'password_1', 'password_2']) def post_register(): if session_manager.get(request): e = etiquette.exceptions.AlreadySignedIn() response = etiquette.jsonify.exception(e) - return etiquette_flask.jsonify.make_json_response(response, status=403) + return jsonify.make_json_response(response, status=403) username = request.form['username'] password_1 = request.form['password_1'] @@ -255,17 +258,17 @@ def post_register(): 'error_type': 'PASSWORDS_DONT_MATCH', 'error_message': 'Passwords do not match.', } - return etiquette_flask.jsonify.make_json_response(response, status=422) + return jsonify.make_json_response(response, status=422) try: user = P.register_user(username, password_1) except etiquette.exceptions.EtiquetteException as e: response = etiquette.jsonify.exception(e) - return etiquette_flask.jsonify.make_json_response(response, status=400) + return jsonify.make_json_response(response, status=400) - session = etiquette_flask.sessions.Session(request, user) + session = sessions.Session(request, user) session_manager.add(session) - return etiquette_flask.jsonify.make_json_response({}) + return jsonify.make_json_response({}) @site.route('/logout', methods=['GET', 'POST']) @session_manager.give_token @@ -306,7 +309,7 @@ def get_album_json(albumid): album['sub_albums'] = [P_album(x) for x in album['sub_albums']] album['sub_albums'].sort(key=lambda x: (x.title or x.id).lower()) album['sub_albums'] = [etiquette.jsonify.album(x, minimal=True) for x in album['sub_albums']] - return etiquette_flask.jsonify.make_json_response(album) + return jsonify.make_json_response(album) @site.route('/album/.zip') @@ -370,7 +373,7 @@ def get_albums_html(): def get_albums_json(): albums = get_albums_core() albums = [etiquette.jsonify.album(album, minimal=True) for album in albums] - return etiquette_flask.jsonify.make_json_response(albums) + return jsonify.make_json_response(albums) @site.route('/bookmarks') @@ -419,7 +422,7 @@ def get_photo_html(photoid): def get_photo_json(photoid): photo = P_photo(photoid, response_type='json') photo = etiquette.jsonify.photo(photo) - photo = etiquette_flask.jsonify.make_json_response(photo) + photo = jsonify.make_json_response(photo) return photo def get_search_core(): @@ -584,7 +587,7 @@ def get_search_json(): search_results['photos'] = [ etiquette.jsonify.photo(photo, include_albums=False) for photo in search_results['photos'] ] - return etiquette_flask.jsonify.make_json_response(search_results) + return jsonify.make_json_response(search_results) def get_tags_core(specific_tag=None): @@ -624,7 +627,7 @@ def get_tags_json(specific_tag=None): include_synonyms = request.args.get('synonyms') include_synonyms = include_synonyms is None or etiquette.helpers.truthystring(include_synonyms) tags = [etiquette.jsonify.tag(tag, include_synonyms=include_synonyms) for tag in tags] - return etiquette_flask.jsonify.make_json_response(tags) + return jsonify.make_json_response(tags) @site.route('/thumbnail/') @@ -654,7 +657,7 @@ def get_user_html(username): def get_user_json(username): user = get_user_core(username) user = etiquette.jsonify.user(user) - user = etiquette_flask.jsonify.make_json_response(user) + user = jsonify.make_json_response(user) return user @@ -672,13 +675,13 @@ def post_album_add_tag(albumid): tag = P_tag(tag) except etiquette.exceptions.NoSuchTag as e: response = etiquette.jsonify.exception(e) - return etiquette_flask.jsonify.make_json_response(response, status=404) + return jsonify.make_json_response(response, status=404) recursive = request.form.get('recursive', False) recursive = etiquette.helpers.truthystring(recursive) album.add_tag_to_all(tag, nested_children=recursive) response['action'] = 'add_tag' response['tagname'] = tag.name - return etiquette_flask.jsonify.make_json_response(response) + return jsonify.make_json_response(response) @site.route('/album//edit', methods=['POST']) @@ -693,7 +696,7 @@ def post_album_edit(albumid): description = request.form.get('description', None) album.edit(title=title, description=description) response = {'title': album.title, 'description': album.description} - return etiquette_flask.jsonify.make_json_response(response) + return jsonify.make_json_response(response) def post_photo_add_remove_tag_core(photoid, tagname, add_or_remove): @@ -707,14 +710,14 @@ def post_photo_add_remove_tag_core(photoid, tagname, add_or_remove): photo.remove_tag(tag) except etiquette.exceptions.EtiquetteException as e: response = etiquette.jsonify.exception(e) - response = etiquette_flask.jsonify.make_json_response(response, status=400) + response = jsonify.make_json_response(response, status=400) flask.abort(response) response = {'tagname': tag.name} - return etiquette_flask.jsonify.make_json_response(response) + return jsonify.make_json_response(response) @site.route('/photo//add_tag', methods=['POST']) -@etiquette_flask.decorators.required_fields(['tagname'], forbid_whitespace=True) +@decorators.required_fields(['tagname'], forbid_whitespace=True) def post_photo_add_tag(photoid): ''' Add a tag to this photo. @@ -722,7 +725,7 @@ def post_photo_add_tag(photoid): return post_photo_add_remove_tag_core(photoid, request.form['tagname'], 'add') @site.route('/photo//remove_tag', methods=['POST']) -@etiquette_flask.decorators.required_fields(['tagname'], forbid_whitespace=True) +@decorators.required_fields(['tagname'], forbid_whitespace=True) def post_photo_remove_tag(photoid): ''' Remove a tag from this photo. @@ -740,9 +743,9 @@ def post_photo_refresh_metadata(photoid): photo.reload_metadata() except etiquette.exceptions.EtiquetteException as e: response = etiquette.jsonify.exception(e) - response = etiquette_flask.jsonify.make_json_response(response, status=400) + response = jsonify.make_json_response(response, status=400) flask.abort(response) - return etiquette_flask.jsonify.make_json_response({}) + return jsonify.make_json_response({}) def post_tag_create_delete_core(tagname, function): @@ -754,10 +757,10 @@ def post_tag_create_delete_core(tagname, function): status = 400 #print(response) - return etiquette_flask.jsonify.make_json_response(response, status=status) + return jsonify.make_json_response(response, status=status) @site.route('/tags/create_tag', methods=['POST']) -@etiquette_flask.decorators.required_fields(['tagname'], forbid_whitespace=True) +@decorators.required_fields(['tagname'], forbid_whitespace=True) def post_tag_create(): ''' Create a tag. @@ -765,7 +768,7 @@ def post_tag_create(): return post_tag_create_delete_core(request.form['tagname'], create_tag) @site.route('/tags/delete_tag', methods=['POST']) -@etiquette_flask.decorators.required_fields(['tagname'], forbid_whitespace=True) +@decorators.required_fields(['tagname'], forbid_whitespace=True) def post_tag_delete(): ''' Delete a tag. @@ -773,7 +776,7 @@ def post_tag_delete(): return post_tag_create_delete_core(request.form['tagname'], delete_tag) @site.route('/tags/delete_synonym', methods=['POST']) -@etiquette_flask.decorators.required_fields(['tagname'], forbid_whitespace=True) +@decorators.required_fields(['tagname'], forbid_whitespace=True) def post_tag_delete_synonym(): ''' Delete a synonym. diff --git a/etiquette_flask/jsonify.py b/frontends/etiquette_flask/etiquette_flask/jsonify.py similarity index 100% rename from etiquette_flask/jsonify.py rename to frontends/etiquette_flask/etiquette_flask/jsonify.py diff --git a/etiquette_flask/sessions.py b/frontends/etiquette_flask/etiquette_flask/sessions.py similarity index 100% rename from etiquette_flask/sessions.py rename to frontends/etiquette_flask/etiquette_flask/sessions.py diff --git a/etiquette_site_launch.py b/frontends/etiquette_flask/etiquette_flask_launch.py similarity index 84% rename from etiquette_site_launch.py rename to frontends/etiquette_flask/etiquette_flask_launch.py index 0ff3c17..8b5e109 100644 --- a/etiquette_site_launch.py +++ b/frontends/etiquette_flask/etiquette_flask_launch.py @@ -1,7 +1,7 @@ import gevent.monkey gevent.monkey.patch_all() -import etiquette_site +import etiquette_flask import gevent.pywsgi import gevent.wsgi import sys @@ -14,14 +14,14 @@ else: if port == 443: http = gevent.pywsgi.WSGIServer( listener=('0.0.0.0', port), - application=etiquette_site.site, + application=etiquette_flask.site, keyfile='C:\\git\\etiquette\\etiquette\\https\\etiquette.key', certfile='C:\\git\\etiquette\\etiquette\\https\\etiquette.crt', ) else: http = gevent.pywsgi.WSGIServer( listener=('0.0.0.0', port), - application=etiquette_site.site, + application=etiquette_flask.site, ) diff --git a/static/basic_thumbnails/archive.png b/frontends/etiquette_flask/static/basic_thumbnails/archive.png similarity index 100% rename from static/basic_thumbnails/archive.png rename to frontends/etiquette_flask/static/basic_thumbnails/archive.png diff --git a/static/basic_thumbnails/archive.svg b/frontends/etiquette_flask/static/basic_thumbnails/archive.svg similarity index 100% rename from static/basic_thumbnails/archive.svg rename to frontends/etiquette_flask/static/basic_thumbnails/archive.svg diff --git a/static/basic_thumbnails/audio.png b/frontends/etiquette_flask/static/basic_thumbnails/audio.png similarity index 100% rename from static/basic_thumbnails/audio.png rename to frontends/etiquette_flask/static/basic_thumbnails/audio.png diff --git a/static/basic_thumbnails/audio.svg b/frontends/etiquette_flask/static/basic_thumbnails/audio.svg similarity index 100% rename from static/basic_thumbnails/audio.svg rename to frontends/etiquette_flask/static/basic_thumbnails/audio.svg diff --git a/static/basic_thumbnails/other.png b/frontends/etiquette_flask/static/basic_thumbnails/other.png similarity index 100% rename from static/basic_thumbnails/other.png rename to frontends/etiquette_flask/static/basic_thumbnails/other.png diff --git a/static/basic_thumbnails/other.svg b/frontends/etiquette_flask/static/basic_thumbnails/other.svg similarity index 100% rename from static/basic_thumbnails/other.svg rename to frontends/etiquette_flask/static/basic_thumbnails/other.svg diff --git a/static/basic_thumbnails/svg.png b/frontends/etiquette_flask/static/basic_thumbnails/svg.png similarity index 100% rename from static/basic_thumbnails/svg.png rename to frontends/etiquette_flask/static/basic_thumbnails/svg.png diff --git a/static/basic_thumbnails/svg.svg b/frontends/etiquette_flask/static/basic_thumbnails/svg.svg similarity index 100% rename from static/basic_thumbnails/svg.svg rename to frontends/etiquette_flask/static/basic_thumbnails/svg.svg diff --git a/static/basic_thumbnails/txt.png b/frontends/etiquette_flask/static/basic_thumbnails/txt.png similarity index 100% rename from static/basic_thumbnails/txt.png rename to frontends/etiquette_flask/static/basic_thumbnails/txt.png diff --git a/static/basic_thumbnails/txt.svg b/frontends/etiquette_flask/static/basic_thumbnails/txt.svg similarity index 100% rename from static/basic_thumbnails/txt.svg rename to frontends/etiquette_flask/static/basic_thumbnails/txt.svg diff --git a/static/basic_thumbnails/video.png b/frontends/etiquette_flask/static/basic_thumbnails/video.png similarity index 100% rename from static/basic_thumbnails/video.png rename to frontends/etiquette_flask/static/basic_thumbnails/video.png diff --git a/static/basic_thumbnails/video.svg b/frontends/etiquette_flask/static/basic_thumbnails/video.svg similarity index 100% rename from static/basic_thumbnails/video.svg rename to frontends/etiquette_flask/static/basic_thumbnails/video.svg diff --git a/static/common.css b/frontends/etiquette_flask/static/common.css similarity index 100% rename from static/common.css rename to frontends/etiquette_flask/static/common.css diff --git a/static/common.js b/frontends/etiquette_flask/static/common.js similarity index 100% rename from static/common.js rename to frontends/etiquette_flask/static/common.js diff --git a/static/favicon.png b/frontends/etiquette_flask/static/favicon.png similarity index 100% rename from static/favicon.png rename to frontends/etiquette_flask/static/favicon.png diff --git a/static/favicon.svg b/frontends/etiquette_flask/static/favicon.svg similarity index 100% rename from static/favicon.svg rename to frontends/etiquette_flask/static/favicon.svg diff --git a/templates/album.html b/frontends/etiquette_flask/templates/album.html similarity index 100% rename from templates/album.html rename to frontends/etiquette_flask/templates/album.html diff --git a/templates/albums.html b/frontends/etiquette_flask/templates/albums.html similarity index 100% rename from templates/albums.html rename to frontends/etiquette_flask/templates/albums.html diff --git a/templates/bookmarks.html b/frontends/etiquette_flask/templates/bookmarks.html similarity index 100% rename from templates/bookmarks.html rename to frontends/etiquette_flask/templates/bookmarks.html diff --git a/templates/header.html b/frontends/etiquette_flask/templates/header.html similarity index 100% rename from templates/header.html rename to frontends/etiquette_flask/templates/header.html diff --git a/templates/login.html b/frontends/etiquette_flask/templates/login.html similarity index 100% rename from templates/login.html rename to frontends/etiquette_flask/templates/login.html diff --git a/templates/photo.html b/frontends/etiquette_flask/templates/photo.html similarity index 100% rename from templates/photo.html rename to frontends/etiquette_flask/templates/photo.html diff --git a/templates/photo_card.html b/frontends/etiquette_flask/templates/photo_card.html similarity index 100% rename from templates/photo_card.html rename to frontends/etiquette_flask/templates/photo_card.html diff --git a/templates/root.html b/frontends/etiquette_flask/templates/root.html similarity index 100% rename from templates/root.html rename to frontends/etiquette_flask/templates/root.html diff --git a/templates/search.html b/frontends/etiquette_flask/templates/search.html similarity index 100% rename from templates/search.html rename to frontends/etiquette_flask/templates/search.html diff --git a/templates/tags.html b/frontends/etiquette_flask/templates/tags.html similarity index 100% rename from templates/tags.html rename to frontends/etiquette_flask/templates/tags.html diff --git a/templates/template.html b/frontends/etiquette_flask/templates/template.html similarity index 100% rename from templates/template.html rename to frontends/etiquette_flask/templates/template.html diff --git a/templates/user.html b/frontends/etiquette_flask/templates/user.html similarity index 100% rename from templates/user.html rename to frontends/etiquette_flask/templates/user.html diff --git a/etiquette_repl.py b/frontends/etiquette_repl.py similarity index 100% rename from etiquette_repl.py rename to frontends/etiquette_repl.py