diff options
author | Sebastian Reichel <sre@ring0.de> | 2015-02-16 00:28:02 +0100 |
---|---|---|
committer | Sebastian Reichel <sre@ring0.de> | 2015-02-16 00:28:02 +0100 |
commit | ed197e2a5d7ac73ef21d1c8c1db88fb9ddb5f8ca (patch) | |
tree | 893bd75cde8e5a9cee071d483612249d8b079d5b /src/web | |
parent | 21d2375adf68c62feb19f7d5b93adf94337fe82c (diff) | |
download | serial-barcode-scanner-ed197e2a5d7ac73ef21d1c8c1db88fb9ddb5f8ca.tar.bz2 |
web: support setting product deprecation state
Diffstat (limited to 'src/web')
-rw-r--r-- | src/web/web.vala | 39 |
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 = ""; |