From d7fbf164433270056adb4076180b0333e54036ad Mon Sep 17 00:00:00 2001 From: Mukhtar Date: Tue, 6 Sep 2016 17:07:59 +0300 Subject: [PATCH] #ARC-16 Fixes files delete --- assets/css/extra.css | 4 ++++ assets/js/chat.js | 15 ++++++++----- chat/chat.py | 8 ++++++- chat/migrations/0011_documents_is_delete.py | 20 ++++++++++++++++++ chat/models.py | 1 + chat/serializers.py | 9 ++++---- chat/templates/chat_contractor.html | 21 +++++++++++-------- chat/templates/chat_customer.html | 21 ++++++++++--------- .../migrations/0026_auto_20160906_1621.py | 20 ++++++++++++++++++ 9 files changed, 90 insertions(+), 29 deletions(-) create mode 100644 chat/migrations/0011_documents_is_delete.py create mode 100644 projects/migrations/0026_auto_20160906_1621.py diff --git a/assets/css/extra.css b/assets/css/extra.css index 9d3ee0c..0be3fb1 100644 --- a/assets/css/extra.css +++ b/assets/css/extra.css @@ -134,3 +134,7 @@ float: none; margin: 19px 0 -10px 0; } + +.documentsChat > p { + font-size: 20px; +} diff --git a/assets/js/chat.js b/assets/js/chat.js index c5632e1..f38847e 100644 --- a/assets/js/chat.js +++ b/assets/js/chat.js @@ -191,7 +191,6 @@ $(function () { }) }); - //Удаление документа $('.tab-content').on('click','.remove-document', function(e){ e.preventDefault(); @@ -199,10 +198,11 @@ $(function () { var _this = $(this); $.ajax({ url: '/api/documents/' + dataId +'/', - type: 'DELETE', + type: 'PATCH', beforeSend: function (xhr) { xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')) }, + data: {is_delete:true}, dataType: 'json', success: function(json){ _this.parent().remove(); @@ -214,9 +214,7 @@ $(function () { }); }); - // Вытащить сообщения для конактов - $('.user-block').on('click', function () { var contactId = $(this).attr('data-id'); $("#contact-chat-form #recipentContactId").val(contactId); @@ -244,6 +242,8 @@ $(function () { 'operand': 'in', 'sender_id': userId, 'recipent_id': contactId, + 'is_delete': false, + 'is_send': true, }, dataType: 'json', @@ -368,6 +368,11 @@ $(function () { var orderId = $("#chat-order-add #orderId").val(); if (chatMessage) { + var sendLinks = $("#document-send-order a"); + var sendLinkIds = ""; + $.each(sendLinks, function(i, v){ + sendLinkIds += $(this).attr('data-id') + ';'; + }); socket.add_contact_message({ "format_type": "add_message_order", "data": { @@ -375,7 +380,7 @@ $(function () { "recipent_id": recipentId, "chat_message": chatMessage, "order_id": orderId, - + "document_send_links": sendLinkIds, } }); diff --git a/chat/chat.py b/chat/chat.py index 171bd6d..7c53ff4 100644 --- a/chat/chat.py +++ b/chat/chat.py @@ -59,7 +59,7 @@ class ChatHandler(websocket.WebSocketHandler): order_id = message_data['data'].get('order_id', None) team_id = message_data['data'].get('team_id', None) message = message_data['data'].get('chat_message', None) - document_send_links = message_data['data'].get('document_send_links', None) + docs_send_links = message_data['data'].get('document_send_links', None) message = html.escape(message) message = message.replace('\n', '
') @@ -84,6 +84,12 @@ class ChatHandler(websocket.WebSocketHandler): cursor = cursor_list.get('cursor') result = cursor.fetchone() message_id = result[0] + if docs_send_links: + is_send = 'true' + docs_send_ids = docs_send_links.rstrip(';').replace(';', ',') + update_sql_documents = "UPDATE chat_documents SET message_id={0},is_send={1} WHERE id IN({2})".format(message_id, is_send, docs_send_ids) + yield self.db.execute(update_sql_documents) + select_last_sql = "SELECT chat_message.id, chat_message.text, chat_message.created, chat_message.sender_id," \ "users_user.id, users_user.username FROM chat_message" \ " INNER JOIN users_user ON (chat_message.sender_id = users_user.id)" \ diff --git a/chat/migrations/0011_documents_is_delete.py b/chat/migrations/0011_documents_is_delete.py new file mode 100644 index 0000000..89783b7 --- /dev/null +++ b/chat/migrations/0011_documents_is_delete.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-06 13:33 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0010_auto_20160901_1247'), + ] + + operations = [ + migrations.AddField( + model_name='documents', + name='is_delete', + field=models.BooleanField(default=False), + ), + ] diff --git a/chat/models.py b/chat/models.py index 585c754..f372c27 100644 --- a/chat/models.py +++ b/chat/models.py @@ -47,6 +47,7 @@ class Documents(models.Model): recipent = models.ForeignKey(User, related_name='recipent_documents', null=True, blank=True) created = models.DateTimeField(auto_now_add=True) is_send = models.BooleanField(default=False) + is_delete = models.BooleanField(default=False) message = models.ForeignKey(Message, related_name='documents', null=True, blank=True) def __str__(self): diff --git a/chat/serializers.py b/chat/serializers.py index 99a7d9c..d8c07cc 100644 --- a/chat/serializers.py +++ b/chat/serializers.py @@ -23,6 +23,7 @@ class DocumentsSerializer(ModelSerializer): 'team', 'order', 'is_send', + 'is_delete', 'message', ) @@ -59,10 +60,10 @@ class MessageSerializer(ModelSerializer): def get_text(self, obj): out = obj.text - # documents = obj.documents.all() - # if len(documents)>0: - # documents_str = '
'.join([doc.file.name for doc in documents]) - # out += '
' + documents_str + documents = obj.documents.all() + if len(documents)>0: + documents_str = '
'.join(['' + doc.file.name + '' for doc in documents]) + out += '
' + documents_str return out diff --git a/chat/templates/chat_contractor.html b/chat/templates/chat_contractor.html index 4aef569..d5b083c 100644 --- a/chat/templates/chat_contractor.html +++ b/chat/templates/chat_contractor.html @@ -89,12 +89,12 @@
-

