remotes/origin/PR-39
ArturBaybulatov 9 years ago
parent c0ded3c66d
commit e05cbaa0db
  1. 4
      assets/css/extra.css
  2. 3
      common/views.py
  3. 48
      projects/templates/customer_project_create.html
  4. 51
      projects/templates/project_detail.html
  5. 93
      users/templates/contractor_profile.html
  6. 8
      users/templates/team_profile.html

@ -145,3 +145,7 @@
display: block;
overflow: auto;
}
.-green-glyphicon.glyphicon.glyphicon-question-sign {
color: green;
}

@ -9,6 +9,7 @@ from django.shortcuts import render, redirect
from django.template.loader import get_template, render_to_string
from django.views.generic import View, DetailView
from registration.backends.default.views import RegistrationView
from sorl.thumbnail import get_thumbnail
import json
import jsonschema
@ -96,7 +97,7 @@ class LiveImageUploadCreateView(NoCsrfMixin, LoginRequiredMixin, View):
'name': live_img.file.name,
'size': live_img.file.size,
'url': live_img.file.url,
'thumbnailUrl': live_img.file.url,
'thumbnailUrl': get_thumbnail(live_img.file, '235x224', crop='center').url,
'deleteUrl': reverse('common:live-image-upload-delete', kwargs={'pk': live_img.pk}),
'deleteType': 'POST',
}]})

