def __init__(self, metrics, **kwargs):
        cache_name = 'gipsy.dashboard.widgets.widgets_google_analytics.' + metrics
        cached_objects = cache.get(cache_name)
        if cached_objects is None:
            ga_connector = GoogleAnalyticsConnector()
            query_date = str((datetime.now() - timedelta(days=1)).date())
            result = ga_connector.start_service()\
                .query(start_date=query_date, end_date=query_date, metrics=metrics).execute()
            previous_date = str((datetime.now() - timedelta(days=2)).date())
            previous_result = ga_connector.start_service()\
                .query(start_date=previous_date, end_date=previous_date, metrics=metrics).execute()

            try:
                result = result['rows'][0][0]
            except KeyError:
                result = 0
            try:
                previous_result = previous_result['rows'][0][0]
            except KeyError:
                previous_result = 0

            cached_objects = {'result': result, 'previous_result': previous_result}
            cache.set(cache_name, cached_objects, self.cache_time)

        super(WidgetGAEvolution, self)\
            .__init__(cached_objects['result'], cached_objects['previous_result'], **kwargs)
    def __init__(self, metrics, **kwargs):
        cache_name = 'gipsy.dashboard.widgets.widgets_google_analytics.' + metrics
        cached_objects = cache.get(cache_name)
        if cached_objects is None:
            ga_connector = GoogleAnalyticsConnector()
            query_date = str((datetime.now() - timedelta(days=1)).date())
            try:
                result = ga_connector.start_service()\
                    .query(start_date=query_date, end_date=query_date, metrics=metrics).execute()
                previous_date = str(
                    (datetime.now() - timedelta(days=2)).date())
                previous_result = ga_connector.start_service()\
                    .query(start_date=previous_date, end_date=previous_date, metrics=metrics).execute()
            except AccessTokenRefreshError:
                result = {}
                previous_result = {}

            try:
                result = result['rows'][0][0]
            except KeyError:
                result = 0
            try:
                previous_result = previous_result['rows'][0][0]
            except KeyError:
                previous_result = 0

            cached_objects = {
                'result': result,
                'previous_result': previous_result
            }
            cache.set(cache_name, cached_objects, self.cache_time)

        super(WidgetGAEvolution, self)\
            .__init__(cached_objects['result'], cached_objects['previous_result'], **kwargs)
    def __init__(self, **kwargs):
        labels = []
        values = {}
        values['sessions'] = {
            'label': 'Sessions',
            'color': '#abc4e6',
            'values': []
        }
        values['pageviews'] = {
            'label': 'Page views',
            'color': '#ffffff',
            'values': []
        }
        cache_name = 'gipsy.dashboard.widgets.widgets_google_analytics.WidgetGALineChart'
        cached_objects = cache.get(cache_name)
        if cached_objects is None:
            ga_connector = GoogleAnalyticsConnector()
            today = date.today()
            for num in range(0, 10):
                day_date = today - timedelta(days=num)
                day = day_date.strftime("%Y-%m-%d")
                labels.append(day_date.strftime("%m-%d-%Y"))
                try:
                    result = ga_connector.start_service()\
                        .query(start_date=day, end_date=day, metrics='ga:pageviews, ga:sessions').execute()
                except AccessTokenRefreshError:
                    result = {
                        'totalsForAllResults': {
                            'ga:sessions': 0,
                            'a:pageviews': 0
                        }
                    }

                values['sessions']['values'].append(
                    result['totalsForAllResults']['ga:sessions'])
                values['pageviews']['values'].append(
                    result['totalsForAllResults']['ga:pageviews'])
            values['sessions']['values'] = values['sessions']['values'][::-1]
            values['pageviews']['values'] = values['pageviews']['values'][::-1]
            cached_objects = {
                'labels': labels[::-1],
                'values': [values['sessions'], values['pageviews']]
            }
            cache.set(cache_name, cached_objects, self.cache_time)
        self.labels = cached_objects['labels']
        self.values = cached_objects['values']
 def __init__(self, **kwargs):
     labels = []
     values = {}
     values['sessions'] = {'label': 'Sessions', 'color': '#abc4e6', 'values': []}
     values['pageviews'] = {'label': 'Page views', 'color': '#ffffff', 'values': []}
     cache_name = 'gipsy.dashboard.widgets.widgets_google_analytics.WidgetGALineChart'
     cached_objects = cache.get(cache_name)
     if cached_objects is None:
         ga_connector = GoogleAnalyticsConnector()
         today = date.today()
         for num in range(0, 10):
             day_date = today - timedelta(days=num)
             day = day_date.strftime("%Y-%m-%d")
             labels.append(day_date.strftime("%m-%d-%Y"))
             result = ga_connector.start_service()\
                 .query(start_date=day, end_date=day, metrics='ga:pageviews, ga:sessions').execute()
             values['sessions']['values'].append(result['totalsForAllResults']['ga:sessions'])
             values['pageviews']['values'].append(result['totalsForAllResults']['ga:pageviews'])
         values['sessions']['values'] = values['sessions']['values'][::-1]
         values['pageviews']['values'] = values['pageviews']['values'][::-1]
         cached_objects = {'labels': labels[::-1], 'values': [values['sessions'], values['pageviews']]}
         cache.set(cache_name, cached_objects, self.cache_time)
     self.labels = cached_objects['labels']
     self.values = cached_objects['values']