diff --git a/api/views.py b/api/views.py index a998e92..4ebd8d6 100755 --- a/api/views.py +++ b/api/views.py @@ -64,6 +64,17 @@ class DocumentViewSet(ModelViewSet): # filter_class = DocumentsFilterSet # permission_classes = (permissions.IsAuthenticatedOrReadOnly,) + def get_queryset(self): + queryset = Documents.objects.all() + search_param = self.request.query_params.get('operand', None) + recipent_id = self.request.query_params.get('recipent_id', None) + sender_id = self.request.query_params.get('sender_id', None) + if search_param: + # import code; code.interact(local=dict(globals(), **locals())) + if search_param == 'in': + queryset = queryset.filter(Q(sender__in=[sender_id,recipent_id]),Q(recipent__in=[sender_id,recipent_id])).order_by('created') + return queryset + class ProjectViewSet(ModelViewSet): queryset = Project.objects.all() diff --git a/assets/js/chat.js b/assets/js/chat.js index 123ec42..047012e 100644 --- a/assets/js/chat.js +++ b/assets/js/chat.js @@ -101,12 +101,9 @@ function csrfSafeMethod(method) { var socket = new SocketHandler(); var csrftoken = getCookie('csrftoken'); $(function () { - - var currentHash = URI(location.href).hash(); - console.log(currentHash); - if (currentHash.indexOf("#order") == 0) { + if (currentHash.indexOf("#order") == 0) { var ordHashId = currentHash.replace("#order", ""); setTimeout(function () { $("#orderBlock" + ordHashId).trigger('click'); @@ -177,7 +174,6 @@ $(function () { }); }); - // Добавление сообщения для заказа. $('#order-chat-add-message').on('click', function (e) { e.preventDefault(); @@ -255,18 +251,17 @@ $(function () { }); }); - - - + $("#upload-document-order").bind('fileuploadsubmit', function(e, data){ + data.formData = { + sender: $("#chat-order-add #senderId").val(), + recipent: $("#chat-order-add #recipentId").val(), + order: $("#chat-order-add #orderId").val(), + } + }); //Загрузка документов $('#upload-document-order').fileupload({ url: '/chat/create/', - formData: { - sender: $("#chat-order-add #senderId").val(), - recipent: $("#chat-order-add #recipentId").val(), - order: $("#chat-order-add #orderId").val(), - }, crossDomain: false, beforeSend: function (xhr, settings) { $('#progress .progress-bar').css( @@ -297,6 +292,51 @@ $(function () { progress + '%' ); } + }).prop('disabled', !$.support.fileInput) + .parent().addClass($.support.fileInput ? undefined : 'disabled'); //Загрузка документов + + + + $("#upload-document-contact").bind('fileuploadsubmit', function(e, data){ + data.formData = { + sender: $("#contact-chat-form #senderContactId").val(), + recipent: $("#contact-chat-form #recipentContactId").val(), + } + + }); + + + + $('#upload-document-contact').fileupload({ + url: '/chat/create/', + crossDomain: false, + beforeSend: function (xhr, settings) { + console.log(this.formData); + $('#progress .progress-bar').css( + 'width', + '0%' + ); + if (!csrfSafeMethod(settings.type)) { + xhr.setRequestHeader("X-CSRFToken", csrftoken); + } + }, + dataType: 'json', + done: function (e, data) { + $.each(data.result.files, function (index, file) { + var htmlImg = '
' + file.name + '
'; + var document_send = $(htmlImg).appendTo("#document-send-contact"); + }); + }, + fail: function (e) { + console.log(e); + }, + progressall: function (e, data) { + var progress = parseInt(data.loaded / data.total * 100, 10); + $('#progress .progress-bar').css( + 'width', + progress + '%' + ); + } }).prop('disabled', !$.support.fileInput) .parent().addClass($.support.fileInput ? undefined : 'disabled'); diff --git a/chat/migrations/0008_documents_created.py b/chat/migrations/0008_documents_created.py new file mode 100644 index 0000000..e939141 --- /dev/null +++ b/chat/migrations/0008_documents_created.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-29 01:00 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0007_auto_20160826_1458'), + ] + + operations = [ + migrations.AddField( + model_name='documents', + name='created', + field=models.DateTimeField(default=django.utils.timezone.now), + ), + ] diff --git a/chat/migrations/0009_auto_20160829_1120.py b/chat/migrations/0009_auto_20160829_1120.py new file mode 100644 index 0000000..f21eb4f --- /dev/null +++ b/chat/migrations/0009_auto_20160829_1120.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-29 08:20 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0008_documents_created'), + ] + + operations = [ + migrations.AlterField( + model_name='documents', + name='created', + field=models.DateTimeField(auto_now_add=True), + ), + ] diff --git a/chat/models.py b/chat/models.py index dd7f79a..5cc9468 100644 --- a/chat/models.py +++ b/chat/models.py @@ -45,6 +45,7 @@ class Documents(models.Model): team = models.ForeignKey(Team, related_name='documents', null=True, blank=True) sender = models.ForeignKey(User, related_name='sender_documents') recipent = models.ForeignKey(User, related_name='recipent_documents', null=True, blank=True) + created = models.DateTimeField(auto_now_add=True) def __str__(self): return self.file.url diff --git a/chat/serializers.py b/chat/serializers.py index e4d8467..6cb8c06 100644 --- a/chat/serializers.py +++ b/chat/serializers.py @@ -4,6 +4,7 @@ from rest_framework.serializers import ModelSerializer from .models import Message, Notes, Documents from users.serializers import UserSerializer + class DocumentsSerializer(ModelSerializer): class Meta: @@ -18,6 +19,7 @@ class DocumentsSerializer(ModelSerializer): ) + class MessageSerializer(ModelSerializer): sender = UserSerializer() recipent = UserSerializer() diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html index e4c6818..25c510c 100644 --- a/chat/templates/chat_customer.html +++ b/chat/templates/chat_customer.html @@ -65,25 +65,32 @@