def versions(self): """ Exports NyExFile versions """ languages = self.data.get('_languages', ()) if len(languages) > 1: self.logger.debug("\t Object %s has %r languages: %r", self.data.get('id', 'ERROR'), len(languages), languages) if not languages: languages = [x['id'] for x in self.data['_objects']] for language in languages: nyfile = self.data.pop(language, None) if not nyfile: continue extfile = getattr(nyfile, '_ext_file', None) if not extfile: continue versions = getattr(nyfile, 'versions', []) if versions: versions = versions.objectValues() for version in versions: filename = '/'.join(version.filename) if not filename: continue if version.is_broken(): self.logger.warn('\t BROKEN VERSION: %s (%s)', version.getId(), filename) continue sfile = StringIO(version.data) self.logger.debug('\t VERSION FILENAME: %s', filename) sfile.filename = version.filename[-1] sfile.headers = {'content-type': version.content_type} sfile.releasedate = self.data['releasedate'] yield sfile filename = '/'.join(extfile.filename) if not filename: continue if extfile.is_broken(): self.logger.warn('\t BROKEN EXTFILE: %s (%s)', language, filename) continue sfile = StringIO(extfile.data) self.logger.debug('\t FILENAME: %s', filename) sfile.filename = extfile.filename[-1] sfile.headers = {'content-type': extfile.content_type} sfile.releasedate = self.data['releasedate'] yield sfile