def get(self): uid = self.get_argument("uid", None) if not uid: return limit = 4 offset = self.get_argument("p", None) if offset == None: offset = 0 else: try: offset = int(offset) except: return conversation_data = ConversationData(self.db) entries = conversation_data.retrieve_deals(uid, offset * limit, limit) if entries != None: deal_data = DealData(self.db) deals = [] for entry in entries: deal_info = deal_data.retrieve_deal_info(entry["dealid"]) entry = {} entry["simple_desc"] = deal_info["simple_desc"] entry["created_at"] = str(deal_info["created_at"]) entry["id"] = deal_info["id"] entry["min_price"] = deal_info["min_price"] entry["max_price"] = deal_info["max_price"] deals.append(entry) self.render("conversation.html", deals=deals, offset=offset, uid=uid) else: self.render("error.html", type=0, msg="No conversation exists")
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): 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 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): 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)+"}")