2024-05-12 02:29:59 +07:00
# 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/.
2025-06-07 14:20:45 +07:00
from bottle import Bottle , route , request , response
2025-06-07 15:18:24 +07:00
from config import directory , database
2023-12-15 16:58:00 +07:00
2025-06-07 15:18:24 +07:00
import mysql . connector as mariadb
2025-05-27 11:15:23 +07:00
import json
2024-06-05 23:27:52 +07:00
import templates . plain . main as template_public
2024-05-12 02:18:32 +07:00
import modules . public . home as public_home
2023-12-15 16:58:00 +07:00
2024-05-12 02:18:32 +07:00
app = Bottle ( )
2022-03-16 11:06:52 +07:00
2024-05-12 02:18:32 +07:00
@app.route ( ' / ' )
def index ( ) :
params = {
" mako " : {
" website " : template_public . main ( directory . page [ " public " ] , " home " )
2024-01-13 12:01:14 +07:00
}
2024-05-12 02:18:32 +07:00
}
return public_home . main ( ) . html ( params )
2025-05-27 11:15:23 +07:00
@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 " : [ ]
}
2025-06-07 15:18:24 +07:00
db_main = mariadb . connect ( * * database . db_main )
cursor = db_main . cursor ( dictionary = True )
2025-06-17 10:44:45 +07:00
if request . method == ' OPTIONS ' :
return None
elif crud == " create " :
2025-06-07 15:18:24 +07:00
name = params [ " name " ]
phone = params [ " phone " ]
cursor . execute ( " INSERT INTO `member` VALUES (DEFAULT, %s , %s ) ; " , ( name , phone ) )
2025-05-27 11:15:23 +07:00
keluaran [ " status " ] = " Berhasil "
2025-06-07 15:18:24 +07:00
keluaran [ " message " ] = " Selamat data anda telah ditambah "
2025-05-27 11:15:23 +07:00
keluaran [ " data " ] = {
2025-06-07 15:18:24 +07:00
" name " : name ,
" phone " : phone
2025-05-27 11:15:23 +07:00
}
elif crud == " read " :
2025-06-07 15:18:24 +07:00
cursor . execute ( " SELECT * FROM `member`; " )
member_list = cursor . fetchall ( )
2025-05-27 11:15:23 +07:00
keluaran [ " status " ] = " Berhasil "
2025-06-07 15:18:24 +07:00
keluaran [ " message " ] = " Data collected "
keluaran [ " data " ] = member_list
2025-05-27 11:15:23 +07:00
elif crud == " update " :
2025-06-07 15:18:24 +07:00
key = params [ " key " ]
name = params [ " name " ]
phone = params [ " phone " ]
cursor . execute ( " UPDATE `member` SET `name` = %s , `phone` = %s WHERE `id` = %s ; " , ( name , phone , key ) )
2025-05-27 11:15:23 +07:00
keluaran [ " status " ] = " Berhasil "
2025-06-07 15:18:24 +07:00
keluaran [ " message " ] = " Belum dibikin "
2025-05-27 11:15:23 +07:00
keluaran [ " data " ] = {
2025-06-07 15:18:24 +07:00
" key " : params [ " key " ] ,
" name " : params [ " name " ] ,
" phone " : params [ " phone " ]
2025-05-27 11:15:23 +07:00
}
elif crud == " delete " :
2025-06-07 15:18:24 +07:00
key = params [ " key " ]
cursor . execute ( " DELETE FROM `member` WHERE `id` = %s ; " , ( key , ) )
2025-05-27 11:15:23 +07:00
keluaran [ " status " ] = " Berhasil "
2025-06-07 15:18:24 +07:00
keluaran [ " message " ] = " Data sudah terhapus selamanya! "
2025-05-27 11:15:23 +07:00
else :
pass
2025-06-07 15:18:24 +07:00
cursor . close ( )
db_main . close ( )
2025-05-27 11:15:23 +07:00
return json . dumps ( keluaran , indent = 2 ) . encode ( )