chat qo'shildi
This commit is contained in:
36
core/apps/chat/migrations/0001_initial_chat_message.py
Normal file
36
core/apps/chat/migrations/0001_initial_chat_message.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 5.2.7 on 2026-04-02 14:22
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('evaluation', '0026_alter_autoevaluationmodel_form_ownership_and_more'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ChatmessageModel',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('text', models.TextField(verbose_name='text')),
|
||||
('is_read', models.BooleanField(db_index=True, default=False, verbose_name='is read')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
|
||||
('auto_evaluation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chat_messages', to='evaluation.autoevaluationmodel', verbose_name='auto evaluation')),
|
||||
('sender', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='chat_messages', to=settings.AUTH_USER_MODEL, verbose_name='sender')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Chat Message',
|
||||
'verbose_name_plural': 'Chat Messages',
|
||||
'db_table': 'ChatMessage',
|
||||
'ordering': ['created_at'],
|
||||
'indexes': [models.Index(fields=['auto_evaluation_id', 'created_at'], name='chat_eval_date_idx'), models.Index(fields=['auto_evaluation_id', 'is_read'], name='chat_eval_read_idx')],
|
||||
},
|
||||
),
|
||||
]
|
||||
152
core/apps/chat/migrations/0002_chatroom_and_message_media.py
Normal file
152
core/apps/chat/migrations/0002_chatroom_and_message_media.py
Normal file
@@ -0,0 +1,152 @@
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import core.apps.chat.models.chat
|
||||
|
||||
|
||||
def delete_old_messages(apps, schema_editor):
|
||||
"""Eski xabarlarni o'chirish — room FK bilan mos kelmaydi."""
|
||||
ChatmessageModel = apps.get_model("chat", "ChatmessageModel")
|
||||
ChatmessageModel.objects.all().delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("chat", "0001_initial_chat_message"),
|
||||
("evaluation", "0026_alter_autoevaluationmodel_form_ownership_and_more"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# 1. ChatroomModel yaratish
|
||||
migrations.CreateModel(
|
||||
name="ChatroomModel",
|
||||
fields=[
|
||||
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("auto_evaluation", "AutoEvaluation xonasi"),
|
||||
("direct", "To\u2018g\u2018ridan-to\u2018g\u2018ri"),
|
||||
],
|
||||
db_index=True,
|
||||
default="auto_evaluation",
|
||||
max_length=20,
|
||||
verbose_name="type",
|
||||
),
|
||||
),
|
||||
(
|
||||
"auto_evaluation",
|
||||
models.OneToOneField(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="chat_room",
|
||||
to="evaluation.autoevaluationmodel",
|
||||
verbose_name="auto evaluation",
|
||||
),
|
||||
),
|
||||
(
|
||||
"members",
|
||||
models.ManyToManyField(
|
||||
blank=True,
|
||||
related_name="chat_rooms",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
verbose_name="members",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Chat Xona",
|
||||
"verbose_name_plural": "Chat Xonalar",
|
||||
"db_table": "ChatRoom",
|
||||
},
|
||||
),
|
||||
# 2. Eski xabarlarni o'chirish (room FKsiz migratsiya mumkin emas)
|
||||
migrations.RunPython(delete_old_messages, migrations.RunPython.noop),
|
||||
# 3. Eski indexlarni o'chirish
|
||||
migrations.RemoveIndex(
|
||||
model_name="chatmessagemodel",
|
||||
name="chat_eval_date_idx",
|
||||
),
|
||||
migrations.RemoveIndex(
|
||||
model_name="chatmessagemodel",
|
||||
name="chat_eval_read_idx",
|
||||
),
|
||||
# 4. auto_evaluation FK o'chirish
|
||||
migrations.RemoveField(
|
||||
model_name="chatmessagemodel",
|
||||
name="auto_evaluation",
|
||||
),
|
||||
# 5. room FK qo'shish
|
||||
migrations.AddField(
|
||||
model_name="chatmessagemodel",
|
||||
name="room",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="messages",
|
||||
to="chat.chatroommodel",
|
||||
verbose_name="room",
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
# 6. room ni non-null qilish
|
||||
migrations.AlterField(
|
||||
model_name="chatmessagemodel",
|
||||
name="room",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="messages",
|
||||
to="chat.chatroommodel",
|
||||
verbose_name="room",
|
||||
),
|
||||
),
|
||||
# 7. message_type qo'shish
|
||||
migrations.AddField(
|
||||
model_name="chatmessagemodel",
|
||||
name="message_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("text", "Matn"),
|
||||
("image", "Rasm"),
|
||||
("video", "Video"),
|
||||
("voice", "Ovoz"),
|
||||
("file", "Fayl"),
|
||||
],
|
||||
db_index=True,
|
||||
default="text",
|
||||
max_length=10,
|
||||
verbose_name="message type",
|
||||
),
|
||||
),
|
||||
# 8. text ni nullable qilish
|
||||
migrations.AlterField(
|
||||
model_name="chatmessagemodel",
|
||||
name="text",
|
||||
field=models.TextField(blank=True, null=True, verbose_name="text"),
|
||||
),
|
||||
# 9. file field qo'shish
|
||||
migrations.AddField(
|
||||
model_name="chatmessagemodel",
|
||||
name="file",
|
||||
field=models.FileField(
|
||||
blank=True,
|
||||
null=True,
|
||||
upload_to=core.apps.chat.models.chat.chat_file_upload_path,
|
||||
verbose_name="file",
|
||||
),
|
||||
),
|
||||
# 10. Yangi indexlar
|
||||
migrations.AddIndex(
|
||||
model_name="chatmessagemodel",
|
||||
index=models.Index(fields=["room_id", "created_at"], name="chat_room_date_idx"),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="chatmessagemodel",
|
||||
index=models.Index(fields=["room_id", "is_read"], name="chat_room_read_idx"),
|
||||
),
|
||||
]
|
||||
0
core/apps/chat/migrations/__init__.py
Normal file
0
core/apps/chat/migrations/__init__.py
Normal file
Reference in New Issue
Block a user