145 lines
6.1 KiB
Python
145 lines
6.1 KiB
Python
# 3RD PARTY IMPORTS
|
|
from flask import (
|
|
Blueprint, request, render_template, redirect, session, url_for, send_file, jsonify, Response
|
|
)
|
|
import psycopg2
|
|
import math
|
|
import datetime
|
|
|
|
# APPLICATION IMPORTS
|
|
from config import config
|
|
from application.access_module import access_api
|
|
from application import postsqldb, database_payloads
|
|
from application.meal_planner import meal_planner_database, meal_planner_processes
|
|
|
|
meal_planner_api = Blueprint('meal_planner_api', __name__, template_folder="templates", static_folder="static")
|
|
|
|
|
|
@meal_planner_api.route('/', methods=["GET"])
|
|
@access_api.login_required
|
|
def plannerIndex():
|
|
sites = [site[1] for site in postsqldb.get_sites(session['user']['sites'])]
|
|
return render_template('meal_planner.html', current_site=session['selected_site'], sites=sites)
|
|
|
|
@meal_planner_api.route('/api/getEventsByMonth', methods=["GET"])
|
|
@access_api.login_required
|
|
def getEventsByMonth():
|
|
if request.method == "GET":
|
|
site_name = session['selected_site']
|
|
year = int(request.args.get('year', 2025))
|
|
month = int(request.args.get('month', 1))
|
|
events = ()
|
|
events = meal_planner_database.selectPlanEventsByMonth(site_name, (year, month))
|
|
return jsonify(status=201, message="Events fetched Successfully!", events=events)
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!", events=events)
|
|
|
|
@meal_planner_api.route('/api/getEventByUUID', methods=["GET"])
|
|
@access_api.login_required
|
|
def getEventByUUID():
|
|
if request.method == "GET":
|
|
site_name = session['selected_site']
|
|
event_uuid = request.args.get('event_uuid', "")
|
|
event = ()
|
|
event = meal_planner_database.selectPlanEventByUUID(site_name, (event_uuid,))
|
|
|
|
return jsonify(status=201, message="Event fetched Successfully!", event=event)
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!", event=event)
|
|
|
|
|
|
@meal_planner_api.route('/api/getRecipes', methods=["GET"])
|
|
@access_api.login_required
|
|
def getRecipes():
|
|
if request.method == "GET":
|
|
site_name = session['selected_site']
|
|
page = int(request.args.get('page', 1))
|
|
limit = int(request.args.get('limit', 50))
|
|
search_string = request.args.get('search_string', "")
|
|
|
|
offset = (page - 1) * limit
|
|
recipes, count = [], 0
|
|
recipes, count = meal_planner_database.paginateRecipesTuples(site_name, (limit, offset))
|
|
|
|
return jsonify(status=201, message="Recipes fetched Successfully!", recipes=recipes, end=math.ceil(count/limit))
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!", recipes=recipes, end=math.ceil(count/limit))
|
|
|
|
|
|
@meal_planner_api.route('/api/getVendors', methods=["GET"])
|
|
@access_api.login_required
|
|
def getVendors():
|
|
if request.method == "GET":
|
|
site_name = session['selected_site']
|
|
page = int(request.args.get('page', 1))
|
|
limit = int(request.args.get('limit', 50))
|
|
search_string = request.args.get('search_string', "")
|
|
|
|
offset = (page - 1) * limit
|
|
vendors, count = [], 0
|
|
vendors, count = meal_planner_database.paginateVendorsTuples(site_name, (limit, offset))
|
|
|
|
return jsonify(status=201, message="Recipes fetched Successfully!", vendors=vendors, end=math.ceil(count/limit))
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!", vendors=vendors, end=math.ceil(count/limit))
|
|
|
|
|
|
@meal_planner_api.route('/api/addEvent', methods=["POST"])
|
|
@access_api.login_required
|
|
def addEvent():
|
|
if request.method == "POST":
|
|
site_name = session['selected_site']
|
|
event_date_start = datetime.datetime.strptime(request.get_json()['event_date_start'], "%Y-%m-%d")
|
|
event_date_end = datetime.datetime.strptime(request.get_json()['event_date_end'], "%Y-%m-%d")
|
|
|
|
event_payload = database_payloads.PlanEventPayload(
|
|
plan_uuid=None,
|
|
event_shortname=request.get_json()['event_shortname'],
|
|
event_description=request.get_json()['event_description'],
|
|
event_date_start=event_date_start,
|
|
event_date_end=event_date_end,
|
|
created_by=session['user_id'],
|
|
recipe_uuid=request.get_json()['recipe_uuid'],
|
|
receipt_uuid=None,
|
|
event_type=request.get_json()['event_type']
|
|
)
|
|
|
|
meal_planner_database.insertPlanEventTuple(site_name, event_payload.payload())
|
|
|
|
return jsonify(status=201, message="Event added Successfully!")
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!")
|
|
|
|
@meal_planner_api.route('/api/addTOEvent', methods=["POST"])
|
|
@access_api.login_required
|
|
def addTOEvent():
|
|
if request.method == "POST":
|
|
site_name = session['selected_site']
|
|
data= request.get_json()
|
|
user_id = session['user_id']
|
|
|
|
meal_planner_processes.addTakeOutEvent(site_name, data, user_id)
|
|
|
|
return jsonify(status=201, message="Event added Successfully!")
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!")
|
|
|
|
|
|
@meal_planner_api.route('/api/saveEvent', methods=["POST"])
|
|
@access_api.login_required
|
|
def saveEvent():
|
|
if request.method == "POST":
|
|
site_name = session['selected_site']
|
|
event_uuid = request.get_json()['event_uuid']
|
|
update = request.get_json()['update']
|
|
|
|
meal_planner_database.updatePlanEventTuple(site_name, {'uuid': event_uuid, "update": update})
|
|
|
|
return jsonify(status=201, message="Event Saved Successfully!")
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!")
|
|
|
|
@meal_planner_api.route('/api/removeEvent', methods=["POST"])
|
|
@access_api.login_required
|
|
def removeEvent():
|
|
if request.method == "POST":
|
|
site_name = session['selected_site']
|
|
event_uuid = request.get_json()['event_uuid']
|
|
|
|
meal_planner_database.deletePlanEventTuple(site_name, (event_uuid, ))
|
|
|
|
return jsonify(status=201, message="Event removed Successfully!")
|
|
return jsonify(status=405, message=f"{request.method} is not an allowed method on this endpoint!") |