From de8b712ac3d84ec358ef683be571dd6389dcc37a Mon Sep 17 00:00:00 2001 From: Antonio Muniz Date: Sat, 1 May 2021 22:53:24 -0300 Subject: [PATCH 1/3] Added function to save local images --- databaseUser/HandlerDatabase.py | 30 +++++++++++++++++++++++++----- handler/HandlerImage.py | 29 +++++++++++++++++++++++++++++ methods/GET.py | 16 ++++++++++++++-- methods/POST.py | 8 +++++--- methods/PUT.py | 5 +++-- 5 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 handler/HandlerImage.py diff --git a/databaseUser/HandlerDatabase.py b/databaseUser/HandlerDatabase.py index 5153888..728a2dd 100644 --- a/databaseUser/HandlerDatabase.py +++ b/databaseUser/HandlerDatabase.py @@ -1,7 +1,8 @@ from message.StatusCode import StatusCode import json from databaseUser.ObjectUser import UserObj - +from handler.HandlerImage import HandlerImage +import pathlib class HandlerDatabase: pokemonDatabasePath: str = 'databaseUser/database.json' @@ -15,13 +16,21 @@ def insertPokemon(obj: UserObj): return StatusCode.INTERNAL_SERVER_ERROR pokemonID = obj.id + + extensionImage = pathlib.Path(obj.image).suffix + urlImage = "/" + obj.id + extensionImage + pokemonData = { "name": obj.name, "phone": obj.phone, "pokemon": obj.pokemon, - "image": obj.image + "image": urlImage } - + try: + HandlerImage.addLinkImage(urlImage, extensionImage) + except: + print("erro") + isPokemonRegistered, pokemonIndex = HandlerDatabase.isPokemonRegistered(pokemonID) if isPokemonRegistered: database["users"][pokemonIndex] = pokemonData @@ -39,6 +48,18 @@ def updatePokemonByID(pokemonID: str, pokemonData: UserObj): print(f"isPokemonID a string: {isinstance(pokemonID, str)}") print(f"pokemonData: {pokemonData}\n") + extensionImage = pathlib.Path(pokemonData.image).suffix + urlImage = "/" + pokemonData.id + extensionImage + + pokemonData = { + "name": pokemonData.name, + "phone": pokemonData.phone, + "pokemon": pokemonData.pokemon, + "image": urlImage + } + + HandlerImg.addLinkImage(urlImage, extensionImage) + database: dict = HandlerDatabase.getData() if database is None: @@ -109,7 +130,7 @@ def isPokemonRegistered(pokemonID: str): index: int element: dict for index, element in enumerate(database["users"]): - if pokemonID == list(element.keys())[0]: + if int(pokemonID) == int(list(element.keys())[0]): return True, index return False, None @@ -135,7 +156,6 @@ def getData(): @staticmethod def setData(data: dict): HandlerDatabase.pokemonDatabase = data - print(data) try: with open(HandlerDatabase.pokemonDatabasePath, 'w+') as file: file.seek(0) diff --git a/handler/HandlerImage.py b/handler/HandlerImage.py new file mode 100644 index 0000000..c564932 --- /dev/null +++ b/handler/HandlerImage.py @@ -0,0 +1,29 @@ +from server import * +from threading import Thread +from message.Request import Request +from message import Response, StatusCode +from string import Template +import requests +import pathlib +from methods import GET +import json + +class HandlerImage: + + @staticmethod + def saveImg(objUser): + img_data = requests.get(objUser.image).content + fileImg = "databaseUser/" + objUser.id + pathlib.Path(objUser.image).suffix + + with open(fileImg, 'wb') as handler: + handler.write(img_data) + + @staticmethod + def addLinkImage(urlImage, extensionImage): + GET.GET.addImageLinkInGetList(urlImage, extensionImage ) + + try: + with open('databaseUser/imagesLink.json', 'w') as f: + json.dump(GET.GET.imagesTable, f) + except: + print("new image link not save") diff --git a/methods/GET.py b/methods/GET.py index 11b158d..2a87873 100644 --- a/methods/GET.py +++ b/methods/GET.py @@ -4,7 +4,7 @@ import os from handler.HandlerErrors import HandlerErrors from databaseUser.HandlerDatabase import HandlerDatabase - +import json class GET: urlTable = { @@ -17,8 +17,9 @@ class GET: "/dashboard.css": {"type": "text/css", "filePath": "./assets/dashboard.css"}, "/popper.min.js": {"type": "text/css", "filePath": "./assets/popper.min.js"}, "/bootstrap.min.js": {"type": "text/css", "filePath": "./assets/bootstrap.min.js"}, - "/edit": {"type": "text/html", "filePath": "./assets/put.html"}, + "/edit": {"type": "text/html", "filePath": "./assets/public/put.html"}, } + imagesTable = { "/deusgrego.jpeg": {"type": "image/jpeg", "filePath": "./assets/static/deusgrego.jpeg"}, @@ -40,6 +41,13 @@ class GET: @staticmethod def response(request: Request): + #att list + try: + with open('databaseUser/imagesLink.json') as f: + GET.imagesTable = json.load(f) + except: + print("erro in list of links") + if request.URI.find('database') != -1 or request.URI.find('edit') != -1 or request.URI in GET.urlTable: response: Response = Response(status_code=StatusCode.OK, body="", header={}) if request.URI.find('database') != -1: @@ -87,3 +95,7 @@ def getParamsFromURL(url): parsedParams[splitElem[0]] = splitElem[1] return parsedParams + + @staticmethod + def addImageLinkInGetList(newImg, extension): + GET.imagesTable[newImg] = {"type": "image/" + extension[1:], "filePath": "./databaseUser" + newImg} diff --git a/methods/POST.py b/methods/POST.py index b285cf0..cdc72f9 100644 --- a/methods/POST.py +++ b/methods/POST.py @@ -2,10 +2,12 @@ from databaseUser.HandlerDatabase import HandlerDatabase from databaseUser.ObjectUser import UserObj from handler.HandlerErrors import HandlerErrors +from handler.HandlerImage import HandlerImage from message.Response import Response from message.StatusCode import StatusCode import json - +import requests +import pathlib class POST: @@ -16,10 +18,10 @@ def response(request): if data["name"] != "" and data["phone"] != "" and data["pokemon"] != "" and data["image"] != "": obj = UserObj.fromDict(data) - print(obj) - obj.setId(datetime.datetime.now().strftime("%d%m%Y%H%M%S")) + HandlerImage.saveImg(obj) + status = HandlerDatabase.insertPokemon(obj) header = { "Connection": "Closed" diff --git a/methods/PUT.py b/methods/PUT.py index da39b3b..03ee287 100644 --- a/methods/PUT.py +++ b/methods/PUT.py @@ -5,7 +5,7 @@ from message.StatusCode import StatusCode import json import datetime - +from handler.HandlerImage import HandlerImage class PUT: @staticmethod @@ -13,7 +13,6 @@ def response(request): try: requestData = json.loads(request.body) pokemonRequestData = list(requestData.values())[0] - print(f"pokemonRequestData: {pokemonRequestData}") if pokemonRequestData["name"] != ""\ and pokemonRequestData["phone"] != ""\ and pokemonRequestData["pokemon"] != ""\ @@ -23,6 +22,8 @@ def response(request): pokemonData = UserObj.fromDict(list(requestData.values())[0]) pokemonData.setId(pokemonID) + HandlerImage.saveImg(obj) + status = HandlerDatabase.updatePokemonByID(pokemonID, pokemonData) header = { From 8345db888876779b757800a08d9cdd57467f7def Mon Sep 17 00:00:00 2001 From: Antonio Muniz Date: Sun, 2 May 2021 00:22:08 -0300 Subject: [PATCH 2/3] Added local files --- assets/public/list.html | 2 +- databaseUser/HandlerDatabase.py | 29 ++++++++++++++++------------- handler/HandlerImage.py | 26 +++++++++++++++++++++----- methods/DELETE.py | 4 +--- methods/GET.py | 4 ++++ methods/POST.py | 2 -- methods/PUT.py | 2 -- 7 files changed, 43 insertions(+), 26 deletions(-) diff --git a/assets/public/list.html b/assets/public/list.html index d2d49bf..18f448a 100644 --- a/assets/public/list.html +++ b/assets/public/list.html @@ -81,9 +81,9 @@

Your friends list