def dump(self): concordance = {} wb = load_workbook('concordance.xlsx') for ws in wb.worksheets: dataset_type = ws.title for row in ws: refactored_search_name = row[1].value pre_refactored_search_name = row[0].value if dataset_type not in concordance: concordance[dataset_type] = {} concordance[dataset_type][refactored_search_name] = pre_refactored_search_name schema_list = sorted(scheming_dataset_schema_list({}, {})) workbook = Workbook() sheet = None headers = [ 'ckan_field_name', 'multivalued', 'fluent', 'code', 'ckan_label_en', 'ckan_label_fr', 'search_name_en', 'search_name_fr', 'old_name', 'old_name_en', 'old_name_fr' ] for schema_name in schema_list: schema = [] schema_dict = scheming_dataset_schema_show({}, { 'type': schema_name, 'expanded': True }) concordance_dict = concordance.get(schema_name, {}) for field in schema_dict['dataset_fields']: field_name = field.get('field_name') field_type = field.get('schema_field_type', '') fluent = field_type in [u'code', u'fluent'] if fluent: if field_type == u'code': search_name_en = field_name + u'_desc_en' search_name_fr = field_name + u'_desc_fr' else: search_name_en = field_name + u'_en' search_name_fr = field_name + u'_fr' else: search_name_en = u'' search_name_fr = u'' schema.append( { 'ckan_field_name': field_name, 'ckan_label_en': field.get( 'label', {} ).get('en', u'No label'), 'ckan_label_fr': field.get( 'label', {} ).get('fr', u'Pas d\'étiquette'), 'multivalued': field.get('schema_multivalued', False), 'fluent': fluent, 'code': field_type == u'code', 'search_name_en': search_name_en, 'search_name_fr': search_name_fr, 'old_name': concordance_dict.get(field_name, u' '), 'old_name_en': concordance_dict.get(search_name_en, u' '), 'old_name_fr': concordance_dict.get(search_name_fr, u' '), } ) if sheet: sheet = workbook.create_sheet(title=schema_name) else: sheet = workbook.active sheet.title = schema_name for i in range(1, len(headers)+1): cd = sheet.column_dimensions[get_column_letter(i)] sheet.cell(row=1, column=i, value=headers[i-1]) cd.width = max(cd.width, len(headers[i-1])) row = 2 for field in schema: column = 1 for header in headers: if isinstance(field[header], bool): value = 'true' if field[header] else 'false' else: value = field[header] cd = sheet.column_dimensions[get_column_letter(column)] sheet.cell(row=row, column=column, value=value) if value: cd.width = max(cd.width, len(value)) column += 1 row += 1 cell = sheet['B2'] sheet.freeze_panes = cell blob = StringIO() workbook.save(blob) response.headers['Content-Type'] = \ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' response.headers['Content-Disposition'] = ( 'inline; filename="ProductSchemas.xlsx"') return blob.getvalue()
def dump(self): concordance = {} wb = load_workbook('concordance.xlsx') for ws in wb.worksheets: dataset_type = ws.title for row in ws: refactored_search_name = row[1].value pre_refactored_search_name = row[0].value if dataset_type not in concordance: concordance[dataset_type] = {} concordance[dataset_type][ refactored_search_name] = pre_refactored_search_name schema_list = sorted(scheming_dataset_schema_list({}, {})) workbook = Workbook() sheet = None headers = [ 'ckan_field_name', 'multivalued', 'fluent', 'code', 'ckan_label_en', 'ckan_label_fr', 'search_name_en', 'search_name_fr', 'old_name', 'old_name_en', 'old_name_fr' ] for schema_name in schema_list: schema = [] schema_dict = scheming_dataset_schema_show({}, { 'type': schema_name, 'expanded': True }) concordance_dict = concordance.get(schema_name, {}) for field in schema_dict['dataset_fields']: field_name = field.get('field_name') field_type = field.get('schema_field_type', '') fluent = field_type in [u'code', u'fluent'] if fluent: if field_type == u'code': search_name_en = field_name + u'_desc_en' search_name_fr = field_name + u'_desc_fr' else: search_name_en = field_name + u'_en' search_name_fr = field_name + u'_fr' else: search_name_en = u'' search_name_fr = u'' schema.append({ 'ckan_field_name': field_name, 'ckan_label_en': field.get('label', {}).get('en', u'No label'), 'ckan_label_fr': field.get('label', {}).get('fr', u'Pas d\'étiquette'), 'multivalued': field.get('schema_multivalued', False), 'fluent': fluent, 'code': field_type == u'code', 'search_name_en': search_name_en, 'search_name_fr': search_name_fr, 'old_name': concordance_dict.get(field_name, u' '), 'old_name_en': concordance_dict.get(search_name_en, u' '), 'old_name_fr': concordance_dict.get(search_name_fr, u' '), }) if sheet: sheet = workbook.create_sheet(title=schema_name) else: sheet = workbook.active sheet.title = schema_name for i in range(1, len(headers) + 1): cd = sheet.column_dimensions[get_column_letter(i)] sheet.cell(row=1, column=i, value=headers[i - 1]) cd.width = max(cd.width, len(headers[i - 1])) row = 2 for field in schema: column = 1 for header in headers: if isinstance(field[header], bool): value = 'true' if field[header] else 'false' else: value = field[header] cd = sheet.column_dimensions[get_column_letter(column)] sheet.cell(row=row, column=column, value=value) if value: cd.width = max(cd.width, len(value)) column += 1 row += 1 cell = sheet['B2'] sheet.freeze_panes = cell blob = StringIO() workbook.save(blob) response.headers['Content-Type'] = \ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' response.headers['Content-Disposition'] = ( 'inline; filename="ProductSchemas.xlsx"') return blob.getvalue()
def dump(self): schema_list = sorted(scheming_dataset_schema_list({}, {})) workbook = Workbook() sheet = None headers = [ 'field_name', 'multivalued', 'fluent', 'label_en', 'label_fr'] for schema_name in schema_list: schema = [] schema_dict = scheming_dataset_schema_show({}, { 'type': schema_name, 'expanded': True }) for field in schema_dict['dataset_fields']: schema.append({ 'field_name': field.get('field_name'), 'label_en': field.get('label', {}).get('en', u'No label'), 'label_fr': field.get('label', {}).get('fr', u'Pas d\'étiquette'), 'multivalued': field.get('schema_multivalued', False), 'fluent': field.get('schema_field_type', u'unspecified') in [ u'code', u'fluent'] }) if sheet: sheet = workbook.create_sheet(title=schema_name) else: sheet = workbook.active sheet.title = schema_name for i in range(1, len(headers)+1): cd = sheet.column_dimensions[get_column_letter(i)] sheet.cell(row=1, column=i, value=headers[i-1]) cd.width = max(cd.width, len(headers[i-1])) row = 2 for field in schema: column = 1 for header in headers: if isinstance(field[header], bool): value = 'true' if field[header] else 'false' else: value = field[header] cd = sheet.column_dimensions[get_column_letter(column)] sheet.cell(row=row, column=column, value=value) cd.width = max(cd.width, len(value)) column += 1 row += 1 cell = sheet['B2'] sheet.freeze_panes = cell blob = StringIO() workbook.save(blob) response.headers['Content-Type'] = \ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' response.headers['Content-Disposition'] = ( 'inline; filename="ProductSchemas.xlsx"') return blob.getvalue()