def GetItem():
    result = {}
    start_time = time.time()

    try:
        id = request.args.get('id', '')
        args = '?id={0}'.format(id)
        url = getEngineUrl() + "/querygetitemfeaturesandfeaturesentencesbyitemid" + args
        print url
        featuresInfo = {}
        featuresInfo = ast.literal_eval(urllib2.urlopen(url).read())
        print("---getitemfeaturesandfeaturesentencesbyitemid %s seconds ---" % (time.time() - start_time))
        item = sourceDBProvider.GetRestaurantInfo([id])
        print("---GetRestaurantInfo %s seconds ---" % (time.time() - start_time))
        result['restaurantInfo'] = {}
        result['restaurantInfo']['id'] = item[0][0][0]
        result['restaurantInfo']['city'] = item[0][0][1]
        result['restaurantInfo']['name'] = item[0][0][2]
        result['restaurantInfo']['type'] = item[0][0][3]
        result['restaurantInfo']['full_address'] = item[0][0][4]
        result['restaurantInfo']['hours'] = ast.literal_eval(item[0][0][5])
        result['restaurantInfo']['stars'] = item[0][0][6]
        result['restaurantInfo']['attributes'] = ast.literal_eval(item[0][0][7])
        result['restaurantInfo']['categories'] = ast.literal_eval(item[0][0][8])
        print result['restaurantInfo']
        result['restaurantInfo']['photos'] = []
        if(len(item) > 1):
            result['restaurantInfo']['photos'] = [str( photo[3] )+'.jpg' for photo in item[1]]
        result['featuresInfo'] = featuresInfo
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify(result)
def SearchItemsByFeatures():
    try:
        featuresList = request.args.get("features")
        args = "?features={0}".format(featuresList)
        url = getEngineUrl() + "/querysearchitemsbyfeatures" + args
        dataItemAndFeatures = urllib2.urlopen(url).read()
        info = ast.literal_eval(dataItemAndFeatures)
        areaSearch = True
        try:
            slat = request.args.get("lat")
            slng = request.args.get("lng")
            sradius = request.args.get("radius")
            flat = float(slat)
            flng = float(slng)
            fradius = float(sradius)
            args = "?lat={0}&lon={1}&distance={2}".format(flat, flng, fradius / (1.60934 * 1000))
            url = getEngineUrl() + "/querygetitems" + args
            itemsInStrArr = urllib2.urlopen(url).read()
            items = ast.literal_eval(itemsInStrArr)
            itemsInSelectedArea = [i["id"] for i in items["items"]]
            itemsWithFeatures = [i["id"] for i in info["items"]]
            merge = list(set(itemsWithFeatures).intersection(itemsInSelectedArea))
            arr = []
            for item in info["items"]:

                if item["id"] in merge:
                    arr.append(item)
            info["items"] = arr
        except:
            areaSearch = False
        itemsIds = [str(item["id"]) for item in info["items"]]

        itemsList = ",".join(itemsIds)
        print itemsList
        args = "?items={0}&features={1}".format(itemsList, featuresList)
        url = getEngineUrl() + "/querygetitemswithfeatures" + args
        itemsInStrArr = urllib2.urlopen(url).read()
        info["restauransFeaturesStatistic"] = ast.literal_eval(itemsInStrArr)
        print info
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify(info)
def GetAllItems():
    try:
        url = getEngineUrl() + "/querygetallitems"

        itemsInStrArr = urllib2.urlopen(url).read()
        items = ast.literal_eval(itemsInStrArr)
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify({'items': items})
def GetFeatureByItemsId():
    try:
        itemsStr = request.args.get("items", "")
        args = "?items={0}".format(itemsStr)
        url = getEngineUrl() + "/querygetfeaturesbyitemsid" + args
        featuresInStrArr = urllib2.urlopen(url).read()
        features = ast.literal_eval(featuresInStrArr)
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify({"features": features})
def GetAllFeatures():
    try:

        url = getEngineUrl() + "/querygetallfeatures"
        itemsInStrArr = urllib2.urlopen(url).read()
        items = ast.literal_eval(itemsInStrArr)
        print items
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify({"features": sorted(items, key=lambda x: x[0])})
def GetReviewSentencesById():
    try:
       id = request.args.get('id', '')
       args = '?id={0}'.format(id)
       url = getEngineUrl()+"/querygetreviewsentencesbyid"+args
       itemsInStrArr = urllib2.urlopen(url).read()
       items = ast.literal_eval(itemsInStrArr)
    except:
       e = sys.exc_info()[0]
       print e  
    return jsonify(items)
def GetItemsIdByFeatureList():
    try:
        featureList = request.args.get("featurelist")

        args = "?featurelist={0}".format(featureList)
        url = getEngineUrl() + "/querygetitemsidbyfeaturelist" + args
        itemsInStrArr = urllib2.urlopen(url).read()
        items = ast.literal_eval(itemsInStrArr)
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify({"items": items})
def getItemsWithfeatures():
    try:
        items = request.args.get("items", "")
        features = request.args.get("features", "")
        args = "?items={0}&features={1}".format(items, features)
        url = getEngineUrl() + "/querygetitemswithfeatures" + args
        itemsInStrArr = urllib2.urlopen(url).read()
        items = ast.literal_eval(itemsInStrArr)
    except:
        e = sys.exc_info()[0]
        print e
    return jsonify({"items": items})
def getFeatureNearMe():
    try:
       lat = request.args.get('lat', '')
       lon = request.args.get('lon', '')
       distance = request.args.get('distance', '')
       args = '?lat={0}&lon={1}&distance={2}'.format(lat,lon,distance)
       url = getEngineUrl()+"/querygetfeatures"+args
       featuresInStrArr = urllib2.urlopen(url).read()
       features = ast.literal_eval(featuresInStrArr)
    except:
       e = sys.exc_info()[0]
       print e  
    return jsonify({'features':features})
def GetFeatureInfo():
    try:
        featuresList = request.args.get("featureId")
        args = "?featureId={0}".format(featuresList)
        url = getEngineUrl() + "/querygetfeatureinfo" + args
        feautreInfo = urllib2.urlopen(url).read()
        info = ast.literal_eval(feautreInfo)
        items = info["items"]
        print items
        itemsinfo = {}
        for item in items:
            data = sourceDBProvider.GetRestaurantInfo([item])
            if len(data) > 0 and len(data[0]) > 0:
                itemsinfo[item] = data[0][0]
        info["items"] = itemsinfo
    except:
        print "error in getfeatureinfo"
        e = (sys.exc_info)[0]
        print e
    return jsonify(info)
from QueryRestaurantUI import app
from flask import render_template
from flask import jsonify
from flask import Flask
from flask import request
from connector import getEngineUrl
import urllib2
import ast

print getEngineUrl()
             


@app.route('/getitemsnearme', methods=['GET', 'POST'])
def getItemsNearMe():
    try:
       lat = request.args.get('lat', '')
       lon = request.args.get('lon', '')
       distance = request.args.get('distance', '')
       args = '?lat={0}&lon={1}&distance={2}'.format(lat,lon,distance)
       url = getEngineUrl()+"/querygetitems"+args
       itemsInStrArr = urllib2.urlopen(url).read()
       items = ast.literal_eval(itemsInStrArr)
    except:
       e = sys.exc_info()[0]
       print e  
    return jsonify({'items':items})


@app.route('/getfeaturesnearme', methods=['GET', 'POST'])
def getFeatureNearMe():