0.1.0
ChatServiceApp
This commit is contained in:
0
ChatServiceApp/__init__.py
Normal file
0
ChatServiceApp/__init__.py
Normal file
3
ChatServiceApp/admin.py
Normal file
3
ChatServiceApp/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
6
ChatServiceApp/apps.py
Normal file
6
ChatServiceApp/apps.py
Normal 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
17
ChatServiceApp/forms.py
Normal 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'
|
||||
]
|
||||
58
ChatServiceApp/migrations/0001_initial.py
Normal file
58
ChatServiceApp/migrations/0001_initial.py
Normal 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,
|
||||
},
|
||||
),
|
||||
]
|
||||
0
ChatServiceApp/migrations/__init__.py
Normal file
0
ChatServiceApp/migrations/__init__.py
Normal file
53
ChatServiceApp/models.py
Normal file
53
ChatServiceApp/models.py
Normal 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
3
ChatServiceApp/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
ChatServiceApp/views.py
Normal file
3
ChatServiceApp/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user