Exemple #1
0
 def venue_search(search_terms):
     venue_client = VenueApiClient(KEY)
     name = search_terms.get("search_query",'')
     city = search_terms.get("city",'')
     state = search_terms.get("state",'')
     response = venue_client.search(name=name,locality = city, region=state)["objects"]
     venues =[]
     if response:
         venues = [Venue(entry,"search") for entry in response]
         venues = Search.filter_bad_results(venues,city, state)
     return venues
Exemple #2
0
    def __init__(self,caller,locu_object ='',searchTime='',**attrs):
        self.venue_client = VenueApiClient(KEY)
        self.locu_object = locu_object
        self.parse_locu(self.locu_object)

        if caller == 'search':
            self.load_rating_from_id()


        elif usage == "menu":
            self.load_rating_from_venue()
Exemple #3
0
class Dish(object):

    def __init__(self,caller,locu_object ='',searchTime='',**attrs):
        self.venue_client = VenueApiClient(KEY)
        self.locu_object = locu_object
        self.parse_locu(self.locu_object)

        if caller == 'search':
            self.load_rating_from_id()


        elif usage == "menu":
            self.load_rating_from_venue()


    def get_attr(self,attr):
        self.attrs.get(attr,"Data Not Available")



    def parse_locu(self,locu_object):
        """
        Takes Locu Object and creates attributes dictonary.

        args:  
            locu_object: a json style dict with dish information
        """
        self.name = self.locu_object.get("name")
        self.description = self.locu_object.get("description")
        self.price = self.locu_object.get("price")
        self.venue = self.locu_object["venue"].get("name")
        self.venue_id = self.locu_object["venue"].get("id")
        self.id = self.locu_object.get("id")

        details = self.venue_client.get_details(self.locu_object["venue"]["id"])

        # if self.searchDay:
        #     hours_today = details["objects"][0]["open_hours"][self.searchDay]
        #     if hours_today:        
        #         self.attrs["available"] = LocuHelper.isOpen(hours_today,self.searchTime)


    def load_rating_from_id(self):
        """
        load the rating and number of ratings from database.
        """
        pass

    def load_rating_from_venue(self):
        pass
Exemple #4
0
    def __init__(self,locu_info,caller,searchTime=None):
        """
        If caller is a search locu_info will just be a 
        json dict if it's a venue it'll be a venue  id

        this is to prevent making a ton of venue detail calls
        """
        self.venue_client = VenueApiClient(KEY)
        self.caller = caller
        self.menu = [] ## Filled by set_menu()

        if caller == 'search':
            self.locu_object = locu_info
        elif caller == "venue":
            self.locu_object = self.venue_client.get_details(locu_info)["objects"][0]

        self.set_attrs(caller)
        
        if searchTime:
            self.searchTime = time.strftime( "%H:%M:%S",searchTime)
            self.searchDay = time.strftime("%A",searchTime)
Exemple #5
0
from locu import MenuItemApiClient
from locu import VenueApiClient
import sys
import simplejson as json



global KEY
KEY = '2d36afa81b05f641ec3382d9992b8cec3d64a4e4'


s_type = sys.argv[1].strip()
if s_type =="v" or s_type == 'm':
	print  "in if"
	client = VenueApiClient(KEY)
elif s_type =="d":
	client = MenuItemApiClient(KEY)

raw_in= sys.argv[2].strip()
search_terms = raw_in.split(',')


resp = client.search(name =search_terms[0],locality=search_terms[1],region=search_terms[2])


if s_type == "v" or s_type =="d":
	print json.dumps(resp,indent=4, sort_keys=True)
else:
	dets = client.get_details(resp["objects"][0]["id"])
	print json.dumps(dets,indent=4, sort_keys=True)
 def test_no_data(self):
     venue_client = VenueApiClient(KEY)
     venue_id = "50d70de7fbafb112c2de" ##no data
     self.assertIsNone(venue_client.is_open(venue_id,"12:00:00","Monday"))
 def test_closed(self):
     venue_client = VenueApiClient(KEY)
     venue_id='b7b1644a6bb10dff58bd' ## open Monday 09:00:00 - 15:00:00
     self.assertFalse(venue_client.is_open(venue_id,"16:00:00","Monday"))
