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" %} |
{% extends "base.html" %} |
||||||
|
{% load staticfiles %} |
||||||
{% block content %} |
{% block content %} |
||||||
{% load humanize %} |
{% load humanize %} |
||||||
{% load l10n %} |
{% load l10n %} |
||||||
<div class="col-lg-12"> |
<div class="col-lg-12"> |
||||||
<p class="titleScore">{{ object }}</p> |
<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> |
</div> |
||||||
<div class="col-lg-4"> |
<div class="doneBlock new-done disTab"> |
||||||
<a href="#" class="aLinkExe"> |
<div class="triangle1"></div> |
||||||
<div class="imgExecutor"> |
{% if user.is_contractor %} |
||||||
<img src="img/profile.jpg" alt="execitor-image"> |
<div class="col-lg-12 new-p"> |
||||||
</div> |
<p>{{ object.price | intcomma }} <i class="fa fa-rub"></i></p> |
||||||
</a> |
</div> |
||||||
|
{% endif %} |
||||||
|
|
||||||
<p class="nameExecutor"> |
<div class="col-lg-4"> |
||||||
<a href="{% url 'users:customer_view' object.user.pk %}">{{ object.user.get_full_name }}[ivanov_petr]</a> |
<a href="#" class="aLinkExe"> |
||||||
</p> |
<div class="imgExecutor"> |
||||||
<p class="navv2">{{ object.created | naturaltime}}</p> |
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-3 retts"> |
</a> |
||||||
<ul class="rettList restList2"> |
|
||||||
<li>Рейтинг: <span> 0</span></li> |
<p class="nameExecutor"> |
||||||
<li>Безопасные сделки: <span> 0</span></li> |
<a href="{% url 'users:customer-view' object.user.pk %}">{{ object.user.get_full_name }}[ivanov_petr]</a> |
||||||
<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> |
</p> |
||||||
<div class="insetSpec"> |
<p class="navv2">{{ object.created | naturaltime }}</p> |
||||||
<span>{{ object.specialization }}</span> |
</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> |
||||||
</div> |
<div class="col-lg-3 retts new-list"> |
||||||
<div class="col-lg-3 retts new-list"> |
<ul class="desListPro"> |
||||||
<ul class="desListPro"> |
<li> |
||||||
<li> |
{{ object.created }} |
||||||
{{ object.created }} |
</li> |
||||||
</li> |
<li> |
||||||
<li> |
{{ object.type_work }} |
||||||
{{ object.type_work }} |
</li> |
||||||
</li> |
</ul> |
||||||
</ul> |
{% if object.secure_transaction %} |
||||||
{% if object.secure_transaction %} |
<div class="sroUser sroExecutor sroPro"> |
||||||
<div class="sroUser sroExecutor sroPro"> |
<div class="iconSRO"></div> |
||||||
<div class="iconSRO"></div> |
|
||||||
|
|
||||||
<p>Есть допуск СРО</p> |
<p>Есть допуск СРО</p> |
||||||
|
|
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
</div> |
</div> |
||||||
{% endif %} |
|
||||||
</div> |
</div> |
||||||
</div> |
<div class="infoProjectBlock info-new disTab"> |
||||||
<div class="infoProjectBlock info-new disTab"> |
<div class="triangle2"></div> |
||||||
<div class="triangle2"></div> |
<div class="col-lg-10 col-lg-offset-1"> |
||||||
<div class="col-lg-10 col-lg-offset-1"> |
<ul class="listProjectIn"> |
||||||
<ul class="listProjectIn"> |
<li> |
||||||
<li> |
<span>Местоположение:</span> {{ object.realty.country }},{{ object.realty.city }} |
||||||
<span>Местоположение:</span> {{ object.realty.country }},{{ object.realty.city }} |
</li> |
||||||
</li> |
<li> |
||||||
<li> |
<span>Классификация здания:</span> {{ object.realty.building_classification }} |
||||||
<span>Классификация здания:</span> {{ object.realty.building_classification }} |
</li> |
||||||
</li> |
<li> |
||||||
<li> |
<span>Вид строительства:</span> {{ object.realty.type_construction }} |
||||||
<span>Вид строительства:</span> {{ object.realty.type_construction }} |
</li> |
||||||
</li> |
</ul> |
||||||
</ul> |
</div> |
||||||
</div> |
<div class="col-lg-10 col-lg-offset-1"> |
||||||
<div class="col-lg-10 col-lg-offset-1"> |
<p class="textProIn"> |
||||||
<p class="textProIn"> |
{{ object.text }} |
||||||
{{ object.text }} |
</p> |
||||||
</p> |
</div> |
||||||
</div> |
<div class="col-lg-10 col-lg-offset-1"> |
||||||
<div class="col-lg-10 col-lg-offset-1"> |
<a href="javascript:void(0)" class="new-answer"> |
||||||
<a href="javascript:void(0)" class="new-answer"> |
Ответить на проект |
||||||
Ответить на проект |
</a> |
||||||
</a> |
<div class="polsF1 pols-new disTab"> |
||||||
<div class="polsF1 pols-new disTab"> |
<div class="col-lg-3"> |
||||||
<div class="col-lg-3"> |
<select class="selectpicker"> |
||||||
<select class="selectpicker"> |
<option>Mustard</option> |
||||||
<option>Mustard</option> |
<option>Ketchup</option> |
||||||
<option>Ketchup</option> |
<option>Relish</option> |
||||||
<option>Relish</option> |
</select> |
||||||
</select> |
</div> |
||||||
</div> |
</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="col-lg-3"> |
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
<p>{{ form.cost.label }}</p> |
<p>Стоимость</p> |
||||||
<input type="text" class="box-sizing" name="{{ form.cost.name }}" /> |
<input type="text" class="box-sizing" name="{{ form.cost.name }}"/> |
||||||
|
|
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-3"> |
<div class="col-lg-3"> |
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
<p>{{ form.cost_type.label }}</p> |
<p>Бюджет</p> |
||||||
{{ form.cost_type }} |
{{ form.cost_type }} |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
|
<div class="col-lg-6"></div> |
||||||
</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> |
</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 class="col-lg-3"> |
||||||
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
|
<p>Тип срока</p> |
||||||
|
{{ form.term_type }} |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-3"> |
<div class="col-lg-6"></div> |
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
</div> |
||||||
<p>{{ form.term_type.label }}</p> |
<div class="polsF1 disTab"> |
||||||
{{ form.term_type }} |
<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> |
||||||
|
<div class="col-lg-3"></div> |
||||||
|
</div> |
||||||
|
<div class="polsF1 disTab"> |
||||||
|
<div class="col-lg-3"><input type="submit" value="Создать"/></div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="col-lg-6"></div> |
</form> |
||||||
</div> |
{% endif %} |
||||||
<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> |
</div> |
||||||
{% endif %} |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
{% if not perms.projects.add_answer %} |
{% if user.is_customer %} |
||||||
<div class="exBigBlock disTab"> |
<div class="exBigBlock disTab"> |
||||||
<div class="col-lg-12"> |
<div class="col-lg-12"> |
||||||
<p class="titleEx">Исполнители</p> |
<p class="titleEx">Исполнители</p> |
||||||
</div> |
</div> |
||||||
<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>+0</span> |
||||||
</button> |
</button> |
||||||
<button type="button" class="btn btn-default"> |
<button type="button" class="btn btn-default"> |
||||||
Кандидаты <span>7</span> |
Кандидаты <span>{{ object.candidates.count }}</span> |
||||||
</button> |
</button> |
||||||
<button type="button" class="btn btn-default"> |
<button type="button" class="btn btn-default"> |
||||||
Отказал <span>7</span> |
Отказал <span>0</span> |
||||||
</button> |
</button> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="col-lg-12 compareBlock"> |
<a href="{% url 'projects:comparison' object.id %}"> |
||||||
<div class="col-lg-2 col-lg-offset-5"> |
<div class="col-lg-12 compareBlock"> |
||||||
<p>Сравнить кандидатов</p> |
<div class="col-lg-2 col-lg-offset-5"> |
||||||
</div> |
<p>Сравнить кандидатов</p> |
||||||
</div> |
</div> |
||||||
|
</div> |
||||||
|
</a> |
||||||
{% endif %} |
{% endif %} |
||||||
|
|
||||||
<div class="candidateBlock disTab"> |
<div class="candidateBlock disTab"> |
||||||
{% for answer in object.answers.all %} |
{% for answer in object.answers.all %} |
||||||
|
|
||||||
<div class="candidate can-new"> |
<div class="candidate can-new"> |
||||||
<div class="col-lg-4"> |
<div class="col-lg-4"> |
||||||
<a href="#" class="aLinkExe"> |
<a href="#" class="aLinkExe"> |
||||||
<div class="imgExecutor"> |
<div class="imgExecutor"> |
||||||
<img src="img/profile.jpg" alt="execitor-image"> |
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
||||||
</div> |
</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> |
|
||||||
</a> |
</a> |
||||||
</li> |
<p class="nameExecutor"> |
||||||
</ul> |
<a href="#">{{ answer.user.get_full_name }}</a> |
||||||
<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> |
</p> |
||||||
<span class="dateComm44">13.0.2016 / 21:05</span> |
<p class="navv2">{{ answer.user.created }}</p> |
||||||
<div class="stars box-sizing"> |
</div> |
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
<div class="col-lg-3 retts"> |
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
<ul class="rettList restList2"> |
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
<li>Рейтинг: <span>0</span></li> |
||||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
<li>Безопасные сделки: <span> 0</span></li> |
||||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
<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> |
</div> |
||||||
<p class="textComm44"> |
</div> |
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin |
<div class="col-lg-2 listCens"> |
||||||
gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar tempor. |
<p>Цена:<span> {{ answer.cost| intcomma }}</span> |
||||||
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam |
<i class="fa fa-rub"></i> |
||||||
fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus sapien nunc |
</p> |
||||||
eget odio. |
<p> |
||||||
|
Срок: <span>{{ answer.term }} {{ answer.term_type }}</span> |
||||||
</p> |
</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> |
||||||
</div> |
{% endfor %} |
||||||
</div> |
|
||||||
{% endfor %} |
|
||||||
|
|
||||||
</div> |
</div> |
||||||
<div class="col-lg-12 pagin"> |
<div class="col-lg-12 pagin"> |
||||||
<nav> |
<nav> |
||||||
<ul class="pagination"> |
<ul class="pagination"> |
||||||
<li> |
<li> |
||||||
<a href="#" aria-label="Previous"> |
<a href="#" aria-label="Previous"> |
||||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> |
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> |
||||||
</a> |
</a> |
||||||
</li> |
</li> |
||||||
<li class="active"><a href="#">1</a></li> |
<li class="active"><a href="#">1</a></li> |
||||||
<li><a href="#">2</a></li> |
<li><a href="#">2</a></li> |
||||||
<li><a href="#">3</a></li> |
<li><a href="#">3</a></li> |
||||||
<li><a href="#">4</a></li> |
<li><a href="#">4</a></li> |
||||||
<li><a href="#">5</a></li> |
<li><a href="#">5</a></li> |
||||||
<li>...</li> |
<li>...</li> |
||||||
<li><a href="#">17</a></li> |
<li><a href="#">17</a></li> |
||||||
<li> |
<li> |
||||||
<a href="#" aria-label="Next"> |
<a href="#" aria-label="Next"> |
||||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> |
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> |
||||||
</a> |
</a> |
||||||
</li> |
</li> |
||||||
</ul> |
</ul> |
||||||
</nav> |
</nav> |
||||||
</div> |
</div> |
||||||
{% endblock %} |
{% 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' %} |
{% extends 'base.html' %} |
||||||
{% block content %} |
{% 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 %} |
{% endblock %} |
||||||
|
|||||||
@ -1,16 +1,16 @@ |
|||||||
from django.conf import urls |
from django.conf import urls |
||||||
from django.contrib.auth.views import login, logout |
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' |
app_name = 'users' |
||||||
urlpatterns = [ |
urlpatterns = [ |
||||||
urls.url(r'^profile/$', UserDetailView.as_view(), name='user-detail'), |
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'^$', UserListView.as_view(), name='users_list'), |
||||||
urls.url(r'^info$', UserInfoListView.as_view(), name='users_info_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'contractors/$', ContractorListView.as_view(), name='contractor-list' ), |
||||||
urls.url(r'^customer/(?P<pk>\d+)$$', CustomerView.as_view(), name='customer_view'), |
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'), |
urls.url(r'^(?P<pk>\d+)$', UserView.as_view(), name='user_view'), |
||||||
] |
] |
||||||
|
|||||||
Loading…
Reference in new issue