Small mediafile fixes
This commit is contained in:
parent
365d0d55ea
commit
e45d83de5a
@ -20,9 +20,14 @@ def get_pdf_information(mediafile):
|
|||||||
try:
|
try:
|
||||||
pdf = PdfFileReader(mediafile)
|
pdf = PdfFileReader(mediafile)
|
||||||
result["pages"] = pdf.getNumPages()
|
result["pages"] = pdf.getNumPages()
|
||||||
except (PdfReadError, KeyError):
|
except PdfReadError:
|
||||||
# File could be encrypted but not be detected by PyPDF.
|
# File could be encrypted but not be detected by PyPDF.
|
||||||
# KeyError: https://github.com/mstamy2/PyPDF2/issues/353 Very rare to occur, but do not raise a 500
|
|
||||||
result["pages"] = 0
|
result["pages"] = 0
|
||||||
result["encrypted"] = True
|
result["encrypted"] = True
|
||||||
|
except (KeyError, OSError):
|
||||||
|
# Other errors. Mostly very rare to occur, but do not raise a 500:
|
||||||
|
# KeyError: https://github.com/mstamy2/PyPDF2/issues/353
|
||||||
|
# OSError: https://github.com/mstamy2/PyPDF2/issues/530
|
||||||
|
result["pages"] = 0
|
||||||
|
result["read_error"] = True
|
||||||
return result
|
return result
|
||||||
|
@ -301,14 +301,19 @@ def get_mediafile(request, path):
|
|||||||
can_see = has_perm(request.user, "mediafiles.can_see")
|
can_see = has_perm(request.user, "mediafiles.can_see")
|
||||||
for i, part in enumerate(parts):
|
for i, part in enumerate(parts):
|
||||||
is_directory = i < len(parts) - 1
|
is_directory = i < len(parts) - 1
|
||||||
|
# A .get would be sufficient, but sometimes someone has uploaded a file twice due to complicated
|
||||||
|
# transaction management of two databases during create. So instead of returning a 500er (since
|
||||||
|
# .get returned multiple objects) we deliver the first file.
|
||||||
if is_directory:
|
if is_directory:
|
||||||
mediafile = Mediafile.objects.get(
|
mediafile = Mediafile.objects.filter(
|
||||||
parent=parent, is_directory=is_directory, title=part
|
parent=parent, is_directory=is_directory, title=part
|
||||||
)
|
).first()
|
||||||
else:
|
else:
|
||||||
mediafile = Mediafile.objects.get(
|
mediafile = Mediafile.objects.filter(
|
||||||
parent=parent, is_directory=is_directory, original_filename=part
|
parent=parent, is_directory=is_directory, original_filename=part
|
||||||
)
|
).first()
|
||||||
|
if mediafile is None:
|
||||||
|
raise Mediafile.DoesNotExist()
|
||||||
if mediafile.access_groups.exists() and not in_some_groups(
|
if mediafile.access_groups.exists() and not in_some_groups(
|
||||||
request.user.id, [group.id for group in mediafile.access_groups.all()]
|
request.user.id, [group.id for group in mediafile.access_groups.all()]
|
||||||
):
|
):
|
||||||
|
@ -38,6 +38,7 @@ class TestFunctions(TestCase):
|
|||||||
@patch("openslides.utils.main.detect_openslides_type")
|
@patch("openslides.utils.main.detect_openslides_type")
|
||||||
@patch("openslides.utils.main.os.path.expanduser")
|
@patch("openslides.utils.main.os.path.expanduser")
|
||||||
def test_get_default_settings_dir_unix(self, mock_expanduser, mock_detect):
|
def test_get_default_settings_dir_unix(self, mock_expanduser, mock_detect):
|
||||||
|
os.environ.pop("XDG_CONFIG_HOME", None)
|
||||||
mock_expanduser.return_value = "/home/test/.config"
|
mock_expanduser.return_value = "/home/test/.config"
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
main.get_default_settings_dir(main.UNIX_VERSION),
|
main.get_default_settings_dir(main.UNIX_VERSION),
|
||||||
|
Loading…
Reference in New Issue
Block a user