parent
007dfcd49f
commit
856c3c17fb
29 changed files with 515 additions and 333 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', |
||||||
|
), |
||||||
|
] |
||||||
@ -1,18 +0,0 @@ |
|||||||
{% extends 'partials/base.html' %} |
|
||||||
{% block content %} |
|
||||||
<h1>Добавление</h1> |
|
||||||
<form method="post" action=""> |
|
||||||
|
|
||||||
{{ form.errors }} |
|
||||||
{% csrf_token %} |
|
||||||
|
|
||||||
{% for field in form %} |
|
||||||
<div class="row"> |
|
||||||
{{ field.label }} |
|
||||||
{{ field }} |
|
||||||
</div> |
|
||||||
{% endfor %} |
|
||||||
|
|
||||||
<input type="submit" value="Создать" /> |
|
||||||
</form> |
|
||||||
{% endblock %}s |
|
||||||
@ -1,275 +0,0 @@ |
|||||||
{% extends 'partials/base.html' %} |
|
||||||
|
|
||||||
{% load staticfiles %} |
|
||||||
{% load humanize %} |
|
||||||
|
|
||||||
|
|
||||||
{% block content %} |
|
||||||
{% include 'partials/header.html' %} |
|
||||||
|
|
||||||
<div class="col-lg-12"> |
|
||||||
<p class="titleScore">{{ object }}</p> |
|
||||||
</div> |
|
||||||
<div class="doneBlock new-done disTab"> |
|
||||||
<div class="triangle1"></div> |
|
||||||
{% if request.user.is_contractor %} |
|
||||||
<div class="col-lg-12 new-p"> |
|
||||||
<p>{{ object.price | intcomma }} <i class="fa fa-rub"></i></p> |
|
||||||
</div> |
|
||||||
{% endif %} |
|
||||||
|
|
||||||
<div class="col-lg-4"> |
|
||||||
<a href="#" class="aLinkExe"> |
|
||||||
<div class="imgExecutor"> |
|
||||||
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
|
||||||
</div> |
|
||||||
</a> |
|
||||||
|
|
||||||
<p class="nameExecutor"> |
|
||||||
<a href="{% url 'users:customer-view' object.user.pk %}">{{ object.user.get_full_name }}[ivanov_petr]</a> |
|
||||||
</p> |
|
||||||
<p class="navv2">{{ object.created | naturaltime }}</p> |
|
||||||
</div> |
|
||||||
<div class="col-lg-3 retts"> |
|
||||||
<ul class="rettList restList2"> |
|
||||||
<li>Рейтинг: <span> 0</span></li> |
|
||||||
<li>Безопасные сделки: <span> 0</span></li> |
|
||||||
<li> |
|
||||||
<a href="">Отзывы: |
|
||||||
<span> 0 </span> |
|
||||||
<small> 0</small> |
|
||||||
<mark> - 0</mark> |
|
||||||
</a> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
<div class="col-lg-2 new-dashed"> |
|
||||||
<div class="dashedCol4 dashedCol44 dashedColColor"> |
|
||||||
<p class="specUser"> |
|
||||||
Специализации: |
|
||||||
</p> |
|
||||||
<div class="insetSpec"> |
|
||||||
<span>{{ object.specialization }}</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-3 retts new-list"> |
|
||||||
<ul class="desListPro"> |
|
||||||
<li> |
|
||||||
{{ object.created }} |
|
||||||
</li> |
|
||||||
<li> |
|
||||||
{{ object.type_work }} |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
{% if object.secure_transaction %} |
|
||||||
<div class="sroUser sroExecutor sroPro"> |
|
||||||
<div class="iconSRO"></div> |
|
||||||
|
|
||||||
<p>Есть допуск СРО</p> |
|
||||||
|
|
||||||
</div> |
|
||||||
{% endif %} |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="infoProjectBlock info-new disTab"> |
|
||||||
<div class="triangle2"></div> |
|
||||||
<div class="col-lg-10 col-lg-offset-1"> |
|
||||||
<ul class="listProjectIn"> |
|
||||||
<li> |
|
||||||
<span>Местоположение:</span> {{ object.realty.country }},{{ object.realty.city }} |
|
||||||
</li> |
|
||||||
<li> |
|
||||||
<span>Классификация здания:</span> {{ object.realty.building_classification }} |
|
||||||
</li> |
|
||||||
<li> |
|
||||||
<span>Вид строительства:</span> {{ object.realty.type_construction }} |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
<div class="col-lg-10 col-lg-offset-1"> |
|
||||||
<p class="textProIn"> |
|
||||||
{{ object.text }} |
|
||||||
</p> |
|
||||||
</div> |
|
||||||
<div class="col-lg-10 col-lg-offset-1"> |
|
||||||
<a href="javascript:void(0)" class="new-answer"> |
|
||||||
Ответить на проект |
|
||||||
</a> |
|
||||||
<div class="polsF1 pols-new disTab"> |
|
||||||
<div class="col-lg-3"> |
|
||||||
<select class="selectpicker"> |
|
||||||
<option>От своего имени</option> |
|
||||||
|
|
||||||
<option></option> |
|
||||||
</select> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
{% if perms.projects.add_answer %} |
|
||||||
<form method="post"> |
|
||||||
{{ form.errors }} |
|
||||||
{% csrf_token %} |
|
||||||
<div class="polsF1 disTab"> |
|
||||||
|
|
||||||
<div class="col-lg-3"> |
|
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
||||||
<p>Стоимость</p> |
|
||||||
<input type="text" class="box-sizing" name="{{ form.cost.name }}"/> |
|
||||||
|
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-3"> |
|
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
||||||
<p>Бюджет</p> |
|
||||||
{{ form.cost_type }} |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-6"></div> |
|
||||||
</div> |
|
||||||
<div class="polsF1 disTab"> |
|
||||||
<div class="col-lg-3"> |
|
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
||||||
<p>Срок</p> |
|
||||||
<input type="text" class="box-sizing" name="{{ form.term.name }}"/> |
|
||||||
|
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-3"> |
|
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
||||||
<p>Тип срока</p> |
|
||||||
{{ form.term_type }} |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-6"></div> |
|
||||||
</div> |
|
||||||
<div class="polsF1 disTab"> |
|
||||||
<div class="col-lg-9"> |
|
||||||
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
|
||||||
<p>Текст</p> |
|
||||||
<textarea name="{{ form.text.name }}" id="text-new"></textarea>{{ form.project }} |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-3"></div> |
|
||||||
</div> |
|
||||||
<div class="polsF1 disTab"> |
|
||||||
<div class="col-lg-3"><input type="submit" value="Создать"/></div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</form> |
|
||||||
{% endif %} |
|
||||||
|
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
{% if request.user.is_customer %} |
|
||||||
<div class="exBigBlock disTab"> |
|
||||||
<div class="col-lg-12"> |
|
||||||
<p class="titleEx">Исполнители</p> |
|
||||||
</div> |
|
||||||
<div class="col-lg-12 exButton"> |
|
||||||
<div class="btn-group" role="group" aria-label="..."> |
|
||||||
<button type="button" class="btn btn-default"> |
|
||||||
Новые <span>+0</span> |
|
||||||
</button> |
|
||||||
<button type="button" class="btn btn-default"> |
|
||||||
Кандидаты <span>{{ object.candidates.count }}</span> |
|
||||||
</button> |
|
||||||
<button type="button" class="btn btn-default"> |
|
||||||
Отказал <span>0</span> |
|
||||||
</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<a href="{% url 'projects:comparison' object.id %}"> |
|
||||||
<div class="col-lg-12 compareBlock"> |
|
||||||
<div class="col-lg-2 col-lg-offset-5"> |
|
||||||
<p>Сравнить кандидатов</p> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</a> |
|
||||||
{% endif %} |
|
||||||
|
|
||||||
<div class="candidateBlock disTab"> |
|
||||||
{% for answer in object.answers.all %} |
|
||||||
<div class="candidate can-new"> |
|
||||||
<div class="col-lg-4"> |
|
||||||
<a href="#" class="aLinkExe"> |
|
||||||
<div class="imgExecutor"> |
|
||||||
<img src="{% static 'img/profile.jpg' %}" alt="execitor-image"> |
|
||||||
</div> |
|
||||||
</a> |
|
||||||
<p class="nameExecutor"> |
|
||||||
<a href="#">{{ answer.user.get_full_name }}</a> |
|
||||||
</p> |
|
||||||
<p class="navv2">{{ answer.user.created }}</p> |
|
||||||
</div> |
|
||||||
<div class="col-lg-3 retts"> |
|
||||||
<ul class="rettList restList2"> |
|
||||||
<li>Рейтинг: <span>0</span></li> |
|
||||||
<li>Безопасные сделки: <span> 0</span></li> |
|
||||||
<li> |
|
||||||
<a href="javascript:void(0)">Отзывы: |
|
||||||
<span> + 0 </span> |
|
||||||
<small> 0</small> |
|
||||||
<mark> - 0</mark> |
|
||||||
</a> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
<div class="sroUser sroExecutor"> |
|
||||||
<div class="iconSRO"></div> |
|
||||||
<p>Есть допуск СРО</p> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-lg-2 listCens"> |
|
||||||
<p>Цена:<span> {{ answer.cost| intcomma }}</span> |
|
||||||
<i class="fa fa-rub"></i> |
|
||||||
</p> |
|
||||||
<p> |
|
||||||
Срок: <span>{{ answer.term }} {{ answer.term_type }}</span> |
|
||||||
</p> |
|
||||||
<p>Опубликован: {{ answer.created }}</p> |
|
||||||
</div> |
|
||||||
<div class="col-lg-3 retts"> |
|
||||||
{% if request.user.is_customer %} |
|
||||||
<a class="candLink candLink1" href="{% url 'projects:add-candidate' answer_id=answer.id project_id=object.id %}">Кандидат</a> |
|
||||||
<a class="candLink candLink2" href="javascript:void(0)"> предложить проект </a> |
|
||||||
{% endif %} |
|
||||||
<a href="javascript:void(0)" class="candLink candLink3">отказ</a> |
|
||||||
</div> |
|
||||||
<div class="commBlock44 comm-new disTab"> |
|
||||||
<div class="comm44 disTab"> |
|
||||||
<div class="col-lg-10 col-lg-offset-1"> |
|
||||||
<p class="nameComm"> |
|
||||||
Иванов Петр Иванович |
|
||||||
</p> |
|
||||||
<span class="dateComm44">13.0.2016 / 21:05</span> |
|
||||||
<div class="stars box-sizing"> |
|
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
|
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
|
||||||
<span class="glyphicon glyphicon-star starAct" aria-hidden="true"></span> |
|
||||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
|
||||||
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> |
|
||||||
</div> |
|
||||||
<p class="textComm44"> |
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum |
|
||||||
laoreet. |
|
||||||
</p> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
{% endfor %} |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="col-lg-12 pagin"> |
|
||||||
{% include 'partials/pagination.html' %} |
|
||||||
</div> |
|
||||||
|
|
||||||
{% include 'partials/footer.html' %} |
|
||||||
{% endblock %} |
|
||||||
@ -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