diff --git a/MyPortfolio/data.json b/MyPortfolio/data.json index 3257ad00bb50b1bcd9ff5b5b295ade02157c3e1e..ee0811875f2e614666fd107f6535b594eebda57a 100644 --- a/MyPortfolio/data.json +++ b/MyPortfolio/data.json @@ -1,33 +1,25 @@ -{"projects" : - [ - { - "title": "My First Project", - "project_id": 0, - "course_code": "TDP003", - "course_name": "Projekt: Egna datormiljön", - "course_points": 6, - "techniques": ["python", "jinja2", "flask", "html", "css", "javascript"], - "short_desc": "Ett portfolio program.", - "long_desc": "Ett längre portfolio program.", - "img_url_big": "", - "img_url_small": "", - "group_size": 1, - "url": "" - }, - { - "title": "My Second Project", - "project_id": 1, - "course_code": "TDP003", - "course_name": "Projekt: Egna datormiljön", - "course_points": 6, - "techniques": ["python", "java", "flask", "html", "css", "javascript"], - "short_desc": "Ett portfolio program.", - "long_desc": "Ett längre portfolio program.", - "img_url_big": "", - "img_url_small": "", - "group_size": 1, - "url": "" - } - - ] -} +{ + "projects": [ + { + "title": "project_title", + "project_id": 0, + "techniques": "techniques", + "desc": "description", + "img_url": "img_url", + "url": "url" + }, + { + "title": "MyProject", + "project_id": 1, + "techniques": [ + "python", + "css", + "html", + "flask" + ], + "desc": "It's great!", + "img_url": "logo.jpg", + "url": "https://www.github.com/" + } + ] +} \ No newline at end of file diff --git a/MyPortfolio/data_layer.py b/MyPortfolio/data_layer.py index 02deac333233fb9fe01e9be0cb5d5d84e78fb954..ced0e9ca355df8852297950dc0d29228ec952d99 100644 --- a/MyPortfolio/data_layer.py +++ b/MyPortfolio/data_layer.py @@ -1,19 +1,34 @@ +#!/.venv/bin/python + + +# ---- IMPORTS ---- # +import os import json import pprint - +import re +# ---- IMPORTS ---- # def load(): - with open('data.json', 'r') as file: + + with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) - # Closing file file.close() return data +def save(data): + + with open('data.json', 'w', encoding='utf-8') as file: + json.dump(data, file, ensure_ascii=False, indent=4) + + file.close() + + + def get_project(data, id): pass @@ -28,20 +43,133 @@ def get_techniques(data, id): for n in range(0, get_project_count(data)): if data["projects"][n]["project_id"] == id: - print(data["projects"][n]["techniques"]) + return (data["projects"][n]["techniques"]) + + -def get_techniques_stats(data, id): +def get_techniques_stats(data): + techniques = [] for n in range(0, get_project_count(data)): - if data["projects"][n]["project_id"] == id: - print(data["projects"][n]["techniques"]) + tech = get_techniques(data, n) + for t in tech: + if t not in techniques: + techniques.append(t) + + + return techniques + + + +def search(): + pass + + + +def cls(): + os.system('cls' if os.name == 'nt' else 'clear') + pass + + +def new_project(data): + + cls() + + # ---- COLLECT INFO ---- + project_title = input("Project title: ") + project_id = get_project_count(data) + techniques = input("\nWhat techniques does your project use? Write them out in the following format: python, java, html, css\n\nTechniques: ").replace(" ", "").lower().split(",") + description = input("Provide a description of your project: ") + url = input("Provide a link to the source code/demo of your project: ") + img_url = input("Image source (ex: logo.jpg): ") + # ---- COLLECT INFO ---- + + new_project = { + "title": project_title, + "project_id": project_id, + "techniques": techniques, + "desc": description, + "img_url": img_url, + "url": url + } + + cls() + + print("\n\nProject preview:\n") + pprint.pp(new_project) + + option = int(input("\n1: Create\n2: Cancel\n> ")) + + if option == 1: + + data['projects'].append(new_project) + + save(data) + + pass + + + + +def edit_project(data): + pass + + + +def delete_project(data): + pass + + + +def menu(data): + + menu_items = ["Add new project", "Edit existing project", "Delete project", "Quit"] + menu_index = 0 + + while True: + + cls() + + titular = r""" + ____ _ __ _ _ + | _ \ ___ _ __ | |_ / _| ___ | | (_) ___ + | |_) | / _ \ | '__| | __| | |_ / _ \ | | | | / _ \ + | __/ | (_) | | | | |_ | _| | (_) | | | | | | (_) | + |_| \___/ |_| \__| |_| \___/ |_| |_| \___/ + """ + + print(titular) + + for i in menu_items: + print(f"{menu_items.index(i)+1}: {i}") + + try: + option = int(input(f"> ")) + + if option == 1: + new_project(data) + print("1") + elif option == 2: + edit_project(data) + elif option == 3: + delete_project(data) + elif option == 4: + cls() + break + except: + print("") + + + + def main(): - + data = load() - get_project_count(data) + + menu(data)