From c4a431f243f1972e4f92fb9a22e275e942e38e03 Mon Sep 17 00:00:00 2001 From: "R. van der Vegt" Date: Fri, 31 Jan 2020 13:44:35 +0100 Subject: [PATCH 1/3] Strip tags while exporting listview #435 --- arctic/generics.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arctic/generics.py b/arctic/generics.py index d43dd6a6..4b6052bd 100755 --- a/arctic/generics.py +++ b/arctic/generics.py @@ -4,6 +4,7 @@ import csv import json from collections import OrderedDict +import re import extra_views from django.conf import settings @@ -653,6 +654,7 @@ def csv_file_response(self): writer = csv.writer(response) writer.writerow(titles) + re_strip_tags = re.compile(r'<.*?>') m2m_fields = [m2m_f.attname for m2m_f in model._meta.many_to_many] for obj in self.get_object_list(): row = [] @@ -673,7 +675,7 @@ def csv_file_response(self): field_value = ", ".join( [str(obj) for obj in field_value.get_queryset()] ) - row.append(field_value) + row.append(re.sub(re_strip_tags, '', field_value).strip()) writer.writerow(row) return response From 022807260b007d0dd40ef609fe6ae315b79b1f3b Mon Sep 17 00:00:00 2001 From: "R. van der Vegt" Date: Tue, 4 Feb 2020 13:11:09 +0100 Subject: [PATCH 2/3] ignore regex on none fields by casting it to string first --- arctic/generics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arctic/generics.py b/arctic/generics.py index 4b6052bd..54e48280 100755 --- a/arctic/generics.py +++ b/arctic/generics.py @@ -675,7 +675,7 @@ def csv_file_response(self): field_value = ", ".join( [str(obj) for obj in field_value.get_queryset()] ) - row.append(re.sub(re_strip_tags, '', field_value).strip()) + row.append(re.sub(re_strip_tags, '', str(field_value)).strip()) writer.writerow(row) return response From 67f9147641647ab57297a2472a5d9f6ef69470e5 Mon Sep 17 00:00:00 2001 From: "R. van der Vegt" Date: Tue, 4 Feb 2020 14:48:16 +0100 Subject: [PATCH 3/3] use django's strip tags instead of re --- arctic/generics.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/arctic/generics.py b/arctic/generics.py index 54e48280..66456fc9 100755 --- a/arctic/generics.py +++ b/arctic/generics.py @@ -4,7 +4,6 @@ import csv import json from collections import OrderedDict -import re import extra_views from django.conf import settings @@ -24,7 +23,10 @@ from django.shortcuts import redirect, render, resolve_url from django.urls import NoReverseMatch, reverse from django.utils.formats import get_format -from django.utils.html import mark_safe +from django.utils.html import ( + mark_safe, + strip_tags, +) from django.utils.http import is_safe_url, quote from django.utils.text import capfirst from django.utils.translation import ugettext as _ @@ -654,7 +656,6 @@ def csv_file_response(self): writer = csv.writer(response) writer.writerow(titles) - re_strip_tags = re.compile(r'<.*?>') m2m_fields = [m2m_f.attname for m2m_f in model._meta.many_to_many] for obj in self.get_object_list(): row = [] @@ -675,7 +676,7 @@ def csv_file_response(self): field_value = ", ".join( [str(obj) for obj in field_value.get_queryset()] ) - row.append(re.sub(re_strip_tags, '', str(field_value)).strip()) + row.append(strip_tags(field_value)) writer.writerow(row) return response