|
|
|
@ -453,7 +453,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% elif request.user.is_customer and project.answers.exists %} |
|
|
|
{% elif request.user.is_customer and project in request.user.projects.all %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -466,169 +466,184 @@ |
|
|
|
<div class="col-lg-12 exButton"> |
|
|
|
<div class="col-lg-12 exButton"> |
|
|
|
<div class="btn-group" role="group" aria-label="..."> |
|
|
|
<div class="btn-group" role="group" aria-label="..."> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
Новые <span>+7</span> |
|
|
|
Новые <span>{{ project.answers.count|sub:project.candidates.count }}</span> |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
Кандидаты <span>7</span> |
|
|
|
Кандидаты <span>{{ project.candidates.count }}</span> |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
<button type="button" class="btn btn-default"> |
|
|
|
Отказал <span>7</span> |
|
|
|
Отказал <span>{{ project.rejected_answers_count }}</span> |
|
|
|
</button> |
|
|
|
</button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-12 compareBlock"> |
|
|
|
|
|
|
|
<div class="col-lg-2 col-lg-offset-5"> |
|
|
|
|
|
|
|
<p><a href="{% url 'projects:comparison' project.pk %}">Сравнить кандидатов</a></p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-12 exNew"> |
|
|
|
|
|
|
|
<p>Новые исполнители</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% for answer in project.answers.all %} |
|
|
|
|
|
|
|
<div class="candidateBlock disTab"> |
|
|
|
{% if project.answers.exists %} |
|
|
|
<div class="candidate"> |
|
|
|
{% if project.candidates.count > 1 %} |
|
|
|
<div class="col-lg-4"> |
|
|
|
<div class="col-lg-12 compareBlock"> |
|
|
|
<a href="#" class="aLinkExe"> |
|
|
|
<div class="col-lg-2 col-lg-offset-5"> |
|
|
|
<div class="imgExecutor"> |
|
|
|
<p><a href="{% url 'projects:comparison' project.pk %}">Сравнить кандидатов</a></p> |
|
|
|
{% if answer.author.avatar %} |
|
|
|
</div> |
|
|
|
<img src="{{ answer.author.avatar.url }}" alt="execitor-image"> |
|
|
|
</div> |
|
|
|
{% else %} |
|
|
|
{% endif %} |
|
|
|
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-12 exNew"> |
|
|
|
|
|
|
|
<p>Новые исполнители</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% for answer in project.answers.all %} |
|
|
|
|
|
|
|
<div class="candidateBlock disTab"> |
|
|
|
|
|
|
|
<div class="candidate"> |
|
|
|
|
|
|
|
<div class="col-lg-4"> |
|
|
|
|
|
|
|
<a href="#" class="aLinkExe"> |
|
|
|
|
|
|
|
<div class="imgExecutor"> |
|
|
|
|
|
|
|
{% if answer.author.avatar %} |
|
|
|
|
|
|
|
<img src="{{ answer.author.avatar.url }}" alt="execitor-image"> |
|
|
|
|
|
|
|
{% else %} |
|
|
|
|
|
|
|
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="nameExecutor"> |
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
|
|
|
|
<a href="#">{{ answer.author.get_full_name }} [{{ answer.author.username }}]</a> |
|
|
|
|
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
|
|
|
|
<a href="#">{{ answer.author.name }}</a> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
</div> |
|
|
|
</p> |
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
|
|
<p class="navv2">На сайте {{ answer.author.created }}</p> |
|
|
|
<p class="nameExecutor"> |
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
<a href="#">{{ answer.author.get_full_name }} [{{ answer.author.username }}]</a> |
|
|
|
{% if answer.author.contractor_status == 'free' %} |
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
<div class="statusUser">Свободен</div><!-- ............. --> |
|
|
|
<a href="#">{{ answer.author.name }}</a> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
</p> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<p class="navv2">На сайте {{ answer.author.created }}</p> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
<div class="col-lg-3 retts"> |
|
|
|
{% if answer.author.contractor_status == 'free' %} |
|
|
|
{% ratings_widget answer.author.pk 'restList2' %} |
|
|
|
<div class="statusUser">Свободен</div><!-- ............. --> |
|
|
|
|
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' and answer.author.cro %} |
|
|
|
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
|
|
|
|
<div class="iconSRO"></div> |
|
|
|
|
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
|
|
|
|
<!-- TODO --> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
|
|
|
|
<div class="iconSRO"></div> |
|
|
|
|
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-3 retts"> |
|
|
|
|
|
|
|
{% ratings_widget answer.author.pk 'restList2' %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' and answer.author.cro %} |
|
|
|
<div class="col-lg-2 listCens"> |
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
<p> |
|
|
|
<div class="iconSRO"></div> |
|
|
|
Цена: |
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
<span>{{ answer.budget|intcomma }}</span> |
|
|
|
</div> |
|
|
|
<i class="fa fa-rub"></i> |
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
</p> |
|
|
|
<!-- TODO --> |
|
|
|
<p> |
|
|
|
|
|
|
|
Срок: <span>{{ answer.term }} {{ answer.get_currency_display }} {{ answer.get_term_type_display|decap }}</span> |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
<p>Опубликован: {{ answer.created|date:'M d, Y' }}</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-3 retts"> |
|
|
|
|
|
|
|
<a href="{% url 'projects:add-candidate' answer_id=answer.pk project_id=project.pk %}" class="candLink candLink1"> |
|
|
|
|
|
|
|
Кандидат |
|
|
|
|
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
<a href="{% url 'chat:chat-user' %}" class="candLink candLink2"> |
|
|
|
<div class="iconSRO"></div> |
|
|
|
предложить проект |
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
<form action="{% url 'projects:customer-reject-project-answer' pk=answer.pk %}" method="POST" novalidate> |
|
|
|
</div> |
|
|
|
{% csrf_token %} |
|
|
|
|
|
|
|
<input type="hidden" name="next" value="{{ request.path }}"> |
|
|
|
<div class="col-lg-2 listCens"> |
|
|
|
<a href="#" onclick="$(this).closest('form').submit(); return false" class="candLink candLink3">отказ</a> |
|
|
|
<p> |
|
|
|
</form> |
|
|
|
Цена: |
|
|
|
</div> |
|
|
|
<span>{{ answer.budget|intcomma }}</span> |
|
|
|
|
|
|
|
<i class="fa fa-rub"></i> |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
|
|
|
|
Срок: <span>{{ answer.term }} {{ answer.get_currency_display }} {{ answer.get_term_type_display|decap }}</span> |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
<p>Опубликован: {{ answer.created|date:'M d, Y' }}</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-3 retts"> |
|
|
|
|
|
|
|
<a href="{% url 'projects:add-candidate' answer_id=answer.pk project_id=project.pk %}" class="candLink candLink1"> |
|
|
|
|
|
|
|
Кандидат |
|
|
|
|
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="{% url 'chat:chat-user' %}" class="candLink candLink2"> |
|
|
|
<div class="gallMini disTab"> |
|
|
|
предложить проект |
|
|
|
{% for portf in answer.portfolios.all %} |
|
|
|
</a> |
|
|
|
<div class="col-lg-3"> |
|
|
|
|
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
|
|
|
|
<div class="imgGal" style="background: url('{{ portf.photos.first.img.url }}') no-repeat center"> |
|
|
|
|
|
|
|
<div class="imgFigure"></div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<form action="{% url 'projects:customer-reject-project-answer' pk=answer.pk %}" method="POST" novalidate> |
|
|
|
<div class="commBlock44 disTab"> |
|
|
|
{% csrf_token %} |
|
|
|
{% for message in answer.messages.all %} |
|
|
|
<input type="hidden" name="next" value="{{ request.path }}"> |
|
|
|
<div class="comm44 disTab"> |
|
|
|
<a href="#" onclick="$(this).closest('form').submit(); return false" class="candLink candLink3">отказ</a> |
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
</form> |
|
|
|
{% if message.is_sender_customer %} |
|
|
|
</div> |
|
|
|
<p class="nameComm nameCommAct"> |
|
|
|
|
|
|
|
{{ project.customer.get_full_name }} |
|
|
|
<div class="gallMini disTab"> |
|
|
|
</p> |
|
|
|
{% for portf in answer.portfolios.all %} |
|
|
|
{% else %} |
|
|
|
<div class="col-lg-3"> |
|
|
|
<p class="nameComm"> |
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
<div class="imgGal" style="background: url('{{ portf.photos.first.img.url }}') no-repeat center"> |
|
|
|
{{ answer.author.get_full_name }} |
|
|
|
<div class="imgFigure"></div> |
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
|
|
|
|
{{ answer.author.name }} |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="dateComm44"> |
|
|
|
|
|
|
|
{{ message.created }} |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="textComm44"> |
|
|
|
|
|
|
|
{{ message.text }} |
|
|
|
|
|
|
|
</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="commBlock44 disTab"> |
|
|
|
|
|
|
|
{% for message in answer.messages.all %} |
|
|
|
|
|
|
|
<div class="comm44 disTab"> |
|
|
|
<div class="comm44 disTab"> |
|
|
|
|
|
|
|
{# <div class="i col-lg-10 col-lg-offset-1">#} |
|
|
|
|
|
|
|
{# <a href="#" onclick="return false" class="answerComm">#} |
|
|
|
|
|
|
|
{# Ответить#} |
|
|
|
|
|
|
|
{# </a>#} |
|
|
|
|
|
|
|
{# </div>#} |
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
{% if message.is_sender_customer %} |
|
|
|
<form action="{% url 'projects:create-answer-message' pk=answer.pk %}" method="POST" novalidate> |
|
|
|
<p class="nameComm nameCommAct"> |
|
|
|
{% csrf_token %} |
|
|
|
{{ project.customer.get_full_name }} |
|
|
|
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}"> |
|
|
|
</p> |
|
|
|
|
|
|
|
{% else %} |
|
|
|
<div><textarea name="text"></textarea></div> |
|
|
|
<p class="nameComm"> |
|
|
|
<div><button type="submit">Отправить</button></div> |
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
</form> |
|
|
|
{{ answer.author.get_full_name }} |
|
|
|
|
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
|
|
|
|
{{ answer.author.name }} |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="dateComm44"> |
|
|
|
|
|
|
|
{{ message.created }} |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p class="textComm44"> |
|
|
|
|
|
|
|
{{ message.text }} |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="comm44 disTab"> |
|
|
|
|
|
|
|
{# <div class="i col-lg-10 col-lg-offset-1">#} |
|
|
|
|
|
|
|
{# <a href="#" onclick="return false" class="answerComm">#} |
|
|
|
|
|
|
|
{# Ответить#} |
|
|
|
|
|
|
|
{# </a>#} |
|
|
|
|
|
|
|
{# </div>#} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
|
|
|
|
<form action="{% url 'projects:create-answer-message' pk=answer.pk %}" method="POST" novalidate> |
|
|
|
|
|
|
|
{% csrf_token %} |
|
|
|
|
|
|
|
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div><textarea name="text"></textarea></div> |
|
|
|
|
|
|
|
<div><button type="submit">Отправить</button></div> |
|
|
|
|
|
|
|
</form> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
{% endfor %} |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|