ProfessorLeVesseur commited on
Commit
f409157
·
verified ·
1 Parent(s): 8b7e5fa

Update report.py

Browse files
Files changed (1) hide show
  1. report.py +23 -7
report.py CHANGED
@@ -63,6 +63,8 @@ import matplotlib.pyplot as plt
63
  import markdown
64
  from xml.etree import ElementTree as ET
65
  from PIL import Image as PILImage
 
 
66
 
67
  class ReportGenerator:
68
  def __init__(self):
@@ -134,18 +136,32 @@ class ReportGenerator:
134
  # Convert markdown to HTML
135
  html = markdown.markdown(recommendations)
136
 
137
- # Parse HTML and convert to ReportLab paragraphs
138
- root = ET.fromstring(html)
139
- for elem in root.iter():
 
 
 
 
 
 
 
 
140
  if elem.tag == 'h3':
141
- elements.append(Paragraph(elem.text, self.styles['Heading3']))
142
  elif elem.tag == 'h4':
143
- elements.append(Paragraph(elem.text, self.styles['Heading4']))
144
  elif elem.tag == 'p':
145
- elements.append(Paragraph(ET.tostring(elem, encoding='unicode', method='text'), self.styles['Justify']))
 
146
  elif elem.tag == 'ul':
147
  for li in elem.findall('li'):
148
- bullet_text = '• ' + ET.tostring(li, encoding='unicode', method='text').strip()
149
  elements.append(Paragraph(bullet_text, self.styles['BodyText']))
 
 
 
 
 
150
 
151
  return elements
 
63
  import markdown
64
  from xml.etree import ElementTree as ET
65
  from PIL import Image as PILImage
66
+ from xml.parsers.expat import ExpatError
67
+ from html import escape
68
 
69
  class ReportGenerator:
70
  def __init__(self):
 
136
  # Convert markdown to HTML
137
  html = markdown.markdown(recommendations)
138
 
139
+ # Wrap the HTML in a root element to ensure valid XML
140
+ wrapped_html = f"<root>{html}</root>"
141
+
142
+ try:
143
+ root = ET.fromstring(wrapped_html)
144
+ except ExpatError:
145
+ # If parsing fails, fallback to treating the entire content as plain text
146
+ elements.append(Paragraph(escape(recommendations), self.styles['BodyText']))
147
+ return elements
148
+
149
+ for elem in root:
150
  if elem.tag == 'h3':
151
+ elements.append(Paragraph(elem.text or "", self.styles['Heading3']))
152
  elif elem.tag == 'h4':
153
+ elements.append(Paragraph(elem.text or "", self.styles['Heading4']))
154
  elif elem.tag == 'p':
155
+ text = ''.join(elem.itertext())
156
+ elements.append(Paragraph(text, self.styles['Justify']))
157
  elif elem.tag == 'ul':
158
  for li in elem.findall('li'):
159
+ bullet_text = '• ' + ''.join(li.itertext()).strip()
160
  elements.append(Paragraph(bullet_text, self.styles['BodyText']))
161
+ else:
162
+ # For any other tags, just extract the text
163
+ text = ''.join(elem.itertext())
164
+ if text.strip():
165
+ elements.append(Paragraph(text, self.styles['BodyText']))
166
 
167
  return elements