parent
da3793495d
commit
669d1d5db0
135 changed files with 4332 additions and 3984 deletions
@ -0,0 +1,16 @@ |
||||
from django.utils import translation |
||||
|
||||
|
||||
class LocaleMiddleware(object): |
||||
""" |
||||
This is a very simple middleware that parses a request |
||||
and decides what translation object to install in the current |
||||
thread context. This allows pages to be dynamically |
||||
translated to the language the user desires (if the language |
||||
is available, of course). |
||||
""" |
||||
|
||||
def process_request(self, request): |
||||
user_language = 'ru_RU' |
||||
translation.activate(user_language) |
||||
request.session[translation.LANGUAGE_SESSION_KEY] = user_language |
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 612 B |
|
After Width: | Height: | Size: 555 B |
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
Binary file not shown.
@ -0,0 +1,48 @@ |
||||
# SOME DESCRIPTIVE TITLE. |
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
||||
# This file is distributed under the same license as the PACKAGE package. |
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
||||
# |
||||
msgid "" |
||||
msgstr "" |
||||
"Project-Id-Version: PACKAGE VERSION\n" |
||||
"Report-Msgid-Bugs-To: \n" |
||||
"POT-Creation-Date: 2016-10-14 22:49+0300\n" |
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
||||
"Language: \n" |
||||
"MIME-Version: 1.0\n" |
||||
"Content-Type: text/plain; charset=UTF-8\n" |
||||
"Content-Transfer-Encoding: 8bit\n" |
||||
|
||||
#: templates/_trash/project_form.html:46 |
||||
#: templates/contractor_portfolio_edit.html:46 |
||||
#: templates/customer_project_create.html:62 |
||||
#: templates/customer_project_edit.html:72 templates/project_filter.html:21 |
||||
msgid "project_stage0" |
||||
msgstr "Тип работы" |
||||
|
||||
#: templates/contractor_portfolio_edit.html:59 |
||||
#: templates/customer_project_create.html:89 |
||||
#: templates/customer_project_edit.html:99 templates/project_filter.html:35 |
||||
msgid "project_stage1" |
||||
msgstr "Стадия проекта" |
||||
|
||||
#: templates/contractor_portfolio_edit.html:64 |
||||
#: templates/customer_project_create.html:94 |
||||
#: templates/customer_project_edit.html:104 templates/project_filter.html:39 |
||||
msgid "project_stage2" |
||||
msgstr "Раздел" |
||||
|
||||
#: templates/contractor_portfolio_edit.html:69 |
||||
#: templates/customer_project_create.html:99 |
||||
#: templates/customer_project_edit.html:109 templates/project_filter.html:43 |
||||
msgid "project_stage3" |
||||
msgstr "Подраздел" |
||||
|
||||
#: templates/contractor_portfolio_edit.html:74 |
||||
#: templates/customer_project_create.html:104 |
||||
#: templates/customer_project_edit.html:114 templates/project_filter.html:47 |
||||
msgid "project_stage4" |
||||
msgstr "Подраздел ( доп. )" |
||||
@ -0,0 +1,38 @@ |
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.9.7 on 2016-10-14 20:49 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('projects', '0046_merge'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='buildingclassfication', |
||||
options={'ordering': ['order'], 'verbose_name': 'Тип здания', 'verbose_name_plural': 'Типы зданий'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='constructiontype', |
||||
options={'ordering': ['order'], 'verbose_name': 'Вид строительства', 'verbose_name_plural': 'Виды строительства'}, |
||||
), |
||||
migrations.AlterModelManagers( |
||||
name='buildingclassfication', |
||||
managers=[ |
||||
], |
||||
), |
||||
migrations.AddField( |
||||
model_name='buildingclassfication', |
||||
name='order', |
||||
field=models.PositiveSmallIntegerField(default=0, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='constructiontype', |
||||
name='order', |
||||
field=models.PositiveSmallIntegerField(default=0, null=True), |
||||
), |
||||
] |
||||
@ -1,279 +1,279 @@ |
||||
{% extends 'partials/base.html' %} |
||||
|
||||
{% block content %} |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Новый заказ</p> |
||||
</div> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Новый заказ</p> |
||||
</div> |
||||
|
||||
<form method="post"> |
||||
{% csrf_token %} |
||||
{{ form_project.errors }} |
||||
{{ form_realty.errors }} |
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
{{ project_form.errors }} |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Название заказа</p> |
||||
<input type="text" class="box-sizing" name="{{ project_form.name.name }}"/> |
||||
{{ project_form.name.errors }} |
||||
</div> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Подробно опишите задание</p> |
||||
<textarea name="{{ project_form.text.name }}" id="text-new"></textarea> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
<div class="col-lg-12 documentsChat"> |
||||
{# <form action="" method="post">#} |
||||
{# <div class="upload">#} |
||||
{# <input type="file" name="upload"/>#} |
||||
{# <p>+ добавить файл (до 100 файлов)</p>#} |
||||
{# </div>#} |
||||
{# <input type="submit" value="Submit" />#} |
||||
{# </form>#} |
||||
<ul class="list-new-new"> |
||||
<li> |
||||
Архитерурное 2.jpg |
||||
<span>7мб</span> |
||||
<div></div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
<p class="type-work">Тип работы:</p> |
||||
<div class="mail-block type-work-inset"> |
||||
<div class="inset-mb"> |
||||
<label><input type="radio" value="1" name="{{ project_form.type_work.name }}"><span></span></label> |
||||
<p>Проектирование</p> |
||||
</div> |
||||
<form method="post"> |
||||
{% csrf_token %} |
||||
{{ form_project.errors }} |
||||
{{ form_realty.errors }} |
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
{{ project_form.errors }} |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Название заказа</p> |
||||
<input type="text" class="box-sizing" name="{{ project_form.name.name }}"/> |
||||
{{ project_form.name.errors }} |
||||
</div> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Подробно опишите задание</p> |
||||
<textarea name="{{ project_form.text.name }}" id="text-new"></textarea> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
<div class="col-lg-12 documentsChat"> |
||||
{# <form action="" method="post">#} |
||||
{# <div class="upload">#} |
||||
{# <input type="file" name="upload"/>#} |
||||
{# <p>+ добавить файл (до 100 файлов)</p>#} |
||||
{# </div>#} |
||||
{# <input type="submit" value="Submit" />#} |
||||
{# </form>#} |
||||
{# <ul class="list-new-new">#} |
||||
{# <li>#} |
||||
{# Архитерурное 2.jpg#} |
||||
{# <span>7мб</span>#} |
||||
{# <div></div>#} |
||||
{# </li>#} |
||||
{# </ul>#} |
||||
</div> |
||||
<p class="type-work">{% trans 'project_stage0' %}:</p> |
||||
<div class="mail-block type-work-inset"> |
||||
<div class="inset-mb"> |
||||
<label><input type="radio" value="1" name="{{ project_form.type_work.name }}"><span></span></label> |
||||
<p>Проектирование</p> |
||||
</div> |
||||
|
||||
<div class="inset-mb"> |
||||
<label><input type="radio" value="2" name="{{ project_form.type_work.name }}"><span></span></label> |
||||
<p>Техническое сопровождение</p> |
||||
</div> |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="javascriptt:void(0)" class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
<div class="inset-mb"> |
||||
<label><input type="radio" value="2" name="{{ project_form.type_work.name }}"><span></span></label> |
||||
<p>Техническое сопровождение</p> |
||||
</div> |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="javascriptt:void(0)" class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="titleF1 disTab"> |
||||
<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 class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="titleF1 disTab"> |
||||
<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 class="polsF1 disTab"> |
||||
<div class="col-lg-3"> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3"> |
||||
|
||||
<select id="specialization1" name="{{ project_form.specialization.name }}"> |
||||
</select> |
||||
<select id="specialization1" name="{{ project_form.specialization.name }}"> |
||||
</select> |
||||
|
||||
{# {{ project_form.specialization }}#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{# <select class="selectpicker">#} |
||||
{# <option>Mustard</option>#} |
||||
{# <option>Ketchup</option>#} |
||||
{# <option>Relish</option>#} |
||||
{# </select>#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{# <select class="selectpicker">#} |
||||
{# <option>Mustard</option>#} |
||||
{# <option>Ketchup</option>#} |
||||
{# <option>Relish</option>#} |
||||
{# </select>#} |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-4">Бюджет</div> |
||||
<div class="col-lg-8"></div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<div class="col-lg-4"> |
||||
<input type="text" name="{{ project_form.price.name }}" class="box-sizing surr"> |
||||
<select class="selectpicker2 valul"> |
||||
<option>$</option> |
||||
<option>$</option> |
||||
<option>$</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>За проект</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-5 dog-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>или по договоренности</p> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF make-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label><input type="radio" name="afer"><span></span></label> |
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
<p class="des-afer"> |
||||
Текст |
||||
</p> |
||||
</div> |
||||
<div class="col-lg-6"> |
||||
<label><input type="radio" name="afer"><span></span></label> |
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
<p class="des-afer"> |
||||
Текст |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<button class="resButtonF1"> |
||||
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<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 class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" > |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input type="text" class="box-sizing surr surr2" name="{{ realty_form.name.name }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.building_classification.name }}"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.type_construction.name }}"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-12">Местоположение:</div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.country.name }}"> |
||||
<option>Страна</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" {{ realty_form.city.name }}> |
||||
<option>Город</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-6 make-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>Требуется допуск СРО</p> |
||||
</div> |
||||
</div> |
||||
{# {{ project_form.specialization }}#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{# <select class="selectpicker">#} |
||||
{# <option>Mustard</option>#} |
||||
{# <option>Ketchup</option>#} |
||||
{# <option>Relish</option>#} |
||||
{# </select>#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{# <select class="selectpicker">#} |
||||
{# <option>Mustard</option>#} |
||||
{# <option>Ketchup</option>#} |
||||
{# <option>Relish</option>#} |
||||
{# </select>#} |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-4">Бюджет</div> |
||||
<div class="col-lg-8"></div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<div class="col-lg-4"> |
||||
<input type="text" name="{{ project_form.price.name }}" class="box-sizing surr"> |
||||
<select class="selectpicker2 valul"> |
||||
<option>$</option> |
||||
<option>$</option> |
||||
<option>$</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>За проект</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-5 dog-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>или по договоренности</p> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF make-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label><input type="radio" name="afer"><span></span></label> |
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
<p class="des-afer"> |
||||
Текст |
||||
</p> |
||||
</div> |
||||
<div class="col-lg-6"> |
||||
<label><input type="radio" name="afer"><span></span></label> |
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
<p class="des-afer"> |
||||
Текст |
||||
</p> |
||||
</div> |
||||
</div> |
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<button class="resButtonF1"> |
||||
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<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 class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input type="text" class="box-sizing surr surr2" name="{{ realty_form.name.name }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.building_classification.name }}"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.type_construction.name }}"> |
||||
<option>Mustard</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-12">Местоположение:</div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" name="{{ realty_form.country.name }}"> |
||||
<option>Страна</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select class="selectpicker" {{ realty_form.city.name }}> |
||||
<option>Город</option> |
||||
<option>Ketchup</option> |
||||
<option>Relish</option> |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-6 make-new"> |
||||
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||
<p>Требуется допуск СРО</p> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input style="border-radius: 40px; |
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input style="border-radius: 40px; |
||||
font-family: 'pfdintextcomppro-regular', sans-serif;color: black;font-size: 16px;padding: 17px 33px 17px 33px; |
||||
float: left;margin: 0 15px 48px 15px;border: 1px solid #DFDFDF;text-transform: uppercase; |
||||
letter-spacing: 2px;color: #42B476;border: 1px solid #42B476" type="submit" value="Разместить проект" /> |
||||
<a href="javascript:void(0)">Сохранить</a> |
||||
letter-spacing: 2px;color: #42B476;border: 1px solid #42B476" type="submit" value="Разместить проект"/> |
||||
<a href="javascript:void(0)">Сохранить</a> |
||||
|
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
|
||||
</form> |
||||
</form> |
||||
|
||||
{% endblock %} |
||||
{% block js_block %} |
||||
<script type="text/javascript"> |
||||
$(function () { |
||||
<script type="text/javascript"> |
||||
$(function () { |
||||
|
||||
function updateSelectData() { |
||||
|
||||
function updateSelectData(){ |
||||
|
||||
} |
||||
|
||||
} |
||||
$.ajax({ |
||||
url: '/api/specializations?parent=1', |
||||
type: 'GET', |
||||
dataType: 'json', |
||||
success: function (json) { |
||||
$.ajax({ |
||||
url: '/api/specializations?parent=1', |
||||
type: 'GET', |
||||
dataType: 'json', |
||||
success: function (json) { |
||||
|
||||
console.log(json.results); |
||||
var out = '' |
||||
$.each(json.results, function (i, v) { |
||||
$('#specialization1') |
||||
.append($("<option></option>") |
||||
.attr("value", v.name) |
||||
.text(v.name)); |
||||
}); |
||||
console.log(json.results); |
||||
var out = '' |
||||
$.each(json.results, function (i, v) { |
||||
$('#specialization1') |
||||
.append($("<option></option>") |
||||
.attr("value", v.name) |
||||
.text(v.name)); |
||||
}); |
||||
|
||||
$("#specialization1").addClass("selectpicker"); |
||||
$('.selectpicker').selectpicker({ |
||||
style: 'btn-info', |
||||
size: 4, |
||||
width: '237px' |
||||
}); |
||||
} |
||||
}); |
||||
$("#specialization1").addClass("selectpicker"); |
||||
$('.selectpicker').selectpicker({ |
||||
style: 'btn-info', |
||||
size: 4, |
||||
width: '237px' |
||||
}); |
||||
} |
||||
}); |
||||
|
||||
$("#specialization1").on("change",function(){ |
||||
$("#specialization1").on("change", function () { |
||||
|
||||
}); |
||||
}); |
||||
</script> |
||||
}); |
||||
}); |
||||
</script> |
||||
{% endblock %} |
||||
|
||||
@ -1,18 +1,18 @@ |
||||
<form method="post" action="">{% csrf_token %} |
||||
{{ form.as_p }} |
||||
|
||||
<fieldset> |
||||
<legend>Photos</legend> |
||||
{{ portfolio_photo_form.management_form }} |
||||
{{ portfolio_photo_form.non_form_errors }} |
||||
{% for form in portfolio_photo_form %} |
||||
{{ form.id }} |
||||
<div class="inline {{ portfolio_photo_form.prefix }}"> |
||||
{{ form.img.errors }} |
||||
{{ form.img.label_tag }} |
||||
{{ form.img }} |
||||
</div> |
||||
{% endfor %} |
||||
</fieldset> |
||||
<input type="submit" value="Add portfolio" class="submit" /> |
||||
<fieldset> |
||||
<legend>Photos</legend> |
||||
{{ portfolio_photo_form.management_form }} |
||||
{{ portfolio_photo_form.non_form_errors }} |
||||
{% for form in portfolio_photo_form %} |
||||
{{ form.id }} |
||||
<div class="inline {{ portfolio_photo_form.prefix }}"> |
||||
{{ form.img.errors }} |
||||
{{ form.img.label_tag }} |
||||
{{ form.img }} |
||||
</div> |
||||
{% endfor %} |
||||
</fieldset> |
||||
<input type="submit" value="Add portfolio" class="submit"/> |
||||
</form> |
||||
|
||||
@ -1,177 +1,184 @@ |
||||
{% extends 'partials/base.html' %} |
||||
|
||||
{% load thumbnail %} |
||||
|
||||
{% load i18n %} |
||||
|
||||
{% block head_css %} |
||||
<style> |
||||
.-live-image-upload-container .-position-relative-parent {position: relative} |
||||
|
||||
.-live-image-upload-container .-image-delete, |
||||
.-live-image-upload-container .-live-image-delete { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
background-color: white; |
||||
} |
||||
</style> |
||||
<style> |
||||
.-live-image-upload-container .-position-relative-parent { |
||||
position: relative |
||||
} |
||||
|
||||
.-live-image-upload-container .-image-delete, |
||||
.-live-image-upload-container .-live-image-delete { |
||||
position: absolute; |
||||
top: 0; |
||||
right: 0; |
||||
background-color: white; |
||||
} |
||||
</style> |
||||
{% endblock %} |
||||
|
||||
{% block content %} |
||||
{% include 'partials/header.html' %} |
||||
{% include 'partials/header.html' %} |
||||
|
||||
<div class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Изменение портфолио</p> |
||||
</div> |
||||
<div class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Изменение портфолио</p> |
||||
</div> |
||||
|
||||
<form method="post" enctype="multipart/form-data" id="worksell-add-form" class="-spec-work-type-combo-container"> |
||||
<form method="post" enctype="multipart/form-data" id="worksell-add-form" class="-spec-work-type-combo-container"> |
||||
{% csrf_token %} |
||||
|
||||
{{ form.errors }} |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<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="hidden" name="{{ form.contractor.html_name }}" value="{{ form.contractor.value }}" /> |
||||
<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="hidden" name="{{ form.contractor.html_name }}" value="{{ form.contractor.value }}"/> |
||||
</div> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Описание<span style="color: red">{{ form.description.errors.as_text }}</span></p> |
||||
<textarea name="{{ form.description.html_name }}" id="text-new">{{ form.description.value }}</textarea> |
||||
<p>Описание<span style="color: red">{{ form.description.errors.as_text }}</span></p> |
||||
<textarea name="{{ form.description.html_name }}" id="text-new">{{ form.description.value }}</textarea> |
||||
</div> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Тип работы <span style="color: red">{{ form.work_type.errors.as_text }}</span></p> |
||||
</div> |
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>{% trans 'project_stage0' %} <span style="color: red">{{ form.work_type.errors.as_text }}</span></p> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<div class="polsF1 disTab" style="padding:0;"> |
||||
{{ form.work_type }} |
||||
</div> |
||||
<div class="polsF1 disTab" style="padding:0;"> |
||||
{{ form.work_type }} |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Стадия проекта <span style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage1' %} <span |
||||
style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">Стадия проекта</span></div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">{% trans 'project_stage2' %}</span></div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Раздел</div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage3' %}</div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Подраздел</div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage4' %}</div> |
||||
<input type='hidden' class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
|
||||
<input type="hidden" class="-chosen-spec-id" name="{{ form.specialization.html_name }}" |
||||
value="{{ form.specialization.value }}"> |
||||
<input type="hidden" class="-chosen-spec-id" name="{{ form.specialization.html_name }}" |
||||
value="{{ form.specialization.value }}"> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Бюджет{{ form.budget.errors.as_text }}</p> |
||||
<div class="row"> |
||||
<div class="col-lg-8"> |
||||
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}"> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
{{ form.currency}} |
||||
</div> |
||||
<p>Бюджет{{ form.budget.errors.as_text }}</p> |
||||
<div class="row"> |
||||
<div class="col-lg-8"> |
||||
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}"> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
{{ form.currency }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Срок выполнения{{ form.budget.errors.as_text }}</p> |
||||
<div class="row"> |
||||
<div class="col-lg-8"> |
||||
<input type="text" class="box-sizing" name="{{ form.term.html_name }}" value="{{ form.term.value }}"> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
{{ form.term_type }} |
||||
</div> |
||||
<p>Срок выполнения{{ form.budget.errors.as_text }}</p> |
||||
<div class="row"> |
||||
<div class="col-lg-8"> |
||||
<input type="text" class="box-sizing" name="{{ form.term.html_name }}" value="{{ form.term.value }}"> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-4"> |
||||
{{ form.term_type }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
</div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<p>Вид строительства</p> |
||||
{{ form.construction_type}} |
||||
<p>Вид строительства</p> |
||||
{{ form.construction_type }} |
||||
</div> |
||||
|
||||
<div class="polsF1 polsF2 disTab"> |
||||
<p>Классификация здания</p> |
||||
{{ form.building_classification}} |
||||
<p>Классификация здания</p> |
||||
{{ form.building_classification }} |
||||
|
||||
</div> |
||||
|
||||
|
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab -live-image-upload-container"> |
||||
<p>Фотографии</p> |
||||
|
||||
{% for photo in form.photos.field.queryset.all %} |
||||
<div class="col-lg-3 -image-widget"> |
||||
<div class="-position-relative-parent" style="display: inline-block"> |
||||
<a href="#" onclick="return false" class="btn close -image-delete">×</a> |
||||
|
||||
{% thumbnail photo.img "200x200" crop="center" as img %} |
||||
<img src="{{ img.url }}"> |
||||
{% endthumbnail %} |
||||
</div> |
||||
|
||||
<input type="checkbox" name="{{ form.photos.html_name }}" value="{{ photo.pk }}" checked style='display: none'> |
||||
</div> |
||||
{% endfor %} |
||||
|
||||
<script type="text/x-template" class="-templ"> |
||||
<% images.forEach(function(image) { %> |
||||
<div class="col-lg-3"> |
||||
<div class="-position-relative-parent" style="display: inline-block"> |
||||
<a href="#" onclick="return false" data-image-id="<%- image.id %>" class="btn close -live-image-delete">×</a> |
||||
<img src="<%- image.smallThumbnailUrl %>"> |
||||
</div> |
||||
|
||||
<input type="checkbox" name="{{ form.live_images.html_name }}" value="<%- image.id %>" checked style='display: none'> |
||||
</div> |
||||
<% }) %> |
||||
</script> |
||||
|
||||
<div class="-res"></div> |
||||
|
||||
<div class="col-xs-12"> |
||||
<input type="file" name="image" multiple class="-live-image-upload-field" style="display: none"> |
||||
|
||||
<a href="#" onclick="$(this).closest('.-live-image-upload-container').find('.-live-image-upload-field').first().click(); return false" class="btn btn-default add_file_to_port"> |
||||
Выберите файлы |
||||
</a> |
||||
<p>Фотографии</p> |
||||
|
||||
{% for photo in form.photos.field.queryset.all %} |
||||
<div class="col-lg-3 -image-widget"> |
||||
<div class="-position-relative-parent" style="display: inline-block"> |
||||
<a href="#" onclick="return false" class="btn close -image-delete">×</a> |
||||
|
||||
{% thumbnail photo.img "200x200" crop="center" as img %} |
||||
<img src="{{ img.url }}"> |
||||
{% endthumbnail %} |
||||
</div> |
||||
|
||||
<input type="checkbox" name="{{ form.photos.html_name }}" value="{{ photo.pk }}" checked |
||||
style='display: none'> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
|
||||
<script type="text/x-template" class="-templ"> |
||||
<% images.forEach(function(image) { %> |
||||
<div class="col-lg-3"> |
||||
<div class="-position-relative-parent" style="display: inline-block"> |
||||
<a href="#" onclick="return false" data-image-id="<%- image.id %>" |
||||
class="btn close -live-image-delete">×</a> |
||||
<img src="<%- image.smallThumbnailUrl %>"> |
||||
</div> |
||||
|
||||
<input type="checkbox" name="{{ form.live_images.html_name }}" value="<%- image.id %>" checked |
||||
style='display: none'> |
||||
</div> |
||||
<% }) %> |
||||
</script> |
||||
|
||||
<div class="-res"></div> |
||||
|
||||
<div class="col-xs-12"> |
||||
<input type="file" name="image" multiple class="-live-image-upload-field" style="display: none"> |
||||
|
||||
<a href="#" |
||||
onclick="$(this).closest('.-live-image-upload-container').find('.-live-image-upload-field').first().click(); return false" |
||||
class="btn btn-default add_file_to_port"> |
||||
Выберите файлы |
||||
</a> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
|
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input type="submit" value="Сохранить" class="btn-submit-link add_file_to_port"> |
||||
<a href="{% url 'users:contractor-profile' request.user.pk %}" class="btn-submit-link add_file_to_port">Отмена</a> |
||||
|
||||
<input type="submit" value="Сохранить" class="btn-submit-link add_file_to_port"> |
||||
<a href="{% url 'users:contractor-profile' request.user.pk %}" |
||||
class="btn-submit-link add_file_to_port">Отмена</a> |
||||
|
||||
</div> |
||||
|
||||
</form> |
||||
{% include 'partials/footer.html' %} |
||||
</div> |
||||
|
||||
</form> |
||||
{% include 'partials/footer.html' %} |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
||||
|
||||
@ -1,346 +1,410 @@ |
||||
{% extends 'partials/base.html' %} |
||||
{% load i18n %} |
||||
|
||||
{% block head_css %} |
||||
<style> |
||||
.-error, .errorlist {color: red} |
||||
</style> |
||||
<style> |
||||
.-error, .errorlist { |
||||
color: red |
||||
} |
||||
</style> |
||||
{% endblock %} |
||||
|
||||
|
||||
{% block content %} |
||||
{% include 'partials/modals/project_work_type_suggestion.html' %} |
||||
{% include 'partials/header.html' %} |
||||
{% include 'partials/modals/project_work_type_suggestion.html' %} |
||||
{% include 'partials/header.html' %} |
||||
|
||||
<div class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Новый заказ</p> |
||||
</div> |
||||
|
||||
<form action="{% url 'projects:customer-project-create' %}" method="POST" enctype="multipart/form-data" novalidate |
||||
class="-spec-work-type-combo-container"> |
||||
{% csrf_token %} |
||||
|
||||
<input type="hidden" id="extraFields" name="extra_fields" value=""> |
||||
|
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
|
||||
{% if form.non_field_errors %} |
||||
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> |
||||
{% endif %} |
||||
|
||||
<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 id="{% random_ident %}" class="-validation-error" |
||||
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 class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Новый заказ</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 id="{% random_ident %}" class="-validation-error" |
||||
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> |
||||
<div class="col-lg-3 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
<div id="fileUploadContainer" class="col-lg-12 documentsChat"> |
||||
<div class="upload"> |
||||
<p id="fileUploadAddBtn" style="margin: 0">+ добавить файл (до 100 файлов)</p> |
||||
</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"> |
||||
<p class="file-upload-label"></p> |
||||
<div class="file-upload-remove-btn"></div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
<form action="{% url 'projects:customer-project-create' %}" method="POST" enctype="multipart/form-data" novalidate class="-spec-work-type-combo-container"> |
||||
{% csrf_token %} |
||||
|
||||
<input type="hidden" id="extraFields" name="extra_fields" value=""> |
||||
|
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
|
||||
{% if form.non_field_errors %} |
||||
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> |
||||
{% endif %} |
||||
|
||||
<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 id="{% random_ident %}" class="-validation-error" 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 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 id="{% random_ident %}" class="-validation-error" 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> |
||||
<div class="col-lg-3 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
<div id="fileUploadContainer" class="col-lg-12 documentsChat"> |
||||
<div class="upload"> |
||||
<p id="fileUploadAddBtn" style="margin: 0">+ добавить файл (до 100 файлов)</p> |
||||
</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"> |
||||
<p class="file-upload-label"></p> |
||||
<div class="file-upload-remove-btn"></div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
<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 id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.work_type.errors.as_text }}</span></p> |
||||
<div class="mail-block type-work-inset -project-work-type-radios-container"> |
||||
{% for id, text in form.work_type.field.choices %} |
||||
<div class="inset-mb"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
value="{{ id }}" |
||||
{% if form.work_type.value|int == id %}checked{% endif %} |
||||
name="{{ form.work_type.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>{{ text }}</p> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="#" onclick="return false" data-toggle="modal" data-target="#projectWorkTypeSuggestionModal" class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
<p class="type-work">{% trans 'project_stage0' %} <span data-tooltip |
||||
data-placement="{% tooltip_placement pk=6 %}" |
||||
title="{% tooltip pk=6 %}" |
||||
class="-green-glyphicon glyphicon glyphicon-question-sign"></span> |
||||
<span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.work_type.errors.as_text }}</span></p> |
||||
<div class="mail-block type-work-inset -project-work-type-radios-container"> |
||||
{% for id, text in form.work_type.field.choices %} |
||||
<div class="inset-mb"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
value="{{ id }}" |
||||
{% if form.work_type.value|int == id %}checked{% endif %} |
||||
name="{{ form.work_type.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>{{ text }}</p> |
||||
</div> |
||||
<div class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Стадия проекта <span data-tooltip data-placement="{% tooltip_placement pk=7 %}" title="{% tooltip pk=7 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">Стадия проекта</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Раздел</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Подраздел</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
|
||||
<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 data-tooltip data-placement="{% tooltip_placement pk=8 %}" title="{% tooltip pk=8 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.budget.errors.as_text }}</span></div> |
||||
<!--<div class="col-lg-8"></div>--> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<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 class="col-lg-5 dog-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.budget_by_agreement.value %}checked{% endif %} |
||||
name="{{ form.budget_by_agreement.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<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"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.price_and_term_required.value %}checked{% endif %} |
||||
name="{{ form.price_and_term_required.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.deal_type.errors.as_text }}</span></div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'secure_deal' %}checked{% endif %} |
||||
value="secure_deal"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=10 as tooltip10 %}{{ tooltip10|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'direct_payment' %}checked{% endif %} |
||||
value="direct_payment"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=11 as tooltip11 %}{{ tooltip11|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<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> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<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 id="{% random_ident %}" class="-validation-error" 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 id="{% random_ident %}" class="-validation-error" 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 id="{% random_ident %}" class="-validation-error" 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 id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.construction_type.errors.as_text }}</span></div> |
||||
</div> |
||||
|
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
class="selectpicker" |
||||
id="realtyId" |
||||
name="{{ form.realty.html_name }}"> |
||||
<option value="" {% if not form.realty.value %}selected="selected"{% endif %}>Создать новый</option> |
||||
|
||||
{% for r in form.realty.field.queryset %} |
||||
<option value="{{ r.pk }}" {% if form.realty.value|int == r.pk %}selected="selected"{% endif %}>{{ r.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input |
||||
type="text" |
||||
id="realtyName" |
||||
name="{{ realty_form.name.html_name }}" |
||||
class="box-sizing surr surr2" |
||||
value="{{ realty_form.name.value }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{{ realty_form.building_classification }} |
||||
{# <select#} |
||||
{# id="realtyBuildingClassificationId"#} |
||||
{# #} |
||||
{# name="{{ realty_form.building_classification.html_name }}">#} |
||||
{# {% for c in realty_form.building_classification.field.queryset %}#} |
||||
{# <option value="{{ c.pk }}" {% if realty_form.building_classification.value|int == c.pk %}selected="selected"{% endif %}>{{ c.name }}</option>#} |
||||
{# {% endfor %}#} |
||||
{# </select>#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyConstructionTypeId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.construction_type.html_name }}"> |
||||
{% for t in realty_form.construction_type.field.queryset %} |
||||
<option value="{{ t.pk }}" {% if realty_form.construction_type.value|int == t.pk %}selected="selected"{% endif %}>{{ t.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<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 id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.location.errors.as_text }}</span></div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div> |
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-country" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-region" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-city" style="width: 100%"> |
||||
</div> |
||||
</div> |
||||
|
||||
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" value="{{ realty_form.location.value }}"> |
||||
|
||||
<div class="col-lg-3 make-new"> |
||||
<label>{{ form.cro }}<span></span></label> |
||||
<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> |
||||
|
||||
|
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input class="btn-submit-link" type="submit" value="Разместить проект"> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="#" onclick="return false" data-toggle="modal" data-target="#projectWorkTypeSuggestionModal" |
||||
class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage1' %} <span data-tooltip |
||||
data-placement="{% tooltip_placement pk=7 %}" |
||||
title="{% tooltip pk=7 %}" |
||||
class="-green-glyphicon glyphicon glyphicon-question-sign"></span> |
||||
<span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">{% trans 'project_stage2' %}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage3' %}</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage4' %}</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
|
||||
<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 data-tooltip data-placement="{% tooltip_placement pk=8 %}" |
||||
title="{% tooltip pk=8 %}" |
||||
class="-green-glyphicon glyphicon glyphicon-question-sign"></span> |
||||
<span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.budget.errors.as_text }}</span></div> |
||||
<!--<div class="col-lg-8"></div>--> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<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 class="col-lg-5 dog-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.budget_by_agreement.value %}checked{% endif %} |
||||
name="{{ form.budget_by_agreement.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<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"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.price_and_term_required.value %}checked{% endif %} |
||||
name="{{ form.price_and_term_required.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты <span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.deal_type.errors.as_text }}</span> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'secure_deal' %}checked{% endif %} |
||||
value="secure_deal"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=10 as tooltip10 %}{{ tooltip10|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'direct_payment' %}checked{% endif %} |
||||
value="direct_payment"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=11 as tooltip11 %}{{ tooltip11|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<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> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<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 |
||||
id="{% random_ident %}" class="-validation-error" |
||||
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 |
||||
id="{% random_ident %}" class="-validation-error" |
||||
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 |
||||
id="{% random_ident %}" class="-validation-error" |
||||
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 |
||||
id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.construction_type.errors.as_text }}</span></div> |
||||
</div> |
||||
|
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
class="selectpicker" |
||||
id="realtyId" |
||||
name="{{ form.realty.html_name }}"> |
||||
<option value="" {% if not form.realty.value %}selected="selected"{% endif %}>Создать новый</option> |
||||
|
||||
{% for r in form.realty.field.queryset %} |
||||
<option value="{{ r.pk }}" |
||||
{% if form.realty.value|int == r.pk %}selected="selected"{% endif %}>{{ r.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input |
||||
type="text" |
||||
id="realtyName" |
||||
name="{{ realty_form.name.html_name }}" |
||||
class="box-sizing surr surr2" |
||||
value="{{ realty_form.name.value }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
{{ realty_form.building_classification }} |
||||
{# <select#} |
||||
{# id="realtyBuildingClassificationId"#} |
||||
{# #} |
||||
{# name="{{ realty_form.building_classification.html_name }}">#} |
||||
{# {% for c in realty_form.building_classification.field.queryset %}#} |
||||
{# <option value="{{ c.pk }}" {% if realty_form.building_classification.value|int == c.pk %}selected="selected"{% endif %}>{{ c.name }}</option>#} |
||||
{# {% endfor %}#} |
||||
{# </select>#} |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyConstructionTypeId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.construction_type.html_name }}"> |
||||
{% for t in realty_form.construction_type.field.queryset %} |
||||
<option value="{{ t.pk }}" |
||||
{% if realty_form.construction_type.value|int == t.pk %}selected="selected"{% endif %}>{{ t.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<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 id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.location.errors.as_text }}</span></div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div> |
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-country" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-region" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-city" style="width: 100%"> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
|
||||
{% include 'partials/footer.html' %} |
||||
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" |
||||
value="{{ realty_form.location.value }}"> |
||||
|
||||
<div class="col-lg-3 make-new"> |
||||
<label>{{ form.cro }}<span></span></label> |
||||
<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> |
||||
|
||||
|
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input class="btn-submit-link" type="submit" value="Разместить проект"> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
|
||||
{% include 'partials/footer.html' %} |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
||||
|
||||
|
||||
{% block js_block %} |
||||
<script> |
||||
// Project work type suggestion modal --------------------------------- |
||||
|
||||
|
||||
;(function() { |
||||
var $modal = $('#projectWorkTypeSuggestionModal') |
||||
var $form = $modal.find('.-project-work-type-suggestion-form').first() |
||||
var workTypeSuggestionUrl = '/projects/suggest-work-type/' |
||||
|
||||
$modal.find('.-action-button').first().on('click', function($evt) { |
||||
$.post(workTypeSuggestionUrl, $form.serialize()) |
||||
.then(function(res) { |
||||
if (res.status === 'success') { |
||||
$form.trigger('reset') |
||||
$('.-error').text('') |
||||
$modal.modal('hide') |
||||
$.jGrowl('Предложение успешно отправлено') |
||||
} else if (res.status === 'error') { |
||||
_.flow( |
||||
_.toPairs, |
||||
|
||||
_.each(function(pair) { |
||||
var cssSelector = pair[0] |
||||
var errors = pair[1] |
||||
|
||||
$(cssSelector).first().text(_.join(' ', errors)) |
||||
}) |
||||
)(res.form_errors) |
||||
} |
||||
<script> |
||||
// Project work type suggestion modal --------------------------------- |
||||
|
||||
|
||||
; |
||||
(function () { |
||||
var $modal = $('#projectWorkTypeSuggestionModal') |
||||
var $form = $modal.find('.-project-work-type-suggestion-form').first() |
||||
var workTypeSuggestionUrl = '/projects/suggest-work-type/' |
||||
|
||||
$modal.find('.-action-button').first().on('click', function ($evt) { |
||||
$.post(workTypeSuggestionUrl, $form.serialize()) |
||||
.then(function (res) { |
||||
if (res.status === 'success') { |
||||
$form.trigger('reset') |
||||
$('.-error').text('') |
||||
$modal.modal('hide') |
||||
$.jGrowl('Предложение успешно отправлено') |
||||
} else if (res.status === 'error') { |
||||
_.flow( |
||||
_.toPairs, |
||||
|
||||
_.each(function (pair) { |
||||
var cssSelector = pair[0] |
||||
var errors = pair[1] |
||||
|
||||
$(cssSelector).first().text(_.join(' ', errors)) |
||||
}) |
||||
)(res.form_errors) |
||||
} |
||||
}) |
||||
}()) |
||||
}) |
||||
}()) |
||||
|
||||
|
||||
|
||||
// Scroll to first form validation error --------------------------- |
||||
// Scroll to first form validation error --------------------------- |
||||
|
||||
|
||||
;(function() { |
||||
var hash = $('.-validation-error').filter(function(i, el) {return $(el).text()}).first().attr('id') |
||||
; |
||||
(function () { |
||||
var hash = $('.-validation-error').filter(function (i, el) { |
||||
return $(el).text() |
||||
}).first().attr('id') |
||||
|
||||
if (hash) |
||||
window.location.hash = hash |
||||
}()) |
||||
</script> |
||||
if (hash) |
||||
window.location.hash = hash |
||||
}()) |
||||
</script> |
||||
{% endblock %} |
||||
|
||||
@ -1,362 +1,397 @@ |
||||
{% extends 'partials/base.html' %} |
||||
{% load i18n %} |
||||
|
||||
{% block head_css %} |
||||
<style> |
||||
.-error, .errorlist {color: red} |
||||
</style> |
||||
<style> |
||||
.-error, .errorlist { |
||||
color: red |
||||
} |
||||
</style> |
||||
{% endblock %} |
||||
|
||||
|
||||
{% block content %} |
||||
{% include 'partials/modals/project_work_type_suggestion.html' %} |
||||
{% include 'partials/header.html' %} |
||||
{% include 'partials/modals/project_work_type_suggestion.html' %} |
||||
{% include 'partials/header.html' %} |
||||
|
||||
<div class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Изменение проекта</p> |
||||
</div> |
||||
|
||||
<form action="{% url 'projects:customer-project-edit' pk=pk %}" method="POST" enctype="multipart/form-data" |
||||
novalidate class="-spec-work-type-combo-container"> |
||||
{% csrf_token %} |
||||
|
||||
<input type="hidden" name="next" value="{% url 'projects:detail' pk=pk %}"> |
||||
<input type="hidden" id="extraFields" name="extra_fields" value=""> |
||||
|
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
|
||||
{% if form.non_field_errors %} |
||||
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> |
||||
{% endif %} |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Название заказа <span id="{% random_ident %}" class="-validation-error" |
||||
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 class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Подробно опишите задание <span id="{% random_ident %}" class="-validation-error" |
||||
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 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
|
||||
<div id="fileUploadContainer" class="col-lg-12 documentsChat"> |
||||
<div class="upload"> |
||||
<p id="fileUploadAddBtn" style="margin: 0">+ добавить файл (до 100 файлов)</p> |
||||
</div> |
||||
|
||||
<ul class="list-new-new"> |
||||
{% for file in form.files.field.queryset.all %} |
||||
<li class="existing-file-widget"> |
||||
<input type="checkbox" name="{{ form.files.html_name }}" value="{{ file.pk }}" checked |
||||
style='display: none'> |
||||
<p class="file-upload-label">{{ file.file.name|basename }} {{ file.file.size|filesizeformat }}</p> |
||||
<div class="existing-file-remove-btn"></div> |
||||
</li> |
||||
{% endfor %} |
||||
|
||||
<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"> |
||||
<p class="file-upload-label"></p> |
||||
<div class="file-upload-remove-btn"></div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
<p class="type-work">{% trans 'project_stage0' %} <span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.work_type.errors.as_text }}</span> |
||||
</p> |
||||
<div class="mail-block type-work-inset -project-work-type-radios-container"> |
||||
{% for id, text in form.work_type.field.choices %} |
||||
<div class="inset-mb"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
value="{{ id }}" |
||||
{% if form.work_type.value|int == id %}checked{% endif %} |
||||
name="{{ form.work_type.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>{{ text }}</p> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="#" onclick="return false" data-toggle="modal" data-target="#projectWorkTypeSuggestionModal" |
||||
class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage1' %} <span data-tooltip |
||||
data-placement="{% tooltip_placement pk=7 %}" |
||||
title="{% tooltip pk=7 %}" |
||||
class="-green-glyphicon glyphicon glyphicon-question-sign"></span> |
||||
<span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">{% trans 'project_stage2' %}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage3' %}</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">{% trans 'project_stage4' %}</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
|
||||
<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 id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.budget.errors.as_text }}</span></div> |
||||
<!--<div class="col-lg-8"></div>--> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<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 class="col-lg-5 dog-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.budget_by_agreement.value %}checked{% endif %} |
||||
name="{{ form.budget_by_agreement.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>или по договоренности</p> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF make-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.price_and_term_required.value %}checked{% endif %} |
||||
name="{{ form.price_and_term_required.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<div class="container mainScore"> |
||||
<div class="row"> |
||||
<div class="col-lg-12 allProjects"> |
||||
<p class="titleScore">Изменение проекта</p> |
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты <span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.deal_type.errors.as_text }}</span> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'secure_deal' %}checked{% endif %} |
||||
value="secure_deal"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=10 as tooltip10 %}{{ tooltip10|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'direct_payment' %}checked{% endif %} |
||||
value="direct_payment"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=11 as tooltip11 %}{{ tooltip11|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<form action="{% url 'projects:customer-project-edit' pk=pk %}" method="POST" enctype="multipart/form-data" novalidate class="-spec-work-type-combo-container"> |
||||
{% csrf_token %} |
||||
|
||||
<input type="hidden" name="next" value="{% url 'projects:detail' pk=pk %}"> |
||||
<input type="hidden" id="extraFields" name="extra_fields" value=""> |
||||
|
||||
<div class="chatBlock new-rass new-rass2 disTab"> |
||||
<div class="col-lg-9"> |
||||
<p class="new-pp new-pp3">Формирование заказа</p> |
||||
|
||||
{% if form.non_field_errors %} |
||||
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> |
||||
{% endif %} |
||||
|
||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Название заказа <span id="{% random_ident %}" class="-validation-error" 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 class="textAreaBlock2 text-nn box-sizing disTab"> |
||||
<p>Подробно опишите задание <span id="{% random_ident %}" class="-validation-error" 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 wrChat1"> |
||||
<div class="messageBlock box-sizing disTab"> |
||||
<p>Дополнительно</p> |
||||
</div> |
||||
|
||||
<div id="fileUploadContainer" class="col-lg-12 documentsChat"> |
||||
<div class="upload"> |
||||
<p id="fileUploadAddBtn" style="margin: 0">+ добавить файл (до 100 файлов)</p> |
||||
</div> |
||||
|
||||
<ul class="list-new-new"> |
||||
{% for file in form.files.field.queryset.all %} |
||||
<li class="existing-file-widget"> |
||||
<input type="checkbox" name="{{ form.files.html_name }}" value="{{ file.pk }}" checked style='display: none'> |
||||
<p class="file-upload-label">{{ file.file.name|basename }} {{ file.file.size|filesizeformat }}</p> |
||||
<div class="existing-file-remove-btn"></div> |
||||
</li> |
||||
{% endfor %} |
||||
|
||||
<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"> |
||||
<p class="file-upload-label"></p> |
||||
<div class="file-upload-remove-btn"></div> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
<p class="type-work">Тип работы <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.work_type.errors.as_text }}</span></p> |
||||
<div class="mail-block type-work-inset -project-work-type-radios-container"> |
||||
{% for id, text in form.work_type.field.choices %} |
||||
<div class="inset-mb"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
value="{{ id }}" |
||||
{% if form.work_type.value|int == id %}checked{% endif %} |
||||
name="{{ form.work_type.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>{{ text }}</p> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
<div class="textAreaBlock2 box-sizing disTab"> |
||||
<a href="#" onclick="return false" data-toggle="modal" data-target="#projectWorkTypeSuggestionModal" class="new-link new-lw">+ Добавить раздел</a> |
||||
</div> |
||||
</div> |
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<button class="resButtonF1"> |
||||
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-3">Выбор объекта<br><span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ form.realty.errors.as_text }}</span> |
||||
</div> |
||||
<div class="col-lg-3">Наименование<br><span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.name.errors.as_text }}</span> |
||||
</div> |
||||
<div class="col-lg-12 new-filter"> |
||||
<div class="filter clearfix"> |
||||
<div class="polsF1 disTab"> |
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Стадия проекта <span data-tooltip data-placement="{% tooltip_placement pk=7 %}" title="{% tooltip pk=7 %}" class="-green-glyphicon glyphicon glyphicon-question-sign"></span> <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.specialization.errors.as_text }}</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-1" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold"><span class="-dynamic-label">Стадия проекта</span></div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-2" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Раздел</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-3" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3 -single-spec-select"> |
||||
<div class="-bold">Подраздел</div> |
||||
<input type="hidden" class="-spec-select -spec-select-level-4" style="width: 100%"> |
||||
</div> |
||||
|
||||
<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 id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.budget.errors.as_text }}</span></div> |
||||
<!--<div class="col-lg-8"></div>--> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF"> |
||||
<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 class="col-lg-5 dog-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.budget_by_agreement.value %}checked{% endif %} |
||||
name="{{ form.budget_by_agreement.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>или по договоренности</p> |
||||
</div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF make-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.price_and_term_required.value %}checked{% endif %} |
||||
name="{{ form.price_and_term_required.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>Сделать для исполнителей обязательным для заполнения поля цена и срок</p> |
||||
</div> |
||||
<div class="titleF1 titleF2 disTab"> |
||||
<div class="col-lg-12">Способ оплаты <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.deal_type.errors.as_text }}</span></div> |
||||
</div> |
||||
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'secure_deal' %}checked{% endif %} |
||||
value="secure_deal"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Безопасная сделка (с резервированием бюджета) |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=10 as tooltip10 %}{{ tooltip10|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
|
||||
<div class="col-lg-6"> |
||||
<label> |
||||
<input |
||||
type="radio" |
||||
name="{{ form.deal_type.html_name }}" |
||||
{% if form.deal_type.value == 'direct_payment' %}checked{% endif %} |
||||
value="direct_payment"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p class="text-afer"> |
||||
Прямая оплата Исполнителю на его кошелек/счет |
||||
</p> |
||||
|
||||
<p class="des-afer"> |
||||
{% tooltip pk=11 as tooltip11 %}{{ tooltip11|linebreaksbr }} |
||||
</p> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="resSearchF1"> |
||||
<div class="col-lg-3"> |
||||
<p class="titleResF1">Расширенный поиск</p> |
||||
<button class="resButtonF1"> |
||||
<span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> |
||||
</button> |
||||
</div> |
||||
<div class="col-lg-9"> |
||||
<div class="borderS1"></div> |
||||
</div> |
||||
</div> |
||||
<div class="slideRes disTab activeSlide"> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-3">Выбор объекта<br><span id="{% random_ident %}" class="-validation-error" style="color: red">{{ form.realty.errors.as_text }}</span></div> |
||||
<div class="col-lg-3">Наименование<br><span id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.name.errors.as_text }}</span></div> |
||||
<div class="col-lg-3">Классификация здания<br><span id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.building_classification.errors.as_text }}</span></div> |
||||
<div class="col-lg-3">Вид строительства<br><span id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.construction_type.errors.as_text }}</span></div> |
||||
</div> |
||||
|
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
class="selectpicker" |
||||
id="realtyId" |
||||
name="{{ form.realty.html_name }}"> |
||||
<option value="" {% if not form.realty.value %}selected="selected"{% endif %}>Создать новый</option> |
||||
|
||||
{% for r in form.realty.field.queryset %} |
||||
<option value="{{ r.pk }}" {% if form.realty.value|int == r.pk %}selected="selected"{% endif %}>{{ r.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input |
||||
type="text" |
||||
id="realtyName" |
||||
name="{{ realty_form.name.html_name }}" |
||||
class="box-sizing surr surr2" |
||||
value="{{ realty_form.name.value }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyBuildingClassificationId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.building_classification.html_name }}"> |
||||
{% for c in realty_form.building_classification.field.queryset %} |
||||
<option value="{{ c.pk }}" {% if realty_form.building_classification.value|int == c.pk %}selected="selected"{% endif %}>{{ c.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyConstructionTypeId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.construction_type.html_name }}"> |
||||
{% for t in realty_form.construction_type.field.queryset %} |
||||
<option value="{{ t.pk }}" {% if realty_form.construction_type.value|int == t.pk %}selected="selected"{% endif %}>{{ t.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-12">Местоположение <span id="{% random_ident %}" class="-validation-error" style="color: red">{{ realty_form.location.errors.as_text }}</span></div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-country" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-region" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-city" style="width: 100%"> |
||||
</div> |
||||
|
||||
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" value="{{ realty_form.location.value }}"> |
||||
|
||||
<div class="col-lg-3 make-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.cro.value %}checked{% endif %} |
||||
name="{{ form.cro.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>Требуется допуск СРО</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input class="btn-submit-link" type="submit" value="Сохранить"> |
||||
</div> |
||||
</div> |
||||
<div class="col-lg-3">Классификация здания<br><span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.building_classification.errors.as_text }}</span> |
||||
</div> |
||||
<div class="col-lg-3">Вид строительства<br><span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.construction_type.errors.as_text }}</span> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
class="selectpicker" |
||||
id="realtyId" |
||||
name="{{ form.realty.html_name }}"> |
||||
<option value="" {% if not form.realty.value %}selected="selected"{% endif %}>Создать новый</option> |
||||
|
||||
{% for r in form.realty.field.queryset %} |
||||
<option value="{{ r.pk }}" |
||||
{% if form.realty.value|int == r.pk %}selected="selected"{% endif %}>{{ r.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<input |
||||
type="text" |
||||
id="realtyName" |
||||
name="{{ realty_form.name.html_name }}" |
||||
class="box-sizing surr surr2" |
||||
value="{{ realty_form.name.value }}"> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyBuildingClassificationId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.building_classification.html_name }}"> |
||||
{% for c in realty_form.building_classification.field.queryset %} |
||||
<option value="{{ c.pk }}" |
||||
{% if realty_form.building_classification.value|int == c.pk %}selected="selected"{% endif %}>{{ c.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
<div class="col-lg-3"> |
||||
<select |
||||
id="realtyConstructionTypeId" |
||||
class="selectpicker" |
||||
name="{{ realty_form.construction_type.html_name }}"> |
||||
{% for t in realty_form.construction_type.field.queryset %} |
||||
<option value="{{ t.pk }}" |
||||
{% if realty_form.construction_type.value|int == t.pk %}selected="selected"{% endif %}>{{ t.name }}</option> |
||||
{% endfor %} |
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="titleF1 disTab"> |
||||
<div class="col-lg-12">Местоположение <span id="{% random_ident %}" class="-validation-error" |
||||
style="color: red">{{ realty_form.location.errors.as_text }}</span> |
||||
</div> |
||||
</div> |
||||
<div class="polsF1 polsF2 disTab"> |
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-country" style="width: 100%"> |
||||
</div> |
||||
</form> |
||||
|
||||
{% include 'partials/footer.html' %} |
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-region" style="width: 100%"> |
||||
</div> |
||||
|
||||
<div class="col-lg-3"> |
||||
<input type="hidden" class="-location-select -location-select-city" style="width: 100%"> |
||||
</div> |
||||
|
||||
<input type="hidden" id="chosenLocationId" name="{{ realty_form.location.html_name }}" |
||||
value="{{ realty_form.location.value }}"> |
||||
|
||||
<div class="col-lg-3 make-new"> |
||||
<label> |
||||
<input |
||||
type="checkbox" |
||||
{% if form.cro.value %}checked{% endif %} |
||||
name="{{ form.cro.html_name }}"> |
||||
|
||||
<span></span> |
||||
</label> |
||||
|
||||
<p>Требуется допуск СРО</p> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="searchF1 polsF1 polsFF links-filter"> |
||||
<input class="btn-submit-link" type="submit" value="Сохранить"> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
|
||||
{% include 'partials/footer.html' %} |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
||||
|
||||
|
||||
{% block js_block %} |
||||
<script> |
||||
// Project work type suggestion modal --------------------------------- |
||||
|
||||
|
||||
;(function() { |
||||
var $modal = $('#projectWorkTypeSuggestionModal') |
||||
var $form = $modal.find('.-project-work-type-suggestion-form').first() |
||||
var workTypeSuggestionUrl = '/projects/suggest-work-type/' |
||||
|
||||
$modal.find('.-action-button').first().on('click', function($evt) { |
||||
$.post(workTypeSuggestionUrl, $form.serialize()) |
||||
.then(function(res) { |
||||
if (res.status === 'success') { |
||||
console.log('Success') |
||||
$form.trigger('reset') |
||||
$('.-error').text('') |
||||
$modal.modal('hide') |
||||
$.jGrowl('Предложение успешно отправлено') |
||||
} else if (res.status === 'error') { |
||||
console.log('Error') |
||||
|
||||
_.flow( |
||||
_.toPairs, |
||||
|
||||
_.each(function(pair) { |
||||
var cssSelector = pair[0] |
||||
var errors = pair[1] |
||||
|
||||
$(cssSelector).first().text(_.join(' ', errors)) |
||||
}) |
||||
)(res.form_errors) |
||||
} |
||||
<script> |
||||
// Project work type suggestion modal --------------------------------- |
||||
|
||||
|
||||
; |
||||
(function () { |
||||
var $modal = $('#projectWorkTypeSuggestionModal') |
||||
var $form = $modal.find('.-project-work-type-suggestion-form').first() |
||||
var workTypeSuggestionUrl = '/projects/suggest-work-type/' |
||||
|
||||
$modal.find('.-action-button').first().on('click', function ($evt) { |
||||
$.post(workTypeSuggestionUrl, $form.serialize()) |
||||
.then(function (res) { |
||||
if (res.status === 'success') { |
||||
console.log('Success') |
||||
$form.trigger('reset') |
||||
$('.-error').text('') |
||||
$modal.modal('hide') |
||||
$.jGrowl('Предложение успешно отправлено') |
||||
} else if (res.status === 'error') { |
||||
console.log('Error') |
||||
|
||||
_.flow( |
||||
_.toPairs, |
||||
|
||||
_.each(function (pair) { |
||||
var cssSelector = pair[0] |
||||
var errors = pair[1] |
||||
|
||||
$(cssSelector).first().text(_.join(' ', errors)) |
||||
}) |
||||
)(res.form_errors) |
||||
} |
||||
}) |
||||
}()) |
||||
}) |
||||
}()) |
||||
|
||||
|
||||
|
||||
// Scroll to first form validation error ------------------------------ |
||||
// Scroll to first form validation error ------------------------------ |
||||
|
||||
|
||||
;(function() { |
||||
var hash = $('.-validation-error').filter(function(i, el) {return $(el).text()}).first().attr('id') |
||||
; |
||||
(function () { |
||||
var hash = $('.-validation-error').filter(function (i, el) { |
||||
return $(el).text() |
||||
}).first().attr('id') |
||||
|
||||
if (hash) |
||||
window.location.hash = hash |
||||
}()) |
||||
</script> |
||||
if (hash) |
||||
window.location.hash = hash |
||||
}()) |
||||
</script> |
||||
{% endblock %} |
||||
|
||||
@ -1,55 +1,56 @@ |
||||
<div class="modal fade" id="projectWorkTypeSuggestionModal" tabindex="-1"> |
||||
<div class="modal-dialog" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button> |
||||
<h4 class="modal-title">Предложение нового типа работы</h4> |
||||
</div> |
||||
|
||||
<div class="modal-body"> |
||||
<form action="{% url 'projects:suggest-work-type' %}" method="POST" novalidate class="-project-work-type-suggestion-form"> |
||||
{% csrf_token %} |
||||
<div class="modal-dialog" role="document"> |
||||
<div class="modal-content"> |
||||
<div class="modal-header"> |
||||
<button type="button" class="close" data-dismiss="modal"><span>×</span></button> |
||||
<h4 class="modal-title">Предложение нового типа работы</h4> |
||||
</div> |
||||
|
||||
<div>{{ work_type_suggestion_form.non_field_errors }}</div> |
||||
<div class="modal-body"> |
||||
<form action="{% url 'projects:suggest-work-type' %}" method="POST" novalidate |
||||
class="-project-work-type-suggestion-form"> |
||||
{% csrf_token %} |
||||
|
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.name.label }}</div> |
||||
<div>{{ work_type_suggestion_form.name }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.name.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
<div>{{ work_type_suggestion_form.non_field_errors }}</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.commentary.label }}</div> |
||||
<div>{{ work_type_suggestion_form.commentary }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.commentary.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.name.label }}</div> |
||||
<div>{{ work_type_suggestion_form.name }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.name.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.email.label }}</div> |
||||
<div>{{ work_type_suggestion_form.email }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.email.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.commentary.label }}</div> |
||||
<div>{{ work_type_suggestion_form.commentary }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.commentary.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.username.label }}</div> |
||||
<div>{{ work_type_suggestion_form.username }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.username.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.email.label }}</div> |
||||
<div>{{ work_type_suggestion_form.email }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.email.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Отмена</button> |
||||
<button type="button" class="btn btn-primary -action-button">Предложить</button> |
||||
<div class="row"> |
||||
<div class="col-xs-12 projectsBlock"> |
||||
<div>{{ work_type_suggestion_form.username.label }}</div> |
||||
<div>{{ work_type_suggestion_form.username }}</div> |
||||
<div class="-error -error-{{ work_type_suggestion_form.username.html_name }}"></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
|
||||
<div class="modal-footer"> |
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Отмена</button> |
||||
<button type="button" class="btn btn-primary -action-button">Предложить</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
@ -1,3 +1 @@ |
||||
from django.shortcuts import render |
||||
|
||||
# Create your views here. |
||||
|
||||
@ -1,4 +1,5 @@ |
||||
from django.contrib import admin |
||||
|
||||
from .models import Review |
||||
|
||||
admin.site.register(Review) |
||||
|
||||
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
@ -0,0 +1,21 @@ |
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.9.7 on 2016-10-14 20:06 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('specializations', '0002_auto_20161005_0342'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='specialization', |
||||
name='order', |
||||
field=models.PositiveIntegerField(default=0), |
||||
preserve_default=False, |
||||
), |
||||
] |
||||
@ -0,0 +1,24 @@ |
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.9.7 on 2016-10-14 20:44 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('specializations', '0003_specialization_order'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='specialization', |
||||
options={'get_latest_by': 'order', 'ordering': ['order'], 'verbose_name': 'Специализация', 'verbose_name_plural': 'Специализации'}, |
||||
), |
||||
migrations.AddField( |
||||
model_name='specialization', |
||||
name='selectable', |
||||
field=models.BooleanField(default=True), |
||||
), |
||||
] |
||||
@ -1,3 +1 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
|
||||
Binary file not shown.
@ -0,0 +1,42 @@ |
||||
# SOME DESCRIPTIVE TITLE. |
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
||||
# This file is distributed under the same license as the PACKAGE package. |
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
||||
# |
||||
msgid "" |
||||
msgstr "" |
||||
"Project-Id-Version: PACKAGE VERSION\n" |
||||
"Report-Msgid-Bugs-To: \n" |
||||
"POT-Creation-Date: 2016-10-14 22:49+0300\n" |
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
||||
"Language-Team: LANGUAGE <LL@li.org>\n" |
||||
"Language: \n" |
||||
"MIME-Version: 1.0\n" |
||||
"Content-Type: text/plain; charset=UTF-8\n" |
||||
"Content-Transfer-Encoding: 8bit\n" |
||||
|
||||
#: templates/contractor_filter.html:27 templates/portfolio_create_form.html:25 |
||||
#: templates/worksell_create_form.html:20 |
||||
msgid "project_stage0" |
||||
msgstr "Тип работы" |
||||
|
||||
#: templates/contractor_filter.html:46 templates/portfolio_create_form.html:37 |
||||
#: templates/worksell_create_form.html:32 |
||||
msgid "project_stage1" |
||||
msgstr "Стадия проекта" |
||||
|
||||
#: templates/contractor_filter.html:50 templates/portfolio_create_form.html:42 |
||||
#: templates/worksell_create_form.html:37 |
||||
msgid "project_stage2" |
||||
msgstr "Раздел" |
||||
|
||||
#: templates/contractor_filter.html:54 templates/portfolio_create_form.html:47 |
||||
#: templates/worksell_create_form.html:42 |
||||
msgid "project_stage3" |
||||
msgstr "Подраздел" |
||||
|
||||
#: templates/contractor_filter.html:58 templates/portfolio_create_form.html:52 |
||||
#: templates/worksell_create_form.html:47 |
||||
msgid "project_stage4" |
||||
msgstr "Подраздел ( доп. )" |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue