Sanitize worksheet titles

This commit is contained in:
Christian Cueni 2024-03-21 11:20:52 +01:00
parent 548d3c3c75
commit e4c9a3ef44
1 changed files with 19 additions and 1 deletions

View File

@ -185,7 +185,7 @@ def export_feedback(course_session_ids: list[str], save_as_file: bool):
def _create_sheet(wb: Workbook, title: str, data: list[FeedbackResponse]): def _create_sheet(wb: Workbook, title: str, data: list[FeedbackResponse]):
sheet = wb.create_sheet(title=title) sheet = wb.create_sheet(title=_sanitize_sheet_name(title))
if len(data) == 0: if len(data) == 0:
return sheet return sheet
@ -208,6 +208,24 @@ def _create_sheet(wb: Workbook, title: str, data: list[FeedbackResponse]):
return sheet return sheet
def _sanitize_sheet_name(text, default_name="DefaultSheet"):
if text is None:
return default_name
prohibited_chars = ["\\", "/", "*", "?", ":", "[", "]"]
for char in prohibited_chars:
text = text.replace(char, "")
text = text.strip("'")
text = text[:31]
if len(text) == 0:
return default_name
return text
def _add_rows(sheet, data, question_data): def _add_rows(sheet, data, question_data):
for row_idx, feedback in enumerate(data, start=2): for row_idx, feedback in enumerate(data, start=2):
sheet.cell(row=row_idx, column=1, value=feedback.course_session.title) sheet.cell(row=row_idx, column=1, value=feedback.course_session.title)