From e6d36ef1964fb09a16c06865f18605885f80fd3d Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 25 Dec 2022 18:15:52 +0530 Subject: [PATCH 01/22] feat: updated APIs to support fastAPIs --- backend/editor/api.py | 120 ++++++++++++++++++++++---- taxonomy-editor-frontend/build/.empty | 1 - 2 files changed, 104 insertions(+), 17 deletions(-) delete mode 100644 taxonomy-editor-frontend/build/.empty diff --git a/backend/editor/api.py b/backend/editor/api.py index d6e9e428..37080086 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -12,6 +12,7 @@ from fastapi import BackgroundTasks, FastAPI, HTTPException, Request, Response, status from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse +from pydantic import BaseModel # DB helper imports from . import graph_db @@ -97,6 +98,72 @@ def file_cleanup(filepath): raise HTTPException(status_code=500, detail="Taxonomy file not found for deletion") +# Response models for FastAPI + + +class ImportFromGithubParameters(BaseModel): + branch: str + taxonomy_name: str + + +class ImportFromGithubResponse(BaseModel): + status: str + + +class CreateNodeParameters(BaseModel): + branch: str + taxonomy_name: str + + +class EditEntryParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditEntryResponse(BaseModel): + result = [] + + +class EditChildrenParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditChildrenResponse(BaseModel): + result = [] + + +class EditSynonymsParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditSynonymResponse(BaseModel): + result = [] + + +class EditHeadersParameters(BaseModel): + branch: str + taxonomy_name: str + + +class EditHeadersResponse(BaseModel): + result: [] + + +class EditFootersParameters(BaseModel): + incoming_data: Footer + branch: str + taxonomy_name: str + + +class EditFootersResponse(BaseModel): + result: [] + + # Get methods @@ -309,7 +376,13 @@ async def export_to_github( @app.post("/{taxonomy_name}/{branch}/import") -async def import_from_github(request: Request, branch: str, taxonomy_name: str): +async def import_from_github( + request: Request, + branch: str, + taxonomy_name: str, + parameters: ImportFromGithubParameters, + response_model=ImportFromGithubResponse, +): """ Get taxonomy from Product Opener GitHub repository """ @@ -329,7 +402,9 @@ async def import_from_github(request: Request, branch: str, taxonomy_name: str): @app.post("/{taxonomy_name}/{branch}/nodes") -async def create_node(request: Request, branch: str, taxonomy_name: str): +async def create_node( + request: Request, branch: str, taxonomy_name: str, parameters: CreateNodeParameters +): """ Creating a new node in a taxonomy """ @@ -350,43 +425,54 @@ async def create_node(request: Request, branch: str, taxonomy_name: str): @app.post("/{taxonomy_name}/{branch}/entry/{entry}") -async def edit_entry(request: Request, branch: str, taxonomy_name: str, entry: str): +async def edit_entry( + request: Request, parameters: EditChildrenParameters, response_model=EditChildrenResponse +): """ Editing an entry in a taxonomy. New key-value pairs can be added, old key-value pairs can be updated. URL will be of format '/entry/' """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() - result = taxonomy.update_nodes("ENTRY", entry, incoming_data) + result = taxonomy.update_nodes("ENTRY", parameters.entry, incoming_data) updated_entry = list(result) return updated_entry @app.post("/{taxonomy_name}/{branch}/entry/{entry}/children") -async def edit_entry_children(request: Request, branch: str, taxonomy_name: str, entry: str): +async def edit_entry_children( + request: Request, + branch: str, + taxonomy_name: str, + entry: str, + parameters: EditChildrenParameters, + response_model=EditChildrenResponse, +): """ Editing an entry's children in a taxonomy. New children can be added, old children can be removed. URL will be of format '/entry//children' """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() - result = taxonomy.update_node_children(entry, incoming_data) + result = taxonomy.update_node_children(parameters.entry, incoming_data) updated_children = list(result) return updated_children @app.post("/{taxonomy_name}/{branch}/synonym/{synonym}") -async def edit_synonyms(request: Request, branch: str, taxonomy_name: str, synonym: str): +async def edit_synonyms( + request: Request, parameters: EditSynonymsParameters, response_model=EditSynonymResponse +): """ Editing a synonym in a taxonomy. New key-value pairs can be added, old key-value pairs can be updated. URL will be of format '/synonym/' """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() - result = taxonomy.update_nodes("SYNONYMS", synonym, incoming_data) + result = taxonomy.update_nodes("SYNONYMS", parameters.synonym, incoming_data) updated_synonym = list(result) return updated_synonym @@ -406,11 +492,13 @@ async def edit_stopwords(request: Request, branch: str, taxonomy_name: str, stop @app.post("/{taxonomy_name}/{branch}/header") -async def edit_header(incoming_data: Header, branch: str, taxonomy_name: str): +async def edit_header( + incoming_data: Header, parameters: EditHeadersParameters, respnse_model: EditHeadersResponse +): """ Editing the __header__ in a taxonomy. """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) convertedData = incoming_data.dict() result = taxonomy.update_nodes("TEXT", "__header__", convertedData) updated_header = list(result) @@ -418,12 +506,12 @@ async def edit_header(incoming_data: Header, branch: str, taxonomy_name: str): @app.post("/{taxonomy_name}/{branch}/footer") -async def edit_footer(incoming_data: Footer, branch: str, taxonomy_name: str): +async def edit_footer(parameters: EditFootersParameters, response_model: EditFootersResponse): """ Editing the __footer__ in a taxonomy. """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) - convertedData = incoming_data.dict() + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) + convertedData = parameters.incoming_data.dict() result = taxonomy.update_nodes("TEXT", "__footer__", convertedData) updated_footer = list(result) return updated_footer diff --git a/taxonomy-editor-frontend/build/.empty b/taxonomy-editor-frontend/build/.empty deleted file mode 100644 index 20b9cc69..00000000 --- a/taxonomy-editor-frontend/build/.empty +++ /dev/null @@ -1 +0,0 @@ -# keep this file to have the folder in git to avoid permissions problem (if docker-compose creates the build directory, it will be owned by root From 7efdf13bf60f7fd7fcae67eaf84cbaf02406eff8 Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:24:09 +0530 Subject: [PATCH 02/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 37080086..cade3e94 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -135,7 +135,8 @@ class EditChildrenResponse(BaseModel): result = [] -class EditSynonymsParameters(BaseModel): +class EditSynonymParameters(BaseModel): + branch: str taxonomy_name: str entry: str From 41ab8fe4881ee2e719a2786497bb35f47549404b Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:24:27 +0530 Subject: [PATCH 03/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index cade3e94..72f0e739 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -146,11 +146,13 @@ class EditSynonymResponse(BaseModel): result = [] -class EditHeadersParameters(BaseModel): +class EditHeaderParameters(BaseModel): + incoming_data: Header branch: str taxonomy_name: str + class EditHeadersResponse(BaseModel): result: [] From 2b404723fecdffe3b27553480b3de2d8352d42ed Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:24:36 +0530 Subject: [PATCH 04/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 72f0e739..c358d7a0 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -153,7 +153,8 @@ class EditHeaderParameters(BaseModel): -class EditHeadersResponse(BaseModel): +class EditHeaderResponse(BaseModel): + result: [] From 29099f2655f197bbde7de340db991d2b78220c90 Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:24:44 +0530 Subject: [PATCH 05/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index c358d7a0..44d0f177 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -158,7 +158,8 @@ class EditHeaderResponse(BaseModel): result: [] -class EditFootersParameters(BaseModel): +class EditFooterParameters(BaseModel): + incoming_data: Footer branch: str taxonomy_name: str From 8f5a1eec788614e02e73d6cdbf8ef9d0faee8eea Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:25:59 +0530 Subject: [PATCH 06/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 44d0f177..05a4e81c 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -498,7 +498,8 @@ async def edit_stopwords(request: Request, branch: str, taxonomy_name: str, stop @app.post("/{taxonomy_name}/{branch}/header") async def edit_header( - incoming_data: Header, parameters: EditHeadersParameters, respnse_model: EditHeadersResponse + parameters: EditHeadersParameters, respnse_model: EditHeadersResponse + ): """ Editing the __header__ in a taxonomy. From 7870910d639af045d1c95f952796565c84dcbdfb Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Mon, 26 Dec 2022 20:26:24 +0530 Subject: [PATCH 07/22] Update backend/editor/api.py Co-authored-by: Aadarsh A --- backend/editor/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 05a4e81c..cc408948 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -505,7 +505,8 @@ async def edit_header( Editing the __header__ in a taxonomy. """ taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) - convertedData = incoming_data.dict() + convertedData = parameters.incoming_data.dict() + result = taxonomy.update_nodes("TEXT", "__header__", convertedData) updated_header = list(result) return updated_header From a4d50716d9be62526691cca044276b64f4122cc9 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Mon, 26 Dec 2022 20:53:14 +0530 Subject: [PATCH 08/22] fix: updated model names, and divided them into another file --- backend/editor/api.py | 108 ++++++++------------------------------- backend/editor/models.py | 67 ++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 87 deletions(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index cc408948..60e954c0 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -12,7 +12,6 @@ from fastapi import BackgroundTasks, FastAPI, HTTPException, Request, Response, status from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse -from pydantic import BaseModel # DB helper imports from . import graph_db @@ -22,7 +21,21 @@ from .exceptions import GithubBranchExistsError, GithubUploadError # Data model imports -from .models import Footer, Header +from .models import ( + CreateNodeParameters, + EditChildrenParameters, + EditChildrenResponse, + EditEntryParameters, + EditEntryResponse, + EditFooterParameters, + EditFooterResponse, + EditHeaderParameters, + EditHeaderResponse, + EditSynonymParameters, + EditSynonymResponse, + ImportFromGithubParameters, + ImportFromGithubResponse, +) # ----------------------------------------------------------------------------# @@ -98,77 +111,6 @@ def file_cleanup(filepath): raise HTTPException(status_code=500, detail="Taxonomy file not found for deletion") -# Response models for FastAPI - - -class ImportFromGithubParameters(BaseModel): - branch: str - taxonomy_name: str - - -class ImportFromGithubResponse(BaseModel): - status: str - - -class CreateNodeParameters(BaseModel): - branch: str - taxonomy_name: str - - -class EditEntryParameters(BaseModel): - branch: str - taxonomy_name: str - entry: str - - -class EditEntryResponse(BaseModel): - result = [] - - -class EditChildrenParameters(BaseModel): - branch: str - taxonomy_name: str - entry: str - - -class EditChildrenResponse(BaseModel): - result = [] - - -class EditSynonymParameters(BaseModel): - - branch: str - taxonomy_name: str - entry: str - - -class EditSynonymResponse(BaseModel): - result = [] - - -class EditHeaderParameters(BaseModel): - incoming_data: Header - branch: str - taxonomy_name: str - - - -class EditHeaderResponse(BaseModel): - - result: [] - - -class EditFooterParameters(BaseModel): - - incoming_data: Footer - branch: str - taxonomy_name: str - - -class EditFootersResponse(BaseModel): - result: [] - - # Get methods @@ -407,13 +349,11 @@ async def import_from_github( @app.post("/{taxonomy_name}/{branch}/nodes") -async def create_node( - request: Request, branch: str, taxonomy_name: str, parameters: CreateNodeParameters -): +async def create_node(request: Request, parameters: CreateNodeParameters): """ Creating a new node in a taxonomy """ - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() id = incoming_data["id"] main_language = incoming_data["main_language"] @@ -431,7 +371,7 @@ async def create_node( @app.post("/{taxonomy_name}/{branch}/entry/{entry}") async def edit_entry( - request: Request, parameters: EditChildrenParameters, response_model=EditChildrenResponse + request: Request, parameters: EditEntryParameters, response_model=EditEntryResponse ): """ Editing an entry in a taxonomy. @@ -448,9 +388,6 @@ async def edit_entry( @app.post("/{taxonomy_name}/{branch}/entry/{entry}/children") async def edit_entry_children( request: Request, - branch: str, - taxonomy_name: str, - entry: str, parameters: EditChildrenParameters, response_model=EditChildrenResponse, ): @@ -468,7 +405,7 @@ async def edit_entry_children( @app.post("/{taxonomy_name}/{branch}/synonym/{synonym}") async def edit_synonyms( - request: Request, parameters: EditSynonymsParameters, response_model=EditSynonymResponse + request: Request, parameters: EditSynonymParameters, response_model=EditSynonymResponse ): """ Editing a synonym in a taxonomy. @@ -497,10 +434,7 @@ async def edit_stopwords(request: Request, branch: str, taxonomy_name: str, stop @app.post("/{taxonomy_name}/{branch}/header") -async def edit_header( - parameters: EditHeadersParameters, respnse_model: EditHeadersResponse - -): +async def edit_header(parameters: EditHeaderParameters, response_model: EditHeaderResponse): """ Editing the __header__ in a taxonomy. """ @@ -513,7 +447,7 @@ async def edit_header( @app.post("/{taxonomy_name}/{branch}/footer") -async def edit_footer(parameters: EditFootersParameters, response_model: EditFootersResponse): +async def edit_footer(parameters: EditFooterParameters, response_model: EditFooterResponse): """ Editing the __footer__ in a taxonomy. """ diff --git a/backend/editor/models.py b/backend/editor/models.py index ac4885eb..6f84cf70 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -16,3 +16,70 @@ class Header(Marginal): class Footer(Marginal): pass + + +# Models for FastAPI + + +class ImportFromGithubParameters(BaseModel): + branch: str + taxonomy_name: str + + +class ImportFromGithubResponse(BaseModel): + status: str + + +class CreateNodeParameters(BaseModel): + branch: str + taxonomy_name: str + + +class EditEntryParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditEntryResponse(BaseModel): + result = [] + + +class EditChildrenParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditChildrenResponse(BaseModel): + result = [] + + +class EditSynonymParameters(BaseModel): + branch: str + taxonomy_name: str + entry: str + + +class EditSynonymResponse(BaseModel): + result = [] + + +class EditHeaderParameters(BaseModel): + incoming_data: Header + branch: str + taxonomy_name: str + + +class EditHeaderResponse(BaseModel): + result: [] + + +class EditFooterParameters(BaseModel): + incoming_data: Footer + branch: str + taxonomy_name: str + + +class EditFooterResponse(BaseModel): + result: [] From d39a28e105bc94093372db0cd9ffa79b068aefa8 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Wed, 11 Jan 2023 22:44:18 +0530 Subject: [PATCH 09/22] fix: clubbing all the common variable names in a class --- backend/editor/models.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 6f84cf70..6e79f433 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,10 +20,15 @@ class Footer(Marginal): # Models for FastAPI +class CommonParameters: + branch = "branch" + taxonomy_name = "taxonomy_name" + +parameters = CommonParameters() class ImportFromGithubParameters(BaseModel): - branch: str - taxonomy_name: str + parameters.parameters.branch: str + parameters.parameters.taxonomy_name: str class ImportFromGithubResponse(BaseModel): @@ -31,13 +36,13 @@ class ImportFromGithubResponse(BaseModel): class CreateNodeParameters(BaseModel): - branch: str - taxonomy_name: str + parameters.parameters.branch: str + parameters.parameters.taxonomy_name: str class EditEntryParameters(BaseModel): - branch: str - taxonomy_name: str + parameters.branch: str + parameters.taxonomy_name: str entry: str @@ -46,8 +51,8 @@ class EditEntryResponse(BaseModel): class EditChildrenParameters(BaseModel): - branch: str - taxonomy_name: str + parameters.branch: str + parameters.taxonomy_name: str entry: str @@ -56,8 +61,8 @@ class EditChildrenResponse(BaseModel): class EditSynonymParameters(BaseModel): - branch: str - taxonomy_name: str + parameters.branch: str + parameters.taxonomy_name: str entry: str @@ -67,8 +72,8 @@ class EditSynonymResponse(BaseModel): class EditHeaderParameters(BaseModel): incoming_data: Header - branch: str - taxonomy_name: str + parameters.branch: str + parameters.taxonomy_name: str class EditHeaderResponse(BaseModel): @@ -77,8 +82,8 @@ class EditHeaderResponse(BaseModel): class EditFooterParameters(BaseModel): incoming_data: Footer - branch: str - taxonomy_name: str + parameters.branch: str + parameters.taxonomy_name: str class EditFooterResponse(BaseModel): From c2a34f2305bdcc05be36a9fbeb08e4ff7def02d0 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Wed, 11 Jan 2023 22:46:24 +0530 Subject: [PATCH 10/22] fix: styling --- backend/editor/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/editor/models.py b/backend/editor/models.py index 6e79f433..63e8db4c 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,12 +20,15 @@ class Footer(Marginal): # Models for FastAPI + class CommonParameters: branch = "branch" taxonomy_name = "taxonomy_name" + parameters = CommonParameters() + class ImportFromGithubParameters(BaseModel): parameters.parameters.branch: str parameters.parameters.taxonomy_name: str From bde4c0f2aaacbec6fdd1b75f5f1f9d36d928c30b Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 15 Jan 2023 19:06:15 +0530 Subject: [PATCH 11/22] fix: added Entry class --- backend/editor/models.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 63e8db4c..1bc40a23 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,6 +20,9 @@ class Footer(Marginal): # Models for FastAPI +class Entry: + result: [] + class CommonParameters: branch = "branch" @@ -50,7 +53,7 @@ class EditEntryParameters(BaseModel): class EditEntryResponse(BaseModel): - result = [] + result : list[Entry] = Query(default=[]) class EditChildrenParameters(BaseModel): From 8ed8b0a1980546e827e995f352454091d21ecb63 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 15 Jan 2023 19:13:25 +0530 Subject: [PATCH 12/22] fix: Styling --- backend/editor/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 1bc40a23..3ce87bc1 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,6 +20,7 @@ class Footer(Marginal): # Models for FastAPI + class Entry: result: [] @@ -53,7 +54,7 @@ class EditEntryParameters(BaseModel): class EditEntryResponse(BaseModel): - result : list[Entry] = Query(default=[]) + result: list[Entry] = Query(default=[]) class EditChildrenParameters(BaseModel): From 9062c26804a1c471b0aa769b7b6f1f36e58dc0ef Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Tue, 17 Jan 2023 14:56:11 +0530 Subject: [PATCH 13/22] fix: added inheritance of common parameters --- backend/editor/models.py | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 3ce87bc1..aca62bae 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -3,6 +3,7 @@ """ from typing import List +from fastapi import Query from pydantic import BaseModel @@ -30,26 +31,19 @@ class CommonParameters: taxonomy_name = "taxonomy_name" -parameters = CommonParameters() - - -class ImportFromGithubParameters(BaseModel): - parameters.parameters.branch: str - parameters.parameters.taxonomy_name: str +class ImportFromGithubParameters(CommonParameters): + pass class ImportFromGithubResponse(BaseModel): status: str -class CreateNodeParameters(BaseModel): - parameters.parameters.branch: str - parameters.parameters.taxonomy_name: str +class CreateNodeParameters(CommonParameters): + pass -class EditEntryParameters(BaseModel): - parameters.branch: str - parameters.taxonomy_name: str +class EditEntryParameters(CommonParameters): entry: str @@ -57,9 +51,7 @@ class EditEntryResponse(BaseModel): result: list[Entry] = Query(default=[]) -class EditChildrenParameters(BaseModel): - parameters.branch: str - parameters.taxonomy_name: str +class EditChildrenParameters(CommonParameters): entry: str @@ -67,9 +59,7 @@ class EditChildrenResponse(BaseModel): result = [] -class EditSynonymParameters(BaseModel): - parameters.branch: str - parameters.taxonomy_name: str +class EditSynonymParameters(CommonParameters): entry: str @@ -77,20 +67,16 @@ class EditSynonymResponse(BaseModel): result = [] -class EditHeaderParameters(BaseModel): +class EditHeaderParameters(CommonParameters): incoming_data: Header - parameters.branch: str - parameters.taxonomy_name: str class EditHeaderResponse(BaseModel): result: [] -class EditFooterParameters(BaseModel): +class EditFooterParameters(CommonParameters): incoming_data: Footer - parameters.branch: str - parameters.taxonomy_name: str class EditFooterResponse(BaseModel): From 8e6e26e16d3d4913dbf49ec449c24b335329028c Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Tue, 17 Jan 2023 15:12:52 +0530 Subject: [PATCH 14/22] update: adding query parameters to FastAPI documentation --- backend/editor/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index aca62bae..0bf56a22 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -48,7 +48,9 @@ class EditEntryParameters(CommonParameters): class EditEntryResponse(BaseModel): - result: list[Entry] = Query(default=[]) + result: list[Entry] = Query( + default=[], title="Result of edited entry", description="Returns a list of Entry objects" + ) class EditChildrenParameters(CommonParameters): From 35d7678c6601738d1e7aef78c6942e42c296754a Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 5 Feb 2023 18:32:57 +0530 Subject: [PATCH 15/22] updated code for open api --- backend/editor/api.py | 32 ++++++++++++++------------------ backend/editor/models.py | 19 ++++++++++--------- 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 9f405473..6e0737bd 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -374,13 +374,10 @@ async def export_to_github( # Post methods -@app.post("/{taxonomy_name}/{branch}/import") +@app.post("/{taxonomy_name}/{branch}/import", response_model=ImportFromGithubResponse) async def import_from_github( - request: Request, - branch: str, - taxonomy_name: str, - parameters: ImportFromGithubParameters, - response_model=ImportFromGithubResponse, + request: Request, + parameters: ImportFromGithubParameters ): """ Get taxonomy from Product Opener GitHub repository @@ -388,7 +385,7 @@ async def import_from_github( incoming_data = await request.json() description = incoming_data["description"] - taxonomy = TaxonomyGraph(branch, taxonomy_name) + taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) if not taxonomy.is_valid_branch_name(): raise HTTPException(status_code=400, detail="branch_name: Enter a valid branch name!") if await taxonomy.does_project_exist(): @@ -447,9 +444,9 @@ async def create_node(request: Request, parameters: CreateNodeParameters): await taxonomy.add_node_to_beginning(label, normalized_id) -@app.post("/{taxonomy_name}/{branch}/entry/{entry}") +@app.post("/{taxonomy_name}/{branch}/entry/{entry}", response_model=EditEntryResponse) async def edit_entry( - request: Request, parameters: EditEntryParameters, response_model=EditEntryResponse + request: Request, parameters: EditEntryParameters ): """ Editing an entry in a taxonomy. @@ -462,11 +459,10 @@ async def edit_entry( return updated_entry -@app.post("/{taxonomy_name}/{branch}/entry/{entry}/children") +@app.post("/{taxonomy_name}/{branch}/entry/{entry}/children", response_model=EditChildrenResponse) async def edit_entry_children( request: Request, - parameters: EditChildrenParameters, - response_model=EditChildrenResponse, + parameters: EditChildrenParameters ): """ Editing an entry's children in a taxonomy. @@ -479,9 +475,9 @@ async def edit_entry_children( return updated_children -@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}") +@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}", response_model=EditSynonymResponse) async def edit_synonyms( - request: Request, parameters: EditSynonymParameters, response_model=EditSynonymResponse + request: Request, parameters: EditSynonymParameters ): """ Editing a synonym in a taxonomy. @@ -507,8 +503,8 @@ async def edit_stopwords(request: Request, branch: str, taxonomy_name: str, stop return updated_stopword -@app.post("/{taxonomy_name}/{branch}/header") -async def edit_header(parameters: EditHeaderParameters, response_model: EditHeaderResponse): +@app.post("/{taxonomy_name}/{branch}/header", response_model=EditHeaderResponse) +async def edit_header(parameters: EditHeaderParameters): """ Editing the __header__ in a taxonomy. """ @@ -519,8 +515,8 @@ async def edit_header(parameters: EditHeaderParameters, response_model: EditHead return updated_header -@app.post("/{taxonomy_name}/{branch}/footer") -async def edit_footer(parameters: EditFooterParameters, response_model: EditFooterResponse): +@app.post("/{taxonomy_name}/{branch}/footer", response_model=EditFooterResponse) +async def edit_footer(parameters: EditFooterParameters): """ Editing the __footer__ in a taxonomy. """ diff --git a/backend/editor/models.py b/backend/editor/models.py index 0bf56a22..31a9c529 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -4,7 +4,9 @@ from typing import List from fastapi import Query -from pydantic import BaseModel +from pydantic import BaseModel, BaseConfig, validate_arguments + +BaseConfig.arbitrary_types_allowed = True class Marginal(BaseModel): @@ -21,22 +23,21 @@ class Footer(Marginal): # Models for FastAPI - -class Entry: - result: [] - - class CommonParameters: branch = "branch" taxonomy_name = "taxonomy_name" +class Entry: + default: [] + title: str + description: str class ImportFromGithubParameters(CommonParameters): pass class ImportFromGithubResponse(BaseModel): - status: str + status: bool class CreateNodeParameters(CommonParameters): @@ -74,7 +75,7 @@ class EditHeaderParameters(CommonParameters): class EditHeaderResponse(BaseModel): - result: [] + result: dict class EditFooterParameters(CommonParameters): @@ -82,4 +83,4 @@ class EditFooterParameters(CommonParameters): class EditFooterResponse(BaseModel): - result: [] + result: dict From e57c83643a0536ef664dfd6825631a0f47bd4aa8 Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Tue, 7 Feb 2023 21:35:41 +0530 Subject: [PATCH 16/22] Update backend/editor/models.py Co-authored-by: Alex Garel --- backend/editor/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 31a9c529..c0a9786d 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -28,7 +28,7 @@ class CommonParameters: taxonomy_name = "taxonomy_name" class Entry: - default: [] + default = [] title: str description: str From eb2b3b06c0302774a9651fbfc4a76a2f12006eb7 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Tue, 7 Feb 2023 22:21:33 +0530 Subject: [PATCH 17/22] updated syntax --- backend/editor/api.py | 46 +++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index 6e0737bd..b0374764 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -36,21 +36,7 @@ from .exceptions import GithubBranchExistsError, GithubUploadError # Data model imports -from .models import ( - CreateNodeParameters, - EditChildrenParameters, - EditChildrenResponse, - EditEntryParameters, - EditEntryResponse, - EditFooterParameters, - EditFooterResponse, - EditHeaderParameters, - EditHeaderResponse, - EditSynonymParameters, - EditSynonymResponse, - ImportFromGithubParameters, - ImportFromGithubResponse, -) +from . import models # -----------------------------------------------------------------------------------# @@ -374,13 +360,17 @@ async def export_to_github( # Post methods -@app.post("/{taxonomy_name}/{branch}/import", response_model=ImportFromGithubResponse) +@app.post("/{taxonomy_name}/{branch}/import", response_model=models.ImportFromGithubResponse) async def import_from_github( request: Request, - parameters: ImportFromGithubParameters + parameters: models.ImportFromGithubParameters, ): """ Get taxonomy from Product Opener GitHub repository + + - **branch**: name of branch added by user + - **taxonomy**: name of the taxonomy added by user + """ incoming_data = await request.json() description = incoming_data["description"] @@ -423,7 +413,7 @@ async def upload_taxonomy( @app.post("/{taxonomy_name}/{branch}/nodes") -async def create_node(request: Request, parameters: CreateNodeParameters): +async def create_node(request: Request, parameters: models.CreateNodeParameters): """ Creating a new node in a taxonomy """ @@ -444,9 +434,9 @@ async def create_node(request: Request, parameters: CreateNodeParameters): await taxonomy.add_node_to_beginning(label, normalized_id) -@app.post("/{taxonomy_name}/{branch}/entry/{entry}", response_model=EditEntryResponse) +@app.post("/{taxonomy_name}/{branch}/entry/{entry}", response_model=models.EditEntryResponse) async def edit_entry( - request: Request, parameters: EditEntryParameters + request: Request, parameters: models.EditEntryParameters ): """ Editing an entry in a taxonomy. @@ -459,10 +449,10 @@ async def edit_entry( return updated_entry -@app.post("/{taxonomy_name}/{branch}/entry/{entry}/children", response_model=EditChildrenResponse) +@app.post("/{taxonomy_name}/{branch}/entry/{entry}/children", response_model=models.EditChildrenResponse) async def edit_entry_children( request: Request, - parameters: EditChildrenParameters + parameters: models.EditChildrenParameters ): """ Editing an entry's children in a taxonomy. @@ -475,9 +465,9 @@ async def edit_entry_children( return updated_children -@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}", response_model=EditSynonymResponse) +@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}", response_model=models.EditSynonymResponse) async def edit_synonyms( - request: Request, parameters: EditSynonymParameters + request: Request, parameters: models.EditSynonymParameters ): """ Editing a synonym in a taxonomy. @@ -503,8 +493,8 @@ async def edit_stopwords(request: Request, branch: str, taxonomy_name: str, stop return updated_stopword -@app.post("/{taxonomy_name}/{branch}/header", response_model=EditHeaderResponse) -async def edit_header(parameters: EditHeaderParameters): +@app.post("/{taxonomy_name}/{branch}/header", response_model=models.EditHeaderResponse) +async def edit_header(parameters: models.EditHeaderParameters): """ Editing the __header__ in a taxonomy. """ @@ -515,8 +505,8 @@ async def edit_header(parameters: EditHeaderParameters): return updated_header -@app.post("/{taxonomy_name}/{branch}/footer", response_model=EditFooterResponse) -async def edit_footer(parameters: EditFooterParameters): +@app.post("/{taxonomy_name}/{branch}/footer", response_model=models.EditFooterResponse) +async def edit_footer(parameters: models.EditFooterParameters): """ Editing the __footer__ in a taxonomy. """ From ff151e90aa9e558ce6f3ade8e71c40b95ecee917 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 12 Feb 2023 17:06:38 +0530 Subject: [PATCH 18/22] fixed the not a valid json error, added descriptions to parameters --- backend/editor/api.py | 31 +++++++++++++------------------ backend/editor/models.py | 36 ++++++++++++++++++------------------ 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index b0374764..d6cb3d58 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -28,16 +28,14 @@ from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse, JSONResponse +# Data model imports # DB helper imports -from . import graph_db +from . import graph_db, models from .entries import TaxonomyGraph # Custom exceptions from .exceptions import GithubBranchExistsError, GithubUploadError -# Data model imports -from . import models - # -----------------------------------------------------------------------------------# # Setup logs @@ -362,12 +360,12 @@ async def export_to_github( @app.post("/{taxonomy_name}/{branch}/import", response_model=models.ImportFromGithubResponse) async def import_from_github( - request: Request, + request: Request, parameters: models.ImportFromGithubParameters, ): """ Get taxonomy from Product Opener GitHub repository - + - **branch**: name of branch added by user - **taxonomy**: name of the taxonomy added by user @@ -435,9 +433,7 @@ async def create_node(request: Request, parameters: models.CreateNodeParameters) @app.post("/{taxonomy_name}/{branch}/entry/{entry}", response_model=models.EditEntryResponse) -async def edit_entry( - request: Request, parameters: models.EditEntryParameters -): +async def edit_entry(request: Request, parameters: models.EditEntryParameters): """ Editing an entry in a taxonomy. New key-value pairs can be added, old key-value pairs can be updated. @@ -446,14 +442,15 @@ async def edit_entry( taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() updated_entry = await taxonomy.update_nodes("ENTRY", parameters.entry, incoming_data) + print("jagruti") + print(updated_entry) return updated_entry -@app.post("/{taxonomy_name}/{branch}/entry/{entry}/children", response_model=models.EditChildrenResponse) -async def edit_entry_children( - request: Request, - parameters: models.EditChildrenParameters -): +@app.post( + "/{taxonomy_name}/{branch}/entry/{entry}/children", response_model=models.EditChildrenResponse +) +async def edit_entry_children(request: Request, parameters: models.EditChildrenParameters): """ Editing an entry's children in a taxonomy. New children can be added, old children can be removed. @@ -465,10 +462,8 @@ async def edit_entry_children( return updated_children -@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}", response_model=models.EditSynonymResponse) -async def edit_synonyms( - request: Request, parameters: models.EditSynonymParameters -): +@app.post("/{taxonomy_name}/{branch}/synonym/{synonym}", response_model=models.EditSynonymResponse) +async def edit_synonyms(request: Request, parameters: models.EditSynonymParameters): """ Editing a synonym in a taxonomy. New key-value pairs can be added, old key-value pairs can be updated. diff --git a/backend/editor/models.py b/backend/editor/models.py index c0a9786d..3433a9f3 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -4,13 +4,13 @@ from typing import List from fastapi import Query -from pydantic import BaseModel, BaseConfig, validate_arguments +from pydantic import BaseConfig, BaseModel BaseConfig.arbitrary_types_allowed = True class Marginal(BaseModel): - preceding_lines: List + preceding_lines: List = Query(description="A list of preceding lines") class Header(Marginal): @@ -23,21 +23,23 @@ class Footer(Marginal): # Models for FastAPI -class CommonParameters: - branch = "branch" - taxonomy_name = "taxonomy_name" -class Entry: - default = [] - title: str - description: str +class CommonParameters(BaseModel): + branch: str = Query(description="Name of the branch") + taxonomy_name: str = Query(description="Name of the taxonomy") + + +class Entry(CommonParameters): + entry: str = Query(description="Name of the entry") + id: str = Query(description="Id of the entry") + class ImportFromGithubParameters(CommonParameters): pass class ImportFromGithubResponse(BaseModel): - status: bool + status: bool = Query(description="Return true or false value") class CreateNodeParameters(CommonParameters): @@ -45,29 +47,27 @@ class CreateNodeParameters(CommonParameters): class EditEntryParameters(CommonParameters): - entry: str + entry: str = Query(description="Name of the entry") class EditEntryResponse(BaseModel): - result: list[Entry] = Query( - default=[], title="Result of edited entry", description="Returns a list of Entry objects" - ) + result: List[Entry] class EditChildrenParameters(CommonParameters): - entry: str + entry: str = Query(description="Name of the entry") class EditChildrenResponse(BaseModel): - result = [] + result: List class EditSynonymParameters(CommonParameters): - entry: str + entry: str = Query(description="Name of the entry") class EditSynonymResponse(BaseModel): - result = [] + result: List class EditHeaderParameters(CommonParameters): From 603e686f28fffd81fb6414f5d9466caf471de55b Mon Sep 17 00:00:00 2001 From: Jagruti Date: Sun, 12 Feb 2023 17:22:40 +0530 Subject: [PATCH 19/22] removed unwanted print statement --- backend/editor/api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/editor/api.py b/backend/editor/api.py index d6cb3d58..3c392717 100644 --- a/backend/editor/api.py +++ b/backend/editor/api.py @@ -442,8 +442,6 @@ async def edit_entry(request: Request, parameters: models.EditEntryParameters): taxonomy = TaxonomyGraph(parameters.branch, parameters.taxonomy_name) incoming_data = await request.json() updated_entry = await taxonomy.update_nodes("ENTRY", parameters.entry, incoming_data) - print("jagruti") - print(updated_entry) return updated_entry From 47e7422251dbd4b608b0ad6bae86b0d27c791fab Mon Sep 17 00:00:00 2001 From: Jagruti Tiwari Date: Tue, 14 Feb 2023 20:18:43 +0530 Subject: [PATCH 20/22] Update backend/editor/models.py Co-authored-by: Alex Garel --- backend/editor/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 3433a9f3..39576a67 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -39,7 +39,8 @@ class ImportFromGithubParameters(CommonParameters): class ImportFromGithubResponse(BaseModel): - status: bool = Query(description="Return true or false value") + status: bool = Query(description="True if import was successful") + class CreateNodeParameters(CommonParameters): From 32ac074a5ea247863c4e1421373391d52b1fc35d Mon Sep 17 00:00:00 2001 From: Jagruti Date: Tue, 14 Feb 2023 20:56:05 +0530 Subject: [PATCH 21/22] update based on make checks --- backend/editor/models.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 3433a9f3..e98b82f3 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,10 +20,8 @@ class Header(Marginal): class Footer(Marginal): pass - # Models for FastAPI - class CommonParameters(BaseModel): branch: str = Query(description="Name of the branch") taxonomy_name: str = Query(description="Name of the taxonomy") @@ -67,7 +65,7 @@ class EditSynonymParameters(CommonParameters): class EditSynonymResponse(BaseModel): - result: List + result: List class EditHeaderParameters(CommonParameters): From 03d7603234740917e9269e4f2940cec2fcbe49f3 Mon Sep 17 00:00:00 2001 From: Jagruti Date: Tue, 14 Feb 2023 21:20:40 +0530 Subject: [PATCH 22/22] updated to fix style --- backend/editor/models.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/editor/models.py b/backend/editor/models.py index 0d3bc3ae..ca0926a1 100644 --- a/backend/editor/models.py +++ b/backend/editor/models.py @@ -20,7 +20,6 @@ class Header(Marginal): class Footer(Marginal): pass -# Models for FastAPI class CommonParameters(BaseModel): branch: str = Query(description="Name of the branch") @@ -40,7 +39,6 @@ class ImportFromGithubResponse(BaseModel): status: bool = Query(description="True if import was successful") - class CreateNodeParameters(CommonParameters): pass @@ -66,7 +64,7 @@ class EditSynonymParameters(CommonParameters): class EditSynonymResponse(BaseModel): - result: List + result: List class EditHeaderParameters(CommonParameters):