@ -24,13 +24,13 @@
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div>
{% endif %}
<div data-tooltip data-placement="{% tooltip_placement pk=4 %}" title="{% tooltip pk=4 %}" class="textAreaBlock2 text-nn box-sizing disTab">
<p class="titleResF1">Название заказа <span style="color: red">{{ form.name.errors.as_text }}</span></p>
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p class="titleResF1">Название заказа <span data-tooltip data-placement="{% tooltip_placement pk=4 %}" title="{% tooltip pk=4 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <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 }}">
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=5 %}" title="{% tooltip pk=5 %}" class="textAreaBlock2 text-nn box-sizing disTab">
<p class="titleResF1">Подробно опишите задание <span style="color: red">{{ form.text.errors.as_text }}</span></p>
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p class="titleResF1">Подробно опишите задание <span data-tooltip data-placement="{% tooltip_placement pk=5 %}" title="{% tooltip pk=5 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span style="color: red">{{ form.text.errors.as_text }}</span></p>
<textarea name="{{ form.text.html_name }}" id="text-new" style="margin-top:0;">{{ form.text.value }}</textarea>
</div>
</div>
@ -52,8 +52,8 @@
</ul>
</div>
<p class="type-work">Тип работы <span style="color: red">{{ form.work_type.errors.as_text }}</span></p>
<div data-tooltip data-placement="{% tooltip_placement pk=6 %}" title="{% tooltip pk=6 %}" class="mail-block type-work-inset">
<p class="type-work">Тип работы <span data-tooltip data-placement="{% tooltip_placement pk=6 %}" title="{% tooltip pk=6 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span style="color: red">{{ form.work_type.errors.as_text }}</span></p>
<div class="mail-block type-work-inset">
{% for id, text in form.work_type.field.choices %}
<div class="inset-mb">
<label>
@ -78,12 +78,12 @@
<div class="col-lg-12 new-filter">
<div class="filter clearfix">
<div class="titleF1 disTab">
<div class="col-lg-12">Специализация проекта <span style="color: red">{{ form.specialization.errors.as_text }}</span></div>
<div class="col-lg-12">Специализация проекта <span data-tooltip data-placement="{% tooltip_placement pk=7 %}" title="{% tooltip pk=7 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span style="color: red">{{ form.specialization.errors.as_text }}</span></div>
<!--<div class="col-lg-3"></div>
<div class="col-lg-3"></div>
<div class="col-lg-3"></div>-->
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=7 %}" title="{% tooltip pk=7 %}" class="polsF1 disTab -spec-select-container">
<div class="polsF1 disTab -spec-select-container">
<div class="col-lg-3">
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%">
</div>
@ -103,18 +103,18 @@
<input type="hidden" name="{{ form.specialization.html_name }}" value="{{ form.specialization.value }}" class="-chosen-spec-id">
</div>
<div class="titleF1 titleF2 disTab">
<div class="col-lg-12">Бюджет <span style="color: red">{{ form.budget.errors.as_text }}</span></div>
<div class="col-lg-12">Бюджет <span data-tooltip data-placement="{% tooltip_placement pk=8 %}" title="{% tooltip pk=8 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span style="color: red">{{ form.budget.errors.as_text }}</span></div>
<!--<div class="col-lg-8"></div>-->
</div>
<div class="searchF1 polsF1 polsFF">
<div data-tooltip data-placement="{% tooltip_placement pk=8 %}" title="{% tooltip pk=8 %}" class="col-lg-4">
<div class="col-lg-4">
<input type="text" class="box-sizing surr" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}">
{{ form.currency }}
</div>
<div class="col-lg-3">
{{ form.term_type }}
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=9 %}" title="{% tooltip pk=9 %}" class="col-lg-5 dog-new">
<div class="col-lg-5 dog-new">
<label>
<input
type="checkbox"
@ -124,7 +124,7 @@
<span></span>
</label>
<p>или по договоренности</p>
<p>или по договоренности <span data-tooltip data-placement="{% tooltip_placement pk=9 %}" title="{% tooltip pk=9 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span></p>
</div>
</div>
<div class="searchF1 polsF1 polsFF make-new">
@ -203,14 +203,14 @@
<div class="slideRes disTab activeSlide">
<div class="titleF1 disTab">
<div class="col-lg-3">Выбор объекта<br><span style="color: red">{{ form.realty.errors.as_text }}</span></div>
<div class="col-lg-3">Наименование<br><span style="color: red">{{ realty_form.name.errors.as_text }}</span></div>
<div class="col-lg-3">Классификация здания<br><span style="color: red">{{ realty_form.building_classification.errors.as_text }}</span></div>
<div class="col-lg-3">Вид строительства<br><span style="color: red">{{ realty_form.construction_type.errors.as_text }}</span></div>
<div class="col-lg-3">Выбор объекта <span data-tooltip data-placement="{% tooltip_placement pk=13 %}" title="{% tooltip pk=13 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span><br><span style="color: red">{{ form.realty.errors.as_text }}</span></div>
<div class="col-lg-3">Наименование <span data-tooltip data-placement="{% tooltip_placement pk=14 %}" title="{% tooltip pk=14 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span><br><span style="color: red">{{ realty_form.name.errors.as_text }}</span></div>
<div class="col-lg-3">Классификация здания <span data-tooltip data-placement="{% tooltip_placement pk=15 %}" title="{% tooltip pk=15 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span><br><span style="color: red">{{ realty_form.building_classification.errors.as_text }}</span></div>
<div class="col-lg-3">Вид строительства <span data-tooltip data-placement="{% tooltip_placement pk=16 %}" title="{% tooltip pk=16 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span><br><span style="color: red">{{ realty_form.construction_type.errors.as_text }}</span></div>
</div>
<div class="polsF1 polsF2 disTab">
<div data-tooltip data-placement="{% tooltip_placement pk=13 %}" title="{% tooltip pk=13 %}" class="col-lg-3">
<div class="col-lg-3">
<select
class="selectpicker"
id="realtyId"
@ -222,7 +222,7 @@
{% endfor %}
</select>
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=14 %}" title="{% tooltip pk=14 %}" class="col-lg-3">
<div class="col-lg-3">
<input
type="text"
id="realtyName"
@ -230,7 +230,7 @@
class="box-sizing surr surr2"
value="{{ realty_form.name.value }}">
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=15 %}" title="{% tooltip pk=15 %}" class="col-lg-3">
<div class="col-lg-3">
<select
id="realtyBuildingClassificationId"
class="selectpicker"
@ -240,7 +240,7 @@
{% endfor %}
</select>
</div>
<div data-tooltip data-placement="{% tooltip_placement pk=16 %}" title="{% tooltip pk=16 %}" class="col-lg-3">
<div class="col-lg-3">
<select
id="realtyConstructionTypeId"
class="selectpicker"
@ -252,10 +252,10 @@
</div>
</div>
<div class="titleF1 disTab">
<div class="col-lg-12">Местоположение <span style="color: red">{{ realty_form.location.errors.as_text }}</span></div>
<div class="col-lg-12">Местоположение <span data-tooltip data-placement="{% tooltip_placement pk=18 %}" title="{% tooltip pk=18 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span style="color: red">{{ realty_form.location.errors.as_text }}</span></div>
</div>
<div class="polsF1 polsF2 disTab">
<div data-tooltip data-placement="{% tooltip_placement pk=18 %}" title="{% tooltip pk=18 %}">
<div>
<div class="col-lg-3">
<input type="hidden" class="-location-select -location-select-country" style="width: 100%">
</div>
@ -271,9 +271,9 @@
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" value="{{ realty_form.location.value }}">
<div data-tooltip data-placement="{% tooltip_placement pk=17 %}" title="{% tooltip pk=17 %}" class="col-lg-3 make-new">
<div class="col-lg-3 make-new">
<label>{{ form.cro }}<span></span></label>
<p>Требуется допуск (СРО)</p>
<p>Требуется допуск (СРО) <span data-tooltip data-placement="{% tooltip_placement pk=17 %}" title="{% tooltip pk=17 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span></p>
</div>
</div>
</div>

