0.1.0
ChatServiceApp
This commit is contained in:
@@ -14,6 +14,9 @@ urlpatterns = [
|
||||
path('my_routes/', my_routes_ajax, name='my_routes_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_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'),
|
||||
]
|
||||
@@ -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)
|
||||
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):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
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.
|
||||
18
RoutesApp/migrations/0004_alter_route_type_transport.py
Normal file
18
RoutesApp/migrations/0004_alter_route_type_transport.py
Normal 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='Выберите способ перевозки'),
|
||||
),
|
||||
]
|
||||
@@ -48,6 +48,7 @@ INSTALLED_APPS = [
|
||||
'AuthApp',
|
||||
'RoutesApp',
|
||||
'ReferenceDataApp',
|
||||
'ChatServiceApp',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
||||
Reference in New Issue
Block a user