diff --git a/src/bcf/README.md b/src/bcf/README.md index 5a7b66c03e..812c0d6f04 100644 --- a/src/bcf/README.md +++ b/src/bcf/README.md @@ -4,10 +4,10 @@ A simple Python implementation of BCF. The data model is described in `data.py`. Manipulation of BCF-XML is available via `bcfxml.py` and manipulation of BCF-API is available via `bcfapi.py`. - - BCF-XML version 2.1: Fully supported - - BCF-API version 2.1: Not supported, will probably tackle this after BCF-API v3.0 - - BCF-XML version 3.0: Almost fully supported, except for the documents module - - BCF-API version 3.0: Almost fully supported, except for two requests. +- BCF-XML version 2.1: Fully supported +- BCF-API version 2.1: Not supported, will probably tackle this after BCF-API v3.0 +- BCF-XML version 3.0: Almost fully supported, except for the documents module +- BCF-API version 3.0: Almost fully supported, except for two requests. ## bcfxml @@ -73,9 +73,9 @@ auth_methods = foundation_client.get_auth_methods() # Our library currently only implements the authorization_code flow if "authorization_code" in auth_methods: - auth_client.login() + foundation_client.login() -bcf_client = BcfClient() +bcf_client = BcfClient(foundation_client) versions = foundation_client.get_versions() for version in versions: @@ -94,7 +94,8 @@ print(data) ``` ## Todo List -The remaining work that needs to be completed in `bcfxml.py` and `bcfapi.py`. - * For `bcfxml.py` two xsds support is remaining namely 'documents.xsd` and `extensions.xsd`. - * For `bcfapi.py` two requests that are `get_topics` and `get_comments` are remaining. +The remaining work that needs to be completed in `bcfxml.py` and `bcfapi.py`. + +- For `bcfxml.py` two xsds support is remaining namely 'documents.xsd`and`extensions.xsd`. +- For `bcfapi.py` two requests that are `get_topics` and `get_comments` are remaining. diff --git a/src/bcfserver/bcf/routes.py b/src/bcfserver/bcf/routes.py deleted file mode 100644 index 9e3230d8af..0000000000 --- a/src/bcfserver/bcf/routes.py +++ /dev/null @@ -1,51 +0,0 @@ -from flask import jsonify, url_for, redirect, render_template, request, session, flash -from flask_login import login_user, logout_user, login_required, current_user -from flask.blueprints import Blueprint -from website.models import User, OAuth2AuthorizationCode, OAuth2Token, OAuth2Client -from run import app, db -import json - -bcf = Blueprint("bcf", __name__, template_folder="templates", url_prefix="/bcf/3.0") - - -@bcf.route("/projects") -def projects(): - Headers = str.split(request.headers["Authorization"]) - token = Headers[1] - access_token = OAuth2Token.query.filter_by(access_token=token).first() - print(access_token) - if access_token: - Body = { - "project_id": "F445F4F2-4D02-4B2A-B612-5E456BEF9137", - "name": "Example project 1", - "authorization": {"project_actions": ["createTopic", "createDocument"]}, - }, { - "project_id": "A233FBB2-3A3B-EFF4-C123-DE22ABC8414", - "name": "Example project 2", - "authorization": {"project_actions": []}, - } - response = app.response_class( - response=json.dumps(Body), - status=200, - mimetype="application/json", - ) - return response - else: - message = {"error": "User not recognized"} - response = app.response_class( - response=jsonify(message), - status=200, - mimetype="application/json", - ) - return response - - -@bcf.route("/") -@login_required -def bcf_3(): - return "

BCF HOMPAGE

