def readfile(infile): lines = 0 with open(infile, "r") as file: #print(F"file: {infile}") #line = file.readline().strip() for line in file: line = line.strip() if not line: continue lines += 1 #print(F"Line: {line}") if "?" in line: base = line.split("?")[0] # add base url if base not in unique: unique[base] = [] # Parse new url parsed_url = urlparse.urlparse(line) params = pq(parsed_url.query) # If no values in the array if not unique[base]: unique[base].append(line) #print("Valid and first entry") else: # if found once, do not add. if never found, add not_found = True # Loop through old results for url in unique[base]: old_params = pq(urlparse.urlparse(url).query) # If found, continue without adding old_list = list(old_params.keys()) old_list.sort() new_list = list(params.keys()) new_list.sort() #print(F"Old params: {old_params} list: {list(old_params.keys())} sorted: {old_list}") #print(F"Old: {old_list} New: {new_list} Equal: {old_list == new_list}") # Good debug #print(F"Difference: {set(old_list).symmetric_difference(set(new_list))}") if old_list == new_list: #print(F"[-] Exists!") not_found = False break # Not found in whole dict, add! if not_found: #print(F"[+] Add line: {line}") unique[base].append(line) # Continue reading line = file.readline().strip() return lines
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": crn = query["crn"][0] sql = "DELETE FROM Enrollments WHERE CRN = %s and NetId=%s" val = (crn, netId) #TODO CHANGE TO LOGGED IN USER mydb = None try: mydb, mycursor = db.connect() #db.mydb.start_transaction(isolation_level=SERIALIZABLE, readonly=False) mycursor.execute(sql, val) if mycursor.rowcount > 0: start_response('200 OK', [('Content-Type', 'json')]) mydb.commit() message = json.dumps({STATUS: SUCCESS}) else: start_response('400 Bad Request', [('Content-Type', 'json')]) mydb.commit() message = json.dumps({ STATUS: FAILED, MESSAGE: "User is not enrolled in class" }) except Exception as e: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() print(message) return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": crn = query["crn"][0] sql = "INSERT INTO Enrollments (CRN, NetId) VALUES (%s, %s)" val = (crn, netId) #TODO CHANGE TO LOGIN USER try: mydb, mycursor = db.connect() #mydb.start_transaction(isolation_level=SERIALIZABLE, readonly=False) mycursor.execute(sql, val) start_response('200 OK', [('Content-Type', 'json')]) mydb.commit() message = json.dumps({STATUS: SUCCESS}) except Exception as e: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() print(message) return [message.encode()]
def dummy(environ, start_response): message = check_request(environ,start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "results": [ { "crn": "1", "class": "cs241", "department": "cs" }, { "crn": "2", "class": "ece319", "department": "ece" }, { "crn": "3", "class": "cs233", "department": "cs" } ] } }) print("Message:", message) return [message.encode()]
def dummy(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({STATUS: SUCCESS, MESSAGE: {"id": 1}}) return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ,start_response) query = pq(environ[QUERY]) if message == "": q = db.escapeString(query["q"][0]) sql = """SELECT Title, Classes.CRN, Department, Instructor, (x.netId IS NOT NULL) FROM Classes LEFT JOIN (SELECT * FROM Enrollments WHERE NetID = %s) AS x ON Classes.CRN = x.CRN WHERE Title LIKE '""" + q + "%'" val1 = (netId, ) try: mydb, mycursor = db.connect() mycursor.execute(sql, val1) results = [{"class":row[0],"crn":row[1], "department":row[2], "instructor":row[3], "currentlyEnrolled": row[4] == 1} for row in mycursor.fetchall()] start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, MESSAGE: {"results": results} }) mydb.close() except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "oopsie I made a poopsie" }) return [message.encode()]
def check_request(environ, start_response): query = pq(environ[QUERY]) print(environ) if environ[REQUEST_METHOD] != METHOD_POST: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Bad request method: expecting POST" }) elif "crn" not in query or len(query["crn"]) == 0: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Missing query parameter ?crn=%" }) elif "CONTENT_LENGTH" not in environ: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Missing post body in form: {'note':'xxxxxx'}" }) else: return ""
def real(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": crn = query["crn"][0] body = environ[BODY].read().decode("utf-8") body = json.loads(body) sql = "UPDATE Classes SET Note = %s WHERE CRN = %s" if 'note' not in body or str(type( body['note'])) != "<class 'str'>" or len(body['note']) > 280: start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: "Improper request"}) else: val = (body['note'], crn) try: mydb, mycursor = db.connect() mycursor.execute(sql, val) start_response('200 OK', [('Content-Type', 'json')]) mydb.commit() message = json.dumps({STATUS: SUCCESS}) except Exception as e: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() return [message.encode()]
def do_POST(self): length = int(self.headers.get('Content-length', 0)) data = self.rfile.read(length).decode() message = pq(data)["message"][0] self.send_response(200) self.send_header('Content-type', 'text/plain; charset=utf-8') self.end_headers() self.wfile.write(message.encode())
def do_POST(self): length = int(self.headers.get('Content-length', 0)) data = self.rfile.read(length).decode() message = pq(data)["message"][0] message = message.replace("<","&It;") memory.append(message) self.send_response(303) self.send_header('Location','/') self.end_headers()
def check_request(environ, start_response): query = pq(environ[QUERY]) if environ[REQUEST_METHOD] != METHOD_GET: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Bad request method: expecting POST" }) else: return ""
def dummy(environ, start_response): print("Dummy") message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) payload = {"1000": "cs241", "1000": "tp103", "1000": "astr120"} message = json.dumps({STATUS: SUCCESS, MESSAGE: payload}) print("Message:", message) return [message.encode()]
def dummy(environ, start_response): print("Dummy") message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) payload = { "dates": ["11-28-2018"], "prev": "11-27-2018", "next": "11-29-2018", "titles": { "0": "cs241", "1": "tp103", "2": "astr120" }, "events": [{ "0": [{ "crn": "0", "class": "cs241", "title": "MP1", "desc": "this assignment is harder than the teacher expected", "DueDate": "2018-11-29 00:22:57", "EventId": 1, "checked": True }, { "crn": "0", "class": "cs241", "title": "QUIZ1", "desc": "Wow! This quiz is easy-peasy", "DueDate": "2018-11-29 00:12:57", "EventId": 2, "checked": False }], "1": [{ "crn": "1", "class": "tp103", "title": "MP1", "desc": "this assignment is harder than the teacher expected", "DueDate": "2018-11-29 00:23:59", "EventId": 3, "checked": False }], "2": [] }] } message = json.dumps({STATUS: SUCCESS, MESSAGE: payload}) print("Message:", message) return [message.encode()]
def real(environ, start_response): message = check_request(environ,start_response) query = pq(environ[QUERY]) if message == "": body = None # (CRN, Title, Department, Instructor , Note VARCHAR(280)) try: body = environ[BODY].read().decode("utf-8") body = json.loads(body) sql = "INSERT INTO Classes ( CRN , Title, Department, Instructor, Note) VALUES (%s, %s, %s, %s, %s)" num_attributes = 0 vals = [] vals.append(body["CRN"]) vals.append(body["title"]) # Extract updated values vals.append(body["department"]) vals.append(body["instructor"]) vals.append(body["note"] if "note" in body else "Nothing here.") except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Please provide valid json" }) return [message.encode()] mydb = None try: print(vals) mydb, mycursor = db.connect() mycursor.execute(sql, vals) mydb.commit() print("done") start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, "CRN" : body["CRN"] }) except Exception as e: if mydb is not None: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: str(e) }) finally: if mydb: mydb.close() print(message) return [message.encode()]
def check_request(environ, start_response): query = pq(environ[QUERY]) if environ[REQUEST_METHOD] != METHOD_GET: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Bad request method: expecting GET" }) elif "eventId" not in query or len(query["eventId"]) == 0: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Missing query parameter ?eventId=#" }) else: return ""
def check_request(environ,start_response): query = pq(environ[QUERY]) if environ[REQUEST_METHOD] != METHOD_POST: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Bad request method: expecting POST" }) elif "CONTENT_LENGTH" not in environ: start_response('400 Bad Request', [('Content-Type', 'json')]) return json.dumps({ STATUS: FAILED, MESSAGE: "Missing post body in form: {'desc':'xxxxxx', 'duedate': 'xxxx-xx-xx'...}" }) else: return ""
def dummy(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "eventId": str(query["eventId"][0]), "crn": "1002", "Title": "mp2", "DueDate": "11-29-2018 10:12", "description": "Just another annoying event" } }) print("Message:", message) return [message.encode()]
def real(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": eventId = query["eventId"][0] sql = "SELECT CRN, Title, DueDate, Event_Des FROM Events WHERE EventId = %s" mydb = None try: mydb, mycursor = db.connect() val = (eventId, ) mycursor.execute(sql, val) results = mycursor.fetchall() if len(results) == 1: start_response('200 OK', [('Content-Type', 'json')]) row = results[0] message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "eventId": str(query["eventId"][0]), "crn": row[0], "title": row[1], "duedate": row[2], "desc": row[3] } }) else: start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "class does not exist" }) except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "oopsie I made a poopsie" }) finally: if mydb: mydb.close() print(message) return [message.encode()]
def real(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": crn = query["crn"][0] sql = "SELECT Title, CRN, Department, Instructor, Note FROM Classes WHERE CRN = %s" mydb = None try: mydb, mycursor = db.connect() val = (crn, ) mycursor.execute(sql, val) results = mycursor.fetchall() if len(results) == 1: start_response('200 OK', [('Content-Type', 'json')]) row = results[0] message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "class": row[0], "crn": row[1], "department": row[2], "instructor": row[3], "note": row[4] } }) else: start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "class does not exist" }) except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "oopsie I made a poopsie" }) finally: if mydb: mydb.close() print(message) return [message.encode()]
def dummy(environ, start_response): print("Dummy") message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) payload = [{ "id": 1, "format": "png", "author": "alb2", }, { "id": 5, "format": "jpg", "author": "mac_is_kewl", }] message = json.dumps({STATUS: SUCCESS, MESSAGE: payload}) print("Message:", message) return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": content = None try: content = environ[BODY].read() if 'binary' not in query or query['binary'][0].lower() == "false": print("Not binary") content = base64.decodebytes(content) if len(content) == 0: raise Exception("Please provide a non empty document") except: print_exc() start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Error uploading document" }) return [message.encode()] eventId = query["eventId"][0] form = query["format"][0].lower() sql = "INSERT INTO Documents (format, content, EventId, author) VALUES (%s, %s, %s, %s)" val = (form, content, eventId, netId) #TODO CHANGE TO LOGIN USER mydb = None try: mydb, mycursor = db.connect() mycursor.execute(sql, val) _id = mycursor.lastrowid mydb.commit() start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({STATUS: SUCCESS, "id": _id}) except Exception as e: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() return [message.encode()]
def real(environ, start_response): message = check_request(environ,start_response) query = pq(environ[QUERY]) if message == "": body = environ[BODY].read().decode("utf-8") body = json.loads(body) if 'google_token' not in body: start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Improper request no google_token in body" }) else: token = body['google_token'] idinfo = google_auth(token) if idinfo is None: start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Not valid google token" }) else: try: netId = idinfo['email'].split("@")[0] add_user(netId) session = start_session(netId) start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps( { STATUS: SUCCESS, MESSAGE: session }) except: print_exc() start_response('400 Bad Request', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Error in Database, check your code" }) print(message) return [message.encode()]
def dummy(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "crn": str(query["crn"][0]), "class": "cs241", "department": "cs", "instructor": "John Doe", "note": "So... I find that this class has been a great use of my time!" } }) print("Message:", message) return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": EventId = query["EventId"][0] check = query["check"][0].lower() == "true" sql = "" val = (EventId, netId) if check: sql = "INSERT INTO EventDone (EventId, NetId) VALUES (%s, %s)" else: sql = "DELETE FROM EventDone WHERE EventId = %s and NetId=%s" try: mydb, mycursor = db.connect() #mydb.start_transaction(isolation_level=SERIALIZABLE, readonly=False) mycursor.execute(sql, val) count = mycursor.rowcount start_response('200 OK', [('Content-Type', 'json')]) mydb.commit() message = json.dumps({STATUS: SUCCESS if count == 1 else FAILED}) except Exception as e: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Already checked done on event" if check else "Event is already unchecked" }) finally: if mydb: mydb.close() print(message) return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": mydb = None eventId = query["eventId"][0] sql = "SELECT id, format, author FROM Documents WHERE EventId = %s" try: eventId = int(eventId) val = (eventId, ) mydb, mycursor = db.connect() mycursor.execute(sql, val) results = mycursor.fetchall() docs = [] for row in results: docs.append({ "id": int(row[0]), "format": row[1], "author": row[2] }) start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({STATUS: SUCCESS, MESSAGE: docs}) except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Internal server error" }) finally: if mydb: mydb.close() return [message.encode()]
def real(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": body = None try: body = environ[BODY].read().decode("utf-8") print(body) body = json.loads(body) sql = "INSERT INTO Events ( CRN , Title, DueDate, Event_Des) VALUES (%s, %s, %s, %s)" num_attributes = 0 vals = [] vals.append(body["CRN"]) vals.append(body["title"]) # Extract updated values try: time.strptime(body["duedate"], "%m-%d-%Y %H:%M") except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Incorrect Date in duedate put it in %Y-%m-%d %H:%M:%S" }) return [message.encode()] vals.append(body["duedate"]) vals.append(body["desc"]) except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Please provide valid json" }) return [message.encode()] mydb = None try: print(vals) mydb, mycursor = db.connect() mycursor.execute(sql, vals) mydb.commit() _id = mycursor.lastrowid print("done") start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({STATUS: SUCCESS, "EventId": _id}) except Exception as e: if mydb is not None: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() print(message) return [message.encode()]
#网页解析 #7.parse_qs #反序列化 from urllib.parse import parse_qs as pq query = 'name=getmey&age=22' print(pq(query)) #讲GET请求转化为字典类型
def real(environ, start_response): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": body = None eventId = query["eventId"][0] try: body = environ[BODY].read().decode("utf-8") body = json.loads(body) except: start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Please provide valid json" }) return [message.encode()] sql = "UPDATE Events SET" num_attributes = 0 vals = [] # Extract updated values for key, val in body.items(): print(key, "=", val) if key not in key_map: num_attributes = 0 break if key == "duedate": # must validate it is a good time try: time.strptime(val, "%m-%d-%Y %H:%M") except: print_exc() num_attributes = 0 break if type(val) != str: print("Improper type! expecting string but got", type(val)) num_attributes = 0 break num_attributes += 1 sql += " " + key_map[key] + " = %s," vals.append(val) mydb = None try: if num_attributes == 0: raise Exception( "Invalid body provided please use one or more of the following keys with valid values: " + str(list(key_map.keys()))) # remove trailing comma sql = sql[:-1] sql += " WHERE EventId = %s" vals.append(eventId) mydb, mycursor = db.connect() mycursor.execute(sql, vals) mydb.commit() start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({STATUS: SUCCESS}) except Exception as e: if mydb is not None: mydb.rollback() print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({STATUS: FAILED, MESSAGE: str(e)}) finally: if mydb: mydb.close() return [message.encode()]
def real(environ, start_response, netId): message = check_request(environ, start_response) query = pq(environ[QUERY]) if message == "": q = db.escapeString(query["date"][0]) numDays = int(db.escapeString(query["numDays"][0])) dates = [] start = time.time() current = start if q == "today": dates += [time.strftime('%m-%d-%Y', time.localtime(current))] elif q == "tomorrow": dates += [ time.strftime('%m-%d-%Y', time.localtime(current + 86400)) ] current = start + 86400 elif q == "yesterday": dates += [ time.strftime('%m-%d-%Y', time.localtime(current - 86400)) ] current = start - 86400 else: try: print(q) format = time.strptime(q, "%m-%d-%Y") start = time.mktime(format) current = start print("start is {}".format( time.strftime('%m-%d-%Y', time.localtime(current - (numDays) * 86400)))) dates += [q] except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "Date query has wrong format" }) return [message.encode()] previous = time.strftime('%m-%d-%Y', time.localtime(current - (numDays) * 86400)) for x in range(numDays - 1): dates += [ time.strftime('%m-%d-%Y', time.localtime(current + 86400)) ] current += 86400 nextDay = time.strftime('%m-%d-%Y', time.localtime(current + 86400)) mydb = None sql1 = "SELECT Enrollments.CRN, Classes.Title FROM Classes INNER JOIN Enrollments ON Classes.CRN = Enrollments.CRN WHERE Enrollments.NetId = %s" val1 = (netId, ) sql2 = """ SELECT * FROM ((SELECT Classes.CRN, `Events`.`Title`, `Events`.`DueDate`, `Events`.`Event_Des`, `Classes`.`Title` AS CTitle, `Events`.EventId as EventId FROM Classes LEFT JOIN `Events` ON Classes.crn = `Events`.crn) As Y LEFT JOIN ( SELECT * FROM EventDone WHERE EventDone.NetId = %s) as ED ON ED.EventId = Y.EventId), `Enrollments` WHERE `Enrollments`.crn = Y.CRN AND `Enrollments`.NetId = %s """ # Dates is not USER generated, I made it bitch thats right. I can bring down this whole system by changing motherfucking date sql2 += "AND (Y.DueDate LIKE '" + dates[0] + "%'" for x in range(1, len(dates)): sql2 += "OR Y.DueDate LIKE '" + dates[x] + "%'" sql2 += ")" val2 = (netId, netId) try: if len(dates) == "0": raise Exception('Date is not anything') mydb, mycursor = db.connect() mycursor.execute(sql1, val1) resultsClasses = mycursor.fetchall() mycursor.execute(sql2, val2) resultsCalendar = mycursor.fetchall() titles = {} events = {} for elem in dates: events[elem] = {} print("NETID:", netId) for row in resultsClasses: if row[0] not in titles: titles[row[0]] = row[1] for elem in dates: events[elem][row[0]] = [] for row in resultsCalendar: events[row[2].split(' ')[0]][row[0]].append({ "crn": row[0], "class": row[4], "title": row[1], "desc": row[3], "DueDate": row[2], "EventId": row[5], "checked": row[6] != None }) start_response('200 OK', [('Content-Type', 'json')]) message = json.dumps({ STATUS: SUCCESS, MESSAGE: { "dates": dates, "prev": previous, "next": nextDay, "titles": titles, "events": events } }) except: print_exc() start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'json')]) message = json.dumps({ STATUS: FAILED, MESSAGE: "oopsie I made a poopsie" }) finally: if mydb: mydb.close() return [message.encode()]