remotes/origin/PR-39
ArturBaybulatov 10 years ago
parent 684bb0f30b
commit 1932b48408
  1. 20
      common/migrations/0010_tooltip_position.py
  2. 8
      common/models.py
  3. 7
      common/templatetags/common_tags.py
  4. 26
      projects/templates/customer_project_create.html
  5. 162
      users/templates/contractor_profile.html
  6. 18
      users/templates/partials/customer_profile_info_block.html

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-08-29 19:24
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('common', '0009_merge'),
]
operations = [
migrations.AddField(
model_name='tooltip',
name='position',
field=models.CharField(choices=[('left', 'Слева'), ('right', 'Справа'), ('top', 'Сверху'), ('bottom', 'Снизу')], default='top', max_length=255),
),
]

@ -86,9 +86,17 @@ class PrintDocuments(models.Model):
class Tooltip(models.Model): class Tooltip(models.Model):
POSITIONS = (
('left', 'Слева'),
('right', 'Справа'),
('top', 'Сверху'),
('bottom', 'Снизу'),
)
name = models.CharField(max_length=255, unique=True) name = models.CharField(max_length=255, unique=True)
text = models.TextField(blank=True) text = models.TextField(blank=True)
example = models.TextField(blank=True) example = models.TextField(blank=True)
position = models.CharField(max_length=255, choices=POSITIONS, default='top')
class Meta: class Meta:
verbose_name = 'Подсказка' verbose_name = 'Подсказка'

@ -100,4 +100,11 @@ def tooltip(**kwargs):
return tooltip.text return tooltip.text
@register.simple_tag
def tooltip_placement(**kwargs):
tooltip = util.get_or_none(Tooltip, **kwargs)
if tooltip:
return tooltip.position
# import code; code.interact(local=dict(globals(), **locals())) # import code; code.interact(local=dict(globals(), **locals()))

@ -24,12 +24,12 @@
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> <div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div>
{% endif %} {% endif %}
<div data-tooltip title="{% tooltip pk=4 %}" class="textAreaBlock2 text-nn box-sizing disTab"> <div data-tooltip data-placement="{% tooltip_placement pk=4 %}" title="{% tooltip pk=4 %}" class="textAreaBlock2 text-nn box-sizing disTab">
<p>Название заказа <span style="color: red">{{ form.name.errors.as_text }}</span></p> <p>Название заказа <span style="color: red">{{ form.name.errors.as_text }}</span></p>
<input type="text" class="box-sizing" name="{{ form.name.html_name }}" value="{{ form.name.value }}"> <input type="text" class="box-sizing" name="{{ form.name.html_name }}" value="{{ form.name.value }}">
</div> </div>
<div data-tooltip title="{% tooltip pk=5 %}" class="textAreaBlock2 text-nn box-sizing disTab"> <div data-tooltip data-placement="{% tooltip_placement pk=5 %}" title="{% tooltip pk=5 %}" class="textAreaBlock2 text-nn box-sizing disTab">
<p>Подробно опишите задание <span style="color: red">{{ form.text.errors.as_text }}</span></p> <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> <textarea name="{{ form.text.html_name }}" id="text-new">{{ form.text.value }}</textarea>
</div> </div>
@ -53,7 +53,7 @@
</div> </div>
<p class="type-work">Тип работы <span style="color: red">{{ form.work_type.errors.as_text }}</span></p> <p class="type-work">Тип работы <span style="color: red">{{ form.work_type.errors.as_text }}</span></p>
<div data-tooltip title="{% tooltip pk=6 %}" class="mail-block type-work-inset"> <div data-tooltip data-placement="{% tooltip_placement pk=6 %}" title="{% tooltip pk=6 %}" class="mail-block type-work-inset">
{% for id, text in form.work_type.field.choices %} {% for id, text in form.work_type.field.choices %}
<div class="inset-mb"> <div class="inset-mb">
<label> <label>
@ -83,7 +83,7 @@
<div class="col-lg-3"></div> <div class="col-lg-3"></div>
<div class="col-lg-3"></div>--> <div class="col-lg-3"></div>-->
</div> </div>
<div data-tooltip title="{% tooltip pk=7 %}" class="polsF1 disTab -spec-select-container"> <div data-tooltip data-placement="{% tooltip_placement pk=7 %}" title="{% tooltip pk=7 %}" class="polsF1 disTab -spec-select-container">
<div class="col-lg-3"> <div class="col-lg-3">
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%"> <input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%">
</div> </div>
@ -107,14 +107,14 @@
<!--<div class="col-lg-8"></div>--> <!--<div class="col-lg-8"></div>-->
</div> </div>
<div class="searchF1 polsF1 polsFF"> <div class="searchF1 polsF1 polsFF">
<div data-tooltip title="{% tooltip pk=8 %}" class="col-lg-4"> <div data-tooltip data-placement="{% tooltip_placement pk=8 %}" title="{% tooltip pk=8 %}" class="col-lg-4">
<input type="text" class="box-sizing surr" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}"> <input type="text" class="box-sizing surr" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}">
{{ form.currency }} {{ form.currency }}
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
{{ form.term_type }} {{ form.term_type }}
</div> </div>
<div data-tooltip title="{% tooltip pk=9 %}" class="col-lg-5 dog-new"> <div data-tooltip data-placement="{% tooltip_placement pk=9 %}" title="{% tooltip pk=9 %}" class="col-lg-5 dog-new">
<label> <label>
<input <input
type="checkbox" type="checkbox"
@ -192,7 +192,7 @@
<div class="resSearchF1"> <div class="resSearchF1">
<div class="col-lg-3"> <div class="col-lg-3">
<p class="titleResF1">Расширенный поиск</p> <p class="titleResF1">Расширенный поиск</p>
<button data-tooltip title="{% tooltip pk=12 %}" class="resButtonF1"> <button data-tooltip data-placement="{% tooltip_placement pk=12 %}" title="{% tooltip pk=12 %}" class="resButtonF1">
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> <span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>
</button> </button>
</div> </div>
@ -210,7 +210,7 @@
</div> </div>
<div class="polsF1 polsF2 disTab"> <div class="polsF1 polsF2 disTab">
<div data-tooltip title="{% tooltip pk=13 %}" class="col-lg-3"> <div data-tooltip data-placement="{% tooltip_placement pk=13 %}" title="{% tooltip pk=13 %}" class="col-lg-3">
<select <select
class="selectpicker" class="selectpicker"
id="realtyId" id="realtyId"
@ -222,7 +222,7 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div data-tooltip title="{% tooltip pk=14 %}" class="col-lg-3"> <div data-tooltip data-placement="{% tooltip_placement pk=14 %}" title="{% tooltip pk=14 %}" class="col-lg-3">
<input <input
type="text" type="text"
id="realtyName" id="realtyName"
@ -230,7 +230,7 @@
class="box-sizing surr surr2" class="box-sizing surr surr2"
value="{{ realty_form.name.value }}"> value="{{ realty_form.name.value }}">
</div> </div>
<div data-tooltip title="{% tooltip pk=15 %}" class="col-lg-3"> <div data-tooltip data-placement="{% tooltip_placement pk=15 %}" title="{% tooltip pk=15 %}" class="col-lg-3">
<select <select
id="realtyBuildingClassificationId" id="realtyBuildingClassificationId"
class="selectpicker" class="selectpicker"
@ -240,7 +240,7 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div data-tooltip title="{% tooltip pk=16 %}" class="col-lg-3"> <div data-tooltip data-placement="{% tooltip_placement pk=16 %}" title="{% tooltip pk=16 %}" class="col-lg-3">
<select <select
id="realtyConstructionTypeId" id="realtyConstructionTypeId"
class="selectpicker" class="selectpicker"
@ -255,7 +255,7 @@
<div class="col-lg-12">Местоположение <span style="color: red">{{ realty_form.location.errors.as_text }}</span></div> <div class="col-lg-12">Местоположение <span style="color: red">{{ realty_form.location.errors.as_text }}</span></div>
</div> </div>
<div class="polsF1 polsF2 disTab"> <div class="polsF1 polsF2 disTab">
<div data-tooltip title="{% tooltip pk=18 %}"> <div data-tooltip data-placement="{% tooltip_placement pk=18 %}" title="{% tooltip pk=18 %}">
<div class="col-lg-3"> <div class="col-lg-3">
<input type="hidden" class="-location-select -location-select-country" style="width: 100%"> <input type="hidden" class="-location-select -location-select-country" style="width: 100%">
</div> </div>
@ -271,7 +271,7 @@
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" value="{{ realty_form.location.value }}"> <input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" value="{{ realty_form.location.value }}">
<div data-tooltip title="{% tooltip pk=17 %}" class="col-lg-3 make-new"> <div data-tooltip data-placement="{% tooltip_placement pk=17 %}" title="{% tooltip pk=17 %}" class="col-lg-3 make-new">
<label>{{ form.cro }}<span></span></label> <label>{{ form.cro }}<span></span></label>
<p>Требуется допуск (СРО)</p> <p>Требуется допуск (СРО)</p>
</div> </div>

