@classmethod
def init_artifact(cls, context, values):
    """Initialize an empty versioned object with values.

        Initialize vo object with default values and values specified by user.
        Also reset all changes of initialized object so user can track own
        changes.

        :param context: user context
        :param values: values needs to be set
        :return: artifact with initialized values
        """
    af = cls(context)
    default_fields = []
    for field in af.fields:
        if field not in values:
            default_fields.append(field)
    if default_fields:
        af.obj_set_defaults(*default_fields)
    for name, value in values.items():
        setattr(af, name, value)
    return af
