|
|
|
|
@ -157,22 +157,16 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% if request.user.is_contractor and request.user.contractor_answers.exists %} |
|
|
|
|
{% if request.user.is_contractor %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% with answer=request.user.contractor_answers.first %} |
|
|
|
|
{% if answer %} |
|
|
|
|
<div class="candidateBlock disTab"> |
|
|
|
|
<div class="candidate"> |
|
|
|
|
<div class="candidate can-new"> |
|
|
|
|
<div class="col-lg-4"> |
|
|
|
|
<a href="#" class="aLinkExe"> |
|
|
|
|
<div class="imgExecutor"> |
|
|
|
|
@ -183,9 +177,15 @@ |
|
|
|
|
{% endif %} |
|
|
|
|
</div> |
|
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
<p class="nameExecutor"> |
|
|
|
|
<a href="#">{{ answer.author.get_full_name }} [{{ answer.author.username }}]</a> |
|
|
|
|
{% 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 %} |
|
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
<p class="navv2">На сайте {{ answer.author.created }}</p> |
|
|
|
|
|
|
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
|
@ -207,10 +207,21 @@ |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
|
<div class="iconSRO"></div> |
|
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
|
</div> |
|
|
|
|
{% if answer.author|class_name == 'User' %} |
|
|
|
|
{% if answer.author.cro %} |
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
|
<div class="iconSRO"></div> |
|
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
|
</div> |
|
|
|
|
{% endif %} |
|
|
|
|
{% elif answer.author|class_name == 'Team' %} |
|
|
|
|
{# {% if any of these motherfuckers "answer.author.contractors.all" got a cro, then... %}#} |
|
|
|
|
<div class="sroUser sroExecutor"> |
|
|
|
|
<div class="iconSRO"></div> |
|
|
|
|
<p>Есть допуск СРО</p> |
|
|
|
|
</div> |
|
|
|
|
{# {% endif %}#} |
|
|
|
|
{% endif %} |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-2 listCens"> |
|
|
|
|
<p> |
|
|
|
|
@ -224,46 +235,31 @@ |
|
|
|
|
<p>Опубликован: {{ answer.created }}</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 'projects:offer-order' answer_id=answer.pk project_id=project.pk %}" class="candLink candLink2"> |
|
|
|
|
предложить проект |
|
|
|
|
</a> |
|
|
|
|
<a href="javascript:void(0)" class="candLink candLink3"> |
|
|
|
|
<a href="#" onclick="return false" class="candLink candLink3"> |
|
|
|
|
отказ |
|
|
|
|
</a> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="gallMini disTab"> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
|
<div class="imgGal"> |
|
|
|
|
<div class="imgFigure"></div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
|
<div class="imgGal"> |
|
|
|
|
<div class="imgFigure"></div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
|
<div class="imgGal"> |
|
|
|
|
<div class="imgFigure"></div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="insetCol box-sizing disTab"> |
|
|
|
|
<div class="imgGal"> |
|
|
|
|
<div class="imgFigure"></div> |
|
|
|
|
{% for portf in answer.portfolios.all %} |
|
|
|
|
<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> |
|
|
|
|
</div> |
|
|
|
|
{% endfor %} |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="commBlock44 disTab"> |
|
|
|
|
<div class="comm44 disTab"> |
|
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
|
@ -285,6 +281,10 @@ |
|
|
|
|
</p> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="comm44 disTab"> |
|
|
|
|
<div class="col-lg-10 col-lg-offset-1"> |
|
|
|
|
<p class="nameComm nameCommAct"> |
|
|
|
|
@ -302,120 +302,118 @@ |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
{% endwith %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% elif request.user.is_contractor %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<form action="{% url 'projects:detail' pk=project.pk %}" method="POST" enctype="multipart/form-data" novalidate> |
|
|
|
|
{% csrf_token %} |
|
|
|
|
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}"> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab"> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Стоимость <span style="color: red">{{ form.budget.errors.as_text }}</span></p> |
|
|
|
|
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}"> |
|
|
|
|
{% else %} |
|
|
|
|
<form action="{% url 'projects:detail' pk=project.pk %}" method="POST" enctype="multipart/form-data" novalidate> |
|
|
|
|
{% csrf_token %} |
|
|
|
|
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}"> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab"> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Стоимость <span style="color: red">{{ form.budget.errors.as_text }}</span></p> |
|
|
|
|
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}"> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
{{ form.currency }} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Срок <span style="color: red">{{ form.term.errors.as_text }}</span></p> |
|
|
|
|
<input type="text" class="box-sizing" name="{{ form.term.html_name }}" value="{{ form.term.value }}"> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
{{ form.term_type }} |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
{{ form.currency }} |
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Текст <span style="color: red">{{ form.text.errors.as_text }}</span></p> |
|
|
|
|
<textarea name="{{ form.text.html_name }}" id="text-new">{{ form.text.value }}</textarea> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-3"></div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Срок <span style="color: red">{{ form.term.errors.as_text }}</span></p> |
|
|
|
|
<input type="text" class="box-sizing" name="{{ form.term.html_name }}" value="{{ form.term.value }}"> |
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<p>Портфолио <span style="color: red">{{ form.portfolios.errors.as_text }}</span></p> |
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
{% for p in request.user.portfolios.all %} |
|
|
|
|
<li> |
|
|
|
|
<input |
|
|
|
|
type="checkbox" |
|
|
|
|
name="{{ form.portfolios.html_name }}" |
|
|
|
|
value="{{ p.pk }}" |
|
|
|
|
{% if p.pk|str in form.portfolios.value %}checked{% endif %}> |
|
|
|
|
|
|
|
|
|
{{ p.name }} |
|
|
|
|
</li> |
|
|
|
|
{% endfor %} |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
{{ form.term_type }} |
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<div id="fileUploadContainer"> |
|
|
|
|
<div> |
|
|
|
|
<button type="button" id="fileUploadAddBtn">Добавить файл</button> Не более 10 файлов общим объемом до 500 Мб |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<ul class="list-new-new"> |
|
|
|
|
<li class="file-upload-widget" style="display: none"> |
|
|
|
|
<input type="file" name="new_files" class="file-upload-input" style="position: absolute; top: -1000px; left: -1000px"> |
|
|
|
|
<span class="file-upload-label"></span> |
|
|
|
|
<a href="#" onclick="return false" class="file-upload-remove-btn">×</a> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
|
|
|
<p>Текст <span style="color: red">{{ form.text.errors.as_text }}</span></p> |
|
|
|
|
<textarea name="{{ form.text.html_name }}" id="text-new">{{ form.text.value }}</textarea> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
{{ form.secure_deal_only }} Работаю только по безопасной сделке |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="col-lg-3"></div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<p>Портфолио <span style="color: red">{{ form.portfolios.errors.as_text }}</span></p> |
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
|
{% for p in request.user.portfolios.all %} |
|
|
|
|
<li> |
|
|
|
|
<input |
|
|
|
|
type="checkbox" |
|
|
|
|
name="{{ form.portfolios.html_name }}" |
|
|
|
|
value="{{ p.pk }}" |
|
|
|
|
{% if p.pk|str in form.portfolios.value %}checked{% endif %}> |
|
|
|
|
|
|
|
|
|
{{ p.name }} |
|
|
|
|
</li> |
|
|
|
|
{% endfor %} |
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
<div id="fileUploadContainer"> |
|
|
|
|
<div> |
|
|
|
|
<button type="button" id="fileUploadAddBtn">Добавить файл</button> Не более 10 файлов общим объемом до 500 Мб |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<ul class="list-new-new"> |
|
|
|
|
<li class="file-upload-widget" style="display: none"> |
|
|
|
|
<input type="file" name="new_files" class="file-upload-input" style="position: absolute; top: -1000px; left: -1000px"> |
|
|
|
|
<span class="file-upload-label"></span> |
|
|
|
|
<a href="#" onclick="return false" class="file-upload-remove-btn">×</a> |
|
|
|
|
</li> |
|
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<button type="submit">Опубликовать ответ</button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-9"> |
|
|
|
|
{{ form.secure_deal_only }} Работаю только по безопасной сделке |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"> |
|
|
|
|
<div class="col-lg-3"> |
|
|
|
|
<button type="submit">Опубликовать ответ</button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"></div> |
|
|
|
|
</form> |
|
|
|
|
|
|
|
|
|
<div class="polsF1 disTab searchF1"></div> |
|
|
|
|
</form> |
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% elif request.user.is_customer %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="exBigBlock disTab"> |
|
|
|
|
<div class="col-lg-12"> |
|
|
|
|
<p class="titleEx">Исполнители</p> |
|
|
|
|
@ -445,7 +443,16 @@ |
|
|
|
|
<p>Новые исполнители</p> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{% for answer_p in project.answers.all %} |
|
|
|
|
<div class="candidateBlock disTab"> |
|
|
|
|
<div class="candidate"> |
|
|
|
|
|