#ARC-16 Fixes files delete

remotes/origin/PR-39
Mukhtar 10 years ago
parent ab01da98aa
commit d7fbf16443
  1. 4
      assets/css/extra.css
  2. 15
      assets/js/chat.js
  3. 8
      chat/chat.py
  4. 20
      chat/migrations/0011_documents_is_delete.py
  5. 1
      chat/models.py
  6. 9
      chat/serializers.py
  7. 21
      chat/templates/chat_contractor.html
  8. 21
      chat/templates/chat_customer.html
  9. 20
      projects/migrations/0026_auto_20160906_1621.py

@ -134,3 +134,7 @@
float: none; float: none;
margin: 19px 0 -10px 0; margin: 19px 0 -10px 0;
} }
.documentsChat > p {
font-size: 20px;
}

@ -191,7 +191,6 @@ $(function () {
}) })
}); });
//Удаление документа //Удаление документа
$('.tab-content').on('click','.remove-document', function(e){ $('.tab-content').on('click','.remove-document', function(e){
e.preventDefault(); e.preventDefault();
@ -199,10 +198,11 @@ $(function () {
var _this = $(this); var _this = $(this);
$.ajax({ $.ajax({
url: '/api/documents/' + dataId +'/', url: '/api/documents/' + dataId +'/',
type: 'DELETE', type: 'PATCH',
beforeSend: function (xhr) { beforeSend: function (xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')) xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))
}, },
data: {is_delete:true},
dataType: 'json', dataType: 'json',
success: function(json){ success: function(json){
_this.parent().remove(); _this.parent().remove();
@ -214,9 +214,7 @@ $(function () {
}); });
}); });
// Вытащить сообщения для конактов // Вытащить сообщения для конактов
$('.user-block').on('click', function () { $('.user-block').on('click', function () {
var contactId = $(this).attr('data-id'); var contactId = $(this).attr('data-id');
$("#contact-chat-form #recipentContactId").val(contactId); $("#contact-chat-form #recipentContactId").val(contactId);
@ -244,6 +242,8 @@ $(function () {
'operand': 'in', 'operand': 'in',
'sender_id': userId, 'sender_id': userId,
'recipent_id': contactId, 'recipent_id': contactId,
'is_delete': false,
'is_send': true,
}, },
dataType: 'json', dataType: 'json',
@ -368,6 +368,11 @@ $(function () {
var orderId = $("#chat-order-add #orderId").val(); var orderId = $("#chat-order-add #orderId").val();
if (chatMessage) { if (chatMessage) {
var sendLinks = $("#document-send-order a");
var sendLinkIds = "";
$.each(sendLinks, function(i, v){
sendLinkIds += $(this).attr('data-id') + ';';
});
socket.add_contact_message({ socket.add_contact_message({
"format_type": "add_message_order", "format_type": "add_message_order",
"data": { "data": {
@ -375,7 +380,7 @@ $(function () {
"recipent_id": recipentId, "recipent_id": recipentId,
"chat_message": chatMessage, "chat_message": chatMessage,
"order_id": orderId, "order_id": orderId,
"document_send_links": sendLinkIds,
} }
}); });

@ -59,7 +59,7 @@ class ChatHandler(websocket.WebSocketHandler):
order_id = message_data['data'].get('order_id', None) order_id = message_data['data'].get('order_id', None)
team_id = message_data['data'].get('team_id', None) team_id = message_data['data'].get('team_id', None)
message = message_data['data'].get('chat_message', 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 = html.escape(message)
message = message.replace('\n', '<br />') message = message.replace('\n', '<br />')
@ -84,6 +84,12 @@ class ChatHandler(websocket.WebSocketHandler):
cursor = cursor_list.get('cursor') cursor = cursor_list.get('cursor')
result = cursor.fetchone() result = cursor.fetchone()
message_id = result[0] 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," \ 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" \ "users_user.id, users_user.username FROM chat_message" \
" INNER JOIN users_user ON (chat_message.sender_id = users_user.id)" \ " INNER JOIN users_user ON (chat_message.sender_id = users_user.id)" \

@ -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),
),
]

@ -47,6 +47,7 @@ class Documents(models.Model):
recipent = models.ForeignKey(User, related_name='recipent_documents', null=True, blank=True) recipent = models.ForeignKey(User, related_name='recipent_documents', null=True, blank=True)
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
is_send = models.BooleanField(default=False) is_send = models.BooleanField(default=False)
is_delete = models.BooleanField(default=False)
message = models.ForeignKey(Message, related_name='documents', null=True, blank=True) message = models.ForeignKey(Message, related_name='documents', null=True, blank=True)
def __str__(self): def __str__(self):

@ -23,6 +23,7 @@ class DocumentsSerializer(ModelSerializer):
'team', 'team',
'order', 'order',
'is_send', 'is_send',
'is_delete',
'message', 'message',
) )
@ -59,10 +60,10 @@ class MessageSerializer(ModelSerializer):
def get_text(self, obj): def get_text(self, obj):
out = obj.text out = obj.text
# documents = obj.documents.all() documents = obj.documents.all()
# if len(documents)>0: if len(documents)>0:
# documents_str = '<br />'.join([doc.file.name for doc in documents]) documents_str = '<br />'.join(['<a href="'+doc.file.url+'">' + doc.file.name + '</a>' for doc in documents])
# out += '<br />' + documents_str out += '<br />' + documents_str
return out return out

@ -89,12 +89,12 @@
<div class="col-lg-3 wrChat1"> <div class="col-lg-3 wrChat1">
<div class="col-lg-12 documentsChat"> <div class="col-lg-12 documentsChat">
<p>Входящие документы</p> <p>Прикрепленные документы</p>
<ul id="documentSpace"> <ul id="documentSpace">
</ul> </ul>
{# <a href="javascript:void(0)">#} <a href="{% url 'common:create' %}">
{# Распечатать с помощью ресурса#} Распечатать с помощью ресурса
{# </a>#} </a>
</div> </div>
<div class="textAreaBlock2 box-sizing disTab"> <div class="textAreaBlock2 box-sizing disTab">
<ul class="contractor-notes-block"> <ul class="contractor-notes-block">
@ -206,11 +206,11 @@
<!-- --> <!-- -->
<div class="col-lg-12 documentsChat"> <div class="col-lg-12 documentsChat">
<p>Входящие документы</p> <p>Прикрепленные документы</p>
<ul id="documentOrderSpace"></ul> <ul id="documentOrderSpace"></ul>
{# <a href="javascript:void(0)">#} <a href="{% url 'common:create' %}">
{# Распечатать с помощью ресурса#} Распечатать с помощью ресурса
{# </a>#} </a>
</div> </div>
<div class="textAreaBlock2 box-sizing disTab"> <div class="textAreaBlock2 box-sizing disTab">
@ -553,6 +553,7 @@
var docList = document.getElementById('documentOrderSpace'); var docList = document.getElementById('documentOrderSpace');
var inbox = document.getElementById('message-chat-order-space'); var inbox = document.getElementById('message-chat-order-space');
inbox.innerHTML = ''; inbox.innerHTML = '';
docList.innerHTML = '';
$.ajax({ $.ajax({
url: '/api/message', url: '/api/message',
@ -579,7 +580,9 @@
type: 'GET', type: 'GET',
data:{ data:{
csrfmiddlewaretoken: csrftoken, csrfmiddlewaretoken: csrftoken,
'order': orderId 'order': orderId,
'is_delete': false,
'is_send': true,
}, },
dataType: 'json', dataType: 'json',
success: function (json){ success: function (json){

@ -83,12 +83,12 @@
</div> </div>
<div class="col-lg-3 wrChat1"> <div class="col-lg-3 wrChat1">
<div class="col-lg-12 documentsChat"> <div class="col-lg-12 documentsChat">
<p>Входящие документы</p> <p>Прикрепленные документы</p>
<ul id="documentSpace"> <ul id="documentSpace">
</ul> </ul>
{# <a href="javascript:void(0)">#} <a href="{% url 'common:create' %}">
{# Распечатать с помощью ресурса#} Распечатать с помощью ресурса
{# </a>#} </a>
</div> </div>
<div class="textAreaBlock2 box-sizing disTab"> <div class="textAreaBlock2 box-sizing disTab">
@ -207,11 +207,11 @@
</div> </div>
<div class="col-lg-12 documentsChat"> <div class="col-lg-12 documentsChat">
<p>Входящие документы</p> <p>Прикрепленные документы</p>
<ul id="documentOrderSpace"></ul> <ul id="documentOrderSpace"></ul>
{# <a href="javascript:void(0)">#} <a href="{% url 'common:create' %}">
{# Распечатать с помощью ресурса#} Распечатать с помощью ресурса
{# </a>#} </a>
</div> </div>
<div class="textAreaBlock2 box-sizing disTab"> <div class="textAreaBlock2 box-sizing disTab">
@ -635,7 +635,6 @@
}); });
// Для заказов все вытащить // Для заказов все вытащить
$('.order-block').on('click', function () { $('.order-block').on('click', function () {
$("#chat-order-add").css("display", "block"); $("#chat-order-add").css("display", "block");
@ -668,7 +667,9 @@
type: 'GET', type: 'GET',
data:{ data:{
csrfmiddlewaretoken: csrftoken, csrfmiddlewaretoken: csrftoken,
'order': orderId 'order': orderId,
'is_delete': false,
'is_send': true,
}, },
dataType: 'json', dataType: 'json',
success: function (json){ success: function (json){

@ -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),
),
]
Loading…
Cancel
Save