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
    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