def _build_export_filename(self, export, extension): ''' Internal method to build the export filename based on the export title (which should be set when calling the `FormPack()` constructor), whether the latest or all versions are included, the label language, the current date and time, and the given `extension` ''' if export.lang == formpack.constants.UNTRANSLATED: lang = 'labels' else: lang = export.lang # TODO: translate this? Would we have to delegate to the front end? if self._fields_from_all_versions: version = 'all versions' else: version = 'latest version' filename_template = ( u'{{title}} - {version} - {{lang}} - {date:%Y-%m-%d-%H-%M-%S}' u'.{ext}'.format(version=version, date=datetime.datetime.utcnow(), ext=extension)) title = export.title filename = filename_template.format(title=title, lang=lang) overrun = len(filename) - self.MAXIMUM_FILENAME_LENGTH if overrun <= 0: return filename # TODO: trim the title in a right-to-left-friendly way # TODO: deal with excessively long language names title = ellipsize(title, len(title) - overrun) filename = filename_template.format(title=title, lang=lang) return filename
def _build_export_filename(self, export, export_type): """ Internal method to build the export filename based on the export title (which should be set when calling the `FormPack()` constructor), whether the latest or all versions are included, the label language, the current date and time, and the appropriate extension for the given `export_type` """ if export_type == 'xls': extension = 'xlsx' elif export_type == 'spss_labels': extension = 'zip' # ANTEA export type # TODO : Can be (export_type.split("_")[-1]).lower() ? elif "antea" in export_type: if "xlsx" in export_type: extension = 'xlsx' elif "docx" in export_type: extension = 'docx' elif "zip" in export_type: extension = 'zip' elif "pdf" in export_type: extension = 'pdf' else: extension = export_type.split("_")[-1] else: extension = export_type if export_type == 'spss_labels': lang = 'SPSS Labels' elif export.lang == formpack.constants.UNTRANSLATED: lang = 'labels' else: lang = export.lang # TODO: translate this? Would we have to delegate to the front end? if self._fields_from_all_versions: version = 'all versions' else: version = 'latest version' filename_template = ( '{{title}} - {version} - {{lang}} - {date:%Y-%m-%d-%H-%M-%S}' '.{ext}'.format(version=version, date=utcnow(), ext=extension)) title = export.title filename = filename_template.format(title=title, lang=lang) overrun = len(filename) - self.MAXIMUM_FILENAME_LENGTH if overrun <= 0: return filename # TODO: trim the title in a right-to-left-friendly way # TODO: deal with excessively long language names title = ellipsize(title, len(title) - overrun) filename = filename_template.format(title=title, lang=lang) return filename