Exemple #8
0

    def load_rating_from_id(self):
        """
        load the rating and number of ratings from database.
        """
        pass

    def load_rating_from_venue(self):
        pass
        
            



if __name__ == '__main__':
    # dish = Dish()
    venue_client = VenueApiClient(KEY)
    menu_item_client = MenuItemApiClient(KEY)
    menu_items = menu_item_client.search(locality = 'San Francisco', name = 'espresso', price__gte = 6)  
    item =  menu_items['objects'][0]
    venueID = item["venue"]["id"]
    details = venue_client.get_details('dc241e328c5cc445aea5')
    # hours = details["objects"][0]["open_hours"]["Monday"]
    # dish.parse_open_hours(hours)



    

Exemple #9
0
 def make_obj_by_search(self):
     venue_client = VenueApiClient(KEY)
     venue_response = venue_client.search(name="Taqueria Belly",locality='eugene',region='OR')["objects"][0]
     v  =  Venue(venue_response,"search")
     return v
Exemple #10
0
class Venue(object):

    def __init__(self,locu_info,caller,searchTime=None):
        """
        If caller is a search locu_info will just be a 
        json dict if it's a venue it'll be a venue  id

        this is to prevent making a ton of venue detail calls
        """
        self.venue_client = VenueApiClient(KEY)
        self.caller = caller
        self.menu = [] ## Filled by set_menu()

        if caller == 'search':
            self.locu_object = locu_info
        elif caller == "venue":
            self.locu_object = self.venue_client.get_details(locu_info)["objects"][0]

        self.set_attrs(caller)
        
        if searchTime:
            self.searchTime = time.strftime( "%H:%M:%S",searchTime)
            self.searchDay = time.strftime("%A",searchTime)
       

        
    def get_attr(self,attr):
        instance_variables = self.__dict__
        return instance_variables.get(attr)


    def set_attrs(self,caller):
        """
        Sets the Venue attrs. It will only set the menu if the caller is a venue page.
        This is for two reasons:
            a) to avoid extraneous venue detail calls
            b) the locu_object will be a json style dict that won't have a menu entry
        """
        dna = "Data Not Available"
        self.name = self.locu_object.get("name",dna)
        self.address = self.locu_object.get("street_address",dna)
        self.postal_code = self.locu_object.get("postal_code",dna)
        self.locality = self.locu_object.get("locality",dna)
        self.region = self.locu_object.get("region",dna)
        self.phone = self.locu_object.get("phone",dna)
        self.venue_id = self.locu_object.get("id",dna)
        self.lat = self.locu_object.get("lat",dna)
        self.long = self.locu_object.get("long",dna)
        self.has_menu = self.locu_object.get("has_menu",dna)
        self.categories = self.locu_object.get("categories")

        if self.has_menu and caller=='venue':
            self.set_menu()

        # if self.searchDay:
        #     hours_today = details["objects"][0]["open_hours"][self.searchDay]
        #     if hours_today:        
        #         self.attrs["available"] = LocuHelper.isOpen(hours_today,self.searchTime)

    def set_menu(self):
        """
        Parse the locu json and creates a list of Dish objects
        Must be called when venue page is loaded. We don't do it in the init
        so we don't have to parse a menu for all the venues in a query.
        """
        venue_query = DishEntry.objects.filter(venue_id=self.venue_id)
        for menu in self.locu_object["menus"]:
            for section in menu["sections"]:
                for sub_section in section["subsections"]:
                    for item in sub_section["contents"]:
                        item["venue"] = self.locu_object
                        if item["type"] == "ITEM":
                            dish = Dish(item,queryset=venue_query)
                            self.menu.append(dish)
Exemple #11
0
 def test_no_data(self):
     venue_client = VenueApiClient(KEY)
     venue_id = "50d70de7fbafb112c2de"  ##no data
     self.assertIsNone(venue_client.is_open(venue_id, "12:00:00", "Monday"))
Exemple #12
0
 def test_closed(self):
     venue_client = VenueApiClient(KEY)
     venue_id = 'b7b1644a6bb10dff58bd'  ## open Monday 09:00:00 - 15:00:00
     self.assertFalse(venue_client.is_open(venue_id, "16:00:00", "Monday"))