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-05-27 12:20:26 +07:00
import json
from bottle import Bottle , route , response , request
2024-05-12 02:18:32 +07:00
from config import directory
2023-12-15 16:58:00 +07:00
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
2025-05-27 12:20:26 +07:00
data = {
" foods " : [
" Pizza " ,
" Burger " ,
" Pasta " ,
]
}
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-20 13:48:03 +07:00
2025-05-27 12:20:26 +07:00
@app.route ( ' /api/<crud> ' , methods = [ ' GET ' , ' POST ' , ' PUT ' , ' DELETE ' ] )
2025-05-20 13:48:03 +07:00
def index ( crud ) :
2025-05-27 12:20:26 +07:00
response . content_type = ' application/json '
result = {
" status " : " error " ,
" message " : f " API endpoint for /api/ { crud } is not implemented yet. "
}
payload = request . json
if crud == " create " :
data [ " foods " ] . append ( payload [ " food " ] )
id = len ( data [ " foods " ] ) - 1
result [ " status " ] = " success "
result [ " message " ] = f ' { payload [ " food " ] } is added to the list. '
result [ " data " ] = {
" id " : id ,
" food " : data [ " foods " ] [ id ]
}
elif crud == " read " :
result [ " status " ] = " success "
result [ " message " ] = " Reading foods. "
result [ " data " ] = data [ " foods " ]
elif crud == " update " :
food_id = payload [ " id " ]
food = payload [ " food " ]
2025-05-27 12:26:43 +07:00
if len ( data [ " foods " ] ) < = food_id :
result [ " status " ] = " error "
result [ " message " ] = f " { food_id } does not exist. "
return json . dumps ( result , indent = 2 ) . encode ( )
2025-05-27 12:20:26 +07:00
data [ " foods " ] [ food_id ] = food
result [ " status " ] = " success "
result [ " message " ] = f ' { food } is updated. '
result [ " data " ] = {
" food " : data [ " foods " ] [ food_id ]
}
elif crud == " delete " :
food_id = payload [ " id " ]
food = data [ " foods " ] . pop ( food_id )
result [ " status " ] = " success "
result [ " message " ] = f ' { food } is deleted '
result [ " data " ] = {
" food " : food
}
return json . dumps ( result , indent = 2 ) . encode ( )