From 8e14a97885173a246c13dc528dfb3a0dc3749e7b Mon Sep 17 00:00:00 2001 From: Mukhtar Date: Thu, 30 Jun 2016 19:19:55 +0300 Subject: [PATCH] #ARC-16 Add chat contacts for contractors and order messages for contractors --- archilance/urls.py | 1 + chat/admin.py | 5 +- chat/migrations/0004_auto_20160630_1204.py | 26 + chat/models.py | 3 +- chat/templates/chat_contractor.html | 475 +++++++++++++++ chat/templates/chat_customer.html | 10 + chat/templates/chat_user.html | 657 +++++++++++++++++++++ chat/urls.py | 11 + chat/views.py | 25 +- projects/models.py | 2 +- Задачи | 3 + Задачи~ | 0 12 files changed, 1214 insertions(+), 4 deletions(-) create mode 100644 chat/migrations/0004_auto_20160630_1204.py create mode 100644 chat/templates/chat_contractor.html create mode 100644 chat/templates/chat_customer.html create mode 100644 chat/templates/chat_user.html create mode 100644 chat/urls.py create mode 100644 Задачи create mode 100644 Задачи~ diff --git a/archilance/urls.py b/archilance/urls.py index b890a8a..d08281c 100644 --- a/archilance/urls.py +++ b/archilance/urls.py @@ -12,6 +12,7 @@ urlpatterns = [ url(r'^chattest$', TestChatTemplateView.as_view()), url(r'^test/$', TemplateView.as_view(template_name='test.html'), name='test'), url(r'^projects/', include('projects.urls')), + url(r'^chat/', include('chat.urls')), url(r'^specializations/', include('specializations.urls')), url(r'^users/', include('registration.backends.default.urls')), url(r'^users/', include('users.urls')), diff --git a/chat/admin.py b/chat/admin.py index a44a4f5..e064b6c 100644 --- a/chat/admin.py +++ b/chat/admin.py @@ -1,4 +1,7 @@ from django.contrib import admin from .models import Message -admin.site.register(Message) +class MessageAdmin(admin.ModelAdmin): + list_display = ('text', 'sender', 'recipent',) + +admin.site.register(Message, MessageAdmin) diff --git a/chat/migrations/0004_auto_20160630_1204.py b/chat/migrations/0004_auto_20160630_1204.py new file mode 100644 index 0000000..9604c3e --- /dev/null +++ b/chat/migrations/0004_auto_20160630_1204.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.6 on 2016-06-30 09:04 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0003_auto_20160629_1914'), + ] + + operations = [ + migrations.AddField( + model_name='message', + name='private_type', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='message', + name='order', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='order_messages', to='projects.Order'), + ), + ] diff --git a/chat/models.py b/chat/models.py index fb29a4d..63517e5 100644 --- a/chat/models.py +++ b/chat/models.py @@ -8,9 +8,10 @@ from users.models import User class Message(models.Model): text = models.TextField() created = models.DateTimeField(default=timezone.now) - order = models.ForeignKey(Order, related_name='order_messages') + order = models.ForeignKey(Order, related_name='order_messages',null=True, blank=True) sender = models.ForeignKey(User, related_name='sender_messages') recipent = models.ForeignKey(User, related_name='recipent_messages') + private_type = models.BooleanField(default=False) def __str__(self): return self.text diff --git a/chat/templates/chat_contractor.html b/chat/templates/chat_contractor.html new file mode 100644 index 0000000..b62488c --- /dev/null +++ b/chat/templates/chat_contractor.html @@ -0,0 +1,475 @@ +{% extends 'partials/base.html' %} +{% load staticfiles %} +{% block content %} +{% include 'partials/header.html' %} +
+
+
+

Чат

+
+
+
+ +
+
+
+
+
+

Контакты

+ + {% for contact in contractor_contacts %} + + {% endfor %} + +
+
+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+ +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+
+

Контакты

+ +
+
+
+ Начало: + Срок сдачи: +
+
+ 13.0.2016 + 13.0.2016 +
+
+
+

Входящие документы

+
    +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
+ + Распечатать с помощью ресурса + +
+
+

Для заметок

+ + сохранить +
+ + +
+
+
+
+ +
+

Заказы

+ {% for order in orders %} +
+ +

+ {{ order }} +

+
+

+ Испонитель: {{ request.user.get_full_name }} +

