Skip to content

Commit de8b712

Browse files
committed
Added function to save local images
1 parent 67201f0 commit de8b712

File tree

5 files changed

+76
-12
lines changed

5 files changed

+76
-12
lines changed

databaseUser/HandlerDatabase.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from message.StatusCode import StatusCode
22
import json
33
from databaseUser.ObjectUser import UserObj
4-
4+
from handler.HandlerImage import HandlerImage
5+
import pathlib
56

67
class HandlerDatabase:
78
pokemonDatabasePath: str = 'databaseUser/database.json'
@@ -15,13 +16,21 @@ def insertPokemon(obj: UserObj):
1516
return StatusCode.INTERNAL_SERVER_ERROR
1617

1718
pokemonID = obj.id
19+
20+
extensionImage = pathlib.Path(obj.image).suffix
21+
urlImage = "/" + obj.id + extensionImage
22+
1823
pokemonData = {
1924
"name": obj.name,
2025
"phone": obj.phone,
2126
"pokemon": obj.pokemon,
22-
"image": obj.image
27+
"image": urlImage
2328
}
24-
29+
try:
30+
HandlerImage.addLinkImage(urlImage, extensionImage)
31+
except:
32+
print("erro")
33+
2534
isPokemonRegistered, pokemonIndex = HandlerDatabase.isPokemonRegistered(pokemonID)
2635
if isPokemonRegistered:
2736
database["users"][pokemonIndex] = pokemonData
@@ -39,6 +48,18 @@ def updatePokemonByID(pokemonID: str, pokemonData: UserObj):
3948
print(f"isPokemonID a string: {isinstance(pokemonID, str)}")
4049
print(f"pokemonData: {pokemonData}\n")
4150

51+
extensionImage = pathlib.Path(pokemonData.image).suffix
52+
urlImage = "/" + pokemonData.id + extensionImage
53+
54+
pokemonData = {
55+
"name": pokemonData.name,
56+
"phone": pokemonData.phone,
57+
"pokemon": pokemonData.pokemon,
58+
"image": urlImage
59+
}
60+
61+
HandlerImg.addLinkImage(urlImage, extensionImage)
62+
4263
database: dict = HandlerDatabase.getData()
4364

4465
if database is None:
@@ -109,7 +130,7 @@ def isPokemonRegistered(pokemonID: str):
109130
index: int
110131
element: dict
111132
for index, element in enumerate(database["users"]):
112-
if pokemonID == list(element.keys())[0]:
133+
if int(pokemonID) == int(list(element.keys())[0]):
113134
return True, index
114135

115136
return False, None
@@ -135,7 +156,6 @@ def getData():
135156
@staticmethod
136157
def setData(data: dict):
137158
HandlerDatabase.pokemonDatabase = data
138-
print(data)
139159
try:
140160
with open(HandlerDatabase.pokemonDatabasePath, 'w+') as file:
141161
file.seek(0)

handler/HandlerImage.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from server import *
2+
from threading import Thread
3+
from message.Request import Request
4+
from message import Response, StatusCode
5+
from string import Template
6+
import requests
7+
import pathlib
8+
from methods import GET
9+
import json
10+
11+
class HandlerImage:
12+
13+
@staticmethod
14+
def saveImg(objUser):
15+
img_data = requests.get(objUser.image).content
16+
fileImg = "databaseUser/" + objUser.id + pathlib.Path(objUser.image).suffix
17+
18+
with open(fileImg, 'wb') as handler:
19+
handler.write(img_data)
20+
21+
@staticmethod
22+
def addLinkImage(urlImage, extensionImage):
23+
GET.GET.addImageLinkInGetList(urlImage, extensionImage )
24+
25+
try:
26+
with open('databaseUser/imagesLink.json', 'w') as f:
27+
json.dump(GET.GET.imagesTable, f)
28+
except:
29+
print("new image link not save")

methods/GET.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import os
55
from handler.HandlerErrors import HandlerErrors
66
from databaseUser.HandlerDatabase import HandlerDatabase
7-
7+
import json
88

99
class GET:
1010
urlTable = {
@@ -17,8 +17,9 @@ class GET:
1717
"/dashboard.css": {"type": "text/css", "filePath": "./assets/dashboard.css"},
1818
"/popper.min.js": {"type": "text/css", "filePath": "./assets/popper.min.js"},
1919
"/bootstrap.min.js": {"type": "text/css", "filePath": "./assets/bootstrap.min.js"},
20-
"/edit": {"type": "text/html", "filePath": "./assets/put.html"},
20+
"/edit": {"type": "text/html", "filePath": "./assets/public/put.html"},
2121
}
22+
2223
imagesTable = {
2324
"/deusgrego.jpeg": {"type": "image/jpeg", "filePath": "./assets/static/deusgrego.jpeg"},
2425

@@ -40,6 +41,13 @@ class GET:
4041

4142
@staticmethod
4243
def response(request: Request):
44+
#att list
45+
try:
46+
with open('databaseUser/imagesLink.json') as f:
47+
GET.imagesTable = json.load(f)
48+
except:
49+
print("erro in list of links")
50+
4351
if request.URI.find('database') != -1 or request.URI.find('edit') != -1 or request.URI in GET.urlTable:
4452
response: Response = Response(status_code=StatusCode.OK, body="", header={})
4553
if request.URI.find('database') != -1:
@@ -87,3 +95,7 @@ def getParamsFromURL(url):
8795
parsedParams[splitElem[0]] = splitElem[1]
8896

8997
return parsedParams
98+
99+
@staticmethod
100+
def addImageLinkInGetList(newImg, extension):
101+
GET.imagesTable[newImg] = {"type": "image/" + extension[1:], "filePath": "./databaseUser" + newImg}

methods/POST.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
from databaseUser.HandlerDatabase import HandlerDatabase
33
from databaseUser.ObjectUser import UserObj
44
from handler.HandlerErrors import HandlerErrors
5+
from handler.HandlerImage import HandlerImage
56
from message.Response import Response
67
from message.StatusCode import StatusCode
78
import json
8-
9+
import requests
10+
import pathlib
911

1012
class POST:
1113

@@ -16,10 +18,10 @@ def response(request):
1618
if data["name"] != "" and data["phone"] != "" and data["pokemon"] != "" and data["image"] != "":
1719
obj = UserObj.fromDict(data)
1820

19-
print(obj)
20-
2121
obj.setId(datetime.datetime.now().strftime("%d%m%Y%H%M%S"))
2222

23+
HandlerImage.saveImg(obj)
24+
2325
status = HandlerDatabase.insertPokemon(obj)
2426
header = {
2527
"Connection": "Closed"

methods/PUT.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
from message.StatusCode import StatusCode
66
import json
77
import datetime
8-
8+
from handler.HandlerImage import HandlerImage
99

1010
class PUT:
1111
@staticmethod
1212
def response(request):
1313
try:
1414
requestData = json.loads(request.body)
1515
pokemonRequestData = list(requestData.values())[0]
16-
print(f"pokemonRequestData: {pokemonRequestData}")
1716
if pokemonRequestData["name"] != ""\
1817
and pokemonRequestData["phone"] != ""\
1918
and pokemonRequestData["pokemon"] != ""\
@@ -23,6 +22,8 @@ def response(request):
2322
pokemonData = UserObj.fromDict(list(requestData.values())[0])
2423
pokemonData.setId(pokemonID)
2524

25+
HandlerImage.saveImg(obj)
26+
2627
status = HandlerDatabase.updatePokemonByID(pokemonID, pokemonData)
2728

2829
header = {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy