def generate_food_items_dict(self, food_items): food_items_list = [] for food_item in range(len(food_items)): try: Zatiq_Food_Items.objects(id=food_items[food_item].id).modify(inc__views=1) except Exception as e: print("Error \n %s" % (e)) food_item_id = food_items[food_item].id restaurant_id = food_items[food_item].restaurant_id.id restaurant_info = self.get_restaurant_info(restaurant_id) item_name = food_items[food_item].item_name overview = food_items[food_item].overview image = "http://167.99.177.29:5000/image/"+str(food_items[food_item].image) item_price = food_items[food_item].item_price is_beverage = food_items[food_item].is_beverage meal_types = self.generate_meals_dict(food_items[food_item].meal_type) image_aspect_ratio = food_items[food_item].image_aspect_ratio tags = self.generate_tags_dict(food_items[food_item].tags, is_beverage) meats = self.generate_meats_dict(food_items[food_item].tags.meat) seafoods = self.generate_seafoods_dict(food_items[food_item].tags.seafood) calories = food_items[food_item].calories food_item_info = {'food_item_id': str(food_item_id), 'restaurant_id': str(restaurant_id), 'restaurant_info': restaurant_info, 'item_name': item_name, 'meal_type': meal_types, 'item_price': str(item_price), 'overview': overview, 'image': {'base64': image, 'image_aspect_ratio': image_aspect_ratio}, 'tags': tags, 'meat': meats, 'seafood': seafoods, 'calories': calories} food_items_list.append(food_item_info) if len(food_items_list) > 5: food_items_list = random.sample(food_items_list, 5) return(food_items_list)
def delete_food_item(self, api_token, food_item_id): if self.check_valid_api_token(api_token) == True: restaurant_id = self.get_restaurant_id_by_api_token(api_token) local_image_path = Zatiq_Food_Items.objects(id=food_item_id, restaurant_id=restaurant_id)[0].image try: Zatiq_Food_Items.objects(id=food_item_id, restaurant_id=restaurant_id).delete() except Exception as e: return("Error \n %s" %(e)) delete_image = post("http://167.99.177.29:5000/delete/", json={'imagepath': local_image_path}) if 'Error' in delete_image: with open('./food_delete_failed.txt', 'a') as file: file.write('(food_id:{}, restaurant_id:{})\n'.format(food_item_id, restaurant_id)) return('Food item deleted') else: return('Could not authenticate')
def find_food_grid(self, api_token): if not api_token: return('Could not authenticate') if self.check_valid_api_token(api_token) == True: try: zatiq_food_items = Zatiq_Food_Items.objects() except Exception as e: return("Error \n %s" % (e)) if len(zatiq_food_items) > 0: if self.check_user(api_token) == 'user': user_preferences = self.get_user_preferences(api_token) filtered_food = self.filter_food(zatiq_food_items, user_preferences) if len(filtered_food) > 25: food_items_dict = self.generate_food_items_dict_full(filtered_food[0:25]) return(food_items_dict) else: food_items_dict = self.generate_food_items_dict_full(filtered_food) return(food_items_dict) else: food_items_dict = self.generate_food_items_dict_full(zatiq_food_items) return(food_items_dict) else: return([]) else: return('Could not authenticate')
def get_linked_food_item_info(self, food_item_id): try: food_item_info = Zatiq_Food_Items.objects(id=food_item_id) except Exception as e: return ("Error \n %s" % (e)) if len(food_item_info) > 0: image = food_item_info[0].image image_aspect_ratio = food_item_info[0].image_aspect_ratio item_name = food_item_info[0].item_name item_price = food_item_info[0].item_price try: restaurant_info = Zatiq_Businesses.objects( id=food_item_info[0].restaurant_id.id) except Exception as e: return ("Error \n %s" % (e)) restaurant_image = restaurant_info[0].image restaurant_image_aspect_ratio = restaurant_info[ 0].image_aspect_ratio restaurant_name = restaurant_info[0].business_name return [ image, image_aspect_ratio, item_name, item_price, restaurant_image, restaurant_image_aspect_ratio, restaurant_name ] else: return []
def update_food_item_without_image(self, api_token, food_item_id, overview, item_name, meal_type, tags, item_price, meat, seafood, calories): if self.check_valid_api_token(api_token) == True: restaurant_id = self.get_restaurant_id_by_api_token(api_token) try: Zatiq_Food_Items.objects(id=food_item_id, restaurant_id=restaurant_id).update_one(upsert=False, item_name=item_name, overview=overview, is_beverage=tags['is_beverage'], item_price=item_price, calories=calories, set__tags__indian=tags['indian'], set__tags__greek=tags['greek'], set__tags__chinese=tags['chinese'], set__tags__japanese=tags['japanese'], set__tags__korean=tags['korean'], set__tags__sushi=tags['sushi'], set__tags__dessert=tags['dessert'], set__tags__burger=tags['burger'], set__tags__pizza=tags['pizza'], set__tags__fast_food=tags['fast_food'], set__tags__halal=tags['halal'], set__tags__caribbean=tags['caribbean'], set__tags__mexican=tags['mexican'], set__tags__spicy=tags['spicy'], set__tags__fine_food=tags['fine_food'], set__tags__kosher=tags['kosher'], set__tags__healthy=tags['healthy'], set__tags__vegan=tags['vegan'], set__tags__vegetarian=tags['vegetarian'], set__tags__gluten_free=tags['gluten_free'], set__tags__italian=tags['italian'], set__tags__middle_eastern=tags['middle_eastern'], set__tags__snack=tags['snack'], set__tags__thai=tags['thai'], set__tags__canadian=tags['canadian'], set__tags__vietnamese=tags['vietnamese'], set__tags__has_soybeans=tags['has_soybeans'], set__tags__has_eggs=tags['has_eggs'], set__tags__jain=tags['jain'], set__tags__has_wheat=tags['has_wheat'], set__tags__has_treenuts=tags['has_treenuts'], set__tags__has_peanuts=tags['has_peanuts'], set__tags__lactose_free=tags['lactose_free'], set__tags__meat__bear=meat['bear'], set__tags__meat__beef=meat['beef'], set__tags__meat__buffalo=meat['buffalo'], set__tags__meat__calf=meat['calf'], set__tags__meat__caribou=meat['caribou'], set__tags__meat__goat=meat['goat'], set__tags__meat__ham=meat['ham'], set__tags__meat__horse=meat['horse'], set__tags__meat__kangaroo=meat['kangaroo'], set__tags__meat__lamb=meat['lamb'], set__tags__meat__moose=meat['moose'], set__tags__meat__mutton=meat['mutton'], set__tags__meat__opossum=meat['opossum'], set__tags__meat__pork=meat['pork'], set__tags__meat__bacon=meat['bacon'], set__tags__meat__rabbit=meat['rabbit'], set__tags__meat__snake=meat['snake'], set__tags__meat__squirrel=meat['squirrel'], set__tags__meat__turtle=meat['turtle'], set__tags__meat__veal=meat['veal'], set__tags__meat__chicken=meat['chicken'], set__tags__meat__hen=meat['hen'], set__tags__meat__duck=meat['duck'], set__tags__meat__goose=meat['goose'], set__tags__meat__ostrich=meat['ostrich'], set__tags__meat__quail=meat['quail'], set__tags__meat__turkey=meat['turkey'], set__tags__seafood__clam=seafood['clam'], set__tags__seafood__pangasius=seafood['pangasius'], set__tags__seafood__cod=seafood['cod'], set__tags__seafood__crab=seafood['crab'], set__tags__seafood__catfish=seafood['catfish'], set__tags__seafood__alaska_pollack=seafood['alaska_pollack'], set__tags__seafood__tilapia=seafood['tilapia'], set__tags__seafood__salmon=seafood['salmon'], set__tags__seafood__tuna=seafood['tuna'], set__tags__seafood__shrimp=seafood['shrimp'], set__tags__seafood__lobster=seafood['lobster'], set__tags__seafood__eel=seafood['eel'], set__tags__seafood__trout=seafood['trout'], set__tags__seafood__pike=seafood['pike'], set__tags__seafood__shark=seafood['shark'], set__meal_type__breakfast=meal_type['breakfast'], set__meal_type__lunch=meal_type['lunch'], set__meal_type__dinner=meal_type['dinner'], set__meal_type__brunch=meal_type['brunch']) except Exception as e: return("Error \n %s" % (e)) return(['Update successful', food_item_id]) else: return('Could not authenticate')
def get_food_by_id(self, food_item_id): try: food_item = Zatiq_Food_Items.objects(id=food_item_id) except Exception as e: return("Error \n %s" %(e)) if len(food_item) > 0: food_item_dict = self.generate_food_items_dict(food_item) return(food_item_dict) else: return('No food item found with that id')
def get_food_items_by_restaurant_id(self, api_token, restaurant_id): if restaurant_id == None: restaurant_id = self.get_restaurant_id_by_api_token(api_token) try: foods_by_restaurant = Zatiq_Food_Items.objects(restaurant_id=restaurant_id) except Exception as e: return("Error \n %s" % (e)) if len(foods_by_restaurant) > 0: food_items_dict = self.generate_food_items_dict_full(foods_by_restaurant) return(food_items_dict) else: return([])
def get_list_of_food_items(self): food_items_names_dict = {} try: food_items = Zatiq_Food_Items.objects() except Exception as e: return ("Error \n %s" % (e)) if len(food_items) > 0: restaurant_names = self.get_all_restaurant_names(food_items) for food_item_name in range(len(food_items)): food_items_names_dict[str(food_items[food_item_name].item_name) + " (" + str(restaurant_names[food_item_name]) + ")"] = str(food_items[food_item_name].id) return food_items_names_dict
def get_food_name_by_id(self, food_id): try: food_name = Zatiq_Food_Items.objects(id=food_id) except Exception as e: return ("Error \n %s" % (e)) return (food_name[0].item_name)