Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
 def initialize(self):
     self.analytics = MPService()
Exemplo n.º 5
0
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