commit
6abf82a60f
98 changed files with 3933 additions and 753 deletions
@ -0,0 +1,31 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-07 14:55 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0017_auto_20160606_1659'), |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Message', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('text', models.TextField()), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='projects.Order')), |
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to=settings.AUTH_USER_MODEL)), |
||||||
|
], |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 12:55 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('chat', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='message', |
||||||
|
options={'verbose_name': 'Сообщение', 'verbose_name_plural': 'Сообщения'}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-29 16:14 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('chat', '0002_auto_20160608_1555'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='message', |
||||||
|
name='user', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='message', |
||||||
|
name='recipent', |
||||||
|
field=models.ForeignKey(default=5, on_delete=django.db.models.deletion.CASCADE, related_name='recipent_messages', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='message', |
||||||
|
name='sender', |
||||||
|
field=models.ForeignKey(default=4, on_delete=django.db.models.deletion.CASCADE, related_name='sender_messages', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='message', |
||||||
|
name='order', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='order_messages', to='projects.Order'), |
||||||
|
), |
||||||
|
] |
||||||
@ -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'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-04 11:44 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('chat', '0004_auto_20160630_1204'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Notes', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('text', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name_plural': 'Сообщения', |
||||||
|
'verbose_name': 'Сообщение', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-04 15:11 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0037_auto_20160704_1444'), |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('chat', '0005_notes'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='notes', |
||||||
|
options={'verbose_name': 'Заметка', 'verbose_name_plural': 'Заметки'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='notes', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='notes', |
||||||
|
name='order', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='order_notes', to='projects.Order'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='notes', |
||||||
|
name='recipent', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='recipent_notes', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='notes', |
||||||
|
name='sender', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='sender_notes', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -1,482 +1,512 @@ |
|||||||
{% extends 'partials/base.html' %} |
{% extends 'partials/base.html' %} |
||||||
{% load staticfiles %} |
{% load staticfiles %} |
||||||
|
{% load thumbnail %} |
||||||
{% block content %} |
{% block content %} |
||||||
{% include 'partials/header.html' %} |
{% include 'partials/header.html' %} |
||||||
<div class="container mainScore"> |
<div class="container mainScore"> |
||||||
<div class="row"> |
<div class="row"> |
||||||
<div class="col-lg-12 allProjects"> |
<div class="col-lg-12 allProjects"> |
||||||
<h1>Чат {{ request.user }}</h1> |
<h1>Чат {{ request.user }} {{ request.user.pk }}</h1> |
||||||
</div> |
</div> |
||||||
<div class="btnReadyBlock disTab"> |
<div class="btnReadyBlock disTab"> |
||||||
<div class="triangle1"></div> |
<div class="triangle1"></div> |
||||||
<div class="col-lg-6 col-lg-offset-3 tabsChat"> |
<div class="col-lg-6 col-lg-offset-3 tabsChat"> |
||||||
<div class="profileTabs2"> |
<div class="profileTabs2"> |
||||||
<ul class="nav nav-tabs nav-justified"> |
<ul class="nav nav-tabs nav-justified"> |
||||||
|
|
||||||
<li role="presentation" class="active"> |
<li role="presentation" class="active"> |
||||||
<a href="#tab1" data-toggle="tab">Личные</a> |
<a href="#tab1" data-toggle="tab">Личные</a> |
||||||
</li> |
</li> |
||||||
|
|
||||||
<li role="presentation"> |
|
||||||
<a href="#tab2" data-toggle="tab">Заказчики</a> |
|
||||||
</li> |
|
||||||
|
|
||||||
<li role="presentation"> |
|
||||||
<a href="#tab3" data-toggle="tab">Исполнители</a> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="tab-content"> |
|
||||||
<div class="chatBlock disTab tab-pane fade in active" id="tab1"> |
|
||||||
<div class="col-lg-3 wrMessages"> |
|
||||||
<div class="messageBlock box-sizing disTab"> |
|
||||||
<p>Контакты</p> |
|
||||||
{% for contact in contractor_contacts %} |
|
||||||
<div class="message messd user-block" data-id="{% if request.user.pk == contact.recipent_id %}{{ contact.sender_id }} {% else %}{{ contact.recipent_id}}{% endif %}"> |
|
||||||
<div class="imgMess"> |
|
||||||
<img src="{% static 'img/mess.png' %}" alt="mess-image"> |
|
||||||
</div> |
|
||||||
<p class="nameMess"> |
|
||||||
<a href="#">{{ contact.recipent_id__first_name }} {{ contact.recipent_id__last_name }}</a> |
|
||||||
</p> |
|
||||||
<a href="javascript:void(0)" class="conMess">Контакты</a> |
|
||||||
|
|
||||||
<span>0</span> |
|
||||||
<a>Recipent_id {{ contact.recipent_id }}</a> |
|
||||||
<a>Sender_id {{ contact.sender_id }}</a> |
|
||||||
<a>Current {{ request.user.pk }}</a> |
|
||||||
<a href="javascript:void(0)" class="deleteMess"> |
|
||||||
Удалить контакт |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
{% endfor %} |
|
||||||
|
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-6 commChat" id="contact-chat"> |
|
||||||
<div id="message-chat-space"> |
|
||||||
</div> |
|
||||||
<form id="contact-chat-form"> |
|
||||||
<input type="text" value="{{ request.user.pk }}" name="senderId" id="senderId" /> |
|
||||||
<input type="text" value="" name="recipentId" id="recipentId" /> |
|
||||||
|
|
||||||
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
<li role="presentation"> |
||||||
<div class="bunChat"> |
<a href="#tab2" data-toggle="tab">Заказчики</a> |
||||||
<div class="setChat box-sizing"> |
</li> |
||||||
<p>Прикрепить файл</p> |
|
||||||
|
<li role="presentation"> |
||||||
|
<a href="#tab3" data-toggle="tab">Исполнители</a> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="tab-content"> |
||||||
|
<div class="chatBlock disTab tab-pane fade in active" id="tab1"> |
||||||
|
<div class="col-lg-3 wrMessages"> |
||||||
|
<div class="messageBlock box-sizing disTab"> |
||||||
|
<p>Контакты</p> |
||||||
|
{% for contact in contacts_users %} |
||||||
|
<div class="message messd user-block" data-id="{{ contact.pk }}"> |
||||||
|
<div class="imgMess"> |
||||||
|
{% thumbnail contact.avatar "60x60" crop="center" as im %} |
||||||
|
<img src="{{ im.url }}" alt="mess-image"> |
||||||
|
{% endthumbnail %} |
||||||
|
</div> |
||||||
|
<p class="nameMess"> |
||||||
|
<a href="#"> |
||||||
|
{{ contact.username }}{{ contact.username }}{{ contact.first_name }} {{ contact.last_name }}</a> |
||||||
|
</p> |
||||||
|
<a href="javascript:void(0)" class="conMess">Контакты</a> |
||||||
|
|
||||||
|
<span>0</span> |
||||||
|
<a href="javascript:void(0)" class="deleteMess"> |
||||||
|
Удалить контакт |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-6 commChat" id="contact-chat"> |
||||||
|
<div id="message-chat-space"> |
||||||
|
|
||||||
|
</div> |
||||||
|
<form id="contact-chat-form"> |
||||||
|
<input type="hidden" value="{{ request.user.pk }}" name="senderId" id="senderId"/> |
||||||
|
<input type="hidden" value="" name="recipentId" id="recipentId"/> |
||||||
|
|
||||||
|
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
||||||
|
<div class="bunChat"> |
||||||
|
<div class="setChat box-sizing"> |
||||||
|
<p>Прикрепить файл</p> |
||||||
<span> |
<span> |
||||||
Не более 10 файлов с общим объемом 500мб |
Не более 10 файлов с общим объемом 500мб |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<a id="contact-chat-add-message" href="javascript:void(0)">отправить</a> |
<a id="contact-chat-add-message" href="javascript:void(0)">отправить</a> |
||||||
|
|
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
|
|
||||||
</div> |
</div> |
||||||
<div class="col-lg-3 wrChat1"> |
<div class="col-lg-3 wrChat1"> |
||||||
<div class="messageBlock box-sizing disTab"> |
<div class="messageBlock box-sizing disTab"> |
||||||
<p>Контакты</p> |
<p>Контакты</p> |
||||||
<div class="message"> |
<div class="message"> |
||||||
<div class="imgMess"> |
<div class="imgMess"> |
||||||
<img src="img/mess.png" alt="mess-image"> |
<img src="img/mess.png" alt="mess-image"> |
||||||
</div> |
</div> |
||||||
<p class="nameMess"> |
<p class="nameMess"> |
||||||
<a href="#">Иванов Петр Иванович</a> |
<a href="#">Иванов Петр Иванович</a> |
||||||
</p> |
</p> |
||||||
<a href="javascript:void(0)" class="conMess">Контакты</a> |
<a href="javascript:void(0)" class="conMess">Контакты</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-12 startChat"> |
<div class="col-lg-12 startChat"> |
||||||
<div class="insetSC1"> |
<div class="insetSC1"> |
||||||
Начало: |
Начало: |
||||||
<span>Срок сдачи:</span> |
<span>Срок сдачи:</span> |
||||||
</div> |
</div> |
||||||
<div class="insetSC2"> |
<div class="insetSC2"> |
||||||
13.0.2016 |
13.0.2016 |
||||||
<span>13.0.2016</span> |
<span>13.0.2016</span> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-12 documentsChat"> |
<div class="col-lg-12 documentsChat"> |
||||||
<p>Входящие документы</p> |
<p>Входящие документы</p> |
||||||
<ul> |
<ul> |
||||||
<li> |
<li> |
||||||
Архитерурное 2.jpg |
Архитерурное 2.jpg |
||||||
<span>7мб</span> |
<span>7мб</span> |
||||||
<div></div> |
<div></div> |
||||||
</li> |
</li> |
||||||
|
|
||||||
</ul> |
</ul> |
||||||
<a href="javascript:void(0)"> |
<a href="javascript:void(0)"> |
||||||
Распечатать с помощью ресурса |
Распечатать с помощью ресурса |
||||||
</a> |
</a> |
||||||
</div> |
</div> |
||||||
<div class="textAreaBlock2 box-sizing disTab"> |
<div class="textAreaBlock2 box-sizing disTab"> |
||||||
<p>Для заметок</p> |
<p>Для заметок</p> |
||||||
<textarea id="chat2"></textarea> |
<textarea id="chat2"></textarea> |
||||||
<a href="javascript:void()">сохранить</a> |
<a href="javascript:void()">сохранить</a> |
||||||
</div> |
</div> |
||||||
<div class="closeChat closeChat1"> |
<div class="closeChat closeChat1"> |
||||||
<a href="javascript:void(0)"> |
<a href="javascript:void(0)"> |
||||||
Закрыть проект<br>и оставить отзыв |
Закрыть проект<br>и оставить отзыв |
||||||
</a> |
</a> |
||||||
</div> |
</div> |
||||||
<div class="closeChat closeChat2"> |
<div class="closeChat closeChat2"> |
||||||
<a href="javascript:void(0)"> |
<a href="javascript:void(0)"> |
||||||
Закрыть проект<br>и оставить отзыв |
Закрыть проект<br>и оставить отзыв |
||||||
</a> |
</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
<div class="chatBlock disTab tab-pane fade" id="tab2"> |
|
||||||
<div class="col-lg-3 wrMessages"> |
|
||||||
|
|
||||||
<div class="messageBlock box-sizing disTab"> |
|
||||||
<p>Заказы</p> |
|
||||||
{% for order in orders %} |
|
||||||
<div class="orderBlock box-sizing order-block" data-id="{{ order.id }}"> |
|
||||||
<span class="dimovChat"></span> |
|
||||||
<p class="titleOB"> |
|
||||||
{{ order }} |
|
||||||
</p> |
|
||||||
<div class="hideOBB"> |
|
||||||
<p class="pOB"> |
|
||||||
<span>Испонитель:</span> {{ request.user.get_full_name }} |
|
||||||
</p> |
|
||||||
<p class="pOB"> |
|
||||||
<span>Чаты:</span> Иванов, Петров, Пенкин |
|
||||||
</p> |
|
||||||
<a href="javascript:void(0)" class="linkChat11"> |
|
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
|
||||||
Полное описание заказа |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
{% endfor%} |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
|
||||||
<div class="col-lg-6 commChat"> |
|
||||||
<div id="message-chat-order-space"> |
|
||||||
{% for msg in chat_messages %} |
|
||||||
<div class="col-lg-12 insetCommChat {% if msg.sender.pk == request.user.pk %}youChat{% endif %}"> |
|
||||||
<div class="topCommChat"> |
|
||||||
<p class="nameCommChat {% if msg.sender.pk == request.user.pk %}greenNCC{% endif %}">{{ msg.sender.get_full_name }}</p> |
|
||||||
<span>{{ msg.created }}</span> |
|
||||||
</div> |
|
||||||
<p class="textCommChat">{{ msg }}</p> |
|
||||||
</div> |
|
||||||
{% endfor %} |
|
||||||
</div> |
</div> |
||||||
<form id="chat-contractor-order"> |
<div class="chatBlock disTab tab-pane fade" id="tab2"> |
||||||
<input type="text" id="orderId" /> |
<div class="col-lg-3 wrMessages"> |
||||||
<input type="text" id="senderOrderId" value="{{ request.user.pk }}" /> |
|
||||||
<input type="text" id="recipentOrderId" /> |
<div class="messageBlock box-sizing disTab"> |
||||||
|
<p>Заказы</p> |
||||||
<textarea id="chat" class="box-sizing"></textarea> |
{% for order in orders %} |
||||||
<div class="bunChat"> |
<div class="orderBlock box-sizing order-block" |
||||||
<div class="setChat box-sizing"> |
data-recipent-id="{{ order.project.customer.pk }}" data-id="{{ order.id }}"> |
||||||
<p>Прикрепить файл</p> |
<span class="dimovChat"></span> |
||||||
|
<p class="titleOB"> |
||||||
|
{{ order }} |
||||||
|
</p> |
||||||
|
<div class="hideOBB"> |
||||||
|
<p class="pOB"> |
||||||
|
<span>Испонитель:</span> {{ request.user.get_full_name }} |
||||||
|
</p> |
||||||
|
<p class="pOB"> |
||||||
|
<span>Чаты:</span> Иванов, Петров, Пенкин |
||||||
|
</p> |
||||||
|
<a href="javascript:void(0)" class="linkChat11"> |
||||||
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
||||||
|
Полное описание заказа |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-lg-6 commChat"> |
||||||
|
<div id="message-chat-order-space"> |
||||||
|
{# {% for msg in chat_messages %}#} |
||||||
|
{# <div class="col-lg-12 insetCommChat {% if msg.sender.pk == request.user.pk %}youChat{% endif %}">#} |
||||||
|
{# <div class="topCommChat">#} |
||||||
|
{# <p class="nameCommChat {% if msg.sender.pk == request.user.pk %}greenNCC{% endif %}">{{ msg.sender.get_full_name }}</p>#} |
||||||
|
{# <span>{{ msg.created }}</span>#} |
||||||
|
{# </div>#} |
||||||
|
{# <p class="textCommChat">{{ msg }}</p>#} |
||||||
|
{# </div>#} |
||||||
|
{# {% endfor %}#} |
||||||
|
</div> |
||||||
|
<form id="chat-contractor-order"> |
||||||
|
<input type="text" id="orderId"/> |
||||||
|
<input type="text" id="senderOrderId" value="{{ request.user.pk }}"/> |
||||||
|
<input type="text" id="recipentOrderId"/> |
||||||
|
|
||||||
|
<textarea id="chat" class="box-sizing"></textarea> |
||||||
|
<div class="bunChat"> |
||||||
|
<div class="setChat box-sizing"> |
||||||
|
<p>Прикрепить файл</p> |
||||||
<span> |
<span> |
||||||
Не более 10 файлов с общим объемом 500мб |
Не более 10 файлов с общим объемом 500мб |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
<a href="javascript:void(0)">отправить</a> |
<a href="javascript:void(0)">отправить</a> |
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-3 wrTAB"> |
<div class="col-lg-3 wrTAB"> |
||||||
<div class="textAreaBlock2 box-sizing disTab"> |
<div class="textAreaBlock2 box-sizing disTab"> |
||||||
<p>Для заметок</p> |
<p>Для заметок</p> |
||||||
<textarea id="chat2" ></textarea> |
<textarea id="chat2"></textarea> |
||||||
<a href="javascript:void()">сохранить</a> |
<a href="javascript:void()">сохранить</a> |
||||||
</div> |
</div> |
||||||
<div class="linkChatB box-sizing disTab"> |
<div class="linkChatB box-sizing disTab"> |
||||||
<a href="javascript:void(0)">предложить проект</a> |
<a href="javascript:void(0)">предложить проект</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="chatBlock disTab tab-pane fade" id="tab3"> |
<div class="chatBlock disTab tab-pane fade" id="tab3"> |
||||||
<div class="col-lg-3 wrMessages"> |
<div class="col-lg-3 wrMessages"> |
||||||
<div class="messageBlock box-sizing disTab"> |
<div class="messageBlock box-sizing disTab"> |
||||||
<p>Заказы</p> |
<p>Заказы</p> |
||||||
<div class="orderBlock box-sizing orAct"> |
<div class="orderBlock box-sizing orAct"> |
||||||
<span class="dimovChat"></span> |
<span class="dimovChat"></span> |
||||||
<p class="titleOB"> |
<p class="titleOB"> |
||||||
Дизай-проект квартиры на набережной 200 m2 |
Дизай-проект квартиры на набережной 200 m2 |
||||||
</p> |
</p> |
||||||
<div class="hideOBB disTab"> |
<div class="hideOBB disTab"> |
||||||
<p class="pOB"> |
<p class="pOB"> |
||||||
<span>Заказчик:</span> Группа Икс |
<span>Заказчик:</span> Группа Икс |
||||||
</p> |
</p> |
||||||
<ul class="listChat1"> |
<ul class="listChat1"> |
||||||
<li>Иванов Петр Иванович</li> |
<li>Иванов Петр Иванович</li> |
||||||
<li>Сергей Пенкин</li> |
<li>Сергей Пенкин</li> |
||||||
</ul> |
</ul> |
||||||
<a href="javascript:void(0)" class="linkChat11"> |
<a href="javascript:void(0)" class="linkChat11"> |
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
||||||
Полное описание заказа |
Полное описание заказа |
||||||
</a> |
</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="orderBlock box-sizing"> |
<div class="orderBlock box-sizing"> |
||||||
<span class="dimovChat"></span> |
<span class="dimovChat"></span> |
||||||
<p class="titleOB"> |
<p class="titleOB"> |
||||||
Дизай-проект квартиры на набережной 200 m2 |
Дизай-проект квартиры на набережной 200 m2 |
||||||
</p> |
</p> |
||||||
<div class="hideOBB disTab"> |
<div class="hideOBB disTab"> |
||||||
<p class="pOB"> |
<p class="pOB"> |
||||||
<span>Заказчик:</span> Группа Икс |
<span>Заказчик:</span> Группа Икс |
||||||
</p> |
</p> |
||||||
<ul class="listChat1"> |
<ul class="listChat1"> |
||||||
<li>Иванов Петр Иванович</li> |
<li>Иванов Петр Иванович</li> |
||||||
<li>Сергей Пенкин</li> |
<li>Сергей Пенкин</li> |
||||||
</ul> |
</ul> |
||||||
<a href="javascript:void(0)" class="linkChat11"> |
<a href="javascript:void(0)" class="linkChat11"> |
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
||||||
Полное описание заказа |
Полное описание заказа |
||||||
</a> |
</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-6 commChat"> |
<div class="col-lg-6 commChat"> |
||||||
<div class="col-lg-12 insetCommChat"> |
<div class="col-lg-12 insetCommChat"> |
||||||
<div class="topCommChat"> |
<div class="topCommChat"> |
||||||
<p class="nameCommChat"> |
<p class="nameCommChat"> |
||||||
Иванов Петр Иванович |
Иванов Петр Иванович |
||||||
</p> |
</p> |
||||||
<span> |
<span> |
||||||
13.0.2016 / 21:05 |
13.0.2016 / 21:05 |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
<p class="textCommChat"> |
<p class="textCommChat"> |
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit</p> |
Lorem ipsum dolor sit amet, consectetur adipiscing elit</p> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-12 insetCommChat youChat"> |
<div class="col-lg-12 insetCommChat youChat"> |
||||||
<div class="topCommChat"> |
<div class="topCommChat"> |
||||||
<p class="nameCommChat greenNCC"> |
<p class="nameCommChat greenNCC"> |
||||||
Вы |
Вы |
||||||
</p> |
</p> |
||||||
<span> |
<span> |
||||||
13.0.2016 / 21:05 |
13.0.2016 / 21:05 |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
<p class="textCommChat"> |
<p class="textCommChat"> |
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> |
Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> |
||||||
</div> |
</div> |
||||||
<textarea id="chat" class="box-sizing"></textarea> |
<textarea id="chat" class="box-sizing"></textarea> |
||||||
<div class="bunChat"> |
<div class="bunChat"> |
||||||
<div class="setChat box-sizing"> |
<div class="setChat box-sizing"> |
||||||
<p>Прикрепить файл</p> |
<p>Прикрепить файл</p> |
||||||
<span> |
<span> |
||||||
Не более 10 файлов с общим объемом 500мб |
Не более 10 файлов с общим объемом 500мб |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
<a href="javascript:void(0)">отправить</a> |
<a href="javascript:void(0)">отправить</a> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-3 wrstepschat"> |
<div class="col-lg-3 wrstepschat"> |
||||||
<p>Этапы работы</p> |
<p>Этапы работы</p> |
||||||
<div class="stepssBlock box-sizing disTab"> |
<div class="stepssBlock box-sizing disTab"> |
||||||
<p class="titleStepss">1 / Согласование условий</p> |
<p class="titleStepss">1 / Согласование условий</p> |
||||||
<p class="textStepss"> |
<p class="textStepss"> |
||||||
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. |
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. |
||||||
</p> |
</p> |
||||||
</div> |
</div> |
||||||
<div class="numberStepp box-sizing"> |
<div class="numberStepp box-sizing"> |
||||||
<div class="insetNumStepp"> |
<div class="insetNumStepp"> |
||||||
<p class="titleNumStepp"> |
<p class="titleNumStepp"> |
||||||
<span>Этап 1</span>Название этапа |
<span>Этап 1</span>Название этапа |
||||||
</p> |
</p> |
||||||
<p class="textNumStepp"> |
<p class="textNumStepp"> |
||||||
Результаты этапа: Готовый чертеж 1 |
Результаты этапа: Готовый чертеж 1 |
||||||
</p> |
</p> |
||||||
<div> |
<div> |
||||||
<p>до 16.03.2015</p> |
<p>до 16.03.2015</p> |
||||||
<span>30 000 <i class="fa fa-rub"></i></span> |
<span>30 000 <i class="fa fa-rub"></i></span> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="numberStepp box-sizing"> |
<div class="numberStepp box-sizing"> |
||||||
<div class="insetNumStepp"> |
<div class="insetNumStepp"> |
||||||
<p class="titleNumStepp"> |
<p class="titleNumStepp"> |
||||||
<span>Этап 2</span>Название этапа |
<span>Этап 2</span>Название этапа |
||||||
</p> |
</p> |
||||||
<p class="textNumStepp"> |
<p class="textNumStepp"> |
||||||
Результаты этапа: Готовый чертеж 1 |
Результаты этапа: Готовый чертеж 1 |
||||||
</p> |
</p> |
||||||
<div> |
<div> |
||||||
<p>до 16.03.2015</p> |
<p>до 16.03.2015</p> |
||||||
<span>30 000 <i class="fa fa-rub"></i></span> |
<span>30 000 <i class="fa fa-rub"></i></span> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="textAreaBlock2 FFD box-sizing disTab"> |
<div class="textAreaBlock2 FFD box-sizing disTab"> |
||||||
<a href="javascript:void()">согласовать</a> |
<a href="javascript:void()">согласовать</a> |
||||||
</div> |
</div> |
||||||
<div class="stepssBlock box-sizing disTab"> |
<div class="stepssBlock box-sizing disTab"> |
||||||
<p class="titleStepss">2 / Резервирование</p> |
<p class="titleStepss">2 / Резервирование</p> |
||||||
<p class="textStepss"> |
<p class="textStepss"> |
||||||
Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на сайте. |
Резервирование заказчиком суммы оплаты по заказ. Деньги перечисляются и хранятся на |
||||||
</p> |
сайте. |
||||||
<ul> |
</p> |
||||||
<li>Сумма еще не зарезервирована</li> |
<ul> |
||||||
<li>Сумма за этап1, Зарезервирована</li> |
<li>Сумма еще не зарезервирована</li> |
||||||
</ul> |
<li>Сумма за этап1, Зарезервирована</li> |
||||||
</div> |
</ul> |
||||||
<div class="stepssBlock box-sizing disTab"> |
</div> |
||||||
<p class="titleStepss">3 / Выполнение работы</p> |
<div class="stepssBlock box-sizing disTab"> |
||||||
<p class="textStepss"> |
<p class="titleStepss">3 / Выполнение работы</p> |
||||||
Процесс выполнения задания в заказе до получения заказчиком итогового результата работы. |
<p class="textStepss"> |
||||||
</p> |
Процесс выполнения задания в заказе до получения заказчиком итогового результата работы. |
||||||
</div> |
</p> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
{% include 'partials/footer.html' %} |
</div> |
||||||
</div> |
{% include 'partials/footer.html' %} |
||||||
</div> |
</div> |
||||||
|
</div> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|
||||||
{% block js_block %} |
{% block js_block %} |
||||||
{# <script type="text/javascript" src="{% static 'js/chat.js' %}"></script>#} |
{# <script type="text/javascript" src="{% static 'js/chat.js' %}"></script>#} |
||||||
<script type="text/javascript"> |
<script type="text/javascript"> |
||||||
/** |
/** |
||||||
* Created by mukhtar on 04.07.16. |
* Created by mukhtar on 04.07.16. |
||||||
*/ |
*/ |
||||||
|
|
||||||
|
|
||||||
var SocketHandler = function () { |
var SocketHandler = function () { |
||||||
var userId = {{ request.user.pk }}; |
var userId = {{ request.user.pk }}; |
||||||
var url = 'ws://127.0.0.1:8888/chat/' + userId +'/'; |
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/'; |
||||||
var sock = new WebSocket(url); |
var sock = new WebSocket(url); |
||||||
var intervalId; |
var intervalId; |
||||||
sock.onopen = function () { |
sock.onopen = function () { |
||||||
console.log("Start connect"); |
console.log("Start connect"); |
||||||
intervalId = setInterval(function () { |
intervalId = setInterval(function () { |
||||||
sock.send('{"dummy": 1}'); |
sock.send('{"dummy": 1}'); |
||||||
}, 150000); |
}, 150000); |
||||||
}; |
}; |
||||||
sock.onmessage = function (event) { |
sock.onmessage = function (event) { |
||||||
console.log(event.data); |
console.log(event.data); |
||||||
var message = JSON.parse(event.data); |
alert(event.data); |
||||||
var inbox = document.getElementById('message-chat-space'); |
var message = JSON.parse(event.data); |
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
var inbox = document.getElementById('message-chat-space'); |
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
'<p class="textCommChat">' + message.msg + '</p></div>'; |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
this.send_contact_message = function (userId) { |
|
||||||
var data = { |
|
||||||
"format_type": "add_message", |
|
||||||
"user_id": userId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.add_contact_message = function (messageData) { |
|
||||||
console.log(messageData); |
|
||||||
sock.send(JSON.stringify(messageData)); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_message = function (form) { |
|
||||||
var elements = form.elements; |
|
||||||
var data = {}; |
|
||||||
var i = 0; |
|
||||||
for (var i; i < elements.length; i++) { |
|
||||||
if (elements[i].name == 'message') { |
|
||||||
data[elements[i].name] = elements[i].value; |
|
||||||
} |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
var textareaMessage = document.getElementById("message"); |
|
||||||
textareaMessage.value = ""; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
$(function () { |
|
||||||
var socket = new SocketHandler(); |
|
||||||
var form = document.getElementById('message_form'); |
|
||||||
var csrftoken = getCookie('csrftoken'); |
|
||||||
|
|
||||||
// Вытащить сообщения для чата заказа |
|
||||||
$('.order-block').on('click', function () { |
|
||||||
var orderId = $(this).attr('data-id'); |
|
||||||
$("#chat-contractor-order #orderId").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) { |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
'<p class="textCommChat">' + message.msg + '</p></div>'; |
||||||
}); |
|
||||||
} |
}; |
||||||
}); |
|
||||||
|
this.send_contact_message = function (userId) { |
||||||
|
var data = { |
||||||
|
"format_type": "add_message", |
||||||
|
"user_id": userId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.add_contact_message = function (messageData) { |
||||||
|
console.log(messageData); |
||||||
|
sock.send(JSON.stringify(messageData)); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_message = function (form) { |
||||||
|
var elements = form.elements; |
||||||
|
var data = {}; |
||||||
|
var i = 0; |
||||||
|
for (var i; i < elements.length; i++) { |
||||||
|
if (elements[i].name == 'message') { |
||||||
|
data[elements[i].name] = elements[i].value; |
||||||
|
} |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
var textareaMessage = document.getElementById("message"); |
||||||
|
textareaMessage.value = ""; |
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
// Вытащить сообщения для конактов |
|
||||||
$('.user-block').on('click', function () { |
|
||||||
var userId = $(this).attr('data-id'); |
|
||||||
$("#contact-chat-form #recipentId").val(userId); |
|
||||||
var inbox = document.getElementById('message-chat-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'recipent__id': userId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
console.log(v.sender.id); |
|
||||||
console.log(v.recipent.id); |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
} |
||||||
}); |
|
||||||
|
|
||||||
}); |
} |
||||||
|
|
||||||
// Добавить сообщение для контакта |
|
||||||
$('#contact-chat-add-message').on('click', function () { |
|
||||||
var chatMessage = $("#chat").val(); |
|
||||||
var recipentId = $("#recipentId").val(); |
|
||||||
var senderId = $("#senderId").val(); |
|
||||||
|
|
||||||
socket.add_contact_message({ |
|
||||||
"format_type": "add_message_contact", |
|
||||||
"data": { |
|
||||||
"sender_id": senderId, |
|
||||||
"recipent_id": recipentId, |
|
||||||
"chat_message": chatMessage, |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$("#chat").val(""); |
$(function () { |
||||||
}); |
var currentChatUser = {{ request.user.pk }}; |
||||||
|
var socket = new SocketHandler(); |
||||||
|
var form = document.getElementById('message_form'); |
||||||
|
var csrftoken = getCookie('csrftoken'); |
||||||
|
|
||||||
|
// Вытащить сообщения для чата заказа |
||||||
|
$('.order-block').on('click', function () { |
||||||
|
var orderId = $(this).attr('data-id'); |
||||||
|
var recipentId = $(this).attr('data-recipent-id'); |
||||||
|
$("#chat-contractor-order #orderId").val(orderId); |
||||||
|
$("#chat-contractor-order #recipentId").val(recipentId); |
||||||
|
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 += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
||||||
|
'<p class="textCommChat">' + v.text + '</p></div>'; |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
}); |
||||||
|
|
||||||
|
// Вытащить сообщения для конактов |
||||||
|
$('.user-block').on('click', function () { |
||||||
|
var userId = $(this).attr('data-id'); |
||||||
|
$("#contact-chat-form #recipentId").val(userId); |
||||||
|
var inbox = document.getElementById('message-chat-space'); |
||||||
|
inbox.innerHTML = ''; |
||||||
|
$.ajax({ |
||||||
|
url: '/api/message', |
||||||
|
type: 'GET', |
||||||
|
data: { |
||||||
|
csrfmiddlewaretoken: csrftoken, |
||||||
|
'operand': 'in', |
||||||
|
'sender_id': currentChatUser, |
||||||
|
'recipent_id': userId |
||||||
|
}, |
||||||
|
dataType: 'json', |
||||||
|
success: function (json) { |
||||||
|
$.each(json.results, function (i, v) { |
||||||
|
|
||||||
|
console.log(v.sender.id); |
||||||
|
var senderName = 'Вы'; |
||||||
|
var className = 'youChat'; |
||||||
|
if (v.sender.id == userId) { |
||||||
|
senderName = v.sender.username; |
||||||
|
className = ''; |
||||||
|
} |
||||||
|
|
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
||||||
|
'<p class="textCommChat">' + v.text + '</p></div>'; |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
}); |
}); |
||||||
|
|
||||||
|
// Добавить сообщение для контакта |
||||||
|
$('#contact-chat-add-message').on('click', function () { |
||||||
|
var chatMessage = $("#chat").val(); |
||||||
|
var recipentId = $("#recipentId").val(); |
||||||
|
var senderId = $("#senderId").val(); |
||||||
|
|
||||||
|
socket.add_contact_message({ |
||||||
|
"format_type": "add_message_contact", |
||||||
|
"data": { |
||||||
|
"sender_id": senderId, |
||||||
|
"recipent_id": recipentId, |
||||||
|
"chat_message": chatMessage, |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
var inbox = $('#message-chat-space').html(); |
||||||
|
$('#message-chat-space').html(inbox + '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">Вы</p> <span>Сейчас</span></div>' + |
||||||
|
'<p class="textCommChat">' + chatMessage + '</p></div>'); |
||||||
|
|
||||||
|
$("#chat").val(""); |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
</script> |
}); |
||||||
|
</script> |
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|||||||
@ -1,326 +1,421 @@ |
|||||||
{% extends 'partials/base.html' %} |
{% extends 'partials/base.html' %} |
||||||
{% load staticfiles %} |
{% load staticfiles %} |
||||||
|
{% load thumbnail %} |
||||||
{% block content %} |
{% block content %} |
||||||
{% include 'partials/header.html' %} |
{% include 'partials/header.html' %} |
||||||
<div class="container mainScore"> |
<div class="container mainScore"> |
||||||
<div class="row"> |
<div class="row"> |
||||||
<div class="col-lg-12 allProjects"> |
<div class="col-lg-12 allProjects"> |
||||||
<h1>Чат</h1> |
<h1>Чат</h1> |
||||||
</div> |
</div> |
||||||
<div class="btnReadyBlock disTab"> |
<div class="btnReadyBlock disTab"> |
||||||
<div class="triangle1"></div> |
<div class="triangle1"></div> |
||||||
<div class="col-lg-6 col-lg-offset-3 tabsChat"> |
<div class="col-lg-6 col-lg-offset-3 tabsChat"> |
||||||
<div class="profileTabs2"> |
<div class="profileTabs2"> |
||||||
<ul class="nav nav-tabs nav-justified"> |
<ul class="nav nav-tabs nav-justified"> |
||||||
<li role="presentation" class="active"> |
<li role="presentation" class="active"> |
||||||
<a href="#tab1" data-toggle="tab">Личные</a> |
<a href="#tab1" data-toggle="tab">Личные</a> |
||||||
</li> |
</li> |
||||||
<li role="presentation"> |
<li role="presentation"> |
||||||
<a href="#tab2" data-toggle="tab">Исполнители</a> |
<a href="#tab2" data-toggle="tab">Исполнители</a> |
||||||
</li> |
</li> |
||||||
</ul> |
</ul> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="tab-content"> |
<div class="tab-content"> |
||||||
<div class="chatBlock disTab tab-pane fade in active" id="tab1"> |
<div class="chatBlock disTab tab-pane fade in active" id="tab1"> |
||||||
<div class="col-lg-3 wrMessages"> |
<div class="col-lg-3 wrMessages"> |
||||||
<div class="messageBlock box-sizing disTab"> |
<div class="messageBlock box-sizing disTab"> |
||||||
<p>Контакты</p> |
<p>Контакты</p> |
||||||
{% for contact in customer_contacts %} |
{% for contact in contacts_users %} |
||||||
|
<div class="message messd user-block" data-id="{{ contact.pk }}"> |
||||||
<div class="message messd user-block" data-id="{{ contact.recipent_id}}"> |
<div class="imgMess"> |
||||||
<div class="imgMess"> |
{% thumbnail contact.avatar "60x60" crop="center" as im %} |
||||||
<img src="{% static 'img/mess.png' %}" alt="mess-image"> |
<img src="{{ im.url }}" alt="mess-image"> |
||||||
</div> |
{% endthumbnail %} |
||||||
<p class="nameMess"> |
</div> |
||||||
<a href="#">Тестовый контакт</a> |
<p class="nameMess"> |
||||||
</p> |
<a href="#">{{ contact.username }} {{ contact.username }}</a> |
||||||
<a href="javascript:void(0)" class="conMess">Контакты</a> |
</p> |
||||||
<span>0</span> |
<a href="javascript:void(0)" class="conMess">Контакты</a> |
||||||
<a href="javascript:void(0)" class="deleteMess"> |
<span>0</span> |
||||||
Удалить контакт |
<a href="javascript:void(0)" class="deleteMess"> |
||||||
</a> |
Удалить контакт |
||||||
</div> |
</a> |
||||||
{% endfor %} |
</div> |
||||||
|
{% endfor %} |
||||||
|
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-6 commChat" id="contact-chat"> |
<div class="col-lg-6 commChat" id="contact-chat"> |
||||||
<div id="message-chat-space"> |
<div id="message-chat-space"> |
||||||
</div> |
</div> |
||||||
<form id="contact-chat-form"> |
<form id="contact-chat-form"> |
||||||
<input type="text" value="{{ request.user.pk }}" name="senderId" id="senderId" /> |
<input type="text" value="{{ request.user.pk }}" name="senderId" id="senderId"/> |
||||||
<input type="text" value="" name="recipentId" id="recipentId" /> |
<input type="text" value="" name="recipentId" id="recipentId"/> |
||||||
|
|
||||||
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
||||||
<div class="bunChat"> |
<div class="bunChat"> |
||||||
<div class="setChat box-sizing"> |
<div class="setChat box-sizing"> |
||||||
<p>Прикрепить файл</p> |
<p>Прикрепить файл</p> |
||||||
<span> |
<span> |
||||||
Не более 10 файлов с общим объемом 500мб |
Не более 10 файлов с общим объемом 500мб |
||||||
</span> |
</span> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<a id="contact-chat-add-message" href="javascript:void(0)">отправить</a> |
<a id="contact-chat-add-message" href="javascript:void(0)">отправить</a> |
||||||
|
|
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
|
|
||||||
</div> |
|
||||||
<div class="col-lg-3 wrChat1"> |
|
||||||
<div class="messageBlock box-sizing disTab"> |
|
||||||
<p>Контакты</p> |
|
||||||
<div class="message"> |
|
||||||
<div class="imgMess"> |
|
||||||
<img src="img/mess.png" alt="mess-image"> |
|
||||||
</div> |
|
||||||
<p class="nameMess"> |
|
||||||
<a href="#">Иванов Петр Иванович</a> |
|
||||||
</p> |
|
||||||
<a href="javascript:void(0)" class="conMess">Контакты</a> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-12 startChat"> |
|
||||||
<div class="insetSC1"> |
|
||||||
Начало: |
|
||||||
<span>Срок сдачи:</span> |
|
||||||
</div> |
|
||||||
<div class="insetSC2"> |
|
||||||
13.0.2016 |
|
||||||
<span>13.0.2016</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-12 documentsChat"> |
|
||||||
<p>Входящие документы</p> |
|
||||||
<ul> |
|
||||||
<li> |
|
||||||
Архитерурное 2.jpg |
|
||||||
<span>7мб</span> |
|
||||||
<div></div> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
<a href="javascript:void(0)"> |
|
||||||
Распечатать с помощью ресурса |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
<div class="textAreaBlock2 box-sizing disTab"> |
|
||||||
<p>Для заметок</p> |
|
||||||
<textarea id="chat2"></textarea> |
|
||||||
<a href="javascript:void()">сохранить</a> |
|
||||||
</div> |
|
||||||
<div class="closeChat closeChat1"> |
|
||||||
<a href="javascript:void(0)"> |
|
||||||
Закрыть проект<br>и оставить отзыв |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
<div class="closeChat closeChat2"> |
|
||||||
<a href="javascript:void(0)"> |
|
||||||
Закрыть проект<br>и оставить отзыв |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="chatBlock disTab tab-pane fade" id="tab2"> |
|
||||||
<div class="col-lg-3 wrMessages"> |
|
||||||
|
|
||||||
<div class="messageBlock box-sizing disTab"> |
|
||||||
<p>Заказы</p> |
|
||||||
{% for order in orders %} |
|
||||||
<div class="orderBlock box-sizing order-block" data-id="{{ order.order.id }}"> |
|
||||||
<span class="dimovChat"></span> |
|
||||||
<p class="titleOB"> |
|
||||||
{{ order }} |
|
||||||
</p> |
|
||||||
<div class="hideOBB"> |
|
||||||
<p class="pOB"> |
|
||||||
<span>Испонитель:</span> {{ order.order.contractor.get_full_name }} |
|
||||||
</p> |
|
||||||
{# <p class="pOB">#} |
|
||||||
{# <span>Чаты:</span> Иванов, Петров, Пенкин#} |
|
||||||
{# </p>#} |
|
||||||
<a href="javascript:void(0)" class="linkChat11"> |
|
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
|
||||||
Полное описание заказа |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
{% endfor%} |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
</div> |
||||||
<div class="col-lg-6 commChat"> |
<div class="col-lg-3 wrChat1"> |
||||||
<div id="message-chat-order-space"> |
<div class="messageBlock box-sizing disTab"> |
||||||
{% for msg in chat_messages %} |
<p>Контакты</p> |
||||||
{# <div class="col-lg-12 insetCommChat {% if msg.sender.pk == request.user.pk %}youChat{% endif %}">#} |
<div class="message"> |
||||||
{# <div class="topCommChat">#} |
<div class="imgMess"> |
||||||
{# <p class="nameCommChat {% if msg.sender.pk == request.user.pk %}greenNCC{% endif %}">{{ msg.sender.get_full_name }}</p>#} |
<img src="img/mess.png" alt="mess-image"> |
||||||
{# <span>{{ msg.created }}</span>#} |
</div> |
||||||
{# </div>#} |
<p class="nameMess"> |
||||||
{# <p class="textCommChat">{{ msg }}</p>#} |
<a href="#">Иванов Петр Иванович</a> |
||||||
{# </div>#} |
</p> |
||||||
{% endfor %} |
<a href="javascript:void(0)" class="conMess">Контакты</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-12 startChat"> |
||||||
|
<div class="insetSC1"> |
||||||
|
Начало: |
||||||
|
<span>Срок сдачи:</span> |
||||||
|
</div> |
||||||
|
<div class="insetSC2"> |
||||||
|
13.0.2016 |
||||||
|
<span>13.0.2016</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-12 documentsChat"> |
||||||
|
<p>Входящие документы</p> |
||||||
|
<ul> |
||||||
|
<li> |
||||||
|
Архитерурное 2.jpg |
||||||
|
<span>7мб</span> |
||||||
|
<div></div> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
<a href="javascript:void(0)"> |
||||||
|
Распечатать с помощью ресурса |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="textAreaBlock2 box-sizing disTab"> |
||||||
|
<p>Для заметок</p> |
||||||
|
<textarea id="chat2"></textarea> |
||||||
|
<a href="javascript:void()">сохранить</a> |
||||||
|
</div> |
||||||
|
<div class="closeChat closeChat1"> |
||||||
|
<a href="javascript:void(0)"> |
||||||
|
Закрыть проект<br>и оставить отзыв |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="closeChat closeChat2"> |
||||||
|
<a href="javascript:void(0)"> |
||||||
|
Закрыть проект<br>и оставить отзыв |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
<form id="chat-order-add"> |
<div class="chatBlock disTab tab-pane fade" id="tab2"> |
||||||
<input type="text" name="senderId" value="{{ request.user.pk }}"/> |
<div class="col-lg-3 wrMessages"> |
||||||
<input type="text" name="recipentId" id="recipentId" value="" /> |
|
||||||
<input type="text" name="orderId" id="orderId" value="" /> |
<div class="messageBlock box-sizing disTab"> |
||||||
<textarea id="chat" class="box-sizing"></textarea> |
<p>Заказы</p> |
||||||
<div class="bunChat"> |
{% for order in orders %} |
||||||
<div class="setChat box-sizing"> |
<div class="orderBlock box-sizing order-block" |
||||||
<p>Прикрепить файл</p> |
data-recipent-id="{{ order.order.contractor.pk }}" data-id="{{ order.order.id }}"> |
||||||
|
<span class="dimovChat"></span> |
||||||
|
<p class="titleOB"> |
||||||
|
{{ order }} |
||||||
|
</p> |
||||||
|
<div class="hideOBB"> |
||||||
|
<p class="pOB"> |
||||||
|
<span>Испонитель:</span> {{ order.order.contractor.get_full_name }} |
||||||
|
</p> |
||||||
|
{# <p class="pOB">#} |
||||||
|
{# <span>Чаты:</span> Иванов, Петров, Пенкин#} |
||||||
|
{# </p>#} |
||||||
|
<a href="javascript:void(0)" class="linkChat11"> |
||||||
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
||||||
|
Полное описание заказа |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-lg-6 commChat"> |
||||||
|
<div id="message-chat-order-space"> |
||||||
|
{% for msg in chat_messages %} |
||||||
|
{# <div class="col-lg-12 insetCommChat {% if msg.sender.pk == request.user.pk %}youChat{% endif %}">#} |
||||||
|
{# <div class="topCommChat">#} |
||||||
|
{# <p class="nameCommChat {% if msg.sender.pk == request.user.pk %}greenNCC{% endif %}">{{ msg.sender.get_full_name }}</p>#} |
||||||
|
{# <span>{{ msg.created }}</span>#} |
||||||
|
{# </div>#} |
||||||
|
{# <p class="textCommChat">{{ msg }}</p>#} |
||||||
|
{# </div>#} |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
<form id="chat-order-add"> |
||||||
|
<input type="text" name="senderId" id="senderId" value="{{ request.user.pk }}"/> |
||||||
|
<input type="text" name="recipentId" id="recipentId" value=""/> |
||||||
|
<input type="text" name="orderId" id="orderId" value=""/> |
||||||
|
<textarea id="chat" class="box-sizing"></textarea> |
||||||
|
<div class="bunChat"> |
||||||
|
<div class="setChat box-sizing"> |
||||||
|
<p>Прикрепить файл</p> |
||||||
<span> |
<span> |
||||||
Не более 10 файлов с общим объемом 500мб |
Не более 10 файлов с общим объемом 500мб |
||||||
</span> |
</span> |
||||||
|
</div> |
||||||
|
<a href="javascript:void(0)" id="order-chat-add-message">отправить</a> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3 wrTAB"> |
||||||
|
<p>Этапы работы</p> |
||||||
|
<div class="stepssBlock box-sizing disTab"> |
||||||
|
<p class="titleStepss">1 / Согласование условий</p> |
||||||
|
<p class="textStepss"> |
||||||
|
Обсуджение задания и условий выполнения работы. Подтверждение заказа исполнителем. |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
<div class="numberStepp box-sizing"> |
||||||
|
<div class="insetNumStepp"> |
||||||
|
<p class="titleNumStepp"> |
||||||
|
<span>Этап 1</span> |
||||||
|
</p> |
||||||
|
<div class="textAreaBlock2 box-sizing disTab"> |
||||||
|
<form> |
||||||
|
<input type="text" value="Название этапа" /> |
||||||
|
<input type="text" value="Результат этапа" /> |
||||||
|
<input type="text" value="Срок этапа" /> |
||||||
|
<input type="text" value="Цена этапа" /> |
||||||
|
</form> |
||||||
|
|
||||||
|
<a href="javascript:void()">сохранить</a> |
||||||
|
</div> |
||||||
|
|
||||||
</div> |
</div> |
||||||
<a href="javascript:void(0)">отправить</a> |
|
||||||
</div> |
</div> |
||||||
</form> |
<div class="numberStepp box-sizing"> |
||||||
</div> |
<div class="insetNumStepp"> |
||||||
<div class="col-lg-3 wrTAB"> |
<p class="titleNumStepp"> |
||||||
<div class="textAreaBlock2 box-sizing disTab"> |
<span>Этап 2</span>Название этапа |
||||||
<p>Для заметок</p> |
</p> |
||||||
<textarea id="chat2" ></textarea> |
<p class="textNumStepp"> |
||||||
<a href="javascript:void()">сохранить</a> |
Результаты этапа: Готовый чертеж 1 |
||||||
|
</p> |
||||||
|
<div> |
||||||
|
<p>до 16.03.2015</p> |
||||||
|
<span>30 000 <i class="fa fa-rub"></i></span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
<div class="linkChatB box-sizing disTab"> |
<div class="textAreaBlock2 FFD box-sizing disTab"> |
||||||
<a href="javascript:void(0)">предложить проект</a> |
<a href="javascript:void()">согласовать</a> |
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
</div> |
<div class="textAreaBlock2 box-sizing disTab"> |
||||||
</div> |
<p>Для заметок</p> |
||||||
{% include 'partials/footer.html' %} |
<textarea id="chat2"></textarea> |
||||||
</div> |
<a href="javascript:void()">сохранить</a> |
||||||
</div> |
</div> |
||||||
|
<div class="linkChatB box-sizing disTab"> |
||||||
|
<a href="javascript:void(0)">предложить проект</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% include 'partials/footer.html' %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|
||||||
{% block js_block %} |
{% block js_block %} |
||||||
<script type="text/javascript"> |
<script type="text/javascript"> |
||||||
|
|
||||||
$(function(){ |
$(function () { |
||||||
var socket = new SocketHandler(); |
var currentChatUser = {{ request.user.pk }}; |
||||||
var form = document.getElementById('message_form'); |
var socket = new SocketHandler(); |
||||||
var csrftoken = getCookie('csrftoken'); |
var form = document.getElementById('message_form'); |
||||||
|
var csrftoken = getCookie('csrftoken'); |
||||||
$('.order-block').on('click',function(){ |
|
||||||
var orderId = $(this).attr('data-id'); |
|
||||||
$("#chat-order-add #orderId").val(orderId); |
|
||||||
alert(orderId); |
|
||||||
var inbox = document.getElementById('message-chat-order-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
{# socket.send_order_message(orderId);#} |
|
||||||
}); |
|
||||||
|
|
||||||
|
$('.order-block').on('click', function () { |
||||||
|
var orderId = $(this).attr('data-id'); |
||||||
|
var recipentId = $(this).attr('data-recipent-id'); |
||||||
|
$("#chat-order-add #orderId").val(orderId); |
||||||
|
$("#chat-order-add #recipentId").val(recipentId); |
||||||
|
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) { |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
||||||
|
'<p class="textCommChat">' + v.text + '</p></div>'; |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
// Вытащить сообщения для конактов |
// Вытащить сообщения для конактов |
||||||
$('.user-block').on('click', function () { |
$('.user-block').on('click', function () { |
||||||
var userId = $(this).attr('data-id'); |
var userId = $(this).attr('data-id'); |
||||||
$("#contact-chat-form #recipentId").val(userId); |
$("#contact-chat-form #recipentId").val(userId); |
||||||
var inbox = document.getElementById('message-chat-space'); |
var inbox = document.getElementById('message-chat-space'); |
||||||
inbox.innerHTML = ''; |
inbox.innerHTML = ''; |
||||||
$.ajax({ |
$.ajax({ |
||||||
url: '/api/message', |
url: '/api/message', |
||||||
type: 'GET', |
type: 'GET', |
||||||
data: {csrfmiddlewaretoken: csrftoken, 'recipent__id': userId}, |
data: { |
||||||
dataType: 'json', |
csrfmiddlewaretoken: csrftoken, |
||||||
success: function (json) { |
'operand': 'in', |
||||||
$.each(json.results, function (i, v) { |
'sender_id': currentChatUser, |
||||||
console.log(v.sender.id); |
'recipent_id': userId |
||||||
console.log(v.recipent.id); |
}, |
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
dataType: 'json', |
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
success: function (json) { |
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
$.each(json.results, function (i, v) { |
||||||
|
var senderName = 'Вы'; |
||||||
|
var className = 'youChat'; |
||||||
|
if (v.sender.id == userId) { |
||||||
|
senderName = v.sender.username; |
||||||
|
className = ''; |
||||||
|
} |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
||||||
|
'<p class="textCommChat">' + v.text + '</p></div>'; |
||||||
|
}); |
||||||
|
} |
||||||
}); |
}); |
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
}); |
||||||
|
|
||||||
$('#contact-chat-add-message').on('click', function(){ |
$('#contact-chat-add-message').on('click', function () { |
||||||
var chatMessage = $("#chat").val(); |
var chatMessage = $("#chat").val(); |
||||||
var recipentId = $("#recipentId").val(); |
var recipentId = $("#recipentId").val(); |
||||||
var senderId = $("#senderId").val(); |
var senderId = $("#senderId").val(); |
||||||
|
|
||||||
socket.add_contact_message({ |
socket.add_contact_message({ |
||||||
"format_type": "add_message_contact", |
"format_type": "add_message_contact", |
||||||
"data": { |
"data": { |
||||||
"sender_id": senderId, |
"sender_id": senderId, |
||||||
"recipent_id": recipentId, |
"recipent_id": recipentId, |
||||||
"chat_message": chatMessage, |
"chat_message": chatMessage, |
||||||
} |
} |
||||||
|
}); |
||||||
|
|
||||||
|
$("#chat").val(""); |
||||||
|
}); |
||||||
|
|
||||||
|
$('#order-chat-add-message').on('click', function () { |
||||||
|
var chatMessage = $("#chat-order-add #chat").val(); |
||||||
|
var recipentId = $("#chat-order-add #recipentId").val(); |
||||||
|
var senderId = $("#chat-order-add #senderId").val(); |
||||||
|
var orderId = $("#chat-order-add #orderId").val(); |
||||||
|
|
||||||
|
|
||||||
|
socket.add_contact_message({ |
||||||
|
"format_type": "add_message_order", |
||||||
|
"data": { |
||||||
|
"sender_id": senderId, |
||||||
|
"recipent_id": recipentId, |
||||||
|
"chat_message": chatMessage, |
||||||
|
"order_id": orderId, |
||||||
|
|
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
$("#chat-order-add #chat").val(""); |
||||||
}); |
}); |
||||||
|
|
||||||
$("#chat").val(""); |
|
||||||
|
|
||||||
}); |
}); |
||||||
}); |
|
||||||
|
var userId = '{{ request.user.pk }}'; |
||||||
var userId = '{{ request.user.pk }}'; |
|
||||||
|
var SocketHandler = function () { |
||||||
var SocketHandler = function(){ |
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/'; |
||||||
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/'; |
var sock = new WebSocket(url); |
||||||
var sock = new WebSocket(url); |
var intervalId; |
||||||
var intervalId; |
sock.onopen = function () { |
||||||
sock.onopen = function(){ |
console.log("Start connect"); |
||||||
console.log("Start connect"); |
intervalId = setInterval(function () { |
||||||
intervalId = setInterval(function(){sock.send('{"dummy": 1}');}, 150); |
sock.send('{"dummy": 1}'); |
||||||
}; |
}, 150); |
||||||
sock.onmessage = function(event){ |
}; |
||||||
console.log(event.data); |
sock.onmessage = function (event) { |
||||||
alert(event.data); |
console.log(event.data); |
||||||
var message = JSON.parse(event.data); |
alert(event.data); |
||||||
var inbox; |
var message = JSON.parse(event.data); |
||||||
if (message.answer_type == 'contact'){ |
var inbox; |
||||||
inbox= document.getElementById('message-chat-order-space'); |
if (message.answer_type == 'contact') { |
||||||
}else if(message.answer_type == 'order'){ |
inbox = document.getElementById('message-chat-order-space'); |
||||||
inbox= document.getElementById('message-chat-space'); |
} else if (message.answer_type == 'order') { |
||||||
} |
inbox = document.getElementById('message-chat-space'); |
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
|
||||||
'<p class="textCommChat">' + message.msg +'</p></div>'; |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
this.send_order_message = function(orderId){ |
|
||||||
var data = { |
|
||||||
"format_type": "order_message", |
|
||||||
"order_id": orderId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_contact_message = function(userId){ |
|
||||||
var data = { |
|
||||||
"format_type": "add_message", |
|
||||||
"user_id": userId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.add_contact_message = function(messageData){ |
|
||||||
console.log(messageData); |
|
||||||
sock.send(JSON.stringify(messageData)); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_message = function(form){ |
|
||||||
var elements = form.elements; |
|
||||||
var data = {}; |
|
||||||
var i=0; |
|
||||||
for(var i; i< elements.length; i++){ |
|
||||||
if (elements[i].name == 'message') { |
|
||||||
data[elements[i].name] = elements[i].value; |
|
||||||
} |
} |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
||||||
|
'<p class="textCommChat">' + message.msg + '</p></div>'; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
this.send_order_message = function (orderId) { |
||||||
|
var data = { |
||||||
|
"format_type": "order_message", |
||||||
|
"order_id": orderId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_contact_message = function (userId) { |
||||||
|
var data = { |
||||||
|
"format_type": "add_message", |
||||||
|
"user_id": userId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.add_contact_message = function (messageData) { |
||||||
|
console.log(messageData); |
||||||
|
sock.send(JSON.stringify(messageData)); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_message = function (form) { |
||||||
|
var elements = form.elements; |
||||||
|
var data = {}; |
||||||
|
var i = 0; |
||||||
|
for (var i; i < elements.length; i++) { |
||||||
|
if (elements[i].name == 'message') { |
||||||
|
data[elements[i].name] = elements[i].value; |
||||||
|
} |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
var textareaMessage = document.getElementById("message"); |
||||||
|
textareaMessage.value = ""; |
||||||
|
|
||||||
} |
} |
||||||
sock.send(JSON.stringify(data)); |
|
||||||
var textareaMessage = document.getElementById("message"); |
|
||||||
textareaMessage.value = ""; |
|
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
} |
</script> |
||||||
|
|
||||||
</script> |
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|||||||
@ -0,0 +1,62 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.db.models.manager |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Location', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=50)), |
||||||
|
('type', models.CharField(choices=[('_root', 'Корень'), ('country', 'Страна'), ('region', 'Регион'), ('town', 'Город')], max_length=20)), |
||||||
|
('lft', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('rght', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('level', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='common.Location')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Местоположение', |
||||||
|
'verbose_name_plural': 'Местоположения', |
||||||
|
}, |
||||||
|
managers=[ |
||||||
|
('_default_manager', django.db.models.manager.Manager()), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='MainPage', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('contractor_text', models.TextField()), |
||||||
|
('customer_text', models.TextField()), |
||||||
|
('video_code', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Главная страница', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Settings', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('time_notification', models.IntegerField(default=180)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Настройки сайта', |
||||||
|
'verbose_name_plural': 'Настройки сайта', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:25 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='location', |
||||||
|
name='type', |
||||||
|
field=models.CharField(choices=[('_root', 'Корень'), ('country', 'Страна'), ('region', 'Регион'), ('town', 'Город')], default=None, max_length=20), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='City', |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='Country', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-05 07:25 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0002_auto_20160615_1625'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='MainPage', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('contractor_text', models.TextField()), |
||||||
|
('customer_text', models.TextField()), |
||||||
|
('video_code', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Главная страница', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-13 09:17 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0003_mainpage'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Settings', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('time_notification', models.IntegerField(default=180)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Настройки сайта', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,176 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Answer', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('budget', models.DecimalField(decimal_places=0, max_digits=10)), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('currency', models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=5)), |
||||||
|
('term', models.IntegerField(default=0)), |
||||||
|
('term_type', models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=10)), |
||||||
|
('text', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Ответ к проекту', |
||||||
|
'ordering': ('-created',), |
||||||
|
'verbose_name_plural': 'Ответы к проектам', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='BuildingClassfication', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Тип здания', |
||||||
|
'verbose_name_plural': 'Типы зданий', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Candidate', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('status', models.BooleanField(default=False)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Кандидат', |
||||||
|
'verbose_name_plural': 'Кандидаты', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ConstructionType', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Вид строительства', |
||||||
|
'verbose_name_plural': 'Виды строительства', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Order', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('secure', models.BooleanField(default=False)), |
||||||
|
('status', models.BooleanField(default=False)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Заказ', |
||||||
|
'verbose_name_plural': 'Заказы', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Portfolio', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('budget', models.DecimalField(blank=True, decimal_places=0, default=0, max_digits=10, null=True)), |
||||||
|
('currency', models.CharField(blank=True, choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20, null=True)), |
||||||
|
('description', models.TextField()), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('term', models.IntegerField(blank=True, default=0, null=True)), |
||||||
|
('term_type', models.CharField(blank=True, choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20, null=True)), |
||||||
|
('worksell', models.BooleanField(default=False)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Портфолио', |
||||||
|
'verbose_name_plural': 'Портфолио', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='PortfolioPhoto', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('img', models.ImageField(upload_to='projects/portfolio')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Фото портфолио', |
||||||
|
'verbose_name_plural': 'Фото портфолио', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Project', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('budget', models.DecimalField(decimal_places=0, max_digits=10)), |
||||||
|
('budget_by_agreement', models.BooleanField(default=False)), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('cro', models.BooleanField(default=False)), |
||||||
|
('currency', models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20)), |
||||||
|
('deal_type', models.CharField(choices=[('secure_deal', 'Безопасная сделка (с резервированием бюджета) '), ('direct_payment', 'Прямая оплата Исполнителю на его кошелек/счет')], default='secure_deal', max_length=20)), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('price_and_term_required', models.BooleanField(default=False)), |
||||||
|
('state', models.CharField(choices=[('active', 'Активный'), ('trashed', 'В корзине'), ('deleted', 'Удален')], default='active', max_length=20)), |
||||||
|
('term', models.IntegerField(default=0)), |
||||||
|
('term_type', models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20)), |
||||||
|
('text', models.TextField(blank=True)), |
||||||
|
('work_type', models.IntegerField(choices=[(1, 'Проектирование'), (2, 'Техническое сопровождение')], default=1)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Проект', |
||||||
|
'verbose_name_plural': 'Проекты', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ProjectFile', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('file', models.FileField(upload_to='projects/project_files')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Файл проекта', |
||||||
|
'verbose_name_plural': 'Файлы проектов', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Realty', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('building_classification', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.BuildingClassfication')), |
||||||
|
('construction_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.ConstructionType')), |
||||||
|
('location', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='common.Location')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Объект', |
||||||
|
'verbose_name_plural': 'Объекты', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Stage', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('cost', models.DecimalField(decimal_places=0, max_digits=10)), |
||||||
|
('cost_type', models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=5)), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('result', models.CharField(max_length=255)), |
||||||
|
('term', models.IntegerField(default=0)), |
||||||
|
('term_type', models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=10)), |
||||||
|
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stages', to='projects.Order')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Этап', |
||||||
|
'verbose_name_plural': 'Этапы', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-19 10:22 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('projects', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='answer', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='projects.Project'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='answer', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-19 13:12 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('specializations', '0001_initial'), |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('projects', '0002_auto_20160519_1022'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='specialization', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-19 13:38 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0003_auto_20160519_1312'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='specialization', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,39 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-24 10:53 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0004_auto_20160519_1338'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='portfolio', |
||||||
|
options={'verbose_name': 'Портфолио', 'verbose_name_plural': 'Портфолио'}, |
||||||
|
), |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='portfoliophoto', |
||||||
|
options={'verbose_name': 'Фото портфолио', 'verbose_name_plural': 'Фото портфолио'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 53, 28, 347882)), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', 'rur'), ('usd', 'usd'), ('eur', 'eur')], default='RUR', max_length=5), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('hour', 'hour'), ('day', 'day'), ('month', 'month')], default='HOUR', max_length=10), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,80 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-24 12:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('projects', '0005_auto_20160524_1053'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Candidate', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('status', models.BooleanField(default=False)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Кандидат', |
||||||
|
'verbose_name_plural': 'Кандидаты', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='budget', |
||||||
|
field=models.CharField(blank=True, max_length=20), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='cro', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='secure_transaction', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='term_cost', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='type_work', |
||||||
|
field=models.CharField(choices=[('1', 'проектирование'), ('2', 'техническое сопровождение')], default='1', max_length=20), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', 'rur'), ('usd', 'usd'), ('eur', 'eur')], default='rur', max_length=5), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 12, 8, 51, 751897)), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('hour', 'hour'), ('day', 'day'), ('month', 'month')], default='hour', max_length=10), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='candidate', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to='projects.Project'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='candidate', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 09:48 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0006_auto_20160524_1208'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 9, 48, 35, 275911)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 10:44 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('projects', '0007_auto_20160525_0948'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Realty', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('building_classification', models.CharField(max_length=50)), |
||||||
|
('type_construction', models.CharField(max_length=50)), |
||||||
|
('country', models.CharField(max_length=50)), |
||||||
|
('city', models.CharField(max_length=50)), |
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realty', to=settings.AUTH_USER_MODEL)), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 10, 44, 29, 360210)), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='realty', |
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='projects.Realty'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 15:24 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('projects', '0008_auto_20160525_1044'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Order', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('cost', models.DecimalField(decimal_places=2, max_digits=10)), |
||||||
|
('term', models.IntegerField(default=1)), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False)), |
||||||
|
('status', models.BooleanField(default=False)), |
||||||
|
('contractor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), |
||||||
|
('project', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='order', to='projects.Project')), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='realty', |
||||||
|
options={'verbose_name': 'Объект', 'verbose_name_plural': 'Объекты'}, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 15, 24, 2, 462642)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 15:25 |
||||||
|
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', '0009_auto_20160525_1524'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 15, 25, 42, 489763, tzinfo=utc)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 15:26 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0010_auto_20160525_1525'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-30 13:55 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0011_auto_20160525_1526'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='order', |
||||||
|
options={'verbose_name': 'Заказ', 'verbose_name_plural': 'Заказы'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='portfolio', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-02 12:03 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0012_auto_20160530_1355'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(default=0), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-02 15:59 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0013_auto_20160602_1203'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='answer', |
||||||
|
options={'ordering': ('-created',), 'verbose_name': 'Ответ к проекту', 'verbose_name_plural': 'Ответы к проектам'}, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='cost', |
||||||
|
field=models.DecimalField(decimal_places=0, max_digits=10), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='price', |
||||||
|
field=models.DecimalField(decimal_places=0, max_digits=10), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-02 16:06 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0014_auto_20160602_1559'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='cost', |
||||||
|
field=models.DecimalField(decimal_places=0, max_digits=10), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-03 11:40 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0015_auto_20160602_1606'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='candidate', |
||||||
|
name='user', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='candidate', |
||||||
|
name='answer', |
||||||
|
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to='projects.Answer'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-06 13:59 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0016_auto_20160603_1140'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Stage', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('result', models.CharField(max_length=255)), |
||||||
|
('cost', models.DecimalField(decimal_places=0, max_digits=10)), |
||||||
|
('cost_type', models.CharField(choices=[('rur', 'rur'), ('usd', 'usd'), ('eur', 'eur')], default='rur', max_length=5)), |
||||||
|
('term', models.IntegerField(default=0)), |
||||||
|
('term_type', models.CharField(choices=[('hour', 'hour'), ('day', 'day'), ('month', 'month')], default='hour', max_length=10)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name_plural': 'Этапы', |
||||||
|
'verbose_name': 'Этап', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='order', |
||||||
|
name='cost', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='order', |
||||||
|
name='term', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='order', |
||||||
|
name='secure', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='stage', |
||||||
|
name='order', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stages', to='projects.Order'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-07 16:15 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0017_auto_20160606_1659'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='contractor', |
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-07 16:16 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0018_auto_20160607_1915'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='contractor', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,96 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 12:55 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0019_auto_20160607_1916'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='BuildingClassfication', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Тип здания', |
||||||
|
'verbose_name_plural': 'Типы здания', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='City', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Город', |
||||||
|
'verbose_name_plural': 'Города', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ConstructionType', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Вид строительства', |
||||||
|
'verbose_name_plural': 'Виды строительства', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Country', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Страна', |
||||||
|
'verbose_name_plural': 'Страны', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='type_construction', |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', ''), ('usd', 'usd'), ('eur', 'eur')], default='rur', max_length=5), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.BuildingClassfication'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='stage', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', ''), ('usd', 'usd'), ('eur', 'eur')], default='rur', max_length=5), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cities', to='projects.Country'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.ConstructionType'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 13:02 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0020_auto_20160608_1555'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='building_classification', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='city', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='construction_type', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 13:05 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0021_auto_20160608_1602'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='building_classification', |
||||||
|
field=models.CharField(default=None, max_length=255), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='construction_type', |
||||||
|
field=models.CharField(default=None, max_length=255), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 13:09 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0022_auto_20160608_1605'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='city', |
||||||
|
field=models.CharField(default=None, max_length=50), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='country', |
||||||
|
field=models.CharField(default=None, max_length=50), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.BuildingClassfication'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.ConstructionType'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,105 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-09 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0023_auto_20160608_1609'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='ProjectFile', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('file', models.FileField(upload_to='projects/project_files')), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.RenameField( |
||||||
|
model_name='project', |
||||||
|
old_name='user', |
||||||
|
new_name='customer', |
||||||
|
), |
||||||
|
migrations.RenameField( |
||||||
|
model_name='project', |
||||||
|
old_name='secure_transaction', |
||||||
|
new_name='secure_deal', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='project', |
||||||
|
name='price', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='project', |
||||||
|
name='term_cost', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='project', |
||||||
|
name='type_work', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='budget_by_agreement', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='currency', |
||||||
|
field=models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='price_and_term_required', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(default=0), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='work_type', |
||||||
|
field=models.IntegerField(choices=[('1', 'Проектирование'), ('2', 'Техническое сопровождение')], default=1), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=5), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='answer', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=10), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='budget', |
||||||
|
field=models.DecimalField(decimal_places=0, max_digits=10), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='stage', |
||||||
|
name='cost_type', |
||||||
|
field=models.CharField(choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=5), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='stage', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=10), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='projectfile', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='projects.Project'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-09 16:16 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0024_auto_20160609_1808'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='projectfile', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='projects.Project'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 09:04 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0025_auto_20160609_1916'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='projectfile', |
||||||
|
options={'verbose_name': 'Файл проекта', 'verbose_name_plural': 'Файлы проектов'}, |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='project', |
||||||
|
name='secure_deal', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='deal_type', |
||||||
|
field=models.CharField(choices=[('secure_deal', 'Безопасная сделка (с резервированием бюджета) '), ('direct_payment', 'Прямая оплата Исполнителю на его кошелек/счет')], default='secure_deal', max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 09:31 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0026_auto_20160610_1204'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='city', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.City'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='realty', |
||||||
|
name='country', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='projects.Country'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 10:01 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0027_auto_20160610_1231'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='work_type', |
||||||
|
field=models.CharField(choices=[('1', 'Проектирование'), ('2', 'Техническое сопровождение')], default='1', max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 11:16 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0028_auto_20160610_1301'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='active', |
||||||
|
field=models.BooleanField(default=True), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 11:30 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0029_project_active'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RenameField( |
||||||
|
model_name='answer', |
||||||
|
old_name='cost', |
||||||
|
new_name='budget', |
||||||
|
), |
||||||
|
migrations.RenameField( |
||||||
|
model_name='answer', |
||||||
|
old_name='user', |
||||||
|
new_name='contractor', |
||||||
|
), |
||||||
|
migrations.RenameField( |
||||||
|
model_name='answer', |
||||||
|
old_name='cost_type', |
||||||
|
new_name='currency', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 11:34 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0030_auto_20160610_1430'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='project', |
||||||
|
name='active', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='project', |
||||||
|
name='state', |
||||||
|
field=models.CharField(choices=[('active', 'Активный'), ('trash', 'В корзине'), ('delete', 'Удален')], default='active', max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,52 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:10 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
('projects', '0031_auto_20160610_1434'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='city', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='state', |
||||||
|
field=models.CharField(choices=[('active', 'Активный'), ('trashed', 'В корзине'), ('deleted', 'Удален')], default='active', max_length=20), |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='City', |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='Country', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-21 07:57 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0032_auto_20160615_1610'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='realty', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='projects.Realty'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-22 09:00 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0033_auto_20160621_1057'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='work_type', |
||||||
|
field=models.IntegerField(choices=[('1', 'Проектирование'), ('2', 'Техническое сопровождение')], default=1, max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-30 13:35 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0034_auto_20160622_1200'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='buildingclassfication', |
||||||
|
options={'verbose_name': 'Тип здания', 'verbose_name_plural': 'Типы зданий'}, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='work_type', |
||||||
|
field=models.IntegerField(choices=[(1, 'Проектирование'), (2, 'Техническое сопровождение')], default=1), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='projectfile', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='files', to='projects.Project'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-30 15:46 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0035_auto_20160630_1635'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='specialization', |
||||||
|
field=mptt.fields.TreeForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-04 11:44 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0036_auto_20160630_1846'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='contractor', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='orders', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,73 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-06 09:49 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0003_mainpage'), |
||||||
|
('specializations', '0002_auto_20160602_1203'), |
||||||
|
('projects', '0037_auto_20160704_1444'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='budget', |
||||||
|
field=models.DecimalField(decimal_places=0, default=0, max_digits=10, null=True), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='budget_by_agreement', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='projects.BuildingClassfication'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='projects.ConstructionType'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='specialization', |
||||||
|
field=mptt.fields.TreeForeignKey(default=5, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='specializations.Specialization'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(default=0), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='worksell', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='user', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,56 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-07 14:24 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0038_auto_20160706_1249'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='portfolio', |
||||||
|
name='budget_by_agreement', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='portfolio', |
||||||
|
name='currency', |
||||||
|
field=models.CharField(blank=True, choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='budget', |
||||||
|
field=models.DecimalField(blank=True, decimal_places=0, default=0, max_digits=10, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='projects.BuildingClassfication'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='projects.ConstructionType'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='specialization', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='portfolios', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(blank=True, default=0, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='portfolio', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(blank=True, choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20, null=True), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import django.core.validators |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Review', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('is_secured', models.BooleanField(default=False)), |
||||||
|
('stars', models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5)])), |
||||||
|
('text', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Отзыв', |
||||||
|
'verbose_name_plural': 'Отзывы', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-31 09:06 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0012_auto_20160530_1355'), |
||||||
|
('reviews', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='review', |
||||||
|
options={'verbose_name': 'Отзыв', 'verbose_name_plural': 'Отзывы'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='review', |
||||||
|
name='project', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to='projects.Project'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Specialization', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=100)), |
||||||
|
('lft', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('rght', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('level', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='specializations.Specialization')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Специализация', |
||||||
|
'verbose_name_plural': 'Специализации', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-02 12:03 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('specializations', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='specialization', |
||||||
|
options={'verbose_name': 'Специализация', 'verbose_name_plural': 'Специализации'}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,149 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('auth', '0007_alter_validators_add_error_messages'), |
||||||
|
('common', '0001_initial'), |
||||||
|
('specializations', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='User', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('password', models.CharField(max_length=128, verbose_name='password')), |
||||||
|
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), |
||||||
|
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), |
||||||
|
('avatar', models.ImageField(blank=True, upload_to='users/avatars/')), |
||||||
|
('contractor_status', models.CharField(choices=[('free', 'Свободен'), ('busy', 'Занят')], default='free', max_length=20)), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('cro', models.BooleanField(default=False)), |
||||||
|
('date_joined', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('date_of_birth', models.DateTimeField(blank=True, null=True)), |
||||||
|
('email', models.EmailField(db_index=True, max_length=255, unique=True)), |
||||||
|
('first_name', models.CharField(blank=True, max_length=255)), |
||||||
|
('gender', models.CharField(blank=True, choices=[('male', 'Мужской'), ('female', 'Женский')], max_length=30)), |
||||||
|
('is_active', models.BooleanField(default=True)), |
||||||
|
('last_name', models.CharField(blank=True, max_length=255)), |
||||||
|
('last_time_visit', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('patronym', models.CharField(blank=True, max_length=255)), |
||||||
|
('phone', models.CharField(blank=True, max_length=30, null=True)), |
||||||
|
('skype', models.CharField(blank=True, max_length=100)), |
||||||
|
('username', models.CharField(max_length=50, unique=True)), |
||||||
|
('website', models.CharField(blank=True, max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Пользователь', |
||||||
|
'verbose_name_plural': 'Пользователи', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorFinancialInfo', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('credit_card_number', models.CharField(max_length=50)), |
||||||
|
('date_of_birth', models.DateTimeField()), |
||||||
|
('fio', models.CharField(max_length=255)), |
||||||
|
('inn', models.CharField(max_length=100)), |
||||||
|
('legal_status', models.CharField(choices=[('individual', 'Физическое лицо'), ('legal_entity', 'ИП и юридическое лицо')], max_length=30)), |
||||||
|
('passport_issue_date', models.DateTimeField()), |
||||||
|
('passport_issued_by', models.CharField(max_length=255)), |
||||||
|
('passport_number', models.CharField(max_length=10)), |
||||||
|
('passport_scan', models.ImageField(upload_to='users/contractors/')), |
||||||
|
('passport_series', models.CharField(max_length=6)), |
||||||
|
('phone', models.CharField(max_length=30)), |
||||||
|
('residency', models.CharField(choices=[('russian_resident', 'Резидент РФ'), ('non_russian_resident', 'Нерезидент РФ'), ('refugee', 'Беженец'), ('russian_stay_permit', 'Вид на жительство')], max_length=50)), |
||||||
|
('subdivision_code', models.CharField(max_length=10)), |
||||||
|
('yandex_money', models.CharField(max_length=50)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Финансовая информация', |
||||||
|
'verbose_name_plural': 'Финансовая информация', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorResume', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('resume_file', models.FileField(upload_to='users/resume/files/')), |
||||||
|
('text', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Резюме', |
||||||
|
'verbose_name_plural': 'Резюме', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorResumeFiles', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('description', models.TextField(blank=True)), |
||||||
|
('img', models.ImageField(upload_to='users/resume/images/')), |
||||||
|
('title', models.CharField(max_length=255)), |
||||||
|
('type', models.CharField(choices=[('diplom', 'Дипломы/Сертификаты'), ('cro', 'Допуск CPO')], max_length=50)), |
||||||
|
('resume', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resume_files', to='users.ContractorResume')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Файлы резюме', |
||||||
|
'verbose_name_plural': 'Файлы резюме', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Team', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('owner', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team', to=settings.AUTH_USER_MODEL)), |
||||||
|
('specializations', mptt.fields.TreeManyToManyField(blank=True, related_name='teams', to='specializations.Specialization')), |
||||||
|
('users', models.ManyToManyField(blank=True, related_name='teams', to=settings.AUTH_USER_MODEL)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Команда', |
||||||
|
'verbose_name_plural': 'Команды', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_financial_info', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorFinancialInfo'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_resume', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorResume'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_specializations', |
||||||
|
field=mptt.fields.TreeManyToManyField(blank=True, related_name='contractors', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='groups', |
||||||
|
field=models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='users', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='user_permissions', |
||||||
|
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-19 14:52 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('auth', '0007_alter_validators_add_error_messages'), |
||||||
|
('users', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='team', |
||||||
|
name='groups', |
||||||
|
field=models.ManyToManyField(blank=True, related_name='teams', to='auth.Group'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-24 10:52 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0002_team_groups'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='created_at', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 52, 56, 737277)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-24 10:53 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0003_user_created_at'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='team', |
||||||
|
name='groups', |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='created_at', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 53, 15, 497921)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-24 10:54 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0004_auto_20160524_1053'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='user', |
||||||
|
name='created_at', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 24, 10, 54, 13, 805566)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 09:48 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0005_auto_20160524_1054'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 9, 48, 35, 257077)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 15:26 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0006_auto_20160525_0948'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 5, 25, 15, 26, 33, 142994)), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-05-25 15:27 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0007_auto_20160525_1526'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-02 12:13 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0008_auto_20160525_1527'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='nickname', |
||||||
|
field=models.CharField(blank=True, max_length=50, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='team', |
||||||
|
name='owner', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team', to=settings.AUTH_USER_MODEL), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-03 12:15 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0009_auto_20160602_1213'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='last_time_visit', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-08 15:01 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('specializations', '0002_auto_20160602_1203'), |
||||||
|
('users', '0010_user_last_time_visit'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_specializations', |
||||||
|
field=models.ManyToManyField(blank=True, related_name='contractors', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 13:58 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0011_user_contractor_specializations'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='status', |
||||||
|
field=models.CharField(choices=[('free', 'Свободен'), ('busy', 'Занят')], default='free', max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-10 14:03 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0012_user_status'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RenameField( |
||||||
|
model_name='user', |
||||||
|
old_name='status', |
||||||
|
new_name='contractor_status', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:11 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
('users', '0013_auto_20160610_1703'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='users', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='patronym', |
||||||
|
field=models.CharField(blank=True, max_length=255), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,78 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 14:47 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
from django.utils.timezone import utc |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0014_auto_20160615_1611'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorFinancialInfo', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('fio', models.CharField(max_length=255)), |
||||||
|
('date_of_birth', models.DateTimeField()), |
||||||
|
('phone', models.CharField(max_length=30)), |
||||||
|
('residency', models.CharField(choices=[('russian_resident', 'Резидент РФ'), ('non_russian_resident', 'Нерезидент РФ'), ('refugee', 'Беженец'), ('russian_stay_permit', 'Вид на жительство')], max_length=50)), |
||||||
|
('legal_status', models.CharField(choices=[('individual', 'Физическое лицо'), ('legal_entity', 'ИП и Юридическое лицо')], max_length=30)), |
||||||
|
('passport_series', models.CharField(max_length=6)), |
||||||
|
('passport_number', models.CharField(max_length=10)), |
||||||
|
('subdivision_code', models.CharField(max_length=10)), |
||||||
|
('passport_issued_by', models.CharField(max_length=255)), |
||||||
|
('passport_issue_date', models.DateTimeField()), |
||||||
|
('inn', models.CharField(max_length=100)), |
||||||
|
('yandex_money', models.CharField(max_length=50)), |
||||||
|
('credit_card_number', models.CharField(max_length=50)), |
||||||
|
('passport_scan', models.ImageField(upload_to='users/contractors/')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Финансовая информация', |
||||||
|
'verbose_name_plural': 'Финансовая информация', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='avatar', |
||||||
|
field=models.ImageField(blank=True, upload_to='users/avatars/'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='cro', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='date_of_birth', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 6, 15, 14, 47, 5, 758769, tzinfo=utc)), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='gender', |
||||||
|
field=models.CharField(blank=True, choices=[('male', 'Мужской'), ('female', 'Женский')], max_length=30), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='skype', |
||||||
|
field=models.CharField(blank=True, max_length=100), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='website', |
||||||
|
field=models.CharField(blank=True, max_length=255), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_financial_info', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorFinancialInfo'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-17 15:15 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0015_auto_20160615_1747'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='contractorfinancialinfo', |
||||||
|
name='legal_status', |
||||||
|
field=models.CharField(choices=[('individual', 'Физическое лицо'), ('legal_entity', 'ИП и юридическое лицо')], max_length=30), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-22 14:03 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0016_auto_20160617_1815'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='phone', |
||||||
|
field=models.CharField(blank=True, max_length=30, null=True), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-10 15:38 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
from django.utils.timezone import utc |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0017_user_phone'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='user', |
||||||
|
name='nickname', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='data_joined', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='username', |
||||||
|
field=models.CharField(default=datetime.datetime(2016, 7, 10, 15, 38, 2, 660834, tzinfo=utc), max_length=50, unique=True), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_specializations', |
||||||
|
field=mptt.fields.TreeManyToManyField(blank=True, related_name='contractors', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='user', |
||||||
|
name='date_of_birth', |
||||||
|
field=models.DateTimeField(blank=True, null=True), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-10 16:50 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0018_auto_20160710_1838'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RenameField( |
||||||
|
model_name='user', |
||||||
|
old_name='data_joined', |
||||||
|
new_name='date_joined', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,47 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-11 14:59 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0019_auto_20160710_1950'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorResume', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('text', models.TextField()), |
||||||
|
('resume_file', models.FileField(upload_to='users/resume/files/')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Резюме', |
||||||
|
'verbose_name_plural': 'Резюме', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorResumeFiles', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('img', models.ImageField(upload_to='users/resume/images/')), |
||||||
|
('title', models.CharField(max_length=255)), |
||||||
|
('description', models.TextField(blank=True)), |
||||||
|
('type', models.CharField(choices=[('diplom', 'Дипломы/Сертификаты'), ('cro', 'Допуск CPO')], max_length=50)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Файлы резюме', |
||||||
|
'verbose_name_plural': 'Файлы резюме', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_resume', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorResume'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-11 16:27 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0020_auto_20160711_1759'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='contractorresumefiles', |
||||||
|
name='resume', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='resume_files', to='users.ContractorResume'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,69 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-21 15:08 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
import mptt.fields |
||||||
|
import sorl.thumbnail.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('common', '0001_initial'), |
||||||
|
('projects', '0001_initial'), |
||||||
|
('specializations', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Picture', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('file', models.ImageField(upload_to='worksell/pictures')), |
||||||
|
('slug', models.SlugField(blank=True)), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='WorkSell', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('budget', models.DecimalField(blank=True, decimal_places=0, default=0, max_digits=10, null=True)), |
||||||
|
('created', models.DateTimeField(blank=True, default=django.utils.timezone.now, null=True)), |
||||||
|
('currency', models.CharField(blank=True, choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20, null=True)), |
||||||
|
('description', models.TextField(blank=True)), |
||||||
|
('img', sorl.thumbnail.fields.ImageField(blank=True, null=True, upload_to='worksell/worksell')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
('term', models.IntegerField(blank=True, default=0, null=True)), |
||||||
|
('term_type', models.CharField(blank=True, choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20, null=True)), |
||||||
|
('building_classification', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.BuildingClassfication')), |
||||||
|
('construction_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.ConstructionType')), |
||||||
|
('contractor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='work_sell', to=settings.AUTH_USER_MODEL)), |
||||||
|
('location', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='common.Location')), |
||||||
|
('specialization', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='specializations.Specialization')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Готовая работа', |
||||||
|
'ordering': ['-created'], |
||||||
|
'verbose_name_plural': 'Готовые работы', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='WorkSellPhoto', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('img', sorl.thumbnail.fields.ImageField(upload_to='worksell/worksell')), |
||||||
|
('worksell', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='work_sell.WorkSell')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Изображение Готовая работа', |
||||||
|
'verbose_name_plural': 'Изображения Готовые работы', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-07 14:55 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='img', |
||||||
|
field=models.ImageField(upload_to='worksell/worksell'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-21 09:59 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.conf import settings |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||||
|
('work_sell', '0002_auto_20160607_1755'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='worksell', |
||||||
|
options={'verbose_name': 'Готовая работа', 'verbose_name_plural': 'Готовые работы'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='contractor', |
||||||
|
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='work_sell', to=settings.AUTH_USER_MODEL), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-21 10:19 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0003_auto_20160621_1259'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='price', |
||||||
|
field=models.DecimalField(decimal_places=0, default=0, max_digits=10), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-04 11:49 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations |
||||||
|
import sorl.thumbnail.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0004_worksell_price'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='img', |
||||||
|
field=sorl.thumbnail.fields.ImageField(upload_to='worksell/worksell'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-04 15:54 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import sorl.thumbnail.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0005_auto_20160704_1449'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='WorkSellPhoto', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('img', sorl.thumbnail.fields.ImageField(upload_to='worksell/worksell')), |
||||||
|
('worksell', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='work_sell.WorkSell')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Изображение Готовая работа', |
||||||
|
'verbose_name_plural': 'Изображения Готовые работы', |
||||||
|
}, |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-05 12:14 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0006_worksellphoto'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterModelOptions( |
||||||
|
name='worksell', |
||||||
|
options={'ordering': ['-created'], 'verbose_name': 'Готовая работа', 'verbose_name_plural': 'Готовые работы'}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,67 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-06 09:49 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('projects', '0038_auto_20160706_1249'), |
||||||
|
('common', '0003_mainpage'), |
||||||
|
('specializations', '0002_auto_20160602_1203'), |
||||||
|
('work_sell', '0007_auto_20160705_1514'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='worksell', |
||||||
|
name='price', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='budget', |
||||||
|
field=models.DecimalField(decimal_places=0, default=0, max_digits=10, null=True), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='budget_by_agreement', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.BuildingClassfication'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.ConstructionType'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='specialization', |
||||||
|
field=mptt.fields.TreeForeignKey(default=5, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='specializations.Specialization'), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(default=0), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,56 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-07 10:15 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0008_auto_20160706_1249'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='worksell', |
||||||
|
name='budget_by_agreement', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='worksell', |
||||||
|
name='currency', |
||||||
|
field=models.CharField(blank=True, choices=[('rur', 'RUR'), ('usd', 'USD'), ('eur', 'EUR')], default='rur', max_length=20, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='budget', |
||||||
|
field=models.DecimalField(blank=True, decimal_places=0, default=0, max_digits=10, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='building_classification', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.BuildingClassfication'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='construction_type', |
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='projects.ConstructionType'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='specialization', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='worksells', to='specializations.Specialization'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='term', |
||||||
|
field=models.IntegerField(blank=True, default=0, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='term_type', |
||||||
|
field=models.CharField(blank=True, choices=[('project', 'За проект'), ('hour', 'За час'), ('day', 'За день'), ('month', 'За месяц')], default='hour', max_length=20, null=True), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-07-07 11:01 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
import sorl.thumbnail.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0009_auto_20160707_1315'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, null=True), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='worksell', |
||||||
|
name='img', |
||||||
|
field=sorl.thumbnail.fields.ImageField(blank=True, null=True, upload_to='worksell/worksell'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-11 08:33 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('work_sell', '0010_auto_20160707_1401'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='Picture', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('file', models.ImageField(upload_to='worksell/pictures')), |
||||||
|
('slug', models.SlugField(blank=True)), |
||||||
|
], |
||||||
|
), |
||||||
|
] |
||||||
Loading…
Reference in new issue