@ -135,6 +135,7 @@
Редактировать
</a>
{% if project.state == 'active' %}
<form action="{% url 'projects:customer-project-trash' pk=project.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
@ -143,6 +144,16 @@
Снять с публикации
</a>
</form>
{% elif project.state == 'trashed' %}
<form action="{% url 'projects:customer-project-restore' pk=project.pk %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false" class="linkProIn linkProIn2">
Восстановить из корзины
</a>
</form>
{% endif %}
{% endif %}
</div>
</div>
@ -185,7 +196,9 @@
<a href="#" class="aLinkExe">
<div class="imgExecutor">
{% if answer.author.avatar %}
<img src="{{ answer.author.avatar.url }}" alt="execitor-image">
{% thumbnail answer.author.avatar "125x125" crop="center" as im %}
<img src="{{ im.url }}" alt="execitor-image">
{% endthumbnail %}
{% else %}
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image">
{% endif %}
@ -262,6 +275,18 @@
<div class="col-xs-12">
<ul>
{% for answer_file in answer.files.all %}
<li><a href="{{ answer_file.file.url }}">{{ answer_file.name }}</a> <span>{{ answer_file.file.size|filesizeformat }}</span></li>
{% endfor %}
</ul>
</div>
<div class="gallMini disTab">
{% for portf in answer.portfolios.all %}
<div class="col-lg-3">
@ -607,6 +632,14 @@
</form>
</div>
<div class="col-xs-12">
<ul>
{% for answer_file in answer.files.all %}
<li><a href="{{ answer_file.file.url }}">{{ answer_file.name }}</a> <span>{{ answer_file.file.size|filesizeformat }}</span></li>
{% endfor %}
</ul>
</div>
<div class="gallMini disTab">
{% for portf in answer.portfolios.all %}
<div class="col-lg-3">
@ -769,6 +802,14 @@
</form>
</div>
<div class="col-xs-12">
<ul>
{% for answer_file in answer.files.all %}
<li><a href="{{ answer_file.file.url }}">{{ answer_file.name }}</a> <span>{{ answer_file.file.size|filesizeformat }}</span></li>
{% endfor %}
</ul>
</div>
<div class="gallMini disTab">
{% for portf in answer.portfolios.all %}
<div class="col-lg-3">
@ -905,6 +946,14 @@
<p>Опубликован: {{ answer.created|date:'M d, Y' }}</p>
</div>
<div class="col-xs-12">
<ul>
{% for answer_file in answer.files.all %}
<li><a href="{{ answer_file.file.url }}">{{ answer_file.name }}</a> <span>{{ answer_file.file.size|filesizeformat }}</span></li>
{% endfor %}
</ul>
</div>
<div class="gallMini disTab">
{% for portf in answer.portfolios.all %}
<div class="col-lg-3">

