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

@@ -14,6 +14,9 @@ urlpatterns = [
path('my_routes/', my_routes_ajax, name='my_routes_ajax'), path('my_routes/', my_routes_ajax, name='my_routes_ajax'),
path('subscribe/', subscribe_ajax, name='subscribe_ajax'), path('subscribe/', subscribe_ajax, name='subscribe_ajax'),
path('new_msg_to_user/', new_msg_to_user_ajax, name='new_msg_to_user' ), path('new_msg_to_user/', new_msg_to_user_ajax, name='new_msg_to_user' ),
path('new_msg_to_support/', new_msg_to_support_ajax, name='new_msg_to_support_ajax'), path('new_msg_to_support/', new_msg_to_support_ajax, name='new_msg_to_support_ajax'),
path('support_create_ticket_ajax/', support_create_ticket_ajax, name='support_create_ticket_ajax'),
path('change_profile/', change_profile_ajax, name='change_profile_ajax'), path('change_profile/', change_profile_ajax, name='change_profile_ajax'),
] ]

View File

@@ -43,6 +43,21 @@ def new_msg_to_support_ajax(request):
html = render_to_string('blocks/profile/b_new_msg_to_support.html', Dict, request=request) html = render_to_string('blocks/profile/b_new_msg_to_support.html', Dict, request=request)
return JsonResponse({'html': html}, status=200) return JsonResponse({'html': html}, status=200)
def support_create_ticket_ajax(request):
from ChatServiceApp.forms import CreateTicketForm
if request.method != 'POST':
raise Http404
Dict = {
'forms': CreateTicketForm()
}
html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request)
return JsonResponse({'html': html}, status=200)
def change_profile_ajax(request): def change_profile_ajax(request):
if request.method != 'POST': if request.method != 'POST':
raise Http404 raise Http404

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.

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.2 on 2023-07-31 14:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('RoutesApp', '0003_alter_route_type_transport'),
]
operations = [
migrations.AlterField(
model_name='route',
name='type_transport',
field=models.CharField(choices=[('', '-- Выберите cпособ перевозки --'), ('avia', 'Авиатранспорт'), ('road', 'Наземный транспорт')], default='', verbose_name='Выберите способ перевозки'),
),
]

View File

@@ -48,6 +48,7 @@ INSTALLED_APPS = [
'AuthApp', 'AuthApp',
'RoutesApp', 'RoutesApp',
'ReferenceDataApp', 'ReferenceDataApp',
'ChatServiceApp',
] ]
MIDDLEWARE = [ MIDDLEWARE = [