fix up the migration for encrypted documents and a couple other associated issues.

This commit is contained in:
jonaswinkler 2020-12-16 21:53:11 +01:00
parent 5c310c51d4
commit aa8789ae31
2 changed files with 18 additions and 6 deletions

View File

@ -30,12 +30,14 @@ def add_mime_types(apps, schema_editor):
documents = Document.objects.all()
for d in documents:
f = open(source_path(d), "rb")
if d.storage_type == STORAGE_TYPE_GPG:
f = GnuPG.decrypted(open(source_path(d), "rb"))
else:
f = open(source_path(d), "rb")
d.mime_type = magic.from_buffer(f.read(1024), mime=True)
data = GnuPG.decrypted(f)
else:
data = f.read(1024)
d.mime_type = magic.from_buffer(data, mime=True)
d.save()
f.close()

View File

@ -169,7 +169,12 @@ class DocumentViewSet(RetrieveModelMixin,
parser_class = get_parser_class_for_mime_type(mime_type)
if parser_class:
parser = parser_class(logging_group=None)
return parser.extract_metadata(file, mime_type)
try:
return parser.extract_metadata(file, mime_type)
except Exception as e:
# TODO: cover GPG errors, remove later.
return []
else:
return []
@ -215,7 +220,12 @@ class DocumentViewSet(RetrieveModelMixin,
@cache_control(public=False, max_age=315360000)
def thumb(self, request, pk=None):
try:
return HttpResponse(Document.objects.get(id=pk).thumbnail_file,
doc = Document.objects.get(id=pk)
if doc.storage_type == Document.STORAGE_TYPE_GPG:
handle = GnuPG.decrypted(doc.thumbnail_file)
else:
handle = doc.thumbnail_file
return HttpResponse(handle,
content_type='image/png')
except (FileNotFoundError, Document.DoesNotExist):
raise Http404()