" - - -@bcf.route("/projects/") -def project_details(project_id): - return "Project details" diff --git a/src/bcfserver/README.md b/src/foundationserver/README.md similarity index 100% rename from src/bcfserver/README.md rename to src/foundationserver/README.md diff --git a/src/foundationserver/bcfserver/bcf/project.json b/src/foundationserver/bcfserver/bcf/project.json new file mode 100644 index 0000000000..d1be22bd72 --- /dev/null +++ b/src/foundationserver/bcfserver/bcf/project.json @@ -0,0 +1,71 @@ +{ + "Projects":[{ + "project_id": "F445F4F2-4D02-4B2A-B612-5E456BEF9137", + "name": "Example project 1", + "authorization": { + "project_actions": [ + "createTopic", + "createDocument" + ] + } + }, + { + "project_id": "A233FBB2-3A3B-EFF4-C123-DE22ABC8414", + "name": "Example project 2", + "authorization": { + "project_actions": [] + } + }], +"Extensions":[{ + "topic_type": [ + "Information", + "Error" + ], + "topic_status": [ + "Open", + "Closed", + "ReOpened" + ], + "topic_label": [ + "Architecture", + "Structural", + "MEP" + ], + "snippet_type": [ + ".ifc", + ".csv" + ], + "priority": [ + "Low", + "Medium", + "High" + ], + "users": [ + "Architect@example.com", + "BIM-Manager@example.com", + "bob_heater@example.com" + ], + "stage": [ + "Preliminary Planning End", + "Construction Start", + "Construction End" + ], + "project_actions": [ + "update", + "createTopic", + "createDocument" + ], + "topic_actions": [ + "update", + "updateBimSnippet", + "updateRelatedTopics", + "updateDocumentReferences", + "updateFiles", + "createComment", + "createViewpoint" + ], + "comment_actions": [ + "update" + ] +}] +} \ No newline at end of file diff --git a/src/foundationserver/bcfserver/bcf/routes.py b/src/foundationserver/bcfserver/bcf/routes.py new file mode 100644 index 0000000000..1dc28e4ce7 --- /dev/null +++ b/src/foundationserver/bcfserver/bcf/routes.py @@ -0,0 +1,733 @@ +from operator import methodcaller +from flask import jsonify, url_for, redirect, render_template, request, session, flash +from flask_login import login_user, logout_user, login_required, current_user +from flask.blueprints import Blueprint +from foundation.models import User, OAuth2AuthorizationCode, OAuth2Token, OAuth2Client +from run import app, db +import json +import os + +bcf = Blueprint("bcf", __name__, template_folder="templates", url_prefix="/bcf/3.0") +my_absolute_dirpath = os.path.abspath(os.path.dirname(__file__)) +data = open( + f"{my_absolute_dirpath}/project.json", +) +jdata = json.load(data) + + +def validate_client(request): + Headers = str.split(request.headers["Authorization"]) + token = Headers[1] + access_token = OAuth2Token.query.filter_by(access_token=token).first() + if access_token: + return True + else: + return False + + +def invalid_user(): + message = {"error": "User not recognized"} + response = app.response_class( + response=json.dumps(message), + status=200, + mimetype="application/json", + ) + return response + + +def invalid_project(): + message = {"error": "Project not found"} + response = app.response_class( + response=json.dumps(message), + status=400, + mimetype="application/json", + ) + return response + + +@bcf.route("/projects") +def projects(): + access_token = validate_client(request) + if access_token: + response = app.response_class( + response=jdata["Projects"], + status=200, + mimetype="application/json", + ) + return response + else: + response = invalid_user() + return response + + +@bcf.route("/") +@login_required +def bcf_3(): + return "

BCF HOMPAGE

" + + +@bcf.route("/projects/") +def project_details(project_id): + access_token = validate_client(request) + if access_token: + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=i, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects/", methods=["PUT"]) +def update_project(project_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//extensions") +def extensions(project_id): + access_token = validate_client(request) + if access_token: + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=jdata["Extensions"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.routes("/projects//topics") +def topics(project_id): + access_token = validate_client(request) + if access_token: + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=jdata["Topics"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.routes("/projects//topics/", methods=["POST"]) +def topic_details(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "POST": + body = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=body, + status=201, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.routes("/projects//topics/") +def topic_details(project_id, topic_id): + access_token = validate_client(request) + if access_token: + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=j, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics/", methods=["PUT"]) +def update_topic(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics/", methods=["DELETE"]) +def delete_topic(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "DELETE": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + message = {"DELETED"} + response = app.response_class( + response=json.dumps(message), + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//snippet", methods=["GET"]) +def get_snippet(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=json.dumps("Snippet test successfull"), + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//snippet", methods=["PUT"]) +def update_snippet(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//files_information", methods=["GET"]) +def get_files_information(project_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=jdata["Files"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//files", methods=["GET"]) +def get_files(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=json.dumps("Get request for files successfull"), + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//files", methods=["PUT"]) +def update_files(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//comments", methods=["GET"]) +def get_comments(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=jdata["Comments"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//comments", methods=["POST"]) +def create_comments(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "POST": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//comments/", methods=["GET"] +) +def get_comment(project_id, topic_id, comment_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["Comments"]: + if (k["guid"]) == comment_id: + response = app.response_class( + response=k, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//comments/", methods=["PUT"] +) +def update_comment(project_id, topic_id, comment_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["Comments"]: + if (k["guid"]) == comment_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//comments/", methods=["DELETE"] +) +def delete_comment(project_id, topic_id, comment_id): + access_token = validate_client(request) + if access_token and request.method == "DELETE": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["Comments"]: + if (k["guid"]) == comment_id: + message = {"DELETED"} + response = app.response_class( + response=json.dumps(message), + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +""" +***Add ViewPoints Routes Here *** +""" + + +@bcf.route("/projects//topics//related_topics", methods=["GET"]) +def get_related_topics(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=jdata["RelatedTopics"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//related_topics", methods=["PUT"]) +def update_related_topics(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//document_references", methods=["GET"] +) +def get_document_references(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=jdata["DocumentReferences"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//document_references", methods=["POST"] +) +def create_document_references(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "POST": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//document_references/", + methods=["PUT"], +) +def update_document_references(project_id, topic_id, document_reference_id): + access_token = validate_client(request) + if access_token and request.method == "PUT": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["DocumentReferences"]: + if (k["guid"]) == document_reference_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//documents", methods=["GET"]) +def get_documents(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=jdata["Documents"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.routes("/projects//topics//documents", methods=["POST"]) +def create_documents(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "POST": + data = request.form["data"] + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + response = app.response_class( + response=data, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//documents/", methods=["GET"] +) +def get_document(project_id, topic_id, document_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["Documents"]: + if (k["guid"]) == document_id: + response = app.response_class( + response=k, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics/events", methods=["GET"]) +def get_events(project_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + response = app.response_class( + response=jdata["Events"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics//events", methods=["GET"]) +def get_topic_events(project_id, topic_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["Events"]: + if (k["topic_guid"]) == topic_id: + response = app.response_class( + response=k, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route("/projects//topics/comments/events", methods=["GET"]) +def get_comments_events(project_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + response = app.response_class( + response=jdata["EventComments"], + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response + + +@bcf.route( + "/projects//topics//comments//events", + methods=["GET"], +) +def get_comment_events(project_id, topic_id, comment_id): + access_token = validate_client(request) + if access_token and request.method == "GET": + for i in jdata["Projects"]: + if (i["project_id"]) == project_id: + for j in jdata["Topics"]: + if (j["guid"]) == topic_id: + for k in jdata["EventComments"]: + if (k["comment_guid"]) == comment_id: + response = app.response_class( + response=k, + status=200, + mimetype="application/json", + ) + return response + response = invalid_project() + return response + else: + response = invalid_user() + return response diff --git a/src/bcfserver/bcf/templates/base.html b/src/foundationserver/bcfserver/bcf/templates/base.html similarity index 100% rename from src/bcfserver/bcf/templates/base.html rename to src/foundationserver/bcfserver/bcf/templates/base.html diff --git a/src/bcfserver/website/forms.py b/src/foundationserver/bcfserver/foundation/forms.py similarity index 100% rename from src/bcfserver/website/forms.py rename to src/foundationserver/bcfserver/foundation/forms.py diff --git a/src/bcfserver/website/models.py b/src/foundationserver/bcfserver/foundation/models.py similarity index 100% rename from src/bcfserver/website/models.py rename to src/foundationserver/bcfserver/foundation/models.py diff --git a/src/bcfserver/website/oauth2.py b/src/foundationserver/bcfserver/foundation/oauth2.py similarity index 100% rename from src/bcfserver/website/oauth2.py rename to src/foundationserver/bcfserver/foundation/oauth2.py diff --git a/src/bcfserver/website/routes.py b/src/foundationserver/bcfserver/foundation/routes.py similarity index 91% rename from src/bcfserver/website/routes.py rename to src/foundationserver/bcfserver/foundation/routes.py index 28f0e63b03..9fdb7957bb 100644 --- a/src/bcfserver/website/routes.py +++ b/src/foundationserver/bcfserver/foundation/routes.py @@ -11,8 +11,8 @@ import urllib import json from run import db, app -website_obj = Blueprint( - "website_obj", +foundation_obj = Blueprint( + "foundation_obj", __name__, template_folder="templates", ) @@ -22,13 +22,13 @@ def split_by_crlf(s): return [v for v in s.splitlines() if v] -@website_obj.route("/") +@foundation_obj.route("/") def homepage(): return render_template("index.html") # return "homepage" -@website_obj.route("/register", methods=["GET", "POST"]) +@foundation_obj.route("/register", methods=["GET", "POST"]) def register_page(): form = RegisterForm() if form.validate_on_submit(): @@ -45,7 +45,7 @@ def register_page(): f"Account created successfully! {user_to_create.username}", category="success", ) - return redirect(url_for("website_obj.homepage")) + return redirect(url_for("foundation_obj.homepage")) if form.errors != {}: for err_msg in form.errors.values(): flash( @@ -55,7 +55,7 @@ def register_page(): return render_template("register.html", form=form) -@website_obj.route("/createclient", methods=["GET", "POST"]) +@foundation_obj.route("/createclient", methods=["GET", "POST"]) @login_required def create_client(): grants = [ @@ -99,7 +99,7 @@ def create_client(): return render_template("createclient.html", form=form, grants=grants) -@website_obj.route("/login", methods=["GET", "POST"]) +@foundation_obj.route("/login", methods=["GET", "POST"]) def login_page(): form = LoginForm() if form.validate_on_submit(): @@ -108,7 +108,7 @@ def login_page(): attempted_password=form.password.data ): login_user(attempted_user) - return redirect(url_for("website_obj.homepage")) + return redirect(url_for("foundation_obj.homepage")) else: flash( "Invalid Credentials", @@ -118,14 +118,14 @@ def login_page(): return render_template("login.html", form=form) -@website_obj.route("/logout") +@foundation_obj.route("/logout") def logoutpage(): logout_user() flash("You have been logged out!", category="info") - return redirect(url_for("website_obj.homepage")) + return redirect(url_for("foundation_obj.homepage")) -@website_obj.route("/foundation/1.0/auth") +@foundation_obj.route("/foundation/1.0/auth") def foundation_auth(): data = { "oauth2_auth_url": "http://127.0.0.1:5000/oauth/authorize", @@ -138,7 +138,7 @@ def foundation_auth(): return response -@website_obj.route("/foundation/versions") +@foundation_obj.route("/foundation/versions") def foundation_versions(): Body = { "versions": [ @@ -167,7 +167,7 @@ def foundation_versions(): return response -@website_obj.route("/outh/login", methods=["GET", "POST"]) +@foundation_obj.route("/outh/login", methods=["GET", "POST"]) def oauth_login(): form = LoginForm() if form.validate_on_submit(): @@ -185,7 +185,7 @@ def oauth_login(): state = request.args.get("state") return redirect( url_for( - "website_obj.authorize", + "foundation_obj.authorize", client_id=client_id, redirect_uri=redirect_uri, state=state, @@ -199,7 +199,7 @@ def oauth_login(): return render_template("ologin.html", form=form) -@website_obj.route("/oauth/authorize", methods=["GET", "POST"]) +@foundation_obj.route("/oauth/authorize", methods=["GET", "POST"]) def authorize(): client_id = request.args.get("client_id") redirect_uri = request.args.get("redirect_uri") @@ -209,7 +209,7 @@ def authorize(): query = request.query_string return redirect( url_for( - "website_obj.oauth_login", + "foundation_obj.oauth_login", client_id=client_id, redirect_uri=redirect_uri, state=state, @@ -252,7 +252,7 @@ def authorize(): return render_template("oauth.html") -@website_obj.route("/oauth/token", methods=["POST"]) +@foundation_obj.route("/oauth/token", methods=["POST"]) def issue_token(): try: code = request.form["code"] diff --git a/src/bcfserver/website/templates/base.html b/src/foundationserver/bcfserver/foundation/templates/base.html similarity index 88% rename from src/bcfserver/website/templates/base.html rename to src/foundationserver/bcfserver/foundation/templates/base.html index f6a2a2df7c..534b7f5c43 100644 --- a/src/bcfserver/website/templates/base.html +++ b/src/foundationserver/bcfserver/foundation/templates/base.html @@ -30,7 +30,7 @@ diff --git a/src/bcfserver/website/templates/oauth.html b/src/foundationserver/bcfserver/foundation/templates/oauth.html similarity index 100% rename from src/bcfserver/website/templates/oauth.html rename to src/foundationserver/bcfserver/foundation/templates/oauth.html diff --git a/src/bcfserver/website/templates/ologin.html b/src/foundationserver/bcfserver/foundation/templates/ologin.html similarity index 93% rename from src/bcfserver/website/templates/ologin.html rename to src/foundationserver/bcfserver/foundation/templates/ologin.html index 708f5498e7..277f795cff 100644 --- a/src/bcfserver/website/templates/ologin.html +++ b/src/foundationserver/bcfserver/foundation/templates/ologin.html @@ -16,7 +16,7 @@
Do not have an account?
Register diff --git a/src/bcfserver/website/templates/register.html b/src/foundationserver/bcfserver/foundation/templates/register.html similarity index 94% rename from src/bcfserver/website/templates/register.html rename to src/foundationserver/bcfserver/foundation/templates/register.html index f45b0c45f5..2aa75c7c2e 100644 --- a/src/bcfserver/website/templates/register.html +++ b/src/foundationserver/bcfserver/foundation/templates/register.html @@ -18,7 +18,7 @@
Already have an account?
Login diff --git a/src/bcfserver/run.py b/src/foundationserver/bcfserver/run.py similarity index 79% rename from src/bcfserver/run.py rename to src/foundationserver/bcfserver/run.py index 3e13150778..d1cb4c7c5d 100644 --- a/src/bcfserver/run.py +++ b/src/foundationserver/bcfserver/run.py @@ -10,14 +10,14 @@ login_manager = LoginManager(app) bcrypt = Bcrypt(app) app.config["SECRET_KEY"] = "f613729206685405cde0e388" app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///sqlite.db" -login_manager.login_view = "website_obj.login_page" +login_manager.login_view = "foundation_obj.login_page" login_manager.login_message_category = "info" -from website.routes import website_obj +from foundation.routes import foundation_obj from bcf.routes import bcf -app.register_blueprint(website_obj) +app.register_blueprint(foundation_obj) app.register_blueprint(bcf) diff --git a/src/bcfserver/requirements.txt b/src/foundationserver/requirements.txt similarity index 100% rename from src/bcfserver/requirements.txt rename to src/foundationserver/requirements.txt