'Extract the specified `fields` from `manifest_data`, applying
transformations if necessary. If `fields` is absent, then use
`cls.manifest_is_source_of_truth_fields`.'

@classmethod
def extract_manifest_fields(cls, manifest_data, fields=None):

    if (fields is None):
        fields = cls.manifest_is_source_of_truth_fields
    data = {k: manifest_data[k] for k in fields if (k in manifest_data)}
    default_language = to_language(manifest_data.get('default_locale', cls._meta.get_field('default_language').default))
    if ('default_language' in fields):
        data['default_language'] = default_language
    for (key, value) in data.items():
        if isinstance(value, basestring):
            data[key] = value.strip()
    for field in cls._meta.translated_fields:
        field_name = field.name
        if (field_name in data):
            data[field_name] = {default_language: manifest_data[field_name]}
    return data
