mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-18 22:36:29 +00:00
dc278a6064
For the coming features we will need to store files on the meet side. (for instance user backgrounds). This commits adds a new Model to manage files, and the associated serializers & viewsets. All are tested. This work was heavily inspired by the work done by our friends at https://github.com/suitenumerique/drive It build on the same architecture design (upload directly to S3 but download goes through our proxy), but model is much much simplier (no folders, no file sharing, etc.).
43 lines
2.3 KiB
Python
43 lines
2.3 KiB
Python
# Generated by Django 5.2.11 on 2026-03-03 15:22
|
|
|
|
import django.db.models.deletion
|
|
import uuid
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('core', '0016_recording_options'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='File',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, help_text='primary key for the record as UUID', primary_key=True, serialize=False, verbose_name='id')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, help_text='date and time at which a record was created', verbose_name='created on')),
|
|
('updated_at', models.DateTimeField(auto_now=True, help_text='date and time at which a record was last updated', verbose_name='updated on')),
|
|
('type', models.CharField(choices=[('background_image', 'Background image')], max_length=25)),
|
|
('title', models.CharField(max_length=255, verbose_name='title')),
|
|
('deleted_at', models.DateTimeField(blank=True, null=True)),
|
|
('hard_deleted_at', models.DateTimeField(blank=True, null=True)),
|
|
('filename', models.CharField(max_length=255)),
|
|
('upload_state', models.CharField(choices=[('pending', 'Pending'), ('ready', 'Ready')], max_length=25)),
|
|
('mimetype', models.CharField(blank=True, max_length=255, null=True)),
|
|
('size', models.BigIntegerField(blank=True, null=True)),
|
|
('description', models.TextField(blank=True, null=True)),
|
|
('malware_detection_info', models.JSONField(blank=True, default=dict, help_text='Malware detection info when the analysis status is unsafe.', null=True)),
|
|
('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='files_created', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'verbose_name': 'File',
|
|
'verbose_name_plural': 'Files',
|
|
'db_table': 'file',
|
|
'ordering': ('created_at',),
|
|
'indexes': [models.Index(fields=['creator', 'type', '-created_at'], name='file_creator_730cce_idx')],
|
|
},
|
|
),
|
|
]
|