mirror of
https://github.com/Ai-hack-MAGNUM-OPUS/backend.git
synced 2024-11-24 09:13:44 +03:00
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
import magic
|
|
|
|
from django.db.models.signals import post_save
|
|
from django.core.files import File
|
|
from django.dispatch import receiver
|
|
from celery import chain
|
|
|
|
from checker.models import Docx, WordDocx
|
|
from checker.services.file import doc_to_docx, doc_to_odt
|
|
from checker.tasks import process_file, process_word, highlight_file
|
|
|
|
|
|
@receiver(post_save, sender=Docx)
|
|
def create_docs(sender, instance, created, **kwargs):
|
|
if created:
|
|
type = magic.from_file(instance.file.path, mime=True)
|
|
if type == "application/msword":
|
|
pth = doc_to_docx(instance.file.path)
|
|
with open(pth, 'rb') as f:
|
|
instance.file = File(f, name=pth.split("/")[-1])
|
|
instance.save(update_fields=["file"])
|
|
elif type == "application/vnd.oasis.opendocument.text":
|
|
pth = doc_to_odt(instance.file.path)
|
|
with open(pth, 'rb') as f:
|
|
instance.file = File(f, name=pth.split("/")[-1])
|
|
instance.save(update_fields=["file"])
|
|
|
|
chain(process_file.s(instance.pk), highlight_file.s()).apply_async()
|
|
return
|
|
|
|
|
|
@receiver(post_save, sender=WordDocx)
|
|
def create_docs(sender, instance, created, **kwargs):
|
|
if created:
|
|
process_word.apply_async(kwargs={"pk": instance.pk})
|
|
return
|
|
|