class EventsHandler(tornado.web.RequestHandler): def initialize(self): self.analytics = MPService() def get(self, action=None): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header("Access-Control-Allow-Credentials", "true"); self.set_header('Access-Control-Max-Age', 1000) self.set_header('Access-Control-Allow-Headers', 'Authorization, Origin, X-Requested-With, Content-Type, Accept') self.set_header('Content-type', 'application/json') # request a list of events events_list = self.analytics.get_event_list() events_list = ['Video Laser 4x', 'Why Laser 4x', 'Easy to Use Video 4x', 'Reviews', '90-day Money Back', 'Skin Care', 'Free Shipping', 'Warranty'] if action is None: #send events litst back self.write(json.dumps([{"id": i, "label": event} for i, event in enumerate(events_list, 1)])) #self.write(json.dumps([{"id": i, "label": event} for i, event in enumerate(events_list, 1)])) elif action == "data": # get events data default_end_date = datetime.utcnow() default_end_date = default_end_date.replace(hour=0, minute=0, second=0, microsecond=0) default_start_date = default_end_date - timedelta(days = 29) # get query parameters start_date = self.get_argument("startDate", None) end_date = self.get_argument("endDate", None) event_type = self.get_argument("type", "general") unit = self.get_argument("unit", "day") viz = self.get_argument("viz", "line") events = self.get_argument("events", None) if start_date is not None: start_date = datetime.utcfromtimestamp(int(start_date)) else: start_date = default_start_date if end_date is not None: end_date = datetime.utcfromtimestamp(int(end_date)) else: end_date = default_end_date if events is not None: events = json.loads(events) # transform the event string to python list else: events = events_list # call the service to get events data events_data = self.analytics.get_events_data(events, start_date, end_date, unit, event_type, viz) self.write(json.dumps(events_data))
class RetentionHandler(tornado.web.RequestHandler): def initialize(self): self.analytics = MPService() def get(self, action=None): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header('Access-Control-Allow-Headers', 'Authorization, Origin, X-Requested-With, Content-Type, Accept') self.set_header('Content-type', 'application/json') #print action if action is None: #send saved retentions list back self.write(json.dumps({"id": 1, "label": "first segment"})) elif action == "data": # get retention data start_date = self.get_argument("startDate", None) end_date = self.get_argument("endDate", None) unit = self.get_argument("unit", "day") return_event = self.get_argument("returnEvent", "any event") born_event = self.get_argument("bornEvent", 'request demo page') interval_count = self.get_argument("intervalCount", 10) data_as = self.get_argument("dataAs", 'number') by = self.get_argument("by", "") where = self.get_argument("where", "") viz = self.get_argument("viz", "bar") # call the service to get data if return_event == 'any event': return_event = None retention_data = self.analytics.get_retention_data(born_event, start_date, end_date, unit, int(interval_count), data_as, return_event, by, where, viz) #print segments_data self.write(json.dumps(retention_data))
class SegmentationHandler(tornado.web.RequestHandler): def initialize(self): self.analytics = MPService() def get(self, action=None): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header('Access-Control-Allow-Headers', 'Authorization, Origin, X-Requested-With, Content-Type, Accept') self.set_header('Content-type', 'application/json') #print action if action is None: #send saved segments list back self.write(json.dumps({"id": 1, "label": "first segment"})) elif action == "data": # get segments data start_date = self.get_argument("startDate", None) end_date = self.get_argument("endDate", None) unit = self.get_argument("unit", "day") event_type = self.get_argument("type", "general") event = self.get_argument("event", 'company page') by = self.get_argument("by", "") where = self.get_argument("where", "") viz = self.get_argument("viz", "bar") # call the service to get data segments_data = self.analytics.get_segment_data(event, start_date, end_date, unit, event_type, by, where, viz) #print segments_data self.write(json.dumps(segments_data))
def initialize(self): self.analytics = MPService()
class FunnelHandler(tornado.web.RequestHandler): def initialize(self): self.analytics = MPService() def options(self): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header("Access-Control-Allow-Credentials", "true"); self.set_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); #self.set_header("Access-Control-Allow-Headers", "accept, authorization"); self.set_status(200) self.finish() def get(self, action=None): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header("Access-Control-Allow-Credentials", "true"); self.set_header('Access-Control-Allow-Headers', 'Authorization, Origin, X-Requested-With, Content-Type, Accept') self.set_header('Content-type', 'application/json') if action is None: # Get funnel list # funnels = self.analytics.get_funnel_list() #self.write(json.dumps([{"id": fn["funnel_id"], "label": fn["name"]} for fn in funnels])) funnels = [{"funnel_id": 935439, "label": "Cart Abondened"}, {"funnel_id": 935440, "label": "Video Conversions"}] self.write(json.dumps(funnels)) elif action == "data": # get data on a funnel # get query arguments start_date = self.get_argument("startDate", None) end_date = self.get_argument("endDate", None) funnel_id = int(self.get_argument("id", 935439)) by = self.get_argument("by", "") where = self.get_argument("where", "") bdv = self.get_argument("bdv", None) viz = self.get_argument("viz", "bar") conversion_rate=self.get_argument("cr", None) # if no filters are present funnel_data = None if conversion_rate is not None and conversion_rate == "y": # get breakdown view of the funnel funnel_data = self.analytics.get_funnel_conversion_rate_data(funnel_id, start_date, end_date, viz) elif by: funnel_data = self.analytics.get_filtered_funnel_data(funnel_id, start_date, end_date, by, where, viz) elif bdv is not None and bdv == "true": # get breakdown view of the funnel funnel_data = self.analytics.get_funnel_breakdown_data(funnel_id, start_date, end_date, viz) else: funnel_data = self.analytics.get_funnel_data(funnel_id, start_date, end_date, viz) ''' if bdv is None: bdv = False else: bdv = True if bdv == "true" else False print "%s, %s, %s" %(funnel_id, start_date, end_date) ''' #print funnel_data self.write(json.dumps(funnel_data)) #write response back elif action == "create": events = self.get_argument("events", events) # # post # def post(self): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header("Access-Control-Allow-Credentials". true); self.set_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); query = None content_type = self.request.headers.get("Content-Type", "") if content_type.startswith("application/json"): arguments = json_decode(self.request.body) query = arguments.get("query") #print query if query == "DB": response = self.read_json_file("../app/types.json") elif query == "DB where (name = \"Reporting\")": response = self.read_json_file("../app/types-1.json") else: response = self.read_json_file("../app/types-10.json") self.write(response) def read_json_file(self, file_path): #print file_path json_data = open(file_path) data = json.load(json_data) json_data.close() return data