Esempio n. 1
0
def task_fields(task):
    extra_fields = {}
    task_name = task._task_name
    # include fields
    extra_fields.update(_get_fields_for_task(task_name))

    # register task status feature methods
    feature_fields = {}
    status_field = '%s_status' % task_name
    error_field = '%s_error' % task_name
    started_field = '%s_started_at' % task_name
    finished_field = '%s_finished_at' % task_name

    can_status = ["pending", "waiting"]

    def feat_can(self):
        required = task._required_features
        ok = self.check_features(*required)
        return ok and (getattr(self, status_field) in can_status)

    def feat_finished(self):
        return bool(getattr(self, finished_field))

    def feat_running(self):
        return getattr(self, status_field) in ["running"]

    def feat_error(self):
        return bool(getattr(self, error_field))

    def reset(self, force=False):
        self.logger.info("Resetting '%s' task state from '%s'." % \
                         (task_name, getattr(self, status_field)))
        status = getattr(self, status_field)
        if not force and status != 'error':
            raise Exception("Cannot reset task in %r status" % status)
        setattr(self, status_field, 'pending')
        setattr(self, started_field, None)
        setattr(self, finished_field, None)
        # Do not reset the error field. The error message might eventualy
        # help in task debugging.
        #setattr(self, error_field, '')
        self.save()


    key = task._features_key
    extra_fields['_feature_can_%s' % task_name] = \
            feature(key, 'can_%s' % task_name)(feat_can)
    extra_fields['_feature_can_do_%s' % task_name] = \
            feature(key, 'can_do_%s' % task_name)(feat_can)
    extra_fields['_feature_%s_finished' % task_name] = \
            feature(key, '%s_finished' % task_name)(feat_finished)
    extra_fields['_feature_%s_running' % task_name] = \
            feature(key, '%s_running' % task_name)(feat_running)
    extra_fields['_feature_%s_error' % task_name] = \
            feature(key, '%s_error' % task_name)(feat_error)

    extra_fields['%s_reset' % task_name] = reset
    return extra_fields
Esempio n. 2
0
def task_fields(task):
    extra_fields = {}
    task_name = task._task_name
    # include fields
    extra_fields.update(_get_fields_for_task(task_name))

    # register task status feature methods
    feature_fields = {}
    status_field = '%s_status' % task_name
    error_field = '%s_error' % task_name
    started_field = '%s_started_at' % task_name
    finished_field = '%s_finished_at' % task_name

    can_status = ["pending", "waiting"]

    def feat_can(self):
        required = task._required_features
        ok = self.check_features(*required)
        return ok and (getattr(self, status_field) in can_status)

    def feat_finished(self):
        return bool(getattr(self, finished_field))

    def feat_running(self):
        return getattr(self, status_field) in ["running"]

    def feat_error(self):
        return bool(getattr(self, error_field))

    def reset(self, force=False):
        self.logger.info("Resetting '%s' task state from '%s'." % \
                         (task_name, getattr(self, status_field)))
        status = getattr(self, status_field)
        if not force and status != 'error':
            raise Exception("Cannot reset task in %r status" % status)
        setattr(self, status_field, 'pending')
        setattr(self, started_field, None)
        setattr(self, finished_field, None)
        # Do not reset the error field. The error message might eventualy
        # help in task debugging.
        #setattr(self, error_field, '')
        self.save()

    key = task._features_key
    extra_fields['_feature_can_%s' % task_name] = \
            feature(key, 'can_%s' % task_name)(feat_can)
    extra_fields['_feature_can_do_%s' % task_name] = \
            feature(key, 'can_do_%s' % task_name)(feat_can)
    extra_fields['_feature_%s_finished' % task_name] = \
            feature(key, '%s_finished' % task_name)(feat_finished)
    extra_fields['_feature_%s_running' % task_name] = \
            feature(key, '%s_running' % task_name)(feat_running)
    extra_fields['_feature_%s_error' % task_name] = \
            feature(key, '%s_error' % task_name)(feat_error)

    extra_fields['%s_reset' % task_name] = reset
    return extra_fields
Esempio n. 3
0
def task_fields(task):
    extra_fields = {}
    task_name = task._task_name
    # include fields
    extra_fields.update(_get_fields_for_task(task_name))

    # register task status feature methods
    feature_fields = {}
    status_field = "%s_status" % task_name
    error_field = "%s_error" % task_name
    started_field = "%s_started_at" % task_name
    finished_field = "%s_finished_at" % task_name

    can_status = ["pending", "waiting"]

    def feat_can(self):
        required = task._required_features
        ok = self.check_features(*required)
        return ok and (getattr(self, status_field) in can_status)

    def feat_finished(self):
        return bool(getattr(self, finished_field))

    def feat_running(self):
        return getattr(self, status_field) in ["running"]

    def feat_error(self):
        return bool(getattr(self, error_field))

    def reset(self):
        self.logger.info("Resetting '%s' task state from '%s'." % (task_name, getattr(self, status_field)))
        setattr(self, status_field, "pending")
        setattr(self, started_field, None)
        setattr(self, finished_field, None)
        # Do not reset the error field. The error message might eventualy
        # help in task debugging.
        # setattr(self, error_field, '')
        self.save()

    key = task._features_key
    extra_fields["_feature_can_%s" % task_name] = feature(key, "can_%s" % task_name)(feat_can)
    extra_fields["_feature_can_do_%s" % task_name] = feature(key, "can_do_%s" % task_name)(feat_can)
    extra_fields["_feature_%s_finished" % task_name] = feature(key, "%s_finished" % task_name)(feat_finished)
    extra_fields["_feature_%s_running" % task_name] = feature(key, "%s_running" % task_name)(feat_running)
    extra_fields["_feature_%s_error" % task_name] = feature(key, "%s_error" % task_name)(feat_error)

    extra_fields["%s_reset" % task_name] = reset
    return extra_fields