diff --git a/MyPortfolio/data.json b/MyPortfolio/data.json index ee0811875f2e614666fd107f6535b594eebda57a..11ef2f0e37c15a07c9e22e9072c32c4e846aaa7d 100644 --- a/MyPortfolio/data.json +++ b/MyPortfolio/data.json @@ -1,7 +1,7 @@ { "projects": [ { - "title": "project_title", + "title": "project_example", "project_id": 0, "techniques": "techniques", "desc": "description", @@ -20,6 +20,18 @@ "desc": "It's great!", "img_url": "logo.jpg", "url": "https://www.github.com/" + }, + { + "title": "MySecondProject", + "project_id": 2, + "techniques": [ + "python", + "html", + "css" + ], + "desc": "This is a python project!", + "img_url": "logo.png", + "url": "https://www.github.com" } ] -} \ No newline at end of file +} diff --git a/MyPortfolio/data_layer.py b/MyPortfolio/data_layer.py index ced0e9ca355df8852297950dc0d29228ec952d99..0dd4398efaf67bf5ac6b420ef008b6888d71df1d 100644 --- a/MyPortfolio/data_layer.py +++ b/MyPortfolio/data_layer.py @@ -27,26 +27,33 @@ def save(data): file.close() + # Update unique techniques if user added new ones to the file. + get_techniques_stats(data) + + # Reload data + load() -def get_project(data, id): - pass +# Get project by ID +def get_project(data, id): + for n in range(0, get_project_count(data)): + if data["projects"][n]["project_id"] == id: + return data["projects"][n] +# Get project count def get_project_count(data): return len(data["projects"]) - +# Get techniques from project by ID def get_techniques(data, id): - for n in range(0, get_project_count(data)): - if data["projects"][n]["project_id"] == id: - return (data["projects"][n]["techniques"]) - + return get_project(data,id)['techniques'] +# Gets all unique techniques from all projects ! COULD USE SOME FILTERING ! def get_techniques_stats(data): techniques = [] @@ -110,10 +117,38 @@ def new_project(data): pass +def list_projects(data): + cls() + for project in data['projects']: + pprint.pp(project) + print("\n") -def edit_project(data): - pass + +def edit_project(data, id): + + while True: + if id > get_project_count(data) or id < 0: + print("Project ID doesn't exist.\n") + id = int(input("Project_ID to edit: ")) + else: + + cls() + + project = get_project(data, id) + project.pop('project_id') # Project ID shouldn't be changed + + print(f"Editing project: {project['title']}\n") + + pprint.pp(project) + print("") + + for field in enumerate(project): + print(f"{field[0]}: {field[1]}") + + input("\nField to edit: ") + + @@ -124,7 +159,7 @@ def delete_project(data): def menu(data): - menu_items = ["Add new project", "Edit existing project", "Delete project", "Quit"] + menu_items = ["Add new project", "List projects", "Edit existing project", "Delete project", "Quit"] menu_index = 0 while True: @@ -132,11 +167,11 @@ def menu(data): cls() titular = r""" - ____ _ __ _ _ - | _ \ ___ _ __ | |_ / _| ___ | | (_) ___ - | |_) | / _ \ | '__| | __| | |_ / _ \ | | | | / _ \ - | __/ | (_) | | | | |_ | _| | (_) | | | | | | (_) | - |_| \___/ |_| \__| |_| \___/ |_| |_| \___/ + ____ _ __ _ _ + | _ \ ___ _ __ | |_ / _| ___ | | (_) ___ + | |_) | / _ \ | '__| | __| | |_ / _ \ | | | | / _ \ + | __/ | (_) | | | | |_ | _| | (_) | | | _ | | | (_) | + |_| \___/ |_| \__| |_| \___/ |_| (_) |_| \___/ """ print(titular) @@ -149,12 +184,15 @@ def menu(data): if option == 1: new_project(data) - print("1") elif option == 2: - edit_project(data) + list_projects(data) + input() elif option == 3: - delete_project(data) + list_projects(data) + edit_project(data, int(input("Project_ID to edit: "))) elif option == 4: + delete_project(data, int(input("Project_ID to delete: "))) + elif option == 5: cls() break except: