1
0
Fork 0
mirror of https://github.com/EDeev/api_processor.git synced 2026-10-07 20:49:34 +03:00
api_processor/api_app/models.py
Egor Deev 7465fce2b7 Документы: экранирование текста, расширения в любом регистре, верный тип картинок
- текст документа вставлялся в HTML как есть — XSS у потребителя, который отрисует
  результат; теперь текст и таблицы экранируются;
- файл с расширением .PDF или .DOCX давал пустой результат;
- картинки из DOCX и PDF всегда помечались image/png; теперь — настоящий тип, а сырые
  потоки PDF без формата картинки пропускаются; пустые ячейки таблиц — пустые строки.
2026-10-06 00:38:57 +00:00

25 lines
825 B
Python

# api_project/api_app/models.py
from django.db import models
import uuid
import os
def get_file_path(instance, filename):
ext = filename.split('.')[-1].lower()
filename = f"{uuid.uuid4()}.{ext}"
return os.path.join('uploads', filename)
class AudioFile(models.Model):
file = models.FileField(upload_to=get_file_path)
uploaded_at = models.DateTimeField(auto_now_add=True)
processed_text = models.TextField(blank=True, null=True)
def __str__(self):
return f"Audio {self.id} - {self.uploaded_at}"
class DocumentFile(models.Model):
file = models.FileField(upload_to=get_file_path)
uploaded_at = models.DateTimeField(auto_now_add=True)
processed_text = models.TextField(blank=True, null=True)
def __str__(self):
return f"Document {self.id} - {self.uploaded_at}"