diff --git a/chat/models.py b/chat/models.py
index 63517e5..2b5d506 100644
--- a/chat/models.py
+++ b/chat/models.py
@@ -20,4 +20,13 @@ class Message(models.Model):
verbose_name = 'Сообщение'
verbose_name_plural = 'Сообщения'
+class Notes(models.Model):
+ text = models.TextField()
+
+
+ def __str__(self):
+ return self.text
+ class Meta:
+ verbose_name = 'Сообщение'
+ verbose_name_plural = 'Сообщения'
diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html
index e149a39..8408b7e 100644
--- a/chat/templates/chat_customer.html
+++ b/chat/templates/chat_customer.html
@@ -1,10 +1,304 @@
-
-
-
-
+
+
+
Чат
+
+
+
+
+
+
+
Контакты
+ {% for contact in customer_contacts %}
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+ Начало:
+ Срок сдачи:
+
+
+ 13.0.2016
+ 13.0.2016
+
+
+
+
+
Для заметок
+
+
сохранить
+
+
+
+
+
+
+
+
+
+
Заказы
+ {% for order in orders %}
+
+
+
+ {{ order }}
+
+
+
+ Испонитель: {{ order.order.contractor.get_full_name }}
+
+{#
#}
+{# Чаты: Иванов, Петров, Пенкин#}
+{#
#}
+
+
+ Полное описание заказа
+
+
+
+ {% endfor%}
+
+
+
+
+
+ {% for msg in chat_messages %}
+{#
#}
+{#
#}
+{#
{{ msg.sender.get_full_name }}
#}
+{#
{{ msg.created }}#}
+{#
#}
+{#
{{ msg }}
#}
+{#
#}
+ {% endfor %}
+
+
+
+
+
+
+ {% include 'partials/footer.html' %}
+
+
+
+{% endblock %}
+
+{% block js_block %}
+
+
+{% endblock %}
diff --git a/chat/testapp.py b/chat/testapp.py
index cfddf02..97edcfc 100644
--- a/chat/testapp.py
+++ b/chat/testapp.py
@@ -41,8 +41,8 @@ class TestHandler(web.RequestHandler):
print(type(d[1]))
print(str(d[1]))
-class TutorialHandler(websocket.WebSocketHandler):
+class TutorialHandler(websocket.WebSocketHandler):
@property
def db(self):
return self.application.db
@@ -56,20 +56,20 @@ class TutorialHandler(websocket.WebSocketHandler):
# @gen.coroutine
def on_message(self, message):
parsed = escape.json_decode(message)
- print(parsed)
-
if 'dummy' in parsed:
return
if parsed['format_type'] == 'add_message_contact':
- self.add_message_for_contact(parsed['data']['chat_message'], parsed['data']['sender_id'], parsed['data']['recipent_id'])
+ self.add_message_for_contact(parsed['data']['chat_message'], parsed['data']['sender_id'],
+ parsed['data']['recipent_id'])
+ elif parsed['format_type'] == 'order_message':
+ self.get_messages_from_order_chat(parsed['order_id'])
else:
self.get_messages_from_order(parsed['user_id'])
def on_close(self):
self.waiters.remove(self)
- #
# insert_sql = "INSERT INTO chat_message (id,text,created,order_id, user_id) VALUES (DEFAULT,'{0}',NOW(),6,4)".format(str(parsed['message']))
# yield self.db.execute(insert_sql)
#
@@ -81,12 +81,10 @@ class TutorialHandler(websocket.WebSocketHandler):
@gen.coroutine
def add_message_for_contact(self, message, sender_id, recipent_id):
insert_sql = "INSERT INTO chat_message (id,text,created,order_id, sender_id,recipent_id, private_type) " \
- "VALUES (DEFAULT,'{0}',NOW(),NULL,{1},{2},'true')".format(message,sender_id, recipent_id)
+ "VALUES (DEFAULT,'{0}',NOW(),NULL,{1},{2},'true')".format(message, sender_id, recipent_id)
yield self.db.execute(insert_sql)
- # last_select_sql = "SELECT text FROM chat_message "
- # last_message = yield self.db.execute("SELECT ")
for waiter in self.waiters:
- waiter.write_message({'msg': message})
+ waiter.write_message({'msg': message, 'answer_type': 'add_contact'})
@gen.coroutine
def get_messages_from_order(self, order_id):
@@ -95,20 +93,22 @@ class TutorialHandler(websocket.WebSocketHandler):
messages = cursor.fetchall()
for msg in messages:
for waiter in self.waiters:
- waiter.write_message({'msg': msg[0]})
+ waiter.write_message({'msg': msg[0], 'answer_type': 'order'})
+
+ @gen.coroutine
+ def get_messages_from_order_chat(self, order_id):
+ sql = "SELECT text FROM chat_message WHERE order_id=" + order_id
+ cursor = yield self.db.execute(sql)
+ messages = cursor.fetchall()
+ for msg in messages:
+ for waiter in self.waiters:
+ waiter.write_message({'msg': msg[0], 'answer_type': 'contact'})
def check_origin(self, origin):
return True
- # @gen.coroutine
- # def get(self):
- # cursor = yield self.db.execute("SELECT * FROM users_user WHERE id=2")
- # data = cursor.fetchone()
- # print(data[0])
- # self.finish()
class Application(web.Application):
-
def __init__(self):
handlers = [
(r"/chat", TutorialHandler),
@@ -128,12 +128,10 @@ if __name__ == '__main__':
ioloop=ioloop,
)
future = application.db.connect()
- ioloop.add_future(future, lambda f: ioloop.stop())
+ ioloop.add_future(future, lambda f: ioloop.stop())
ioloop.start()
future.result()
http_server = HTTPServer(application)
http_server.listen(8888, 'localhost')
ioloop.start()
-
-
diff --git a/chat/views.py b/chat/views.py
index 02a5960..1e6ce01 100644
--- a/chat/views.py
+++ b/chat/views.py
@@ -6,20 +6,24 @@ from .models import Message
class ChatUserView(View):
- template_name = 'chat_user.html'
+ template_name = ''
def get(self, request, *args, **kwargs):
if request.user.is_authenticated() and request.user.is_customer():
- # orders
+ customer_contacts = Message.objects.values('sender_id','recipent_id').filter(Q(recipent_id=6)| Q(sender_id=6)).distinct()
+ chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk))
+ orders = request.user.projects.select_related('order').all()
self.template_name = 'chat_customer.html'
+ return render(request, self.template_name, {'customer_contacts': customer_contacts,
+ 'chat_messages': chat_messages,
+ 'orders': orders})
else:
orders = request.user.orders.all()
contractor_contacts = request.user.sender_messages.values('recipent_id').distinct('recipent_id').\
values('recipent_id__email', 'recipent_id__first_name', 'recipent_id__last_name', 'recipent_id__id')
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk)).order_by('created')
self.template_name = 'chat_contractor.html'
-
- return render(request, self.template_name, {'orders': orders,
+ return render(request, self.template_name, {'orders': orders,
'contractor_contacts': contractor_contacts,
'chat_messages': chat_messages})