@ -202,46 +202,6 @@
{% endif %}
<div class="galleryWork2 disTab -portfolios-container">
{% if False %}
{% for p in contractor.portfolios.all %}
<div class="col-lg-4">
<div class="insetCol box-sizing disTab">
{% thumbnail p.get_cover "224x224" crop="center" as im %}
<div class="imgGal" style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
<a class="open-modal-image" href="{{ p.get_cover.url }}"><div class="imgFigure"></div></a>
</div>
{% endthumbnail %}
</div>
<div class="insetCol2 box-sizing disTab">
<a href="{% url 'projects:contractor-portfolio-detail' p.pk %}">{{ p }}</a>
{% if request.user.pk == contractor.pk %}
<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>
{% endif %}
</div>
</div>
{% empty %}
<div class="col-lg-4">
<p style="text-align: center;">Работ в портфолио пока нет</p>
</div>
{% endfor %}
{% endif %}
<script type="text/template" class="-portfolio-item-templ">
<div class="col-lg-4">
<div class="insetCol box-sizing disTab">
@ -274,7 +234,7 @@
</script>
</div>
<div class="col-lg-9 col-lg-offset-3">
<div class="col-lg-9 col-lg-offset-3 -more-portfolios-btn">
<div class="linkElse">
<a href="#" onclick="loadMorePortfolios(); return false" class="showElse">показать еще</a>
</div>
@ -321,52 +281,9 @@
{% endif %}
<div class="galleryWork2 disTab -work-sells-container">
{% if False %}
{% for ws in contractor.work_sell.all %}
<div class="col-lg-4">
<div class="insetCol box-sizing disTab">
<a href="{% url 'work_sell:detail' ws.pk %}">
{% thumbnail ws.get_cover "224x224" crop="center" as im %}
<div class="imgGal"
style="background:rgba(0, 0, 0, 0) url('{{ im.url }}') no-repeat scroll center center / cover ;">
<a class="open-modal-image" href="{{ ws.get_cover.url }}"><div class="imgFigure"></div></a>
</div>
{% endthumbnail %}
</a>
<div class="cenaImg box-sizing">
<div class="cenaImgInset">
{{ ws.budget }} <i class="{% fa_currency_classes ws.currency %}"></i>
</div>
</div>
</div>
<div class="insetCol2 box-sizing disTab">
<a href="{% url 'work_sell:detail' ws.pk %}">{{ ws }}</a>
{% if request.user.pk == contractor.pk %}
<div class="buttonsImg" disTab>
<div class="insetBI insetBI1">
<a href="{% url 'work_sell:edit' ws.pk %}">
<i class="fa fa-pencil"></i>
</a>
</div>
<div class="insetBI insetBI2">
<form action="{% url 'work_sell:contractor-worksell-trash' pk=ws.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>
{% endif %}
</div>
</div>
{% endfor %}
{% endif %}
<script type="text/template" class="-work-sell-item-templ">
<div class="col-lg-4">
<div class="insetCol box-sizing disTab">
{# <a href="{% url 'work_sell:detail' ws.pk %}">#}
<a href="#">
<div class="imgGal" style="background:rgba(0, 0, 0, 0) url('<%- workSell.photos[0].img %>') no-repeat scroll center center / cover">
<a class="open-modal-image" href="<%- workSell.photos[0].img %>"><div class="imgFigure"></div></a>
@ -404,7 +321,7 @@
</script>
</div>
<div class="col-lg-9 col-lg-offset-3">
<div class="col-lg-9 col-lg-offset-3 -more-work-sells-btn">
<div class="linkElse">
<a href="#" onclick="loadMoreWorkSells(); return false" class="showElse">показать еще</a>
</div>
@ -692,14 +609,14 @@
var portfUrl = new URI('/api/portfolios/')
var workSellUrl = new URI('/api/work-sells/')
var pageSize = 3
var pageSize = {% if TESTING %}99999{% else %}9{% endif %}
function loadMorePortfolios() {
var query = portfUrl.query(true)
portfUrl.setQuery('user__id', contractorId)
portfUrl.setQuery('page_size', pageSize)
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 1)
$.get(portfUrl.href())
.then(function(res) {
@ -729,7 +646,7 @@
workSellUrl.setQuery('contractor__id', contractorId)
workSellUrl.setQuery('page_size', pageSize)
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 1)
$.get(workSellUrl.href())
.then(function(res) {

@ -70,7 +70,7 @@
</p>
<div class="statusUser st-new">Свободен</div>
<a href="javascript:void(0)" class="new-prop new-prop2 new-prop3">написать сообщение</a>
<a href="{% url 'chat:chat-user' %}?user_id={{ team.owner.pk }}" class="new-prop new-prop2 new-prop3">написать сообщение</a>
</div>
<div class="col-lg-4">
@ -220,7 +220,7 @@
var portfUrl = new URI('/api/portfolios/')
var workSellUrl = new URI('/api/work-sells/')
var pageSize = 3
var pageSize = {% if TESTING %}99999{% else %}9{% endif %}
$.get('/api/teams/' + teamId + '/').then(function(res) {
Array.prototype.push.apply(contractorIds, _.map(function(contractor) {
@ -235,7 +235,7 @@
portfUrl.setQuery('user__id__in', _.join(',', contractorIds))
portfUrl.setQuery('page_size', pageSize)
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 1)
$.get(portfUrl.href())
.then(function(res) {
@ -261,7 +261,7 @@
workSellUrl.setQuery('team', teamId)
workSellUrl.setQuery('page_size', pageSize)
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 1)
$.get(workSellUrl.href()).then(function(res) {
_.each(function(ws) {

Loading…
Cancel
Save