remotes/origin/PR-39
ArturBaybulatov 10 years ago
commit 8673fb7aef
  1. 14
      assets/js/chat.js
  2. 7
      assets/js/chat_contractor.js
  3. 8
      chat/chat.py
  4. 28
      chat/templates/chat_contractor.html
  5. 2
      templates/partials/base.html
  6. 3
      users/templatetags/user_tags.py
  7. 2
      wallets/signals.py
  8. 4
      wallets/views.py

@ -1,6 +1,6 @@
var SocketHandler = function () { var SocketHandler = function () {
domain = domain.replace(':' + port, ''); domain = domain.replace(':' + port, '');
var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; var url = 'ws://' + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url); var sock = new WebSocket(url);
var intervalId; var intervalId;
sock.onopen = function () { sock.onopen = function () {
@ -92,7 +92,6 @@ $(function () {
}); });
} }
var currentHash = URI(location.href).hash(); var currentHash = URI(location.href).hash();
if (currentHash.indexOf("#order") == 0) { if (currentHash.indexOf("#order") == 0) {
var ordHashId = currentHash.replace("#order", ""); var ordHashId = currentHash.replace("#order", "");
@ -124,6 +123,17 @@ $(function () {
$(".order-block").first().trigger('click'); $(".order-block").first().trigger('click');
location.hash = ''; location.hash = '';
}, 500); }, 500);
setTimeout(function () {
var firstTeamBlock = $(".team-block").first();
var firstTeamOrder = $(".team-order-block").first();
if (firstTeamOrder.length == 1){
firstTeamOrder.trigger('click');
} else if(firstTeamBlock.length == 1){
firstTeamBlock.trigger('click');
}
location.hash = '';
}, 1000);
} }
// Информация о заказе // Информация о заказе
$(".full-order-info").click('on', function (e) { $(".full-order-info").click('on', function (e) {

@ -1,8 +1,5 @@
$(function () { $(function () {
var form = document.getElementById('message_form'); var form = document.getElementById('message_form');
setTimeout(function () {
$(".team-order-block").first().trigger('click');
}, 1000);
var url = '/chat/create/'; var url = '/chat/create/';
@ -135,7 +132,6 @@ $(function () {
}); });
$(".team-order-block").on('click', function () { $(".team-order-block").on('click', function () {
$('.team-order-block, .team-block').each(function () { $('.team-order-block, .team-block').each(function () {
$(this).removeClass('orAct'); $(this).removeClass('orAct');
}); });
@ -150,7 +146,6 @@ $(function () {
$("#add-form-team-note #teamNote").val(teamId); $("#add-form-team-note #teamNote").val(teamId);
$("#add-form-team-note #orderNote").val(orderId); $("#add-form-team-note #orderNote").val(orderId);
var inbox = document.getElementById('message-chat-team-space'); var inbox = document.getElementById('message-chat-team-space');
inbox.innerHTML = ''; inbox.innerHTML = '';
var docList = document.getElementById('documentTeamSpace'); var docList = document.getElementById('documentTeamSpace');
@ -218,6 +213,7 @@ $(function () {
}); });
$('.team-block').on('click', function () { $('.team-block').on('click', function () {
$('.team-order-block, .team-block').each(function () { $('.team-order-block, .team-block').each(function () {
$(this).removeClass('orAct'); $(this).removeClass('orAct');
}); });
@ -502,7 +498,6 @@ $(function () {
}); });
$('#tab2').on('click', '.closeStage', function (e) { $('#tab2').on('click', '.closeStage', function (e) {
e.preventDefault(); e.preventDefault();
var stageId = $(this).attr('data-stage-id'); var stageId = $(this).attr('data-stage-id');

@ -56,9 +56,8 @@ class ChatHandler(websocket.WebSocketHandler):
def add_message(self, message_data): def add_message(self, message_data):
sender_id = message_data['data']['sender_id'] sender_id = message_data['data']['sender_id']
recipent_id = message_data['data']['recipent_id'] recipent_id = message_data['data'].get('recipent_id', None)
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)
docs_send_links = message_data['data'].get('document_send_links', None) docs_send_links = message_data['data'].get('document_send_links', None)
@ -77,8 +76,9 @@ class ChatHandler(websocket.WebSocketHandler):
is_new = 'true' is_new = 'true'
is_delete = 'false' is_delete = 'false'
team_value = "NULL" if team_id is None else team_id team_value = "NULL" if team_id is None or not team_id else team_id
if team_value and not recipent_id:
if not team_id and not recipent_id:
recipent_id = sender_id recipent_id = sender_id
order_value = "NULL" if order_id is None or not order_id else order_id order_value = "NULL" if order_id is None or not order_id else order_id

@ -254,12 +254,12 @@
<span>Чаты:</span> <span>Чаты:</span>
{% if request.user.pk != torder.team.owner.pk %} {% if request.user.pk != torder.team.owner.pk %}
<span class="team-chat-user" <span class="team-chat-user"
data-id="{{ torder.team.owner.pk}}">{{ torder.team.owner.username }},</span> data-id="{{ torder.team.owner.pk}}">{{ torder.team.owner.username }}</span>
{% endif %} {% endif %}
{% for tuser in torder.team.contractors.all %} {% for tuser in torder.team.contractors.all %}
{% if request.user.pk != tuser.pk %} {% if request.user.pk != tuser.pk %}
<span class="team-chat-user" <span class="team-chat-user"
data-id="{{ tuser.pk }}">{{ tuser.username }},</span> data-id="{{ tuser.pk }}">{{ tuser.username }}</span>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</p> </p>
@ -289,10 +289,12 @@
<p class="pOB"> <p class="pOB">
<span>Чаты:</span> <span>Чаты:</span>
{% if request.user.pk != torder.team.owner.pk %} {% if request.user.pk != torder.team.owner.pk %}
<span class="team-chat-user" data-id="{{ yteam.owner.pk}}">{{ yteam.owner.username }},</span> <span class="team-chat-user" data-id="{{ yteam.owner.pk}}">{{ yteam.owner.username }}</span>
{% endif %}
{% for tuser in yteam.contractors.all %}
{% if request.user.pk != tuser.pk %}
<span class="team-chat-user" data-id="{{ tuser.pk }}">{{ tuser.username }} </span>
{% endif %} {% endif %}
{% for tuser in yteam.contractors.all %}<span class="team-chat-user" data-id="{{ tuser.pk }}">{{ tuser.username }},</span>
{% endfor %} {% endfor %}
</p> </p>
@ -305,15 +307,15 @@
<div class="col-lg-6 commChat"> <div class="col-lg-6 commChat">
<div id="message-chat-team-space"></div> <div id="message-chat-team-space"></div>
<form id="team-chat-form"> <form id="team-chat-form">
<input type="hidden" name="sender" id="senderTeamId" value="{{ request.user.pk }}"/> <input type="hidden" name="sender" id="senderTeamId" value="{{ request.user.pk }}">
<input type="hidden" name="recipent" id="recipentTeamId" value=""/> <input type="hidden" name="recipent" id="recipentTeamId">
<input type="hidden" name="order" id="orderTeamId"> <input type="hidden" name="order" id="orderTeamId">
<input type="hidden" name="team" id="teamId" value=""/> <input type="hidden" name="team" id="teamId">
<input type="hidden" name="document-send" id="documentSendIds"/> <input type="hidden" name="document-send" id="documentSendIds">
<textarea id="chatText" class="chat-textarea box-sizing"></textarea> <textarea id="chatText" class="chat-textarea box-sizing"></textarea>
<div class="bunChat"> <div class="bunChat">
<div class="setChat box-sizing upload"> <div class="setChat box-sizing upload">
<input type="file" name="file" id="upload-document-team"/> <input type="file" name="file" id="upload-document-team">
<p>Прикрепить файл</p> <p>Прикрепить файл</p>
</div> </div>
<div id="progress" class="progress"> <div id="progress" class="progress">
@ -342,7 +344,7 @@
<form id="add-form-team-note"> <form id="add-form-team-note">
<textarea id="chat2" name="text"></textarea> <textarea id="chat2" name="text"></textarea>
<input type="hidden" name="order" id="orderNote"> <input type="hidden" name="order" id="orderNote">
<input type="hidden" name="sender" id="senderNote" value="{{ request.user.pk }}"/> <input type="hidden" name="sender" id="senderNote" value="{{ request.user.pk }}">
<input type="hidden" name="recipent" id="recipentNote"> <input type="hidden" name="recipent" id="recipentNote">
<input type="hidden" name="team" id="teamNote"> <input type="hidden" name="team" id="teamNote">
<a href="#" id="add-team-note-button">сохранить</a> <a href="#" id="add-team-note-button">сохранить</a>
@ -352,9 +354,7 @@
</div> </div>
</div> </div>
<!-- End block Tab3--> <!-- End block Tab3-->
<!-- order-info -->
<!-- order-info -->
{% include 'order_info.html' %} {% include 'order_info.html' %}
<!-- --> <!-- -->
</div> </div>

@ -87,7 +87,7 @@
if ((queryString.indexOf('/chat') != 0) && (queryString.indexOf('/users/contractor-office/510/work-projects') != 0)) { if ((queryString.indexOf('/chat') != 0) && (queryString.indexOf('/users/contractor-office/510/work-projects') != 0)) {
domain = domain.replace(':' + port, ''); domain = domain.replace(':' + port, '');
var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; var url = 'ws://' + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url); var sock = new WebSocket(url);
var intervalId; var intervalId;
sock.onopen = function () { sock.onopen = function () {

@ -30,7 +30,8 @@ def has_group(user, group_name):
@register.inclusion_tag('templatetags/user_new_count.html', takes_context=True) @register.inclusion_tag('templatetags/user_new_count.html', takes_context=True)
def count_new_message(context, user): def count_new_message(context, user):
new_count = 3 from chat.models import Message
new_count = Message.objects.filter(is_delete=False, is_new=True, recipent=user).count()
return { return {
'new_count': new_count, 'new_count': new_count,
} }

@ -73,7 +73,7 @@ def reserve_stages(sender, instance, created, **kwargs):
@receiver(post_save, sender=PayFromScore) @receiver(post_save, sender=PayFromScore)
def reserve_stages(sender, instance, created, **kwargs): def reserve_stages_from_score(sender, instance, created, **kwargs):
order = None order = None
stages_names = [] stages_names = []
stages_ids_raw = instance.stages_id stages_ids_raw = instance.stages_id

@ -98,10 +98,6 @@ class AjaxableResponseMixin(object):
return response return response
# class WithDrawCreate(AjaxableResponseMixin, CreateView):
# model = WithDraw
# form_class = WithDrawForm
# success_url = '/'
class WithDrawCreate(CreateView): class WithDrawCreate(CreateView):
model = WithDraw model = WithDraw

Loading…
Cancel
Save