Forráskód Böngészése

search preliminaries

* admin not implemented
* need to do checking etc.
clementinecomputing 4 éve
szülő
commit
339f6e2840
1 módosított fájl, 83 hozzáadás és 0 törlés
  1. 83 0
      server/scripts/PopufareAPI.py

+ 83 - 0
server/scripts/PopufareAPI.py

@@ -91,6 +91,8 @@ def Request(ctx):
       res = RecycleCard(_conn, ctx)
     elif ctx["function"] == "AddCardBlock":
       res = AddCardBlock(_conn, ctx)
+    elif ctx["function"] == "Search":
+      res = Search(_conn, ctx)
 
   _conn.close()
 
@@ -816,6 +818,87 @@ def RecycleCard(db, ctx):
 
   return res
 
+
+##                          _     
+##  ___  ___  __ _ _ __ ___| |__  
+## / __|/ _ \/ _` | '__/ __| '_ \ 
+## \__ \  __/ (_| | | | (__| | | |
+## |___/\___|\__,_|_|  \___|_| |_|
+##                                
+
+def Search(db, ctx):
+  res = {"result":"fail"}
+  cursor = db.cursor()
+
+  fields = ["search_type", "search_string"]
+
+  val = {}
+  for f in fields:
+    if f in ctx:
+      if ctx[f] and len(ctx[f]) > 0:
+        val[f] = ctx[f]
+
+  if val["search_type"] == "card":
+
+    t = val["search_string"]
+    p = '%' + t + '%'
+
+    query = "select logical_card_id, mag_token, rfid_token, userid, issued, firstused, lastused, group_id, issuetype"
+    query += " from user_card where mag_token like %s "
+    query += "   or rfid_token like %s "
+    query += "   or comment like %s "
+    query += "   or issuetype like %s "
+    cursor.execute(query, [p, p, p, p])
+    rows = cursor.fetchall()
+    res["data"] = []
+    for row in rows:
+      _d = {
+        "logical_card_id": row[0],
+        "mag_token": row[1],
+        "rfid_token": row[2],
+        "userid": row[3],
+        "issued": row[4],
+        "firstused": row[5],
+        "lastused": row[6],
+        "group_id": row[7],
+        "issuetype": row[8]
+      }
+      res["data"].append( _d )
+
+    res["result"] = "success"
+
+  elif val["search_type"] == "user":
+
+    t = val["search_string"]
+    p = '%' + t + '%'
+
+    fields = [ "username", "first_name", "last_name", "phone", "email", "address", "city","state", "zip", "created",
+              "shipping_address", "shipping_city", "shipping_state", "shipping_zip", "shipping_name",
+              "shipping_country_code", "shipping_country_name" ]
+
+    query = "select userid, " + ", ".join(fields)
+    query += " from users "
+    query += " where " + " like %s or ".join(fields) + " like %s "
+
+    print("user query:", query)
+
+    cursor.execute(query, [p]*len(fields))
+    rows = cursor.fetchall()
+    res["data"] = []
+    for row in rows:
+      _d = { "userid": row[0] }
+      for idx,f in enumerate(fields):
+        _d[f] = row[idx+1]
+      res["data"].append( _d )
+
+    res["result"] = "success"
+
+  elif val["search_type"] == "admin":
+    res["result"] = "success"
+
+  return res
+
+
 ##            _     _                     _   _     _            _    
 ##   __ _  __| | __| |   ___ __ _ _ __ __| | | |__ | | ___   ___| | __
 ##  / _` |/ _` |/ _` |  / __/ _` | '__/ _` | | '_ \| |/ _ \ / __| |/ /