parent
8119b1bd55
commit
4573742355
17 changed files with 582 additions and 282 deletions
@ -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,66 @@ |
||||
{% extends "base.html" %} |
||||
{% load staticfiles %} |
||||
{% block content %} |
||||
<div class="col-lg-12"> |
||||
<p class="titleScore">Сравнение кандидатов по проекту</p> |
||||
</div> |
||||
<div class="titleBlockComparison disTab"> |
||||
<div class="triangle1"></div> |
||||
<p>{{ object }}</p> |
||||
<table class="compTable"> |
||||
<tr> |
||||
<th>№</th> |
||||
<th>Кандидат</th> |
||||
<th>Цена</th> |
||||
<th>Срок</th> |
||||
<th>Описание</th> |
||||
<th>Рейтинги/отзывы</th> |
||||
<th>Безопасные сделки</th> |
||||
<th>Решение</th> |
||||
</tr> |
||||
{% for cand in object.candidates.all %} |
||||
<tr> |
||||
<td>1</td> |
||||
<td> |
||||
|
||||
{{ cand.answer.user.get_full_name }} |
||||
</td> |
||||
<td>{{ cand.answer.cost }} <i class="fa fa-rub"></i></td> |
||||
<td> |
||||
{{ cand.answer.term }}<br> <span>недели</span> |
||||
</td> |
||||
<td> |
||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
||||
</td> |
||||
<td> |
||||
<ul> |
||||
<li><span>23 560</span></li> |
||||
<li> |
||||
<span>+385</span> |
||||
0 |
||||
<small> - 0</small> |
||||
</li> |
||||
<li> |
||||
СРО |
||||
</li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<span>5</span><br> |
||||
Готов работать по безопасной сделке |
||||
</td> |
||||
<td> |
||||
<div class="tableButtons disTab"> |
||||
<div class="btnTab btnTab1"></div> |
||||
<div class="btnTab btnTab2"></div> |
||||
<div class="btnTab btnTab3"></div> |
||||
<div class="btnTab btnTab4"></div> |
||||
</div> |
||||
</td> |
||||
</tr> |
||||
|
||||
{% endfor %} |
||||
|
||||
</table> |
||||
</div> |
||||
{% endblock %} |
||||
@ -1,286 +1,290 @@ |
||||
{% extends "base.html" %} |
||||
|
||||
{% load staticfiles %} |
||||
{% block content %} |
||||
{% load humanize %} |
||||
{% load humanize %} |
||||
{% load l10n %} |
||||
<div class="col-lg-12"> |
||||
<p class="titleScore">{{ object }}</p> |
||||
</div> |
||||
<div class="doneBlock new-done disTab"> |
||||
<div class="triangle1"></div> |
||||
<div class="col-lg-12 new-p"> |
||||
<p>{{ object.price | intcomma }} <i class="fa fa-rub"></i></p> |
||||
<div class="col-lg-12"> |
||||
<p class="titleScore">{{ object }}</p> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
<a href="#" class="aLinkExe"> |
||||
<div class="imgExecutor"> |
||||
<img src="img/profile.jpg" alt="execitor-image"> |
||||
</div> |
||||
</a> |
||||
<div class="doneBlock new-done disTab"> |
||||
<div class="triangle1"></div> |
||||
{% if user.is_contractor %} |
||||
<div class="col-lg-12 new-p"> |
||||
<p>{{ object.price | intcomma }} <i class="fa fa-rub"></i></p> |
||||
</div> |
||||
{% endif %} |
||||
|
||||
<p class="nameExecutor"> |
||||
<a href="{% url 'users:customer_view' object.user.pk %}">{{ object.user.get_full_name }}[ivanov_petr]</a> |
||||
</p> |
||||
<p class="navv2">{{ object.created | naturaltime}}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
<ul class="rettList restList2"> |
||||
<li>Рейтинг: <span> 0</span></li> |
||||
<li>Безопасные сделки: <span> 0</span></li> |
||||
<li> |
||||
<a href="">Отзывы: |
||||
<span> 0 </span> |
||||
<small> 0</small> |
||||
<mark> - 0</mark> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-2 new-dashed"> |
||||
<div class="dashedCol4 dashedCol44 dashedColColor"> |
||||
<p class="specUser"> |
||||
Специализации: |
||||
<div class="col-lg-4"> |
||||
<a href="#" class="aLinkExe"> |
||||
<div class="imgExecutor"> |
||||
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
||||
</div> |
||||
</a> |
||||
|
||||
<p class="nameExecutor"> |
||||
<a href="{% url 'users:customer-view' object.user.pk %}">{{ object.user.get_full_name }}[ivanov_petr]</a> |
||||
</p> |
||||
<div class="insetSpec"> |
||||
<span>{{ object.specialization }}</span> |
||||
<p class="navv2">{{ object.created | naturaltime }}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
<ul class="rettList restList2"> |
||||
<li>Рейтинг: <span> 0</span></li> |
||||
<li>Безопасные сделки: <span> 0</span></li> |
||||
<li> |
||||
<a href="">Отзывы: |
||||
<span> 0 </span> |
||||
<small> 0</small> |
||||
<mark> - 0</mark> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-2 new-dashed"> |
||||
<div class="dashedCol4 dashedCol44 dashedColColor"> |
||||
<p class="specUser"> |
||||
Специализации: |
||||
</p> |
||||
<div class="insetSpec"> |
||||
<span>{{ object.specialization }}</span> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3 retts new-list"> |
||||
<ul class="desListPro"> |
||||
<li> |
||||
{{ object.created }} |
||||
</li> |
||||
<li> |
||||
{{ object.type_work }} |
||||
</li> |
||||
</ul> |
||||
{% if object.secure_transaction %} |
||||
<div class="sroUser sroExecutor sroPro"> |
||||
<div class="iconSRO"></div> |
||||
<div class="col-lg-3 retts new-list"> |
||||
<ul class="desListPro"> |
||||
<li> |
||||
{{ object.created }} |
||||
</li> |
||||
<li> |
||||
{{ object.type_work }} |
||||
</li> |
||||
</ul> |
||||
{% if object.secure_transaction %} |
||||
<div class="sroUser sroExecutor sroPro"> |
||||
<div class="iconSRO"></div> |
||||
|
||||
<p>Есть допуск СРО</p> |
||||
<p>Есть допуск СРО</p> |
||||
|
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
<div class="infoProjectBlock info-new disTab"> |
||||
<div class="triangle2"></div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<ul class="listProjectIn"> |
||||
<li> |
||||
<span>Местоположение:</span> {{ object.realty.country }},{{ object.realty.city }} |
||||
</li> |
||||
<li> |
||||
<span>Классификация здания:</span> {{ object.realty.building_classification }} |
||||
</li> |
||||
<li> |
||||
<span>Вид строительства:</span> {{ object.realty.type_construction }} |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<p class="textProIn"> |
||||
{{ object.text }} |
||||
</p> |
||||
</div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<a href="javascript:void(0)" class="new-answer"> |
||||
Ответить на проект |
||||
</a> |
||||
<div class="polsF1 pols-new disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
<div class="infoProjectBlock info-new disTab"> |
||||
<div class="triangle2"></div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<ul class="listProjectIn"> |
||||
<li> |
||||
<span>Местоположение:</span> {{ object.realty.country }},{{ object.realty.city }} |
||||
</li> |
||||
<li> |
||||
<span>Классификация здания:</span> {{ object.realty.building_classification }} |
||||
</li> |
||||
<li> |
||||
<span>Вид строительства:</span> {{ object.realty.type_construction }} |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<p class="textProIn"> |
||||
{{ object.text }} |
||||
</p> |
||||
</div> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<a href="javascript:void(0)" class="new-answer"> |
||||
Ответить на проект |
||||
</a> |
||||
<div class="polsF1 pols-new disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
{% if perms.projects.add_answer %} |
||||
<form method="post"> |
||||
{{ form.errors }} |
||||
{% csrf_token %} |
||||
|
||||
<div class="polsF1 disTab"> |
||||
{% if perms.projects.add_answer %} |
||||
<form method="post"> |
||||
{{ form.errors }} |
||||
{% csrf_token %} |
||||
<div class="polsF1 disTab"> |
||||
|
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{{ form.cost.label }}</p> |
||||
<input type="text" class="box-sizing" name="{{ form.cost.name }}" /> |
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Стоимость</p> |
||||
<input type="text" class="box-sizing" name="{{ form.cost.name }}"/> |
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{{ form.cost_type.label }}</p> |
||||
{{ form.cost_type }} |
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Бюджет</p> |
||||
{{ form.cost_type }} |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Срок</p> |
||||
<input type="text" class="box-sizing" name="{{ form.term.name }}"/> |
||||
|
||||
<div class="col-lg-6"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{{ form.term.label }}</p> |
||||
<input type="text" class="box-sizing" name="{{ form.term.name }}" /> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Тип срока</p> |
||||
{{ form.term_type }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{{ form.term_type.label }}</p> |
||||
{{ form.term_type }} |
||||
<div class="col-lg-6"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-9"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Текст</p> |
||||
<textarea name="{{ form.text.name }}" id="text-new"></textarea>{{ form.project }} |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3"><input type="submit" value="Создать"/></div> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-9"> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{{ form.text.label }}</p> |
||||
<textarea name="{{ form.text.name }}" id="text-new"></textarea>{{ form.project }} |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3"></div> |
||||
</div> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3"><input type="submit" value="Создать" /></div> |
||||
</div> |
||||
</form> |
||||
{% endif %} |
||||
|
||||
</form> |
||||
{% endif %} |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
{% if not perms.projects.add_answer %} |
||||
<div class="exBigBlock disTab"> |
||||
<div class="col-lg-12"> |
||||
<p class="titleEx">Исполнители</p> |
||||
</div> |
||||
<div class="col-lg-12 exButton"> |
||||
<div class="btn-group" role="group" aria-label="..."> |
||||
<button type="button" class="btn btn-default"> |
||||
Новые <span>+7</span> |
||||
</button> |
||||
<button type="button" class="btn btn-default"> |
||||
Кандидаты <span>7</span> |
||||
</button> |
||||
<button type="button" class="btn btn-default"> |
||||
Отказал <span>7</span> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-12 compareBlock"> |
||||
<div class="col-lg-2 col-lg-offset-5"> |
||||
<p>Сравнить кандидатов</p> |
||||
</div> |
||||
</div> |
||||
{% if user.is_customer %} |
||||
<div class="exBigBlock disTab"> |
||||
<div class="col-lg-12"> |
||||
<p class="titleEx">Исполнители</p> |
||||
</div> |
||||
<div class="col-lg-12 exButton"> |
||||
<div class="btn-group" role="group" aria-label="..."> |
||||
<button type="button" class="btn btn-default"> |
||||
Новые <span>+0</span> |
||||
</button> |
||||
<button type="button" class="btn btn-default"> |
||||
Кандидаты <span>{{ object.candidates.count }}</span> |
||||
</button> |
||||
<button type="button" class="btn btn-default"> |
||||
Отказал <span>0</span> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<a href="{% url 'projects:comparison' object.id %}"> |
||||
<div class="col-lg-12 compareBlock"> |
||||
<div class="col-lg-2 col-lg-offset-5"> |
||||
<p>Сравнить кандидатов</p> |
||||
</div> |
||||
</div> |
||||
</a> |
||||
{% endif %} |
||||
|
||||
<div class="candidateBlock disTab"> |
||||
{% for answer in object.answers.all %} |
||||
<div class="candidateBlock disTab"> |
||||
{% for answer in object.answers.all %} |
||||
|
||||
<div class="candidate can-new"> |
||||
<div class="col-lg-4"> |
||||
<a href="#" class="aLinkExe"> |
||||
<div class="imgExecutor"> |
||||
<img src="img/profile.jpg" alt="execitor-image"> |
||||
</div> |
||||
</a> |
||||
<p class="nameExecutor"> |
||||
<a href="#">{{ answer.user.get_full_name }}</a> |
||||
</p> |
||||
<p class="navv2">{{ answer.user.created }}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
<ul class="rettList restList2"> |
||||
<li>Рейтинг: <span>0</span></li> |
||||
<li>Безопасные сделки: <span> 0</span></li> |
||||
<li> |
||||
<a href="javascript:void(0)">Отзывы: |
||||
<span> + 0 </span> |
||||
<small> 0</small> |
||||
<mark> - 0</mark> |
||||
<div class="col-lg-4"> |
||||
<a href="#" class="aLinkExe"> |
||||
<div class="imgExecutor"> |
||||
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
||||
</div> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
<div class="sroUser sroExecutor"> |
||||
<div class="iconSRO"></div> |
||||
<p>Есть допуск СРО</p> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-2 listCens"> |
||||
<p>Цена:<span> {{ answer.cost| intcomma }}</span> |
||||
<i class="fa fa-rub"></i> |
||||
</p> |
||||
<p> |
||||
Срок: <span>{{ answer.term }} {{ answer.term_type }}</span> |
||||
</p> |
||||
<p>Опубликован: {{ answer.created }}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
<a href="javascript:void(0)" class="candLink candLink3"> |
||||
отказ |
||||
</a> |
||||
</div> |
||||
<div class="commBlock44 comm-new disTab"> |
||||
<div class="comm44 disTab"> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<p class="nameComm"> |
||||
Иванов Петр Иванович |
||||
<p class="nameExecutor"> |
||||
<a href="#">{{ answer.user.get_full_name }}</a> |
||||
</p> |
||||
<span class="dateComm44">13.0.2016 / 21:05</span> |
||||
<div class="stars box-sizing"> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
||||
<p class="navv2">{{ answer.user.created }}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
<ul class="rettList restList2"> |
||||
<li>Рейтинг: <span>0</span></li> |
||||
<li>Безопасные сделки: <span> 0</span></li> |
||||
<li> |
||||
<a href="javascript:void(0)">Отзывы: |
||||
<span> + 0 </span> |
||||
<small> 0</small> |
||||
<mark> - 0</mark> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
<div class="sroUser sroExecutor"> |
||||
<div class="iconSRO"></div> |
||||
<p>Есть допуск СРО</p> |
||||
</div> |
||||
<p class="textComm44"> |
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin |
||||
gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. |
||||
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam |
||||
fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc |
||||
eget odio. |
||||
</div> |
||||
<div class="col-lg-2 listCens"> |
||||
<p>Цена:<span> {{ answer.cost| intcomma }}</span> |
||||
<i class="fa fa-rub"></i> |
||||
</p> |
||||
<p> |
||||
Срок: <span>{{ answer.term }} {{ answer.term_type }}</span> |
||||
</p> |
||||
<p>Опубликован: {{ answer.created }}</p> |
||||
</div> |
||||
<div class="col-lg-3 retts"> |
||||
{% if user.is_customer %} |
||||
<a class="candLink candLink1" href="{% url 'projects:add-candidate' answer_id=answer.id project_id=object.id %}">Кандидат</a> |
||||
<a class="candLink candLink2" href="javascript:void(0)"> предложить проект </a> |
||||
{% endif %} |
||||
<a href="javascript:void(0)" class="candLink candLink3">отказ</a> |
||||
</div> |
||||
<div class="commBlock44 comm-new disTab"> |
||||
<div class="comm44 disTab"> |
||||
<div class="col-lg-10 col-lg-offset-1"> |
||||
<p class="nameComm"> |
||||
Иванов Петр Иванович |
||||
</p> |
||||
<span class="dateComm44">13.0.2016 / 21:05</span> |
||||
<div class="stars box-sizing"> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
||||
</div> |
||||
<p class="textComm44"> |
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum |
||||
laoreet. |
||||
</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
{% endfor %} |
||||
|
||||
</div> |
||||
<div class="col-lg-12 pagin"> |
||||
<nav> |
||||
<ul class="pagination"> |
||||
<li> |
||||
<a href="#" aria-label="Previous"> |
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> |
||||
</a> |
||||
</li> |
||||
<li class="active"><a href="#">1</a></li> |
||||
<li><a href="#">2</a></li> |
||||
<li><a href="#">3</a></li> |
||||
<li><a href="#">4</a></li> |
||||
<li><a href="#">5</a></li> |
||||
<li>...</li> |
||||
<li><a href="#">17</a></li> |
||||
<li> |
||||
<a href="#" aria-label="Next"> |
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-12 pagin"> |
||||
<nav> |
||||
<ul class="pagination"> |
||||
<li> |
||||
<a href="#" aria-label="Previous"> |
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> |
||||
</a> |
||||
</li> |
||||
<li class="active"><a href="#">1</a></li> |
||||
<li><a href="#">2</a></li> |
||||
<li><a href="#">3</a></li> |
||||
<li><a href="#">4</a></li> |
||||
<li><a href="#">5</a></li> |
||||
<li>...</li> |
||||
<li><a href="#">17</a></li> |
||||
<li> |
||||
<a href="#" aria-label="Next"> |
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</nav> |
||||
</div> |
||||
{% endblock %} |
||||
|
||||
@ -0,0 +1,8 @@ |
||||
from django.utils import timezone |
||||
|
||||
class LastAccessMixin(object): |
||||
def dispatch(self, request, *args, **kwargs): |
||||
if request.user.is_authenticated(): |
||||
request.user.last_time_visit = timezone.now() |
||||
request.user.save(update_fields=['last_time_visit']) |
||||
return super().dispatch(request, *args, **kwargs) |
||||
@ -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,7 @@ |
||||
{% extends "base.html" %} |
||||
|
||||
|
||||
{% block content %} |
||||
<h1>Исполнители</h1> |
||||
|
||||
{% endblock %} |
||||
@ -1,4 +1,138 @@ |
||||
{% extends 'base.html' %} |
||||
{% block content %} |
||||
<h1>Заказчик</h1> |
||||
<div class="col-lg-12"> |
||||
<div class="col-lg-3 divCol3"> |
||||
<div class="avatar new-mar"> |
||||
<div class="avatarInset"> |
||||
<img src="img/profile.jpg" alt="profile-image"> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-9 divCol9"> |
||||
<div class="col-lg-4"> |
||||
<p class="nameUser"> |
||||
{{ object.get_full_name }} [ivanov_petr] |
||||
</p> |
||||
<p class="cityUser">Россия, Москва</p> |
||||
<p class="navv">На сайте {{ object.created }}</p> |
||||
</div> |
||||
<div class="col-lg-4 new-er"> |
||||
<ul class="rettList"> |
||||
<li><a href="javascript:void(0)">Рейтинг: <span> 0</span></a></li> |
||||
<li><a href="javascript:void(0)">Безопасные сделки: <span> 0</span></a></li> |
||||
<li> |
||||
<a href="javascript:void(0)"> |
||||
Отзывы: |
||||
<span> + 0</span> |
||||
<small> 0</small> |
||||
<mark> - 0</mark> |
||||
</a> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
<a href="javascript:void(0)" class="new-prop new-prop1">показать контакты</a> |
||||
<a href="javascript:void(0)" class="new-prop new-prop2">написать сообщение</a> |
||||
<a href="javascript:void(0)" class="new-red">редактировать профиль</a> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-9 divCol9 new-mar2"> |
||||
<div class="profileTabs2 tabs-new"> |
||||
<ul class="nav nav-tabs nav-justified"> |
||||
<li role="presentation" class="active"> |
||||
<a href="#">Открытые проекты</a> |
||||
</li> |
||||
<li role="presentation"> |
||||
<a href="#">Текущие проекты</a> |
||||
<div class="roundsCount"> |
||||
<div class="countR">0</div> |
||||
<div class="countG">0</div> |
||||
</div> |
||||
</li> |
||||
<li role="presentation"> |
||||
<a href="#">Отзывы</a> |
||||
<div class="roundsCount"> |
||||
<div class="countG">0</div> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="buttonGP disTab"> |
||||
<div class="btn-group valProject2" role="group" aria-label="..."> |
||||
<button type="button" class="btn btn-default"> |
||||
Открытые проекты |
||||
<span><mark>2</mark> / <span>35</span></span> |
||||
</button> |
||||
<button type="button" class="btn btn-default"> |
||||
Корзина |
||||
<span><mark></mark><span>7</span></span> |
||||
</button> |
||||
</div> |
||||
<div class="polsF1 disTab polsSearch"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3 col-lg-offset-1"> |
||||
<p class="addWork add-work-new">Разместить заказ</p> |
||||
</div> |
||||
</div> |
||||
<div class="projectsBlock new-pro-block disTab"> |
||||
{% for proj in object.projects.all %} |
||||
<div class="projectPro clearfix"> |
||||
<div class="col-lg-9 leftPro"> |
||||
<p class="titlePro"> |
||||
<a href="{% url 'projects:detail' proj.id %}">{{ proj.name }}</a> |
||||
</p> |
||||
<ul class="desPro"> |
||||
<li> |
||||
Объект "{{ proj.realty.name }}" |
||||
</li> |
||||
<li> |
||||
<span>0</span> ответ от имени группы |
||||
</li> |
||||
</ul> |
||||
<ul class="color-menu"> |
||||
<li> |
||||
<a href="#">Новые: 0</a> |
||||
</li> |
||||
<li> |
||||
<a href="#">Кандидаты: 0</a> |
||||
</li> |
||||
<li> |
||||
<a href="#">Отказал: 0</a> |
||||
</li> |
||||
</ul> |
||||
<p class="textPro"> |
||||
{{ proj.text }} |
||||
</p> |
||||
<ul class="listPro"> |
||||
<li>{{ proj.created}}</li> |
||||
<li>0</li> |
||||
<li>0</li> |
||||
<li>{{ object.get_full_name }}</li> |
||||
</ul> |
||||
</div> |
||||
<div class="col-lg-3 rightPro right-pro-red"> |
||||
<p class="cenaPro"> |
||||
{{ proj.price }} <i class="fa fa-rub"></i> |
||||
</p> |
||||
<ul> |
||||
<li> |
||||
Редактировать |
||||
</li> |
||||
<li> |
||||
Переместить в корзину |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
{% endblock %} |
||||
|
||||
@ -1,16 +1,16 @@ |
||||
from django.conf import urls |
||||
from django.contrib.auth.views import login, logout |
||||
|
||||
from .views import UserListView, UserDetailView, UserInfoListView, CustomerView, UserView, ContractorDetailView |
||||
from .views import UserListView, UserDetailView, UserInfoListView, CustomerView,\ |
||||
UserView, ContractorDetailView, ContractorListView |
||||
|
||||
app_name = 'users' |
||||
urlpatterns = [ |
||||
urls.url(r'^profile/$', UserDetailView.as_view(), name='user-detail'), |
||||
# urls.url(r'^login/?$', login, {'template_name': 'users/login.html'}), |
||||
# urls.url(r'^logout/?$', logout), |
||||
urls.url(r'^$', UserListView.as_view(), name='users_list'), |
||||
urls.url(r'^info$', UserInfoListView.as_view(), name='users_info_list'), |
||||
urls.url(r'^contractor/(?P<pk>\d+)$$', ContractorDetailView.as_view(), name='contactor_view'), |
||||
urls.url(r'^customer/(?P<pk>\d+)$$', CustomerView.as_view(), name='customer_view'), |
||||
urls.url(r'contractors/$', ContractorListView.as_view(), name='contractor-list' ), |
||||
urls.url(r'^contractor/(?P<pk>\d+)$', ContractorDetailView.as_view(), name='contractor-view'), |
||||
urls.url(r'^customer/(?P<pk>\d+)$', CustomerView.as_view(), name='customer-view'), |
||||
urls.url(r'^(?P<pk>\d+)$', UserView.as_view(), name='user_view'), |
||||
] |
||||
|
||||
Loading…
Reference in new issue