Compare commits

..

2 Commits

Author SHA1 Message Date
Jadowyne Ulve
c753321eb6 recipes_api.get_image updated to new schema 2025-04-26 20:07:39 -05:00
Jadowyne Ulve
f82168c712 recipes_api.uploadImage updated to new schema 2025-04-26 19:48:16 -05:00
5 changed files with 55 additions and 14 deletions

View File

@ -82,6 +82,14 @@ def getRecipe(site, payload:tuple, convert=True):
except (Exception, psycopg2.DatabaseError) as error:
raise postsqldb.DatabaseError(error, payload, sql)
def getPicturePath(site:str, payload:tuple, convert:bool=True):
database_config = config.config()
with psycopg2.connect(**database_config) as conn:
with conn.cursor() as cur:
cur.execute(f"SELECT picture_path FROM {site}_recipes WHERE id=%s;", payload)
rows = cur.fetchone()[0]
return rows
def postRecipe(site:str, payload:tuple, convert=True):
database_config = config.config()
record = ()

View File

@ -5,7 +5,6 @@ from main import unfoldCostLayers
from user_api import login_required
import os
import postsqldb, webpush
from flasgger import swag_from
from scripts.recipes import database_recipes
from scripts import postsqldb as db
from flask_restx import Api, fields
@ -227,27 +226,45 @@ def postSKUItem():
return jsonify({'recipe': recipe, 'error': True, 'message': f'method {request.method} is not allowed!'})
@recipes_api.route('/recipe/postImage/<recipe_id>', methods=["POST"])
@login_required
def uploadImage(recipe_id):
""" post an image for a recipe into the database and files by passing the recipe_id and picture_path
---
parameters:
- name: recipe_id
in: path
required: true
schema:
type: integer
responses:
200:
description: image uploaded succesfully!
"""
file = request.files['file']
file_path = current_app.config['UPLOAD_FOLDER'] + f"/recipes/{file.filename.replace(" ", "_")}"
file.save(file_path)
database_config = config()
site_name = session['selected_site']
with psycopg2.connect(**database_config) as conn:
postsqldb.RecipesTable.updateRecipe(conn, site_name, {'id': recipe_id, 'update': {'picture_path': file.filename.replace(" ", "_")}})
return jsonify({})
database_recipes.postRecipeUpdate(site_name, {'id': recipe_id, 'update': {'picture_path': file.filename.replace(" ", "_")}})
return jsonify({'error': False, 'message': 'Recipe was updated successfully!'})
@recipes_api.route('/recipe/getImage/<recipe_id>')
@login_required
def get_image(recipe_id):
database_config = config()
""" get the picture path for a recipe by passing teh recipe id in the path
---
parameters:
- name: recipe_id
in: path
required: true
schema:
type: integer
responses:
200:
description: image fetched succesfully!
"""
site_name = session['selected_site']
with psycopg2.connect(**database_config) as conn:
with conn.cursor() as cur:
cur.execute(f"SELECT picture_path FROM {site_name}_recipes WHERE id=%s;", (recipe_id,))
rows = cur.fetchone()[0]
return send_from_directory('static/pictures/recipes', rows)
picture_path = database_recipes.getPicturePath(site_name, (recipe_id,))
return send_from_directory('static/pictures/recipes', picture_path)
@recipes_api.route('/recipe/deleteRecipeItem', methods=["POST"])
def deleteRecipeItem():

View File

@ -0,0 +1,16 @@
version: '3.4'
services:
speedtest-tracker:
container_name: speedtest-tracker
ports:
- 8080:80
- 8443:443
environment:
- PUID=1000
- PGID=1000
- DB_CONNECTION=sqlite
volumes:
- ./data:/config
- ./keys:/config/keys
image: lscr.io/linuxserver/speedtest-tracker:latest
restart: unless-stopped