uas-web-22412056/costapy/handler.py
2025-07-15 15:20:21 +07:00

95 lines
3.4 KiB
Python

# CostaPy
# Copyright (C) 2022 Dita Aji Pratama
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
from bottle import Bottle, route, request, response
from config import directory, database
import mysql.connector as mariadb
import json
import templates.plain.main as template_public
import modules.public.home as public_home
app = Bottle()
@app.route('/')
def index():
params = {
"mako":{
"website" : template_public.main(directory.page["public"], "home")
}
}
return public_home.main().html(params)
@app.route('/api/<crud>', method=['OPTIONS', 'GET', 'POST', 'PUT', 'DELETE'])
def list(crud):
# Untuk menentukan tipe konten pada respon, yaitu: JSON
response.content_type = 'application/json'
# Mengambil request pada body, yaitu berformat JSON
params = request.json
# Keluaran default
keluaran = {
"status":"Gagal",
"message":"Anda tidak ada otoritas untuk menggunakan endpoint ini",
"endpoint":f"/api/{crud}",
"data":[]
}
db_main = mariadb.connect(**database.db_main)
cursor = db_main.cursor(dictionary=True)
if request.method == 'OPTIONS':
return None
elif crud == "create":
name = params["name" ]
price = params["price" ]
qty = params["qty" ]
cursor.execute("INSERT INTO `inventaris` VALUES (DEFAULT, %s, %s, %s) ;" , (name, price, qty) )
keluaran["status"] = "Berhasil"
keluaran["message"] = "Selamat data anda telah ditambah"
keluaran["data"] = {
"name":name,
"price":price,
"qty":qty
}
elif crud == "read":
cursor.execute("SELECT * FROM `inventaris`; ")
inventaris_list = cursor.fetchall()
keluaran["status"] = "Berhasil"
keluaran["message"] = "Data collected"
keluaran["data"] = inventaris_list
elif crud == "update":
key = params["key" ]
name = params["name" ]
price = params["price" ]
qty = params["qty" ]
cursor.execute("UPDATE `inventaris` SET `name` = %s, `price` = %s, `qty` =%s WHERE `id` = %s ;" , (name, price, qty, key) )
keluaran["status"] = "Berhasil"
keluaran["message"] = "Belum dibikin"
keluaran["data"] = {
"key":params["key"],
"name":params["name"],
"price":params["price"],
"qty":params["qty"]
}
elif crud == "delete":
key = params["key" ]
cursor.execute("DELETE FROM `inventaris` WHERE `id` = %s ;" , (key,) )
keluaran["status"] = "Berhasil"
keluaran["message"] = "Data sudah terhapus selamanya!"
else:
pass
cursor.close()
db_main.close()
return json.dumps(keluaran, indent = 2).encode()