Skip to content
Snippets Groups Projects
Unverified Commit 85bc8d93 authored by Agate's avatar Agate 💬
Browse files

Fix #1093: mimetype detection issue that broke transcoding on certain tracks

parent c1e2f16d
No related branches found
No related tags found
No related merge requests found
......@@ -16,20 +16,44 @@ class Command(BaseCommand):
default=False,
help="Do not execute anything",
)
parser.add_argument(
"--mimetypes",
action="store_true",
dest="mimetypes",
default=True,
help="Check and fix mimetypes",
)
parser.add_argument(
"--audio-data",
action="store_true",
dest="data",
default=False,
help="Check and fix bitrate and duration, can be really slow because it needs to access files",
)
parser.add_argument(
"--size",
action="store_true",
dest="size",
default=False,
help="Check and fix file size, can be really slow because it needs to access files",
)
def handle(self, *args, **options):
if options["dry_run"]:
self.stdout.write("Dry-run on, will not commit anything")
self.fix_mimetypes(**options)
self.fix_file_data(**options)
self.fix_file_size(**options)
if options["mimetypes"]:
self.fix_mimetypes(**options)
if options["data"]:
self.fix_file_data(**options)
if options["size"]:
self.fix_file_size(**options)
@transaction.atomic
def fix_mimetypes(self, dry_run, **kwargs):
self.stdout.write("Fixing missing mimetypes...")
matching = models.Upload.objects.filter(source__startswith="file://").exclude(
mimetype__startswith="audio/"
)
matching = models.Upload.objects.filter(
Q(source__startswith="file://") | Q(source__startswith="upload://")
).exclude(mimetype__startswith="audio/")
self.stdout.write(
"[mimetypes] {} entries found with bad or no mimetype".format(
matching.count()
......
......@@ -22,6 +22,8 @@ def guess_mimetype(f):
mt, _ = mimetypes.guess_type(f.name)
if mt:
t = mt
else:
t = EXTENSION_TO_MIMETYPE.get(f.name.split(".")[-1])
return t
......
......@@ -824,6 +824,7 @@ def test_user_can_create_draft_upload(
assert upload.source == "upload://test"
assert upload.import_reference == "test"
assert upload.import_status == "draft"
assert upload.mimetype == "audio/ogg"
assert upload.track is None
m.assert_not_called()
......
Fixed mimetype detection issue that broke transcoding on some tracks (#1093). Run ``python manage.py fix_uploads --mimetypes`` to set proper mimetypes on existing uploads.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment