commit
91414a8151
25 changed files with 810 additions and 39 deletions
@ -0,0 +1,9 @@ |
|||||||
|
from django.contrib import admin |
||||||
|
from mptt.admin import MPTTModelAdmin |
||||||
|
|
||||||
|
from .models import Location |
||||||
|
|
||||||
|
class LocationAdmin(MPTTModelAdmin): |
||||||
|
readonly_fields = ('pk', 'lft', 'rght', 'tree_id', 'level') |
||||||
|
|
||||||
|
admin.site.register(Location, LocationAdmin) |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
from django.apps import AppConfig |
||||||
|
|
||||||
|
|
||||||
|
class CommonConfig(AppConfig): |
||||||
|
name = 'common' |
||||||
@ -0,0 +1,66 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 12:56 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.db.models.manager |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
initial = True |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='City', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name_plural': 'Города', |
||||||
|
'verbose_name': 'Город', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Country', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=255)), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name_plural': 'Страны', |
||||||
|
'verbose_name': 'Страна', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='Location', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('name', models.CharField(max_length=50)), |
||||||
|
('type', models.CharField(blank=True, choices=[('country', 'Страна'), ('region', 'Регион'), ('town', 'Город')], max_length=20, null=True)), |
||||||
|
('lft', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('rght', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('level', models.PositiveIntegerField(db_index=True, editable=False)), |
||||||
|
('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='common.Location')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name_plural': 'Местоположения', |
||||||
|
'verbose_name': 'Местоположение', |
||||||
|
}, |
||||||
|
managers=[ |
||||||
|
('_default_manager', django.db.models.manager.Manager()), |
||||||
|
], |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cities', to='common.Country'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:25 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='location', |
||||||
|
name='type', |
||||||
|
field=models.CharField(choices=[('_root', 'Корень'), ('country', 'Страна'), ('region', 'Регион'), ('town', 'Город')], default=None, max_length=20), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='City', |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='Country', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
from django.db import models |
||||||
|
from mptt.models import TreeForeignKey, MPTTModel |
||||||
|
|
||||||
|
class Location(MPTTModel): |
||||||
|
TYPES = ( |
||||||
|
('_root', 'Корень'), |
||||||
|
('country', 'Страна'), |
||||||
|
('region', 'Регион'), |
||||||
|
('town', 'Город'), |
||||||
|
) |
||||||
|
|
||||||
|
name = models.CharField(max_length=50) |
||||||
|
parent = TreeForeignKey('self', blank=True, null=True, related_name='children', db_index=True) |
||||||
|
type = models.CharField(max_length=20, choices=TYPES) |
||||||
|
|
||||||
|
def __str__(self): |
||||||
|
return self.name |
||||||
|
|
||||||
|
class Meta: |
||||||
|
verbose_name = 'Местоположение' |
||||||
|
verbose_name_plural = 'Местоположения' |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
from django.test import TestCase |
||||||
|
|
||||||
|
# Create your tests here. |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
from django.shortcuts import render |
||||||
|
|
||||||
|
# Create your views here. |
||||||
@ -0,0 +1,52 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:10 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
('projects', '0031_auto_20160610_1434'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='city', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='city', |
||||||
|
), |
||||||
|
migrations.RemoveField( |
||||||
|
model_name='realty', |
||||||
|
name='country', |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='realty', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='realties', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='order', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
migrations.AlterField( |
||||||
|
model_name='project', |
||||||
|
name='state', |
||||||
|
field=models.CharField(choices=[('active', 'Активный'), ('trashed', 'В корзине'), ('deleted', 'Удален')], default='active', max_length=20), |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='City', |
||||||
|
), |
||||||
|
migrations.DeleteModel( |
||||||
|
name='Country', |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,278 @@ |
|||||||
|
{% extends 'partials/base.html' %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
<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> |
||||||
|
|
||||||
|
<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="polsF1 disTab"> |
||||||
|
<div class="col-lg-3"> |
||||||
|
|
||||||
|
<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> |
||||||
|
|
||||||
|
<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> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</form> |
||||||
|
|
||||||
|
{% endblock %} |
||||||
|
{% block js_block %} |
||||||
|
<script type="text/javascript"> |
||||||
|
$(function () { |
||||||
|
|
||||||
|
function updateSelectData(){ |
||||||
|
|
||||||
|
} |
||||||
|
$.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)); |
||||||
|
}); |
||||||
|
|
||||||
|
$("#specialization1").addClass("selectpicker"); |
||||||
|
$('.selectpicker').selectpicker({ |
||||||
|
style: 'btn-info', |
||||||
|
size: 4, |
||||||
|
width: '237px' |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
$("#specialization1").on("change",function(){ |
||||||
|
|
||||||
|
}); |
||||||
|
}); |
||||||
|
</script> |
||||||
|
{% endblock %} |
||||||
@ -0,0 +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" /> |
||||||
|
</form> |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 13:11 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import mptt.fields |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
('users', '0013_auto_20160610_1703'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='location', |
||||||
|
field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='users', to='common.Location'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='patronym', |
||||||
|
field=models.CharField(blank=True, max_length=255), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,78 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.6 on 2016-06-15 14:47 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
import datetime |
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
from django.utils.timezone import utc |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('users', '0014_auto_20160615_1611'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='ContractorFinancialInfo', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('fio', models.CharField(max_length=255)), |
||||||
|
('date_of_birth', models.DateTimeField()), |
||||||
|
('phone', models.CharField(max_length=30)), |
||||||
|
('residency', models.CharField(choices=[('russian_resident', 'Резидент РФ'), ('non_russian_resident', 'Нерезидент РФ'), ('refugee', 'Беженец'), ('russian_stay_permit', 'Вид на жительство')], max_length=50)), |
||||||
|
('legal_status', models.CharField(choices=[('individual', 'Физическое лицо'), ('legal_entity', 'ИП и Юридическое лицо')], max_length=30)), |
||||||
|
('passport_series', models.CharField(max_length=6)), |
||||||
|
('passport_number', models.CharField(max_length=10)), |
||||||
|
('subdivision_code', models.CharField(max_length=10)), |
||||||
|
('passport_issued_by', models.CharField(max_length=255)), |
||||||
|
('passport_issue_date', models.DateTimeField()), |
||||||
|
('inn', models.CharField(max_length=100)), |
||||||
|
('yandex_money', models.CharField(max_length=50)), |
||||||
|
('credit_card_number', models.CharField(max_length=50)), |
||||||
|
('passport_scan', models.ImageField(upload_to='users/contractors/')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Финансовая информация', |
||||||
|
'verbose_name_plural': 'Финансовая информация', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='avatar', |
||||||
|
field=models.ImageField(blank=True, upload_to='users/avatars/'), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='cro', |
||||||
|
field=models.BooleanField(default=False), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='date_of_birth', |
||||||
|
field=models.DateTimeField(default=datetime.datetime(2016, 6, 15, 14, 47, 5, 758769, tzinfo=utc)), |
||||||
|
preserve_default=False, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='gender', |
||||||
|
field=models.CharField(blank=True, choices=[('male', 'Мужской'), ('female', 'Женский')], max_length=30), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='skype', |
||||||
|
field=models.CharField(blank=True, max_length=100), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='website', |
||||||
|
field=models.CharField(blank=True, max_length=255), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='user', |
||||||
|
name='contractor_financial_info', |
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor', to='users.ContractorFinancialInfo'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,144 @@ |
|||||||
|
{% extends 'partials/base.html' %} |
||||||
|
|
||||||
|
{% load staticfiles %} |
||||||
|
|
||||||
|
{% block content %} |
||||||
|
{% include 'partials/header.html' %} |
||||||
|
<div class="container mainScore"> |
||||||
|
<div class="row"> |
||||||
|
<div class="projectsBlock disTab"> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="col-lg-3 divCol3"> |
||||||
|
<div class="avatar"> |
||||||
|
<div class="avatarInset"> |
||||||
|
<img src="img/profile.jpg" alt="profile-image"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="menuUser upload-img disTab"> |
||||||
|
<div class="upload2 up-l1"> |
||||||
|
<input type="file" name="upload"> |
||||||
|
<p>Загрузить фотографию</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-9 divCol9"> |
||||||
|
<div class="col-lg-4"> |
||||||
|
<p class="name-edit-p">ФИО:</p> |
||||||
|
<input type="text" value="{{ contractor.get_full_name }}" class="box-sizing inp-edit"> |
||||||
|
<input type="text" value="{{ contractor.last_name }}" class="box-sizing inp-edit"> |
||||||
|
<input type="text" value="{{ contractor. }}" class="box-sizing inp-edit"> |
||||||
|
</div> |
||||||
|
<div class="col-lg-4"> |
||||||
|
<p class="name-edit-p">Специализация:</p> |
||||||
|
<div class="polsF1 pols-edit disTab"> |
||||||
|
<select class="selectpicker4"> |
||||||
|
<option>Mustard</option> |
||||||
|
<option>Ketchup</option> |
||||||
|
<option>Relish</option> |
||||||
|
</select> |
||||||
|
<select class="selectpicker4"> |
||||||
|
<option>Mustard</option> |
||||||
|
<option>Ketchup</option> |
||||||
|
<option>Relish</option> |
||||||
|
</select> |
||||||
|
<a href="javascript:void(0)" class="add-edit"> |
||||||
|
Добавить еще |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-4"> |
||||||
|
<p class="name-edit-p">Местоположение:</p> |
||||||
|
<div class="polsF1 pols-edit disTab"> |
||||||
|
<select class="selectpicker4"> |
||||||
|
<option>Страна</option> |
||||||
|
<option>Ketchup</option> |
||||||
|
<option>Relish</option> |
||||||
|
</select> |
||||||
|
<select class="selectpicker4"> |
||||||
|
<option>Город</option> |
||||||
|
<option>Ketchup</option> |
||||||
|
<option>Relish</option> |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="buttonGP btn-edit disTab"> |
||||||
|
<div class="btn-group valProject valProject2" role="group" aria-label="..."> |
||||||
|
<button type="button" class="btn btn-default">Общая информация</button> |
||||||
|
<button type="button" class="btn btn-default">Финансовая информация</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-12 col12 new-filter"> |
||||||
|
<div class="filter clearfix"> |
||||||
|
<div class="titleF1 disTab"> |
||||||
|
<div class="col-lg-7">Дата рождения:</div> |
||||||
|
<div class="col-lg-5">Пол:</div> |
||||||
|
</div> |
||||||
|
<div class="polsF1 disTab"> |
||||||
|
<div class="col-lg-7"> |
||||||
|
<select class="selectpicker2 valul"> |
||||||
|
<option>1</option> |
||||||
|
<option>2</option> |
||||||
|
<option>3</option> |
||||||
|
</select> |
||||||
|
<select class="selectpicker left-edit"> |
||||||
|
<option>Января</option> |
||||||
|
<option>Ketchup</option> |
||||||
|
<option>Relish</option> |
||||||
|
</select> |
||||||
|
<select class="selectpicker5 valul left-edit"> |
||||||
|
<option>1996</option> |
||||||
|
<option>1995</option> |
||||||
|
<option>1995</option> |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
<div class="col-lg-5 dog-new ed-new"> |
||||||
|
<label><input type="radio" name="sex"><span></span></label> |
||||||
|
<p>Мужской</p> |
||||||
|
<label class="woman"><input type="radio" name="sex"><span></span></label> |
||||||
|
<p>Женский</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="titleF1 titleF2 disTab"> |
||||||
|
<div class="col-lg-3">Сайт:</div> |
||||||
|
<div class="col-lg-3">Skype:</div> |
||||||
|
<div class="col-lg-3">Электронная почта:</div> |
||||||
|
<div class="col-lg-3">Телефон:</div> |
||||||
|
</div> |
||||||
|
<div class="searchF1 polsF1 polsFF polsF3"> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<input type="text" class="box-sizing surr surr2" placeholder="beeg.com"> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<input type="text" class="box-sizing surr surr2" placeholder="nokia770"> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<input type="text" class="box-sizing surr surr2" placeholder="example@gmail.com"> |
||||||
|
</div> |
||||||
|
<div class="col-lg-3"> |
||||||
|
<input type="text" class="box-sizing surr surr2" placeholder="+7 999 999 44 02"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="col-lg-12"> |
||||||
|
<div class="col-lg-12 make-new make-eed"> |
||||||
|
<label><input type="checkbox" name="dogovor"><span></span></label> |
||||||
|
<p>Есть допуск СРО</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="searchF1 polsF1 polsFF links-filter"> |
||||||
|
<a href="javascript:void(0)">Сохранить</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div> |
||||||
|
{% include 'partials/footer.html' %} |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{% endblock %} |
||||||
@ -0,0 +1 @@ |
|||||||
|
{{ greeting }}, {{ person|default:"friend" }}! |
||||||
Loading…
Reference in new issue