'Mostly handles backward compatibility issues.
`source` is deprecated field.
a) If `source` exists and `source` is not `html5_sources`: show `source`
field on front-end as not-editable but clearable. Dropdown is a new
field `download_video` and it has value True.
b) If `source` is cleared it is not shown anymore.
c) If `source` exists and `source` in `html5_sources`, do not show `source`
field. `download_video` field has value True.'

def __init__(self, *args, **kwargs):

    super(VideoDescriptor, self).__init__(*args, **kwargs)
    if self.data:
        field_data = self._parse_video_xml(etree.fromstring(self.data))
        self._field_data.set_many(self, field_data)
        del self.data
    self.source_visible = False
    if self.source:
        if (self.source in self.html5_sources):
            self.source = ''
            self.download_video = True
        else:
            self.source_visible = True
            if (not self.fields['download_video'].is_set_on(self)):
                self.download_video = True
    if (not self.fields['download_video'].is_set_on(self)):
        self.download_video = self.download_video
        self.force_save_fields(['download_video'])
    if ((not self.fields['download_track'].is_set_on(self)) and self.track):
        self.download_track = True
