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))