Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
         
         
         
         
         
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)+"}")