import json
import os
from flask import Flask, request, render_template, make_response
from flask.ext.cors import cross_origin

import math
import sys
from Utils import POI_tagger, LeancloudUtils, DataGenerator

app = Flask(__name__)
project_path = os.path.dirname(__file__)
sys.path.append(project_path)
crf_event_prob_map = LeancloudUtils.get_crf_event_probmap()


@app.route('/data', methods=['POST'])
@cross_origin()
def handle_data():
    req_data = json.loads(request.data)
    result = []
    routeDatas = req_data['routeDatas']
    isSaved = req_data['isSaved']
    req_count = len(routeDatas)
    print 'req_count =', req_count
    i = 0
    j = 0
    for gps_point in routeDatas:
        if i % math.ceil(req_count * 0.05) == 0:
            noise_point = DataGenerator.addGaussNoise(gps_point, 0.0002)
            poi_point = POI_tagger.get_poi_by_point(noise_point)
            feature_point = DataGenerator.generate_feature(poi_point, crf_event_prob_map['value'])