def get(self, user_id=None, role_id=None, status=None): if user_id is not None: user = UserData.query.get(user_id) return jsonify(user.serialize()) if role_id is not None: users = UserData.query.filter(UserData.role_id == role_id) return jsonify(UserData.serialize_list(users)) elif status is not None: users = UserData.query.filter(UserData.status == status) return jsonify(UserData.serialize_list(users)) else: return jsonify( UserData.serialize_list( UserData.query.order_by(UserData.username.asc()).all()))
def get(self, deal_id): if not deal_id: return deal_data = DealData(self.db) deal_info = deal_data.retrieve_deal_info(deal_id) if not deal_info: self.render("deal_info.html", deal_info=None) return user_data = UserData(self.db) user_info = user_data.retrieve(deal_info["seller"]) if not user_info: self.render("deal_info.html", deal_info=None) return res = {} deal_photo_data = DealPhotoData(self.db) deal_photo_info = deal_photo_data.get_deal_photo(deal_id) if deal_photo_info and len(deal_photo_info)>0: photo_data = PhotoData(self.db) photo_urls = [] photo_pids = [] for pi in deal_photo_info: p = photo_data.retrieve(pi["photo_id"]) photo_urls.append(p["filename"]) photo_pids.append(p["pid"]) res["imgs"] = photo_urls res["pids"] = photo_pids res["id"]=deal_info["id"] res["category"]=deal_info["category"] res["seller_fbid"]=deal_info["seller"] res["seller_name"]=user_info["username"] res["created_at"]=str(deal_info["created_at"]) res["simple_desc"]=deal_info["simple_desc"] res["disp_addr"]=deal_info["displayed_addr"] res["min_price"]=deal_info["min_price"] res["max_price"]=deal_info["max_price"] res["details"]=deal_info["details"] res["contact_phone"]=deal_info["contact_phone"] res["contact_email"]=deal_info["contact_email"] self.render("deal_info.html", deal_info=res)
def get(self): uid = self.get_argument("uid", None) if uid==None: self.write("{\"err\": \"not enough arguments\"}") return wishlist_data = WishlistData(self.db) wishlist = wishlist_data.retrieve_alive_wishlist(uid) if wishlist==None: return user_data = UserData(self.db) user_info = user_data.retrieve(uid) if not user_info or len(user_info)==0: print "no user info found in wishlist.py" return self.render("wishlist.html", wishlist=wishlist, user=user_info)
def post(self): type = self.get_argument("t", None) type = int(type) if type == 0: fb_uid = self.get_argument("fbid", None) if fb_uid: user_data = UserData(self.db) uid = user_data.is_exist(fb_uid) self.write(str(uid)) else: return elif type == 1: user_name = self.get_argument("username", None) phone = self.get_argument("phone", None) home_address = self.get_argument("addr", None) fb_uid = self.get_argument("fbid", None) fb_username = self.get_argument("fbu", None) fb_thumbnail = self.get_argument("fbthumb", None) fb_email = self.get_argument("fbmail", None) fb_gender = self.get_argument("fbgender", None) fb_location = self.get_argument("fbloc", None) user_info = {} if user_name: user_info["username"] = user_name else: return if phone: user_info["phone"] = phone if home_address: user_info["home_address"] = home_address if fb_uid: user_info["fb_uid"] = fb_uid else: return if fb_username: user_info["fb_username"] = fb_username if fb_thumbnail: user_info["fb_thumbnail"] = fb_thumbnail if fb_email: user_info["fb_email"] = fb_email if fb_gender: user_info["fb_gender"] = fb_gender if fb_location: user_info["fb_location"] = fb_location user_data = UserData(self.db) uid = user_data.insert_new_user(user_info) self.write(str(uid)) elif type == 2: fb_uid = self.get_argument("fbid", None) if fb_uid: user_data = UserData(self.db) user_info = user_data.retrieve(fb_uid) self.write(json.dumps(user_info)) elif type == 3: fb_uid = self.get_argument("fbid", None) user_name = self.get_argument("username", None) phone = self.get_argument("phone", None) home_address = self.get_argument("addr", None) fb_email = self.get_argument("fbmail", None) fb_location = self.get_argument("fbloc", None) user_info = {} if fb_uid: user_info["fb_uid"] = fb_uid else: return if user_name: user_info["username"] = user_name else: return if phone: user_info["phone"] = phone if home_address: user_info["home_address"] = home_address if fb_email: user_info["fb_email"] = fb_email if fb_location: user_info["fb_location"] = fb_location user_data = UserData(self.db) res = user_data.update(user_info) self.write(str(res));
def get(self): local = self.get_cookie("geo") if not local: return else: local = " ".join(local.split("-")) local = local.lower() local = int(city_index[local]) category = self.get_argument("category", None) min_price = self.get_argument("min", None) max_price = self.get_argument("max", None) keywords = self.get_argument("q", None) limit = 2 offset = self.get_argument("p", None) if offset==None: offset = 0 else: offset = self.validInt(offset) if offset==None: return if not category: return category = self.validInt(category) if not category: return if min_price: min_price = self.validFloat(min_price) if min_price==None: return if max_price: max_price = self.validFloat(max_price) if max_price==None: return if min_price!=None and max_price!=None and min_price > max_price: self.write("{\"err\":\"max price should be higher than min price\"}") return deal_data = DealData(self.db) user_data = UserData(self.db) entries = [] if keywords and len(keywords)!=0: print keywords keywords = " ".join(keywords.split("+")) client = sphinxapi.SphinxClient() client.SetFilterRange("category", category, category) client.SetFilterRange("city_code", local, local) if min_price: client.SetFilterFloatRange("min_price", min_price, 99999999999999999.9) if max_price: client.SetFilterFloatRange("max_price", -1.0, max_price) client.SetLimits(offset*limit, limit) client.SetSortMode(sphinxapi.SPH_SORT_RELEVANCE) results = client.Query(keywords) hits = results["matches"] for hit in hits: deal_id = hit["id"] deal = deal_data.retrieve_deal_info(deal_id) deal_info = {} deal_info["id"] = deal["id"] deal_info["category"] = deal["category"] deal_info["seller_fbid"] = deal["seller"] user_info = user_data.retrieve(deal["seller"]) deal_info["seller_name"] = user_info["username"] deal_info["created_at"] = str(deal["created_at"]) deal_info["simple_desc"] = deal["simple_desc"] deal_info["disp_addr"] = deal["displayed_addr"] deal_info["min_price"] = deal["min_price"] deal_info["max_price"] = deal["max_price"] entries.append(deal_info) else: deals = deal_data.search_deals(local, category, min_price, max_price, limit, offset*limit) for deal in deals: deal_info = {} deal_info["id"] = deal["id"] deal_info["category"] = deal["category"] deal_info["seller_fbid"] = deal["seller"] user_info = user_data.retrieve(deal["seller"]) deal_info["seller_name"] = user_info["username"] deal_info["created_at"] = str(deal["created_at"]) deal_info["simple_desc"] = deal["simple_desc"] deal_info["disp_addr"] = deal["displayed_addr"] deal_info["min_price"] = deal["min_price"] deal_info["max_price"] = deal["max_price"] entries.append(deal_info) if offset==0 and len(entries)==0: self.render("error.html", type=0, msg="No results found") else: query = None if keywords and len(keywords)!=0: query = "+".join(keywords.split(" ")) if min_price==None: min_price="" if max_price==None: max_price="" self.render("search.html", deals=entries, offset=offset, category=category, min_price=min_price, max_price=max_price, query=query)
def post(self): user = UserData(parser.parse_args()) db.session.add(user) db.session.commit() return jsonify(user.serialize())
def get(self): #local = self.get_argument("local", None) local = self.get_cookie("geo") if not local: return local = " ".join(local.split("-")) if not local: return else: local = local.lower() category = self.get_argument("category", None) #limit = self.get_argument("limit", None) limit = 4 if not category: self.render("deals.html", last=None, first=None, deals=None) return offset = self.get_argument("offset", None) morethan = self.get_argument("more", None) lessthan = self.get_argument("less", None) if (offset==None) and (morethan==None) and (lessthan==None): self.write("{\"err\":\"incomplete arguments\"}") return self.validInt(category) self.validInt(limit) if offset!=None: self.validInt(offset) elif morethan!=None: self.validInt(morethan) elif lessthan!=None: self.validInt(lessthan) deal_data = DealData(self.db) deals = None if offset: deals = deal_data.retrieve_deals(local, category, limit, offset) elif morethan: deals = deal_data.retrieve_deals(local, category, limit, None, morethan) elif lessthan: deals = deal_data.retrieve_deals(local, category, limit, None, None, lessthan) else: # this only happens when it is the end of deals and user presses prev page deals = deal_data.retrieve_deals(local, category, limit, None, None, None) last_id = deal_data.retrieve_last_deal(local, category) first_id= deal_data.retrieve_first_deal(local, category) user_data = UserData(self.db) deal_array = [] for deal in deals: deal_info = {} deal_info["id"] = deal["id"] deal_info["category"] = deal["category"] deal_info["seller_fbid"] = deal["seller"] user_info = user_data.retrieve(deal["seller"]) deal_info["seller_name"] = user_info["username"] deal_info["created_at"] = str(deal["created_at"]) deal_info["simple_desc"] = deal["simple_desc"] deal_info["disp_addr"] = deal["displayed_addr"] deal_info["min_price"] = deal["min_price"] deal_info["max_price"] = deal["max_price"] deal_array.append(deal_info) self.render("deals.html", last=last_id, first=first_id, deals=deal_array) #self.write(json.dumps(res))
def post(self): type = self.get_argument("t", None) if not type: return try: type = int(type) except: return if type == 0: deal_id = self.get_argument("dealid", None) uid = self.get_argument("uid", None) # the one who sends the message with_uid = self.get_argument("to", None) # the one who receives the message message = self.get_argument("msg", None) if (not deal_id) or (not uid) or (not with_uid) or (not message): self.write('{"err": "not enough arguments"}') return if self.validLong(deal_id) == None: print "invalid deal_id in ConvHandler.py post" return if self.validLong(uid) == None: print "invalid uid_id in ConvHandler.py post" return if self.validLong(with_uid) == None: print "invalid with_uid in ConvHandler.py post" return # insert the message into message table and get the message id message_data = MessageData(self.db) mid = message_data.insert_message(message) if mid == None: self.write('{"err": "error in saving message"}') return # insert the conversation into the conversation table twice conversation_data = ConversationData(self.db) cid = conversation_data.insert_new_conv(deal_id, uid, with_uid, mid, 1, 1) if cid == None: self.write('{"err": "error in saving conversation"}') return if uid != with_uid: cid = conversation_data.insert_new_conv(deal_id, with_uid, uid, mid, 0, 0) if cid == None: self.write('{"err": "error in saving conversation"}') return self.write('{"success": "true"}') elif type == 1: deal_id = self.get_argument("dealid", None) uid = self.get_argument("uid", None) if (not deal_id) or (not uid): self.write('{"err": "not enough arguments"}') return print deal_id if self.validLong(deal_id) == None: print "invalid deal_id in ConvHandler.py post" return if self.validLong(uid) == None: print "invalid uid_id in ConvHandler.py post" return # retrieve all contact ranked by date user_data = UserData(self.db) conversation_data = ConversationData(self.db) contacts = conversation_data.retrieve_contacts(deal_id, uid) result = [] for contact in contacts: with_uid = contact["with_uid"] user_info = user_data.retrieve(with_uid) entry = {} entry["username"] = user_info["username"] entry["id"] = with_uid # retrieve the unread number for each contact count = conversation_data.retrieve_unread_message_num(deal_id, uid, with_uid) entry["unread"] = count[0]["count"] result.append(entry) self.write(json.dumps(result)) elif type == 2: deal_id = self.get_argument("dealid", None) uid = self.get_argument("uid", None) with_uid = self.get_argument("with_uid", None) if (not deal_id) or (not uid) or (not with_uid): self.write('{"err": "not enough arguments"}') return conversation_data = ConversationData(self.db) messages = conversation_data.retrieve_messages(deal_id, uid, with_uid) if (not messages) or len(messages) == 0: return message_data = MessageData(self.db) result = [] for message in messages: entry = {} msg_id = message["msg_id"] content = message_data.retrieve_message(msg_id) entry["message"] = content["message"] entry["msg_id"] = msg_id entry["created_at"] = str(message["created_at"]) entry["is_sender"] = message["is_sender"] result.append(entry) self.write(json.dumps(result)) elif type == 3: deal_id = self.get_argument("dealid", None) uid = self.get_argument("uid", None) with_uid = self.get_argument("with_uid", None) if (not deal_id) or (not uid) or (not with_uid): self.write('{"err": "not enough arguments"}') return conversation_data = ConversationData(self.db) conversation_data.make_messages_read(deal_id, uid, with_uid)
def post(self): fb_uid = self.get_argument("fbid", None) category = self.get_argument("category", None) simple_desc = self.get_argument("simdesc", None) formatted_addr = self.get_argument("addr", None) disp_addr = self.get_argument("dispaddr", None) min_price = self.get_argument("min", None) max_price = self.get_argument("max", None) desc = self.get_argument("details", None) phone = self.get_argument("phone", None) email = self.get_argument("email", None) imgs = self.get_argument("imgs", None) deal_info = {} if fb_uid: deal_info["fbid"] = fb_uid else: self.write("{\"err\":\"login facebook\"}") return #check whether this user is registered user_data = UserData(self.db) if user_data.is_exist(fb_uid) == -1: print "reject unregistered user publishing deal" return if category: deal_info["category"] = category else: self.write("{\"err\":\"no category\"}") return if simple_desc: deal_info["simple_desc"] = simple_desc else: self.write("{\"err\":\"no simple desc\"}") return if min_price: deal_info["min_price"] = min_price else: self.write("{\"err\":\"no min price\"}") return if max_price: deal_info["max_price"] = max_price else: self.write("{\"err\":\"no max price\"}") return if formatted_addr: deal_info["formatted_addr"] = formatted_addr if disp_addr: deal_info["disp_addr"] = disp_addr if desc: deal_info["details"] = desc if phone: deal_info["phone"] = phone if email: deal_info["email"] = email if imgs: img_array = imgs.split("|") deal_info["imgs"] = img_array deal_data = DealData(self.db) deal_id = deal_data.insert_new_deal(deal_info) if deal_id == -1: self.write("{\"err\":\"error in inserting to deal table\"}") return if not ("imgs" in deal_info): self.write("{\"success\":"+str(deal_id)+"}") return deal_info["deal_id"] = deal_id deal_photo_data = DealPhotoData(self.db) res = deal_photo_data.insert_deal_photo(deal_info) self.write("{\"success\":"+str(res)+"}")