Beispiel #1
0
    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)
Beispiel #2
0
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))
Beispiel #3
0
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))
Beispiel #4
0
    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)