diff --git a/ChatServiceApp/forms.py b/ChatServiceApp/forms.py index 48631d8..116f7c3 100644 --- a/ChatServiceApp/forms.py +++ b/ChatServiceApp/forms.py @@ -11,7 +11,7 @@ class TicketForm(forms.ModelForm): class Meta: model = MsgGroup exclude = [ - 'files' + 'files', 'status', 'owner', 'manager' # 'name', 'name_plural', 'order', 'createDT', 'modifiedDT', 'enable', 'json_data', # 'receive_msg_by_sms', 'owner', 'owner_type' ] \ No newline at end of file diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index d86604a..1df758a 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -14,13 +14,13 @@ from django.urls import reverse @login_required(login_url='/profile/login/') def support_create_ticket_form_ajax(request): - from ChatServiceApp.forms import CreateTicketForm + from ChatServiceApp.forms import TicketForm if request.method != 'POST': raise Http404 Dict = { - 'forms': CreateTicketForm() + 'form': TicketForm() } html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request) diff --git a/ChatServiceApp/migrations/0002_msggroup_manager_msggroup_owner.py b/ChatServiceApp/migrations/0002_msggroup_manager_msggroup_owner.py new file mode 100644 index 0000000..4ef4cb5 --- /dev/null +++ b/ChatServiceApp/migrations/0002_msggroup_manager_msggroup_owner.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.2 on 2023-08-01 17:57 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('ChatServiceApp', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='msggroup', + name='manager', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_msgGroups_for_manager', to=settings.AUTH_USER_MODEL, verbose_name='Менеджер'), + ), + migrations.AddField( + model_name='msggroup', + name='owner', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_msgGroups_for_owner', to=settings.AUTH_USER_MODEL, verbose_name='Владелец'), + ), + ] diff --git a/ChatServiceApp/models.py b/ChatServiceApp/models.py index b55eb1f..008d5ad 100644 --- a/ChatServiceApp/models.py +++ b/ChatServiceApp/models.py @@ -1,6 +1,6 @@ from django.db import models from BaseModels.base_models import BaseModel - +from django.utils.translation import gettext_lazy as _ msg_type_choices = ( ('support', 'техподдержка'), @@ -26,9 +26,16 @@ grp_msg_department = ( class MsgGroup(BaseModel): + from AuthApp.models import User + department = models.CharField(verbose_name='Отдел', default='support', choices=grp_msg_department) status = models.CharField(verbose_name='Статус', default='open', choices=grp_msg_status) + owner = models.ForeignKey(User, verbose_name=_('Владелец'), related_name='rel_msgGroups_for_owner', + on_delete=models.SET_NULL, null=True) + manager = models.ForeignKey(User, verbose_name=_('Менеджер'), related_name='rel_msgGroups_for_manager', + on_delete=models.SET_NULL, null=True) + class Message(BaseModel): from AuthApp.models import User diff --git a/static/css/styles(boris).css b/static/css/styles(boris).css index 054a738..6997ea1 100644 --- a/static/css/styles(boris).css +++ b/static/css/styles(boris).css @@ -86,17 +86,38 @@ width: 100%; } - -.el-form-create-ticket{ +.el-form-create-ticket-select{ + height: 62px; width: 100%; - height: 50px; filter: drop-shadow(-1px 4px 10px rgba(198, 199, 203, 0.20)) drop-shadow(0px -1px 10px rgba(198, 199, 203, 0.20)); border-radius: 3px; - margin-bottom: 20px; + margin-bottom: 5px; + padding: 20px; +} + +.el-form-create-ticket-select:focus-visible{ + border: none; + outline: none; +} + +.el-form-create-ticket-select > option { + border: none; + outline: none; + -webkit-appearance: none; + -webkit-border-radius: 0; + outline-offset: -1px; +} + +.el-form-create-ticket{ + width: calc(100% - 40px); + height: 20px; + filter: drop-shadow(-1px 4px 10px rgba(198, 199, 203, 0.20)) drop-shadow(0px -1px 10px rgba(198, 199, 203, 0.20)); + border-radius: 3px; + margin-bottom: 5px; /*min-width: unset;*/ /*max-width: unset;*/ /*min-height: unset;*/ - /*padding: 10px;*/ + padding: 20px; } /*.el-form-create-ticket:last-child{*/ @@ -110,9 +131,14 @@ .el-form-create-ticket-textarea{ min-height: 200px; - min-width: 100%; - max-width: 100%; + min-width: calc(100% - 40px); + max-width: calc(100% - 40px); resize: none; + padding: 20px; +} + +.container-input-form-create-ticket{ + margin-bottom: 20px; } .el-form-create-ticket-textarea:focus-visible{ diff --git a/static/js/user_profile(boris).js b/static/js/user_profile(boris).js index fa332db..33a47df 100644 --- a/static/js/user_profile(boris).js +++ b/static/js/user_profile(boris).js @@ -18,7 +18,7 @@ function createTicketShow () { } function countLetters () { - let area = document.querySelector("textarea[name=enter-message]") + let area = document.querySelector(".el-form-create-ticket-textarea") let count = area.value.length if (count <= 500) { let ins_area = document.querySelector(".letrs-count-span") @@ -46,11 +46,13 @@ function inputQuest (){ function attachFileCreateTicket () { - event.preventDefault() - let input = document.querySelector(".create-ticket-file") - input.click() - console.log("asd") - let data = input.value + let input = inputQuest() + let file = input.files[0] + // let file_url = URL.createObjectURL(file) + + + + let data = file $.ajax({ headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() }, url: '/ru/user_account/support_create_ticket_ajax/', @@ -98,11 +100,12 @@ function attachFilemeassge () { } function createTicket (el) { + event.preventDefault() let form = el.form - let formData = new formData (form) + var formData = new FormData(form); $.ajax({ headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() }, - url: '/ru/user_account/support_create_ticket_ajax/', + url: '/ru/messages/create_ticket/', type: "POST", // async: true, cache: false, @@ -115,5 +118,10 @@ function createTicket (el) { document.querySelector(".insert-tech-place").innerHTML = data.html; }, + error: function (data){ + + document.querySelector(".insert-tech-place").innerHTML = data.responseJSON.html; + + } }); } diff --git a/templates/blocks/profile/b_create_ticket.html b/templates/blocks/profile/b_create_ticket.html index c497cd1..a7b3787 100644 --- a/templates/blocks/profile/b_create_ticket.html +++ b/templates/blocks/profile/b_create_ticket.html @@ -4,32 +4,39 @@ {% if errors.all__ %}
{{ errors.all__ }}
{% endif %} {% csrf_token %} - - {% if form.errors.department %}
{{ form.errors.department }}
{% endif %} - - {% if form.errors.name %}
{{ form.errors.name }}
{% endif %} - -
0/500
- - {% if form.errors.text %}
{{ form.errors.text }}
{% endif %} - +
+ + {% if form.errors.department %}
{{ form.errors.department }}
{% endif %} +
+
+ + {% if form.errors.name %}
{{ form.errors.name }}
{% endif %} +
+
+
0/500
+ + {% if form.errors.text %}
{{ form.errors.text }}
{% endif %} +
- + {# #}