summaryrefslogtreecommitdiffstats
path: root/src/web/web.vala
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2015-02-16 00:28:02 +0100
committerSebastian Reichel <sre@ring0.de>2015-02-16 00:28:02 +0100
commited197e2a5d7ac73ef21d1c8c1db88fb9ddb5f8ca (patch)
tree893bd75cde8e5a9cee071d483612249d8b079d5b /src/web/web.vala
parent21d2375adf68c62feb19f7d5b93adf94337fe82c (diff)
downloadserial-barcode-scanner-ed197e2a5d7ac73ef21d1c8c1db88fb9ddb5f8ca.tar.bz2
web: support setting product deprecation state
Diffstat (limited to 'src/web/web.vala')
-rw-r--r--src/web/web.vala39
1 files changed, 37 insertions, 2 deletions
diff --git a/src/web/web.vala b/src/web/web.vala
index db32974..05a9b77 100644
--- a/src/web/web.vala
+++ b/src/web/web.vala
@@ -469,6 +469,9 @@ public class WebServer {
case "newprice":
handler_product_newprice(server, msg, path, query, client, id);
break;
+ case "togglestate":
+ handler_product_togglestate(server, msg, path, query, client, id);
+ break;
default:
handler_product_entry(server, msg, path, query, client, id);
break;
@@ -509,6 +512,31 @@ public class WebServer {
}
}
+ void handler_product_togglestate(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client, uint64 id) {
+ try {
+ var l = new WebSession(server, msg, path, query, client);
+
+ if(!l.superuser && !l.auth_products) {
+ handler_403(server, msg, path, query, client);
+ return;
+ }
+
+ var oldstate = db.get_product_deprecated(id);
+ db.product_deprecate(id, !oldstate);
+ var newstate = db.get_product_deprecated(id);
+
+ var statestr = newstate ? "deprecated" : "active";
+ msg.set_response("application/json", Soup.MemoryUse.COPY, @"{ \"state\": \"$statestr\" }".data);
+ msg.set_status(200);
+ } catch(DatabaseError e) {
+ stderr.printf(e.message+"\n");
+ handler_400(server, msg, path, query, client);
+ } catch(IOError e) {
+ stderr.printf(e.message+"\n");
+ handler_400(server, msg, path, query, client);
+ }
+ }
+
void handler_product_entry(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client, uint64 id) {
try {
var l = new WebSession(server, msg, path, query, client);
@@ -526,10 +554,17 @@ public class WebServer {
/* amount */
t.replace("AMOUNT", "%d".printf(db.get_product_amount(id)));
- if(l.superuser || l.auth_products)
+ var deprecated = db.get_product_deprecated(id);
+ t.replace("BTNSTATE", deprecated ? "btn-danger" : "btn-success");
+ t.replace("STATE", deprecated ? "Deprecated" : "Active");
+
+ if(l.superuser || l.auth_products) {
t.replace("ISADMIN", "block");
- else
+ t.replace("ISADMIN2", "");
+ } else {
t.replace("ISADMIN", "none");
+ t.replace("ISADMIN2", "disabled=\"disabled\"");
+ }
/* prices */
string prices = "";