def run(self): self.logger = log.get_logger('CancelJob') self.tasks = Tasks() rows_affected = 0 if self.options.multiple: rows_affected = self.tasks.bulk_finish(extra_predicate=("job_id LIKE :job_id", { 'job_id': self.options.job_id + '%%' })) else: loader_storage = LoaderStorage() with loader_storage.transaction() as cursor: jobs = apsw_helpers.query(cursor, ''' SELECT id FROM jobs WHERE id LIKE :job_id ''', job_id=self.options.job_id + '%') if len(jobs) > 1: print len(jobs), 'jobs match this job ID:' print '\n'.join([ row.id for row in jobs ]) print 'Please use a more specific prefix or specify the `--multiple` flag if you' print 'would like to cancel more than one job.' sys.exit(1) elif len(jobs) == 0: print '0 jobs match this job ID.' sys.exit(1) else: rows_affected = self.tasks.bulk_finish(extra_predicate=("job_id = :job_id", { 'job_id': jobs[0].id })) job_suffix = '(s)' if self.options.multiple else '' task_suffix = 's' if not rows_affected == 1 else '' print CANCEL_JOB_MESSAGE % (job_suffix, self.options.job_id, rows_affected, task_suffix)
class Api(object): name = None def __init__(self): self.logger = log.get_logger(self.name or 'api') self.storage = LoaderStorage() def query(self, params): assert 'validate' in dir(self), '`validate` must be defined' return self._execute(self.validate(params)) def _execute(self, params): raise NotImplemented() def __db_caller(self, callback): with self.storage.transaction() as cursor: return callback(cursor) def _db_query(self, *args, **kwargs): return self.__db_caller(lambda c: apsw_helpers.query(c, *args, **kwargs)) def _db_custom_query(self, callback): return self.__db_caller(callback) def _db_get(self, *args, **kwargs): return self.__db_caller(lambda c: apsw_helpers.get(c, *args, **kwargs))
class Api(object): name = None def __init__(self): self.logger = log.get_logger(self.name or 'api') self.storage = LoaderStorage() def query(self, params): assert 'validate' in dir(self), '`validate` must be defined' return self._execute(self.validate(params)) def _execute(self, params): raise NotImplemented() def __db_caller(self, callback): with self.storage.transaction() as cursor: return callback(cursor) def _db_query(self, *args, **kwargs): return self.__db_caller( lambda c: apsw_helpers.query(c, *args, **kwargs)) def _db_custom_query(self, callback): return self.__db_caller(callback) def _db_get(self, *args, **kwargs): return self.__db_caller(lambda c: apsw_helpers.get(c, *args, **kwargs))
def run(self): self.logger = log.get_logger('CancelJob') self.tasks = Tasks() rows_affected = 0 if self.options.multiple: rows_affected = self.tasks.bulk_finish( extra_predicate=("job_id LIKE :job_id", { 'job_id': self.options.job_id + '%%' })) else: loader_storage = LoaderStorage() with loader_storage.transaction() as cursor: jobs = apsw_helpers.query(cursor, ''' SELECT id FROM jobs WHERE id LIKE :job_id ''', job_id=self.options.job_id + '%') if len(jobs) > 1: print len(jobs), 'jobs match this job ID:' print '\n'.join([row.id for row in jobs]) print 'Please use a more specific prefix or specify the `--multiple` flag if you' print 'would like to cancel more than one job.' sys.exit(1) elif len(jobs) == 0: print '0 jobs match this job ID.' sys.exit(1) else: rows_affected = self.tasks.bulk_finish( extra_predicate=("job_id = :job_id", { 'job_id': jobs[0].id })) job_suffix = '(s)' if self.options.multiple else '' task_suffix = 's' if not rows_affected == 1 else '' print CANCEL_JOB_MESSAGE % (job_suffix, self.options.job_id, rows_affected, task_suffix)