def notification(): error = None if request.method == "GET": # check whether there is upcoming events gtID = session['username'] events = get_notification(db_handler, gtID) key_pairs = {} for row in db_handler.get_all_records(db_handler.user_tb): key_pairs[row[0]] = row[1:] user = key_pairs[long(gtID)] pendingEvents = [] for e in events: minutes = calculateTimeLeft(e) if minutes < 120: pushNotification(user, e, minutes) delete_notification(db_handler, e[0], gtID) d = { 'ActivityId': e[0], 'Name': e[1], 'CreatorId': e[2], 'Location': e[3], 'Date': str(e[4]), 'Time': e[5], 'LeftTime': minutes } pendingEvents.append(d) if len(pendingEvents) > 0: return jsonify(events=pendingEvents) return "OK" elif request.method == "POST": # subscribe an event activityID = request.json['activityID'] gtID = session['username'] # some input checking if len(gtID) == 0: return "Not authorized", 403 try: int(gtID) except: return "Bad request", 400 add_notification(db_handler, gtID, activityID) return "OK"
def events(): error = None if request.method == "GET": startDate = request.args.get('startDate', type=str) endDate = request.args.get('endDate', type=str) tag = request.args.get('tag', type=str) entries = select_activity(db_handler, startDate, endDate, tag) return jsonify(events=entries) elif request.method == "POST": name = request.json['name'] date = request.json['date'] time = request.json['time'] tags = request.json['tags'] location = request.json['location'] latlon = request.json['latlon'] description = request.json['description'] gtID = session['username'] # some input checking if len(name) == 0 or len(date) == 0 or len(time) == 0 or len(tags) == 0 \ or len(location) == 0 or (not isinstance(latlon, dict)) \ or len(description) == 0 or len(gtID) == 0: return "Bad request", 400 try: int(gtID) except: return "Bad request", 400 if not isinstance(tags, list): return "Bad request", 400 r = re.compile('.{4}-.{2}-.{2}') if not (len(date) == 10): return "Bad request", 400 else: if not r.match(date): return "Bad request", 400 add_activity(db_handler, name, gtID, location, latlon['lat'], latlon['lon'], \ date, time, description, tags) return "OK" elif request.method == "UPDATE": activityID = long(request.json['activityID']) name = request.json['name'] date = request.json['date'] time = request.json['time'] tags = request.json['tags'] description = request.json['description'] # some input checking if len(name) == 0 or len(date) == 0 or len(time) == 0 or len(tags) == 0 \ or len(description) == 0: return "Bad request", 400 if not isinstance(tags, list): return "Bad request", 400 r = re.compile('.{4}-.{2}-.{2}') if not (len(date) == 10): return "Bad request", 400 else: if not r.match(date): return "Bad request", 400 act = get_activity(db_handler, activityID) creatorID = act[2] gtID = long(session['username']) if gtID == creatorID: update_activity(db_handler, activityID, name, date, time, tags, description) return "OK" else: return "Not authorized", 403 elif request.method == "DELETE": activityID = long(request.json['activityID']) act = get_activity(db_handler, activityID) creatorID = act[2] gtID = long(session['username']) if gtID == creatorID: delete_notification(db_handler, activityID, gtID) delete_activity(db_handler, activityID) return "OK" else: return "Not authorized", 403 return redirect(url_for('/'))