+{#
    #} +{#
  • Иванов Петр Иванович
  • #} +{#
  • Сергей Пенкин
  • #} +{#
  • Александ Смирнов
  • #} +{#
  • Иванов Петр
  • #} +{#
#} +

+ Чаты: Иванов, Петров, Пенкин +

+ + + Полное описание заказа + +
+
+ {% endfor%} +
+ +
+
+ {% for msg in chat_messages %} +
+
+

{{ msg.sender.get_full_name }}

+ {{ msg.created }} +
+

{{ msg }}

+
+ {% endfor %} + +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+
+

Для заметок

+ + сохранить +
+ +
+
+
+
+
+

Заказы

+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+
+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.

+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+

Этапы работы

+
+

1 / Согласование условий

+

+ Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. +

+
+
+
+

+ Этап 1Название этапа +

+

+ Результаты этапа: Готовый чертеж 1 +

+
+

до 16.03.2015

+ 30 000 +
+
+
+
+
+

+ Этап 2Название этапа +

+

+ Результаты этапа: Готовый чертеж 1 +

+
+

до 16.03.2015

+ 30 000 +
+
+
+ +
+

2 / Резервирование

+

+ Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на сайте. +

+
    +
  • Сумма еще не зарезервирована
  • +
  • Сумма за этап1, Зарезервирована
  • +
+
+
+

3 / Выполнение работы

+

+ Процесс выполнения задания в заказе до получения заказчиком итогового результата работы. +

+
+
+
+
+ {% include 'partials/footer.html' %} +
+
+ +{% endblock %} + +{% block js_block %} + + +{% endblock %} diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html new file mode 100644 index 0000000..e149a39 --- /dev/null +++ b/chat/templates/chat_customer.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + diff --git a/chat/templates/chat_user.html b/chat/templates/chat_user.html new file mode 100644 index 0000000..1842321 --- /dev/null +++ b/chat/templates/chat_user.html @@ -0,0 +1,657 @@ +{% extends 'partials/base.html' %} +{% load staticfiles %} +{% block content %} +{% include 'partials/header.html' %} +
+
+
+

Чат

+
+
+
+ +
+
+
+
+
+

Заказы

+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Испонитель: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
  • Александ Смирнов
  • +
  • Иванов Петр
  • +
+

+ Чаты: Иванов, Петров, Пенкин +

+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Испонитель: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
  • Александ Смирнов
  • +
  • Иванов Петр
  • +
+

+ Чаты: Иванов, Петров, Пенкин +

+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Испонитель: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
  • Александ Смирнов
  • +
  • Иванов Петр
  • +
+

+ Чаты: Иванов, Петров, Пенкин +

+ + + Полное описание заказа + +
+
+
+
+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+
+

Контакты

+ +
+
+
+ Начало: + Срок сдачи: +
+
+ 13.0.2016 + 13.0.2016 +
+
+
+

Входящие документы

+
    +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
  • + Архитерурное 2.jpg + 7мб +
    +
  • +
+ + Распечатать с помощью ресурса + +
+
+

Для заметок

+ + сохранить +
+ + +
+
+
+ +
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+
+

Для заметок

+ + сохранить +
+ +
+
+
+
+
+

Заказы

+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+ +

+ Дизай-проект квартиры на набережной 200 m2 +

+
+

+ Заказчик: Группа Икс +

+
    +
  • Иванов Петр Иванович
  • +
  • Сергей Пенкин
  • +
+ + + Полное описание заказа + +
+
+
+
+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Иванов Петр Иванович +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. +

+
+
+
+

+ Вы +

+ + 13.0.2016 / 21:05 + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +
+
+

Прикрепить файл

+ + Не более 10 файлов с общим объемом 500мб + +
+ отправить +
+
+
+

Этапы работы

+
+

1 / Согласование условий

+

+ Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. +

+
+
+
+

+ Этап 1Название этапа +

+

+ Результаты этапа: Готовый чертеж 1 +

+
+

до 16.03.2015

+ 30 000 +
+
+
+
+
+

+ Этап 2Название этапа +

+

+ Результаты этапа: Готовый чертеж 1 +

+
+

до 16.03.2015

+ 30 000 +
+
+
+ +
+

2 / Резервирование

+

+ Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на сайте. +

+
    +
  • Сумма еще не зарезервирована
  • +
  • Сумма за этап1, Зарезервирована
  • +
+
+
+

3 / Выполнение работы

+

+ Процесс выполнения задания в заказе до получения заказчиком итогового результата работы. +

+
+
+
+
+ +
+
+ +{% endblock %} diff --git a/chat/urls.py b/chat/urls.py new file mode 100644 index 0000000..aa77baa --- /dev/null +++ b/chat/urls.py @@ -0,0 +1,11 @@ +from django.conf import urls + +from .views import ( + ChatUserView, +) + +app_name = 'chat' + +urlpatterns = [ + urls.url(r'^$', ChatUserView.as_view(), name='chat-user'), +] diff --git a/chat/views.py b/chat/views.py index 91ea44a..1590b8a 100644 --- a/chat/views.py +++ b/chat/views.py @@ -1,3 +1,26 @@ from django.shortcuts import render +from django.views.generic import View +from django.db.models import Q + +from .models import Message + + +class ChatUserView(View): + template_name = 'chat_user.html' + + def get(self, request, *args, **kwargs): + if request.user.is_authenticated() and request.user.is_customer(): + # orders + self.template_name = 'chat_customer.html' + 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') + 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, + 'contractor_contacts': contractor_contacts, + 'chat_messages': chat_messages}) + -# Create your views here. diff --git a/projects/models.py b/projects/models.py index f4513ee..8c42f59 100644 --- a/projects/models.py +++ b/projects/models.py @@ -133,7 +133,7 @@ class Answer(models.Model): class Order(models.Model): - contractor = models.ForeignKey(User, null=True, blank=True) + contractor = models.ForeignKey(User, null=True, blank=True, related_name='orders') created = models.DateTimeField(default=timezone.now) project = models.OneToOneField(Project, related_name='order') secure = models.BooleanField(default=False) diff --git a/Задачи b/Задачи new file mode 100644 index 0000000..c3bce3c --- /dev/null +++ b/Задачи @@ -0,0 +1,3 @@ +1. Завести время на задачи в проекте +2. Распределить задачи по времени + diff --git a/Задачи~ b/Задачи~ new file mode 100644 index 0000000..e69de29