Spaces:
Runtime error
Runtime error
Update utils.py
Browse files
utils.py
CHANGED
|
@@ -755,11 +755,9 @@ def create_picture(history, prompt):
|
|
| 755 |
########################################
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
|
|
|
| 758 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 759 |
def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
|
| 760 |
-
"""
|
| 761 |
-
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 762 |
-
"""
|
| 763 |
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 764 |
aufzaehlungszeichen = ['-', '*', '•']
|
| 765 |
nummerierung = [f'{i}.' for i in range(1, 11)] # Beispiel für einfache Nummerierungserkennung
|
|
@@ -792,9 +790,6 @@ def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
|
|
| 792 |
|
| 793 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 794 |
def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
| 795 |
-
"""
|
| 796 |
-
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 797 |
-
"""
|
| 798 |
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 799 |
aufzaehlungszeichen = ['-', '*', '•']
|
| 800 |
# Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
|
|
@@ -832,6 +827,55 @@ def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
|
| 832 |
else:
|
| 833 |
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 834 |
return Paragraph(text, styles['BodyText'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 835 |
|
| 836 |
|
| 837 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
|
@@ -878,7 +922,7 @@ def erstellePdf(file_path_download, ueberschrift, dic_history):
|
|
| 878 |
# Einen Abstand hinzufügen (optional)
|
| 879 |
elements.append(Spacer(1, 2*mm))
|
| 880 |
elements.append(headline_assi)
|
| 881 |
-
element_check =
|
| 882 |
#p = Paragraph(assi, styles['NewStyle'])
|
| 883 |
elements.append(element_check)
|
| 884 |
# Einen Abstand hinzufügen (optional)
|
|
|
|
| 755 |
########################################
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
| 758 |
+
"""
|
| 759 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 760 |
def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
|
|
|
|
|
|
|
|
|
|
| 761 |
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 762 |
aufzaehlungszeichen = ['-', '*', '•']
|
| 763 |
nummerierung = [f'{i}.' for i in range(1, 11)] # Beispiel für einfache Nummerierungserkennung
|
|
|
|
| 790 |
|
| 791 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 792 |
def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
|
|
|
|
|
|
|
|
|
| 793 |
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 794 |
aufzaehlungszeichen = ['-', '*', '•']
|
| 795 |
# Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
|
|
|
|
| 827 |
else:
|
| 828 |
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 829 |
return Paragraph(text, styles['BodyText'])
|
| 830 |
+
"""
|
| 831 |
+
|
| 832 |
+
####################################
|
| 833 |
+
# Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 834 |
+
####################################
|
| 835 |
+
def verarbeite_text_und_aufzaehlungen(text, styles):
|
| 836 |
+
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 837 |
+
aufzaehlungszeichen = ['-', '*', '•']
|
| 838 |
+
# Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
|
| 839 |
+
# Verbesserter regulärer Ausdruck, der optionale Leerzeichen vor der Nummerierung berücksichtigt
|
| 840 |
+
nummerierung_regex = r"^\s*\d+\.\s*" # Optional Leerzeichen, gefolgt von Ziffern und einem Punkt, dann Leerzeichen
|
| 841 |
+
|
| 842 |
+
zeilen = text.split('\n')
|
| 843 |
+
elements = [] # Eine Liste, die sowohl Paragraph-Objekte als auch ListFlowable-Objekte enthalten wird
|
| 844 |
+
list_items = [] # Temporäre Liste für die Aufzählungs-Items
|
| 845 |
+
paragraph_text = [] # Sammelt den Text für normale Paragraphen
|
| 846 |
+
|
| 847 |
+
for zeile in zeilen:
|
| 848 |
+
if any(zeile.lstrip().startswith(zeichen) for zeichen in aufzaehlungszeichen) or re.match(nummerierung_regex, zeile.lstrip()):
|
| 849 |
+
# Wenn bereits normaler Text gesammelt wurde, füge ihn als Paragraph hinzu, bevor eine neue Liste beginnt
|
| 850 |
+
if paragraph_text:
|
| 851 |
+
elements.append(Paragraph(' '.join(paragraph_text), styles['BodyText']))
|
| 852 |
+
paragraph_text = [] # Zurücksetzen des normalen Textsammelns
|
| 853 |
+
|
| 854 |
+
# Entfernt das Aufzählungszeichen/Nummerierung für die Darstellung
|
| 855 |
+
if re.match(nummerierung_regex, zeile.lstrip()):
|
| 856 |
+
cleaned_line = re.sub(nummerierung_regex, '', zeile.lstrip(), 1).lstrip()
|
| 857 |
+
else:
|
| 858 |
+
for zeichen in aufzaehlungszeichen:
|
| 859 |
+
if zeile.lstrip().startswith(zeichen):
|
| 860 |
+
cleaned_line = zeile.lstrip()[len(zeichen):].lstrip()
|
| 861 |
+
break
|
| 862 |
+
list_items.append(ListItem(Paragraph(cleaned_line, styles['BodyText'])))
|
| 863 |
+
else:
|
| 864 |
+
# Wenn eine Liste erkannt wurde und dann normale Zeilen folgen
|
| 865 |
+
if list_items:
|
| 866 |
+
# Füge die gesammelten ListItems als ListFlowable hinzu und setze die Sammlung zurück
|
| 867 |
+
elements.append(ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica'))
|
| 868 |
+
list_items = [] # Zurücksetzen der Listensammlung
|
| 869 |
+
paragraph_text.append(zeile)
|
| 870 |
+
|
| 871 |
+
# Füge verbleibende Elemente hinzu, falls vorhanden
|
| 872 |
+
if paragraph_text: # Verbleibender normaler Text
|
| 873 |
+
elements.append(Paragraph(' '.join(paragraph_text), styles['BodyText']))
|
| 874 |
+
if list_items: # Verbleibende Listenelemente
|
| 875 |
+
elements.append(ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica'))
|
| 876 |
+
|
| 877 |
+
return elements
|
| 878 |
+
|
| 879 |
|
| 880 |
|
| 881 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
|
|
|
| 922 |
# Einen Abstand hinzufügen (optional)
|
| 923 |
elements.append(Spacer(1, 2*mm))
|
| 924 |
elements.append(headline_assi)
|
| 925 |
+
element_check = verarbeite_text_und_aufzaehlungen(assi,list_style)
|
| 926 |
#p = Paragraph(assi, styles['NewStyle'])
|
| 927 |
elements.append(element_check)
|
| 928 |
# Einen Abstand hinzufügen (optional)
|