class TotalUsersHandler(BaseHandler):
    @web.authenticated
    @cache(CACHE_EXPIRES)  # set the cache expires
    @unblock
    def get(self):
        """
        Returns total amount of people that are reading your posts

        example:
        headers:
        [{'columnType': 'METRIC',
                    'dataType': 'INTEGER',
                    'name': 'ga:users'}],

        rows:
        [['11135']],

        :return:
        """
        try:
            service_account = self.settings['service_account_email']
            self.service = GAcess(service_account_email=service_account,
                                  key_file_location=self.settings['key_file_location'])

            query_result = self.service.get_users(profile_id=self.settings['ga_profile_id'],
                                                  days=self.settings['start_days_ago'])
            try:
                data = query_result['rows']
            except KeyError:
                self.set_status(400, reason='Failed to fetch total users data')
            else:
                table_title = 'How many people are reading our posts?'
                headers = ['']
                return self.render_string('webhandler/data_table.html',
                                          data=data,
                                          table_title=table_title,
                                          headers=headers)
        except Exception as ex:
            self.set_status(403)
            return self.render_string('error.html',
                                      error=ex)
class TotalUsersHandler(BaseHandler):
    @web.authenticated
    @cache(CACHE_EXPIRES)  # set the cache expires
    @unblock
    def get(self):
        """
        Returns total amount of people that are reading your posts

        example:
        headers:
        [{'columnType': 'METRIC',
                    'dataType': 'INTEGER',
                    'name': 'ga:users'}],

        rows:
        [['11135']],

        :return:
        """
        try:
            service_account = self.settings['service_account_email']
            self.service = GAcess(service_account_email=service_account,
                                  key_file_location=self.settings['key_file_location'])

            query_result = self.service.get_users(profile_id=self.settings['ga_profile_id'],
                                                  days=self.settings['start_days_ago'])
            try:
                data = query_result['rows']
            except KeyError:
                self.set_status(400, reason='Failed to fetch total users data')
            else:
                table_title = 'How many people are reading our posts?'
                headers = ['']
                return self.render_string('webhandler/data_table.html',
                                          data=data,
                                          table_title=table_title,
                                          headers=headers)
        except Exception as ex:
            self.set_status(403)
            return self.render_string('error.html',
                                      error=ex)