def PUT_room(id): try: data = JSONencoder.load(request.data) room.update(id, data=data) return dumpJSON({'_id': id}) except Exception as e: return respond500(e)
def PUT_cleaner(id): try: data = JSONencoder.load(request.data) cleaner.update(id, data) return respond200() except Exception as e: return respond500(e)
def POST_task(room_id): try: data = JSONencoder.load(request.data) id = room.add_task(room_id, data) return dumpJSON({'_id': id}) except Exception as e: return respond500(e)
def POST_receipt(list_id): """ Creates receipt + sends receipt to client via SMS A receipt is a snapshot of the list at time of POST When a receipt is posted, the list/receipt models do the work list.create_receipt retrieves a fully populated list and inserts the receipt @param {list_id} _id of list of which to take snapshot and save as receipt payload: Request is made with entire list object - have _cleaner as cleaner._id Returns _id of newly inserted receipt """ try: list_data = JSONencoder.load(request.data) # verify phonenumber in list_data -- need it to send link to receipt to client if not 'phonenumber' in list_data: raise APIexception(code=1) phonenumber = list_data['phonenumber'] # need to fetch cleaner for just cleaner's name in SMS message cleaner_id = list_data[ '_cleaner'] # something went wrong with request if _cleaner not in payload c = cleaner.find_one(id=cleaner_id) # create the receipt that will live forever receipt_id = List.create_receipt(list_id) # send SMS to client that has link to viewable receipt twilio_tools.send_receipt(phonenumber, c['name'], receipt_id) return dumpJSON({'_id': receipt_id}) except Exception as e: return respond500(e)
def POST_room(list_id): try: data = JSONencoder.load(request.data) room_id = List.add_room(list_id, room_data=data) return dumpJSON({'_id': room_id}) except Exception as e: return respond500(e)
def PUT_send_list(id): """ Sends new agreement to client via SMS @param {id} _id of list to send as agreement to client payload: Request is made with entire list object - have _cleaner as cleaner._id Returns 200 response """ try: list_data = JSONencoder.load(request.data) # verify phonenumber in list_data -- need it to send link to receipt to client if not 'phonenumber' in list_data: raise APIexception(code=1) phonenumber = list_data['phonenumber'] # need to fetch cleaner for just cleaner's name in SMS message cleaner_id = list_data[ '_cleaner'] # something went wrong with request if _cleaner not in payload c = cleaner.find_one(id=cleaner_id) # send SMS to client that has link to viewable agreement twilio_tools.send_agreement(phonenumber, c['name'], id) return respond200() except Exception as e: return respond500(e)
def POST_list(cleaner_id): try: list_data = JSONencoder.load(request.data) list_id = cleaner.add_list(cleaner_id, list_data=list_data) return dumpJSON({'_id': list_id}) except Exception as e: return respond500(e)
def POST_cleaner(): """ Insert and login new cleaner """ try: data = JSONencoder.load(request.data) id = cleaner.insert_new(data) c = cleaner.find_public(id=id) auth.login(c) return dumpJSON(c) except Exception as e: return respond500(e)
def get_user(): """ Returns JSON encoded user if user in session, otherwise None ** Potential issue I want to avoid: cleaner (user) was deleted (via backstage or direct database interaction) or something else bazaar happened yet cleaner is somehow still in session If this occurs - take user out of session """ if not ('user' in session and session['user']): return None # **see note above user = JSONencoder.load(session['user']) if not cleaner.find_one(id=user['_id']): session['user'] = None return session['user']
def POST_feedback(list_id): """ @param {list_id} _id of list that is owner of feedback payload: feedback data Sends notification via SMS to cleaner that feedback has been sent with link to list Returns _id of newly inserted feedback """ try: feedback_data = JSONencoder.load(request.data) feedback_id = List.add_feedback(list_id, feedback_data) # get list and cleaner so that can send SMS l = List.find_one(id=list_id) c = cleaner.find_one(id=l['_cleaner']) twilio_tools.send_feedback_notification(c['phonenumber'], c['name'], list_id) return dumpJSON({'_id': feedback_id}) except Exception as e: return respond500(e)
def login(user_data): user_data = JSONencoder.encode(user_data) session['user'] = user_data