Входящие документы

+

Прикрепленные документы

-{# #} -{# Распечатать с помощью ресурса#} -{# #} + + Распечатать с помощью ресурса +
    @@ -206,11 +206,11 @@
    -

    Входящие документы

    +

    Прикрепленные документы

      -{# #} -{# Распечатать с помощью ресурса#} -{# #} + + Распечатать с помощью ресурса +
      @@ -553,6 +553,7 @@ var docList = document.getElementById('documentOrderSpace'); var inbox = document.getElementById('message-chat-order-space'); inbox.innerHTML = ''; + docList.innerHTML = ''; $.ajax({ url: '/api/message', @@ -579,7 +580,9 @@ type: 'GET', data:{ csrfmiddlewaretoken: csrftoken, - 'order': orderId + 'order': orderId, + 'is_delete': false, + 'is_send': true, }, dataType: 'json', success: function (json){ diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html index 2a8ad15..e58861a 100644 --- a/chat/templates/chat_customer.html +++ b/chat/templates/chat_customer.html @@ -83,12 +83,12 @@
      -

      Входящие документы

      +

      Прикрепленные документы

      -{# #} -{# Распечатать с помощью ресурса#} -{# #} + + Распечатать с помощью ресурса +
      @@ -207,11 +207,11 @@
      -

      Входящие документы

      +

      Прикрепленные документы

        -{# #} -{# Распечатать с помощью ресурса#} -{# #} + + Распечатать с помощью ресурса +
        @@ -635,7 +635,6 @@ }); - // Для заказов все вытащить $('.order-block').on('click', function () { $("#chat-order-add").css("display", "block"); @@ -668,7 +667,9 @@ type: 'GET', data:{ csrfmiddlewaretoken: csrftoken, - 'order': orderId + 'order': orderId, + 'is_delete': false, + 'is_send': true, }, dataType: 'json', success: function (json){ diff --git a/projects/migrations/0026_auto_20160906_1621.py b/projects/migrations/0026_auto_20160906_1621.py new file mode 100644 index 0000000..be9b4a3 --- /dev/null +++ b/projects/migrations/0026_auto_20160906_1621.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-06 13:21 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0025_merge'), + ] + + operations = [ + migrations.AlterField( + model_name='stage', + name='status', + field=models.CharField(choices=[('not_agreed', 'Не согласован'), ('send_approve', 'На согласовании'), ('cancel_approve', 'Исполнитель отказался'), ('in_process', 'В процессе'), ('completed', 'Завершен')], default='not_agreed', max_length=30), + ), + ]