@ -165,42 +165,60 @@
{% endif %} {% endif %}
<div class="galleryWork2 disTab"> <div class="galleryWork2 disTab">
{% for p in contractor.portfolios.all %} {% if False %}
<div class="col-lg-4"> {% for p in contractor.portfolios.all %}
<div class="insetCol box-sizing disTab"> <div class="col-lg-4">
{% thumbnail p.get_cover "224x224" crop="center" as im %} <div class="insetCol box-sizing disTab">
<div class="imgGal" {% thumbnail p.get_cover "224x224" crop="center" as im %}
style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;"> <div class="imgGal"
<a class="open-modal-image" href="{{ p.get_cover.url }}"><div class="imgFigure"></div></a> style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
</div> <a class="open-modal-image" href="{{ p.get_cover.url }}"><div class="imgFigure"></div></a>
{% endthumbnail %} </div>
</div> {% endthumbnail %}
<div class="insetCol2 box-sizing disTab"> </div>
<a href="{% url 'projects:contractor-portfolio-detail' p.pk %}">{{ p }}</a>
{% if request.user.pk == contractor.pk %} <div class="insetCol2 box-sizing disTab">
<div class="buttonsImg" disTab> <a href="{% url 'projects:contractor-portfolio-detail' p.pk %}">{{ p }}</a>
<a href="{% url 'projects:contractor-portfolio-edit' p.pk %}">
<div class="insetBI insetBI1"> {% if request.user.pk == contractor.pk %}
<i class="fa fa-pencil"></i> <div class="buttonsImg" disTab>
<a href="{% url 'projects:contractor-portfolio-edit' p.pk %}">
<div class="insetBI insetBI1">
<i class="fa fa-pencil"></i>
</div>
</a>
<div class="insetBI insetBI2">
<form action="{% url 'projects:contractor-portfolio-trash' pk=p.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false"><i class="fa fa-times"></i></a>
</form>
</div> </div>
</a>
<div class="insetBI insetBI2">
<form action="{% url 'projects:contractor-portfolio-trash' pk=p.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false"><i class="fa fa-times"></i></a>
</form>
</div> </div>
</div> {% endif %}
{% endif %} </div>
</div> </div>
</div> {% empty %}
{% empty %} <div class="col-lg-4">
<div class="col-lg-4"> <p style="text-align: center;">Работ в портфолио пока нет</p>
<p style="text-align: center;">Работ в портфолио пока нет</p> </div>
</div> {% endfor %}
{% endfor %} {% endif %}
<script type="text/template" class="-portfolio-item-templ">
{# <div class="col-lg-4">#}
{# <div class="insetCol box-sizing disTab">#}
{# <div class="imgGal" style="background:rgba(0, 0, 0, 0) url('<%= portfolio.photos[0].img %>') no-repeat scroll center center / cover">#}
{# <div class="imgFigure"></div>#}
{# </div>#}
{# </div>#}
{# #}
{# <div class="insetCol2 box-sizing disTab text-center">#}
{# <a href="<%= portfAbsUrl %>"><%= trunc({length: 50}, portfolio.name) %></a>#}
{# </div>#}
{# </div>#}
</script>
</div> </div>
<div class="col-lg-9 col-lg-offset-3"> <div class="col-lg-9 col-lg-offset-3">
@ -793,4 +811,82 @@
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
} }
</script> </script>
<!-- Pagination ------------------------------------------------------------>
<script>
(function() {
var $portfoliosContainer = $('.-portfolios-container').first()
var portfolioItemTempl = _.template($portfoliosContainer.find('.-portfolio-item-templ').first().html())
var $morePortfBtn = $('.-more-portfolios-btn').first()
var portfAbsUrl = '/projects/portfolio/'
var $workSellsContainer = $('.-work-sells-container').first()
var workSellItemTempl = _.template($workSellsContainer.find('.-work-sell-item-templ').first().html())
var $moreWorkSellsfBtn = $('.-more-work-sells-btn').first()
var workSellAbsUrl = '/work_sell/'
var teamId = {{ contractor.team.pk }}
var contractorIds
var portfUrl = new URI('/api/portfolios/')
var workSellUrl = new URI('/api/work-sells/')
var pageSize = 3
$.get('/api/teams/' + teamId + '/').then(function(res) {
contractorIds = _.map(function(contractor) {
return contractor.id
}, res.contractors)
})
.then(loadMorePortfolios)
.then(loadMoreWorkSells)
function loadMorePortfolios() {
var query = portfUrl.query(true)
portfUrl.setQuery('user__id__in', _.join(',', contractorIds))
portfUrl.setQuery('page_size', pageSize)
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
$.get(portfUrl.href()).then(function(res) {
_.each(function(portfolio) {
$portfoliosContainer.append(portfolioItemTempl({
portfolio: portfolio,
portfAbsUrl: portfAbsUrl + portfolio.id + '/',
trunc: _.truncate,
}))
}, res.results)
if (!res.next)
$morePortfBtn.css('display', 'none')
})
}
function loadMoreWorkSells() {
var query = workSellUrl.query(true)
workSellUrl.setQuery('contractor__in', _.join(',', contractorIds))
workSellUrl.setQuery('page_size', pageSize)
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
$.get(workSellUrl.href()).then(function(res) {
_.each(function(ws) {
$workSellsContainer.append(workSellItemTempl({
workSell: ws,
workSellAbsUrl: workSellAbsUrl + ws.id + '/',
trunc: _.truncate,
}))
}, res.results)
if (!res.next)
$moreWorkSellsfBtn.css('display', 'none')
})
}
window.loadMorePortfolios = loadMorePortfolios
window.loadMoreWorkSells = loadMoreWorkSells
}())
</script>
{% endblock %} {% endblock %}

@ -46,21 +46,21 @@
<ul class="nav nav-tabs nav-justified"> <ul class="nav nav-tabs nav-justified">
{% url 'users:customer-profile-open-projects' pk=pk as a %} {% url 'users:customer-profile-open-projects' pk=pk as a %}
{% url 'users:customer-profile-trashed-projects' pk=pk as a2 %} {% url 'users:customer-profile-trashed-projects' pk=pk as a2 %}
{# {% url 'users:customer-profile-current-projects' pk=pk as b %}#} {% url 'users:customer-profile-current-projects' pk=pk as b %}
{% url 'users:customer-profile-reviews' pk=pk as c %} {% url 'users:customer-profile-reviews' pk=pk as c %}
<li role="presentation" {% if request.path == a or request.path == a2 %}class="active"{% endif %}> <li role="presentation" {% if request.path == a or request.path == a2 %}class="active"{% endif %}>
<a href="{{ a }}">Открытые проекты</a> <a href="{{ a }}">Открытые проекты</a>
</li> </li>
{# <li role="presentation" {% if request.path == b %}class="active"{% endif %}>#} <li role="presentation" {% if request.path == b %}class="active"{% endif %}>
{# <a href="{{ b }}">Текущие проекты</a>#} <a href="{{ b }}">Текущие проекты</a>
{# #}
{# <div class="roundsCount">#} <div class="roundsCount">
{# <div class="countR">0</div>#} <div class="countR">0</div>
{# <div class="countG">0</div>#} <div class="countG">0</div>
{# </div>#} </div>
{# </li>#} </li>
<li role="presentation" {% if request.path == c %}class="active"{% endif %}> <li role="presentation" {% if request.path == c %}class="active"{% endif %}>
<a href="{{ c }}">Отзывы</a> <a href="{{ c }}">Отзывы</a>

Loading…
Cancel
Save