def parse(self): """ Extracts media file data into model objects for later saving """ try: tree = ElementTree.fromstring(self.manifest_file.read()) except ElementTree.ParseError: raise ParseError('Error parsing XML') for media_file in tree.findall('file'): try: mfo = MediaFile() mfo.title = media_file.find('title').text mfo.version = media_file.find('version').text mfo.release_date = datetime.strptime(media_file.find('releasedate').text, '%m/%d/%Y').date() mfo.content_type = media_file.find('contenttype').text mfo.language = media_file.find('language').text mfo.barcode = media_file.find('barcode').text mfo.md5_checksum = media_file.find('md5').text mfo.filename = media_file.find('filename').text self.media_file_objs.append(mfo) except AttributeError: raise ParseError('Missing required XML attribute')