ChatServiceApp
This commit is contained in:
SDE
2023-07-31 14:35:31 +03:00
parent a0ed17bcdc
commit fafe645f37
13 changed files with 180 additions and 0 deletions

View File

3
ChatServiceApp/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
ChatServiceApp/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class ChatserviceappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'ChatServiceApp'

17
ChatServiceApp/forms.py Normal file
View File

@@ -0,0 +1,17 @@
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import gettext_lazy as _
from django.core.exceptions import ValidationError
from .models import *
class CreateTicketForm(forms.ModelForm):
text = forms.CharField(required=True)
# files = forms.CharField(required=True)
class Meta:
model = MsgGroup
exclude = [
'files'
# 'name', 'name_plural', 'order', 'createDT', 'modifiedDT', 'enable', 'json_data',
# 'receive_msg_by_sms', 'owner', 'owner_type'
]

View File

@@ -0,0 +1,58 @@
# Generated by Django 4.2.2 on 2023-07-31 14:34
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='MsgGroup',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
('department', models.CharField(choices=[('support', 'Отдел: Техническая поддержка'), ('finance', 'Отдел: Финансовый департамент')], default='support', verbose_name='Отдел')),
('status', models.CharField(choices=[('open', 'Открыт'), ('answered', 'Отвечен'), ('closed', 'Закрыт')], default='open', verbose_name='Статус')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='Message',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
('msg_type', models.CharField(choices=[('support', 'техподдержка'), ('private', 'личное')], default='private', max_length=50, verbose_name='Тип сообщения')),
('text', models.TextField(verbose_name='Сообщение')),
('status', models.CharField(choices=[('sended', 'Отправлено'), ('seen', 'Просмотрено')], default='sended', verbose_name='Статус')),
('files', models.JSONField(default=dict, verbose_name='Прикрепленные файлы')),
('group', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_messages_for_group', to='ChatServiceApp.msggroup', verbose_name='Группа сообщений')),
('receiver', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rel_messages_for_receiver', to=settings.AUTH_USER_MODEL, verbose_name='Получатель')),
('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rel_messages_for_sender', to=settings.AUTH_USER_MODEL, verbose_name='Отправитель')),
],
options={
'abstract': False,
},
),
]

View File

53
ChatServiceApp/models.py Normal file
View File

@@ -0,0 +1,53 @@
from django.db import models
from BaseModels.base_models import BaseModel
msg_type_choices = (
('support', 'техподдержка'),
('private', 'личное')
)
msg_status_choices = (
('sended', 'Отправлено'),
('seen', 'Просмотрено')
)
grp_msg_status = (
('open', 'Открыт'),
('answered', 'Отвечен'),
('closed', 'Закрыт')
)
grp_msg_department = (
('support', 'Отдел: Техническая поддержка'),
('finance', 'Отдел: Финансовый департамент'),
)
class MsgGroup(BaseModel):
department = models.CharField(verbose_name='Отдел', default='support', choices=grp_msg_department)
status = models.CharField(verbose_name='Статус', default='open', choices=grp_msg_status)
class Message(BaseModel):
from AuthApp.models import User
msg_type = models.CharField(max_length=50, verbose_name='Тип сообщения', default='private', choices=msg_type_choices)
group = models.ForeignKey(
MsgGroup, verbose_name='Группа сообщений', related_name='rel_messages_for_group',
on_delete=models.SET_NULL, null=True)
sender = models.ForeignKey(
User, verbose_name='Отправитель', on_delete=models.CASCADE, related_name='rel_messages_for_sender'
)
receiver = models.ForeignKey(
User, verbose_name='Получатель', on_delete=models.CASCADE, related_name='rel_messages_for_receiver'
)
text = models.TextField(verbose_name='Сообщение')
status = models.CharField(verbose_name='Статус', default='sended', choices=msg_status_choices)
files = models.JSONField(verbose_name='Прикрепленные файлы', default=dict)

3
ChatServiceApp/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
ChatServiceApp/views.py Normal file
View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.