- ApiClient теперь обрабатывает 401 и 403 ошибки для обновления токена - Добавлен JWTRefreshMiddleware для проактивного обновления токенов за 5 минут до истечения - Добавлена настройка JWT_REFRESH_THRESHOLD_MINUTES (по умолчанию 5) - Исправлена проблема с периодическими 403 ошибками после истечения access token
35 lines
2.0 KiB
Python
35 lines
2.0 KiB
Python
# Generated by Django 5.2.4 on 2025-11-20 12:01
|
|
|
|
import django.db.models.deletion
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('communications', '0009_message_deleted_at_message_deleted_by_and_more'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='MessageAttachment',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('file', models.FileField(upload_to='chat_attachments/%Y/%m/%d/', verbose_name='Файл')),
|
|
('file_type', models.CharField(choices=[('image', 'Изображение'), ('video', 'Видео'), ('audio', 'Аудио'), ('file', 'Файл')], max_length=10, verbose_name='Тип файла')),
|
|
('file_name', models.CharField(max_length=255, verbose_name='Название файла')),
|
|
('file_size', models.BigIntegerField(verbose_name='Размер файла (байты)')),
|
|
('mime_type', models.CharField(blank=True, max_length=100, verbose_name='MIME тип')),
|
|
('uploaded_at', models.DateTimeField(auto_now_add=True, verbose_name='Время загрузки')),
|
|
('thumbnail', models.ImageField(blank=True, help_text='Для изображений и видео', null=True, upload_to='chat_attachments/thumbnails/%Y/%m/%d/', verbose_name='Миниатюра')),
|
|
('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='communications.message', verbose_name='Сообщение')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Вложение',
|
|
'verbose_name_plural': 'Вложения',
|
|
'ordering': ['uploaded_at'],
|
|
'indexes': [models.Index(fields=['message', 'file_type'], name='communicati_message_7ec201_idx'), models.Index(fields=['uploaded_at'], name='communicati_uploade_015a96_idx')],
|
|
},
|
|
),
|
|
]
|