mirror of
https://codeberg.org/metamuffin/abrechenbarkeit.git
synced 2024-12-27 15:44:34 +00:00
remove product form
This commit is contained in:
parent
bf2ea37ee8
commit
4c6601a232
2 changed files with 68 additions and 4 deletions
|
@ -157,8 +157,8 @@ local function read_products()
|
|||
if l == "" or l == nil then
|
||||
return nil
|
||||
end
|
||||
local barcode, amount, name = string.match(l, "([%w_-]+),(-?%d+),([%w_ -]*)")
|
||||
return barcode, tonumber(amount), name
|
||||
local barcode, price, name = string.match(l, "([%w_-]+),(-?%d+),([%w_ -]*)")
|
||||
return barcode, tonumber(price), name
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -350,9 +350,74 @@ local function r_create_user()
|
|||
return redirect(string.format("/%s", urlencode(username)))
|
||||
end
|
||||
|
||||
local function r_products_post()
|
||||
local data = form_data()
|
||||
local barcode = data.barcode
|
||||
if barcode == nil then
|
||||
return error_box("barcode unset")
|
||||
end
|
||||
if barcode:match("^[%w_-]*$") == nil then
|
||||
return error_box("barcode invalid")
|
||||
end
|
||||
if data.delete then
|
||||
local new_products = io.open("products.new", "w+")
|
||||
if new_products == nil then
|
||||
return error_box("failed to open new products")
|
||||
end
|
||||
for a_barcode, price, name in read_products() do
|
||||
if barcode ~= a_barcode then
|
||||
new_products:write(string.format("%s,%d,%s\n", a_barcode, price, name))
|
||||
end
|
||||
end
|
||||
new_products:flush()
|
||||
new_products:close()
|
||||
os.rename("products.new", "products")
|
||||
else
|
||||
local price = tonumber(data.price)
|
||||
local name = data.name
|
||||
if price == nil then
|
||||
return error_box("price invalid")
|
||||
end
|
||||
if name:match("^[%w_ -]*$") == nil then
|
||||
return error_box("name invalid")
|
||||
end
|
||||
local products = io.open("products", "a+")
|
||||
if products == nil then
|
||||
return error_box("failed to open products")
|
||||
end
|
||||
products:write(string.format("%s,%d,%s\n", barcode, price, name))
|
||||
products:flush()
|
||||
products:close()
|
||||
end
|
||||
end
|
||||
|
||||
local function r_products()
|
||||
respond(200, "Abrechenbare Products", function()
|
||||
local notif = nil
|
||||
if method == "POST" then
|
||||
notif = r_products_post()
|
||||
end
|
||||
respond(200, "Abrechenbare Product List", function()
|
||||
print("<h1>Product List</h1>")
|
||||
if notif then print(notif) end
|
||||
print([[
|
||||
<form action="/?products" method="POST" class="box">
|
||||
<h3>Add Product</h3>
|
||||
<label for="barcode">Barcode: </label>
|
||||
<input type="text" name="barcode" id="barcode" /><br/>
|
||||
<label for="name">Name: </label>
|
||||
<input type="text" name="name" id="name" /><br/>
|
||||
<label for="price">Price: </label>
|
||||
<input type="number" name="price" id="price" /><br/>
|
||||
<input type="submit" value="Add" />
|
||||
</form>
|
||||
<form action="/?products" method="POST" class="box">
|
||||
<h3>Remove Product</h3>
|
||||
<input type="text" name="delete" value="1" hidden />
|
||||
<label for="barcode">Barcode: </label>
|
||||
<input type="text" name="barcode" id="barcode" /><br/>
|
||||
<input type="submit" value="Remove" />
|
||||
</form>
|
||||
]])
|
||||
print("<table><tr><th>Name</th><th>Price</th><th>Barcode</th></tr>")
|
||||
for barcode, price, name in read_products() do
|
||||
print(string.format([[
|
||||
|
|
|
@ -15,7 +15,6 @@ local function read_log()
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
local function balances()
|
||||
local users = {}
|
||||
for _, username, amount, _ in read_log() do
|
||||
|
|
Loading…
Reference in a new issue