You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
3.4 KiB

# Generated by Django 4.2.30 on 2026-09-15 12:13
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('profiles', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='ChatRoom',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('room_type', models.CharField(choices=[('direct', 'Direct Message'), ('group', 'Group Conversation')], default='direct', max_length=20, verbose_name='Room Type')),
('title', models.CharField(blank=True, max_length=255, null=True, verbose_name='Conversation Title')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Last Activity')),
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_chat_rooms', to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
('participant_institutions', models.ManyToManyField(blank=True, related_name='chat_rooms', to='profiles.institution', verbose_name='Participant Institutions')),
('participant_users', models.ManyToManyField(blank=True, related_name='chat_rooms', to=settings.AUTH_USER_MODEL, verbose_name='Participant Users')),
],
options={
'verbose_name': 'Chat Room',
'verbose_name_plural': 'Chat Rooms',
'ordering': ('-updated_at',),
},
),
migrations.CreateModel(
name='ChatMessage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.TextField(blank=True, null=True, verbose_name='Message Text')),
('attachment', models.FileField(blank=True, null=True, upload_to='chat/attachments/%Y/%m/', verbose_name='Attachment File')),
('attachment_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Attachment Filename')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Timestamp')),
('read_by', models.ManyToManyField(blank=True, related_name='read_chat_messages', to=settings.AUTH_USER_MODEL, verbose_name='Read Receipts')),
('room', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='chat.chatroom', verbose_name='Chat Room')),
('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sent_chat_messages', to=settings.AUTH_USER_MODEL, verbose_name='Sender')),
('sender_institution', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='institution_chat_messages', to='profiles.institution', verbose_name='Sender Institution Affiliation')),
],
options={
'verbose_name': 'Chat Message',
'verbose_name_plural': 'Chat Messages',
'ordering': ('created_at',),
},
),
]