' +
+ if(!data.secure) {
+ htmlInbox += '
';
@@ -598,44 +608,7 @@
$("#chat-order-add #recipentId").val(recipentId);
$(".orderStagesInput").val(orderId);
var inbox = document.getElementById('message-chat-order-space');
- inbox.innerHTML = '';
- $.ajax({
- url: '/api/message',
- type: 'GET',
- data: {csrfmiddlewaretoken: csrftoken, 'order': orderId},
- dataType: 'json',
- success: function (json) {
- $.each(json.results, function (i, v) {
- var senderName = 'Вы';
- var className = 'youChat';
-
- if (v.sender.id !== currentChatUser) {
- senderName = v.sender.username;
- className = '';
- }
-
- inbox.innerHTML += '
';
- });
- }
- });
- getStages(orderId,userId,recipentId, secureOrder);
- });
-
- // Вытащить сообщения для конактов
- $('.user-block').on('click', function () {
- var userId = $(this).attr('data-id');
- $("#contact-chat-form #recipentContactId").val(userId);
- $("#add-form-contractor-note #recipentNoteContractor").val(userId);
-
- $('.user-block').each(function () {
- $(this).removeClass('mesAct');
- });
-
- $(this).addClass('mesAct');
- var inbox = document.getElementById('message-chat-space');
- var docList = document.getElementById('documentSpace');
+ var docList = document.getElementById('documentOrderSpace');
inbox.innerHTML = '';
docList.innerHTML = '';
@@ -644,68 +617,42 @@
type: 'GET',
data:{
csrfmiddlewaretoken: csrftoken,
- 'operand': 'in',
- 'sender_id': currentChatUser,
- 'recipent_id': userId
+ 'order': orderId
},
dataType: 'json',
-
success: function (json){
console.log(json);
$.each(json.results, function (i, v) {
- docList.innerHTML += '
';
});
},
error: function(e){
console.log(e);
}
});
-
$.ajax({
url: '/api/message',
type: 'GET',
- data: {
- csrfmiddlewaretoken: csrftoken,
- 'operand': 'in',
- 'sender_id': currentChatUser,
- 'recipent_id': userId
- },
+ data: {csrfmiddlewaretoken: csrftoken, 'order': orderId,'team__isnull': 'true'},
dataType: 'json',
success: function (json) {
$.each(json.results, function (i, v) {
var senderName = 'Вы';
var className = 'youChat';
- if (v.sender.id == userId) {
+
+ if (v.sender.id !== currentChatUser) {
senderName = v.sender.username;
className = '';
}
- inbox.innerHTML += '
' +
- '
' + senderName + '
' + v.created + '' +
+
+ inbox.innerHTML += '
' +
+ '
' + senderName + '
' + v.created + '' +
'
' + v.text + '
';
});
}
});
-
- });
-
- $('#contact-chat-add-message').on('click', function (e) {
- e.preventDefault();
- var chatMessage = $("#chat").val();
- var recipentId = $("#recipentContactId").val();
- var senderId = $("#senderContactId").val();
-
- socket.add_contact_message({
- "format_type": "add_message_contact",
- "data": {
- "sender_id": senderId,
- "recipent_id": recipentId,
- "chat_message": chatMessage,
- }
- });
-
- $("#chat").val("");
- $("#document-send-contact").html("");
+ getStages(orderId,userId,recipentId, secureOrder);
});
diff --git a/chat/views.py b/chat/views.py
index dedf1be..8525bd5 100644
--- a/chat/views.py
+++ b/chat/views.py
@@ -55,7 +55,7 @@ class ChatUserView(LoginRequiredMixin, View):
contacts_users = User.objects.filter(pk__in=users_ids)
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk))
- orders = request.user.projects.select_related('order').exclude(order__contractor__isnull=True)
+ orders = request.user.projects.select_related('order').exclude(order__contractor__isnull=True, order__team__isnull=True)
transaction = Transaction.objects.get_or_create(customer=request.user, type='reservation', complete=False)
self.template_name = 'chat_customer.html'
return render(request, self.template_name, {'contacts_users': contacts_users,
@@ -65,7 +65,15 @@ class ChatUserView(LoginRequiredMixin, View):
'YANDEX_MONEY': settings.YANDEX_MONEY,
})
else:
- orders = request.user.orders.all()
+ team_ids = []
+ if request.user.is_owner_team():
+ team_ids.append(request.user.team.pk)
+ team_orders = request.user.team.orders.all()
+ else:
+ teams = Team.objects.filter(contractors__id=request.user.pk).all()
+ team_orders = Order.objects.filter(team_id__in=[team.pk for team in teams]).all()
+
+ orders = Order.objects.filter(Q(contractor=request.user) | Q(team_id__in=team_ids)).all()
contractor_contacts = Message.objects.values_list('sender_id', 'recipent_id').filter(
Q(recipent_id=request.user.pk) | Q(sender_id=request.user.pk)).filter(Q(team_id=None)).distinct()
users_ids = []
@@ -81,11 +89,7 @@ class ChatUserView(LoginRequiredMixin, View):
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk)).order_by(
'created')
- if request.user.is_owner_team():
- team_orders = request.user.team.orders.all()
- else:
- teams = Team.objects.filter(contractors__id=request.user.pk).all()
- team_orders = Order.objects.filter(team_id__in=[team.pk for team in teams]).all()
+
self.template_name = 'chat_contractor.html'
return render(request, self.template_name, {'orders': orders,
diff --git a/projects/migrations/0018_auto_20160829_1751.py b/projects/migrations/0018_auto_20160829_1751.py
new file mode 100644
index 0000000..9f066d2
--- /dev/null
+++ b/projects/migrations/0018_auto_20160829_1751.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-29 14:51
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0017_arbitration'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='portfolio',
+ name='created',
+ field=models.DateTimeField(auto_created=True, auto_now_add=True),
+ ),
+ ]
diff --git a/projects/migrations/0019_remove_stage_term.py b/projects/migrations/0019_remove_stage_term.py
new file mode 100644
index 0000000..fe6b018
--- /dev/null
+++ b/projects/migrations/0019_remove_stage_term.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-29 14:58
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0018_auto_20160829_1751'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='stage',
+ name='term',
+ ),
+ ]
diff --git a/projects/migrations/0020_stage_term.py b/projects/migrations/0020_stage_term.py
new file mode 100644
index 0000000..ad39c92
--- /dev/null
+++ b/projects/migrations/0020_stage_term.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-29 15:02
+from __future__ import unicode_literals
+
+import datetime
+from django.db import migrations, models
+from django.utils.timezone import utc
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0019_remove_stage_term'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='stage',
+ name='term',
+ field=models.DateTimeField(auto_now_add=True, default=datetime.datetime(2016, 8, 29, 15, 2, 54, 818311, tzinfo=utc)),
+ preserve_default=False,
+ ),
+ ]
diff --git a/projects/models.py b/projects/models.py
index bec87d0..35ea510 100644
--- a/projects/models.py
+++ b/projects/models.py
@@ -251,7 +251,7 @@ class Stage(models.Model):
name = models.CharField(max_length=255)
order = models.ForeignKey(Order, related_name='stages')
result = models.CharField(max_length=255)
- term = models.IntegerField(default=0)
+ term = models.DateTimeField(auto_now_add=True)
term_type = models.CharField(max_length=10, choices=TERMS, default='hour')
status = models.CharField(choices=STATUSES, max_length=30, default='not_agreed')
created = models.DateTimeField(default=timezone.now)
diff --git a/projects/serializers.py b/projects/serializers.py
index 48df52c..9cd0ed4 100755
--- a/projects/serializers.py
+++ b/projects/serializers.py
@@ -1,3 +1,4 @@
+from rest_framework import serializers
from generic_relations.relations import GenericRelatedField
from rest_framework.serializers import ModelSerializer, ImageField, FileField, SerializerMethodField, PrimaryKeyRelatedField
@@ -49,7 +50,7 @@ class RealtySerializer(ModelSerializer):
class StageSerializer(ModelSerializer):
- # order = OrderSerializer()
+ term = serializers.DateTimeField(format="%d-%m-%Y")
class Meta:
model = Stage
@@ -72,17 +73,6 @@ class StageSerializer(ModelSerializer):
)
- # def update(self, inst, validated_data):
- # import code; code.interact(local=dict(globals(), **locals()))
- # inst.id = validated_data.get('id',inst.id)
- # inst.name = validated_data.get('name', inst.name)
- # inst.cost = validated_data.get('cost', inst.cost)
- # inst.order = validated_data.get('order', inst.order)
- # inst.result = validated_data.get('result', inst.result)
- # inst.save()
- # return inst
-
-
class OrderSerializer(ModelSerializer):
stages = StageSerializer(many=True, read_only=True)
diff --git a/projects/templates/comparison.html b/projects/templates/comparison.html
index 7e1d4cc..da06d86 100644
--- a/projects/templates/comparison.html
+++ b/projects/templates/comparison.html
@@ -76,9 +76,12 @@
- {% ratings_widget answer.author.pk 'restList2' %}
+ {% if answer.author|class_name == 'User' %}
+ {% ratings_widget answer.author.pk 'restList2' %}
+ {% elif answer.author|class_name == 'Team'%}
+ {% ratings_team_widget answer.author.pk 'restList2' %}
+ {% endif %}
{% if answer.author|class_name == 'User' and answer.author.cro %}
diff --git a/projects/views.py b/projects/views.py
index 0db6864..1f0ca0d 100644
--- a/projects/views.py
+++ b/projects/views.py
@@ -594,9 +594,9 @@ class ProjectComparisonView(DetailView):
model = Project
template_name = 'comparison.html'
- def get_context_data(self, **kwargs):
- context = super().get_context_data()
- return context
+ # def get(self, request, **kwargs):
+ # self.object = self.get_object()
+
def add_candidate(request, answer_id, project_id):
diff --git a/templates/partials/base.html b/templates/partials/base.html
index f73f213..40fdcf6 100644
--- a/templates/partials/base.html
+++ b/templates/partials/base.html
@@ -97,7 +97,15 @@
sock.onmessage = function (event) {
var notificationData = JSON.parse(event.data);
- $.jGrowl("Вам пришло новое сообщение!" + notificationData.msg, {sticky: true});
+ console.log(notificationData);
+ var outMessage = "";
+ if (notificationData.answer_type == 'add_message_contact'){
+ outMessage += " "+ notificationData.msg +"";
+ }else if((notificationData.answer_type == 'approve_stages') || (notificationData.answer_type == 'add_message_order')){
+ outMessage += ""+ notificationData.msg +"";
+ }
+
+ $.jGrowl("Вам пришло новое сообщение! " + outMessage, { life: 15000});
};
}
};
diff --git a/work_sell/migrations/0007_auto_20160829_1740.py b/work_sell/migrations/0007_auto_20160829_1740.py
new file mode 100644
index 0000000..2ddfec1
--- /dev/null
+++ b/work_sell/migrations/0007_auto_20160829_1740.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-29 14:40
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('work_sell', '0006_remove_worksell_team'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='worksell',
+ name='created',
+ field=models.DateTimeField(auto_now_add=True),
+ ),
+ ]
|