--- a/ckanext/ga_report/command.py +++ b/ckanext/ga_report/command.py @@ -23,13 +23,43 @@ ga_model.init_tables() log.info("DB tables are setup") + +class GetAuthToken(CkanCommand): + """ Get's the Google auth token + + Usage: paster getauthtoken + + Where is the file name containing the details + for the service (obtained from https://code.google.com/apis/console). + By default this is set to credentials.json + """ + summary = __doc__.split('\n')[0] + usage = __doc__ + max_args = 0 + min_args = 0 + + def command(self): + """ + In this case we don't want a valid service, but rather just to + force the user through the auth flow. We allow this to complete to + act as a form of verification instead of just getting the token and + assuming it is correct. + """ + from ga_auth import init_service + initialize_service('token.dat', + self.args[0] if self.args + else 'credentials.json') + class LoadAnalytics(CkanCommand): """Get data from Google Analytics API and save it in the ga_model - Usage: paster loadanalytics + Usage: paster loadanalytics - Where is: + Where is the name of the auth token file from + the getauthtoken step. + + And where is: all - data for all time latest - (default) just the 'latest' data YYYY-MM-DD - just data for all time periods going @@ -37,16 +67,24 @@ """ summary = __doc__.split('\n')[0] usage = __doc__ - max_args = 1 - min_args = 0 + max_args = 2 + min_args = 1 def command(self): self._load_config() + from ga_auth import init_service + try: + svc = init_service(self.args[0], None) + except TypeError: + print 'Have you correctly run the getauthtoken task and specified the correct file here' + return + from download_analytics import DownloadAnalytics - downloader = DownloadAnalytics() - - time_period = self.args[0] if self.args else 'latest' + from ga_auth import get_profile_id + downloader = DownloadAnalytics(svc, profile_id=get_profile_id(svc)) + + time_period = self.args[1] if self.args and len(self.args) > 1 else 'latest' if time_period == 'all': downloader.all_() elif time_period == 'latest':