diff --git a/archilance/management/commands/fill_locations.py b/archilance/management/commands/fill_locations.py
new file mode 100644
index 0000000..381dca2
--- /dev/null
+++ b/archilance/management/commands/fill_locations.py
@@ -0,0 +1,338 @@
+import pydash as _;
+from django.core.management import BaseCommand
+
+_.map = _.map_;
+_.filter = _.filter_
+
+from common.models import Location
+
+
+COUNTRIES = ('Азербайджан',
+ 'Армения',
+ 'Белоруссия',
+ 'Казахстан',
+ 'Киргизия',
+ 'Молдавия',
+ 'Россия',
+ 'Таджикистан',
+ 'Туркмения',
+ 'Узбекистан')
+
+REGIONS = (
+ ('Республика Адыгея', 'Россия'),
+ ('Республика Алтай', 'Россия'),
+ ('Республика Башкортостан', 'Россия'),
+ ('Республика Бурятия', 'Россия'),
+ ('Республика Дагестан', 'Россия'),
+ ('Республика Ингушетия', 'Россия'),
+ ('Кабардино-Балкарская республика', 'Россия'),
+ ('Республика Калмыкия', 'Россия'),
+ ('Карачаево-Черкесская республика', 'Россия'),
+ ('Республика Карелия', 'Россия'),
+ ('Республика Коми', 'Россия'),
+ ('Республика Крым', 'Россия'),
+ ('Республика Марий Эл', 'Россия'),
+ ('Республика Мордовия', 'Россия'),
+ ('Республика Саха (Якутия)', 'Россия'),
+ ('Республика Северная Осетия — Алания', 'Россия'),
+ ('Республика Татарстан', 'Россия'),
+ ('Республика Тыва', 'Россия'),
+ ('Удмуртская республика', 'Россия'),
+ ('Республика Хакасия', 'Россия'),
+ ('Чеченская республика', 'Россия'),
+ ('Чувашская республика', 'Россия'),
+ ('Алтайский край', 'Россия'),
+ ('Забайкальский край', 'Россия'),
+ ('Камчатский край', 'Россия'),
+ ('Краснодарский край', 'Россия'),
+ ('Красноярский край', 'Россия'),
+ ('Пермский край', 'Россия'),
+ ('Приморский край', 'Россия'),
+ ('Ставропольский край', 'Россия'),
+ ('Хабаровский край', 'Россия'),
+ ('Амурская область', 'Россия'),
+ ('Архангельская область', 'Россия'),
+ ('Астраханская область', 'Россия'),
+ ('Белгородская область', 'Россия'),
+ ('Брянская область', 'Россия'),
+ ('Владимирская область', 'Россия'),
+ ('Волгоградская область', 'Россия'),
+ ('Вологодская область', 'Россия'),
+ ('Воронежская область', 'Россия'),
+ ('Ивановская область', 'Россия'),
+ ('Иркутская область', 'Россия'),
+ ('Калининградская область', 'Россия'),
+ ('Калужская область', 'Россия'),
+ ('Кемеровская область', 'Россия'),
+ ('Кировская область', 'Россия'),
+ ('Костромская область', 'Россия'),
+ ('Курганская область', 'Россия'),
+ ('Курская область', 'Россия'),
+ ('Ленинградская область', 'Россия'),
+ ('Липецкая область', 'Россия'),
+ ('Магаданская область', 'Россия'),
+ ('Московская область', 'Россия'),
+ ('Мурманская область', 'Россия'),
+ ('Нижегородская область', 'Россия'),
+ ('Новгородская область', 'Россия'),
+ ('Новосибирская область', 'Россия'),
+ ('Омская область', 'Россия'),
+ ('Оренбургская область', 'Россия'),
+ ('Орловская область', 'Россия'),
+ ('Пензенская область', 'Россия'),
+ ('Псковская область', 'Россия'),
+ ('Ростовская область', 'Россия'),
+ ('Рязанская область', 'Россия'),
+ ('Самарская область', 'Россия'),
+ ('Саратовская область', 'Россия'),
+ ('Сахалинская область', 'Россия'),
+ ('Свердловская область', 'Россия'),
+ ('Смоленская область', 'Россия'),
+ ('Тамбовская область', 'Россия'),
+ ('Тверская область', 'Россия'),
+ ('Томская область', 'Россия'),
+ ('Тульская область', 'Россия'),
+ ('Тюменская область', 'Россия'),
+ ('Ульяновская область', 'Россия'),
+ ('Челябинская область', 'Россия'),
+ ('Ярославская область', 'Россия'),
+ ('Москва', 'Россия'),
+ ('Санкт-Петербург', 'Россия'),
+ ('Севастополь', 'Россия'),
+ ('Еврейская автономная область', 'Россия'),
+ ('Ненецкий автономный округ', 'Россия'),
+ ('Ханты-Мансийский автономный округ - Югра', 'Россия'),
+ ('Чукотский автономный округ', 'Россия'),
+ ('Ямало-Ненецкий автономный округ', 'Россия'),
+
+ ('Арагацотнская область', 'Армения'),
+ ('Араратская область', 'Армения'),
+ ('Армавирская область', 'Армения'),
+ ('Вайоцдзорская область', 'Армения'),
+ ('Гехаркуникская область', 'Армения'),
+ ('Котайкская область', 'Армения'),
+ ('Лорийская область', 'Армения'),
+ ('Сюникская область', 'Армения'),
+ ('Тавушская область', 'Армения'),
+ ('Ширакская область', 'Армения'),
+ ('Ереван', 'Армения'),
+
+ ('Минск', 'Белоруссия'),
+ ('Брестская область', 'Белоруссия'),
+ ('Витебская область', 'Белоруссия'),
+ ('Гомельская область', 'Белоруссия'),
+ ('Гродненская область', 'Белоруссия'),
+ ('Минская область', 'Белоруссия'),
+ ('Могилёвская область', 'Белоруссия'),
+
+ ('Акмолинская область', 'Казахстан'),
+ ('Актюбинская область', 'Казахстан'),
+ ('Алматинская область', 'Казахстан'),
+ ('Атырауская область', 'Казахстан'),
+ ('Восточно-Казахстанская область', 'Казахстан'),
+ ('Жамбылская область', 'Казахстан'),
+ ('Западно-Казахстанская область', 'Казахстан'),
+ ('Карагандинская область', 'Казахстан'),
+ ('Костанайская область', 'Казахстан'),
+ ('Кызылординская область', 'Казахстан'),
+ ('Мангистауская область', 'Казахстан'),
+ ('Павлодарская область', 'Казахстан'),
+ ('Северо-Казахстанская область', 'Казахстан'),
+ ('Южно-Казахстанская область', 'Казахстан'),
+ ('Астана', 'Казахстан'),
+ ('Алма-Ата', 'Казахстан'),
+
+ ('Бишкек', 'Киргизия'),
+ ('Ош', 'Киргизия'),
+ ('Баткенская область', 'Киргизия'),
+ ('Джалал-Абадская область', 'Киргизия'),
+ ('Иссык-Кульская область', 'Киргизия'),
+ ('Нарынская область', 'Киргизия'),
+ ('Ошская область', 'Киргизия'),
+ ('Таласская область', 'Киргизия'),
+ ('Чуйская область', 'Киргизия'),
+
+ ('Муниципий Кишинёв', 'Молдавия'),
+ ('Муниципий Бельцы', 'Молдавия'),
+ ('Муниципий Бендеры', 'Молдавия'),
+ ('Бессарабский район', 'Молдавия'),
+ ('Бричанский район', 'Молдавия'),
+ ('Глодянский район', 'Молдавия'),
+ ('Дондюшанский район', 'Молдавия'),
+ ('Дрокиевский район', 'Молдавия'),
+ ('Дубоссарский район', 'Молдавия'),
+ ('Единецкий район', 'Молдавия'),
+ ('Кагульский район', 'Молдавия'),
+ ('Каларашский район', 'Молдавия'),
+ ('Кантемирский район', 'Молдавия'),
+ ('Каушанский район', 'Молдавия'),
+ ('Криулянский район', 'Молдавия'),
+ ('Леовский район', 'Молдавия'),
+ ('Ниспоренский район', 'Молдавия'),
+ ('Новоаненский район', 'Молдавия'),
+ ('Окницкий район', 'Молдавия'),
+ ('Оргеевский район', 'Молдавия'),
+ ('Резинский район', 'Молдавия'),
+ ('Рышканский район', 'Молдавия'),
+ ('Сорокский район', 'Молдавия'),
+ ('Страшенский район', 'Молдавия'),
+ ('Сынжерейский район', 'Молдавия'),
+ ('Тараклийский район', 'Молдавия'),
+ ('Теленештский район', 'Молдавия'),
+ ('Унгенский район', 'Молдавия'),
+ ('Фалештский район', 'Молдавия'),
+ ('Флорештский район', 'Молдавия'),
+ ('Хынчештский район', 'Молдавия'),
+ ('Чимишлийский район', 'Молдавия'),
+ ('Шолданештский район', 'Молдавия'),
+ ('Штефан-Водский район', 'Молдавия'),
+ ('Яловенский район', 'Молдавия'),
+
+ ('Душанбе', 'Таджикистан'),
+ ('Горно-Бадахшанская автономная область', 'Таджикистан'),
+ ('Согдийская область', 'Таджикистан'),
+ ('Хатлонская область', 'Таджикистан'),
+ ('Районы республиканского подчинения', 'Таджикистан'),
+
+ ('Ашхабад', 'Туркмения'),
+ ('Ахалский велаят', 'Туркмения'),
+ ('Балканский велаят', 'Туркмения'),
+ ('Дашогузский велаят', 'Туркмения'),
+ ('Лебапский велаят', 'Туркмения'),
+ ('Марыйский велаят', 'Туркмения'),
+
+ ('Ташкент', 'Узбекистан'),
+ ('Республика Каракалпакстан', 'Узбекистан'),
+ ('Андижанская область', 'Узбекистан'),
+ ('Бухарская область', 'Узбекистан'),
+ ('Джизакская область', 'Узбекистан'),
+ ('Кашкадарьинская область', 'Узбекистан'),
+ ('Навоийская область', 'Узбекистан'),
+ ('Наманганская область', 'Узбекистан'),
+ ('Самаркандская область', 'Узбекистан'),
+ ('Сурхандарьинская область', 'Узбекистан'),
+ ('Сырдарьинская область', 'Узбекистан'),
+ ('Ташкентская область', 'Узбекистан'),
+ ('Ферганская область', 'Узбекистан'),
+ ('Хорезмская область', 'Узбекистан'),
+
+ ('Апшеронский район', 'Азербайджан'),
+ ('Агдамский район', 'Азербайджан'),
+ ('Агдашский район', 'Азербайджан'),
+ ('Агджабединский район', 'Азербайджан'),
+ ('Аджигабульский район', 'Азербайджан'),
+ ('Агстафинский район', 'Азербайджан'),
+ ('Астаринский район', 'Азербайджан'),
+ ('Ахсуйский район', 'Азербайджан'),
+ ('Баку', 'Азербайджан'),
+ ('Балакенский район', 'Азербайджан'),
+ ('Бардинский район', 'Азербайджан'),
+ ('Бейлаганский район', 'Азербайджан'),
+ ('Билясуварский район', 'Азербайджан'),
+ ('Габалинский район', 'Азербайджан'),
+ ('Газахский район', 'Азербайджан'),
+ ('Гахский район', 'Азербайджан'),
+ ('Геокчайский район', 'Азербайджан'),
+ ('Геранбойский район', 'Азербайджан'),
+ ('Гёйгёльский район', 'Азербайджан'),
+ ('Гобустанский район', 'Азербайджан'),
+ ('Губадлинский район', 'Азербайджан'),
+ ('Губинский район', 'Азербайджан'),
+ ('Гусарский район', 'Азербайджан'),
+ ('Гянджа', 'Азербайджан'),
+ ('Дашкесанский район', 'Азербайджан'),
+ ('Джалилабадский район', 'Азербайджан'),
+ ('Джебраильский район', 'Азербайджан'),
+ ('Евлахский район', 'Азербайджан'),
+ ('Евлах', 'Азербайджан'),
+ ('Загатальский район', 'Азербайджан'),
+ ('Зангеланский район', 'Азербайджан'),
+ ('Зердабский район', 'Азербайджан'),
+ ('Имишлинский район', 'Азербайджан'),
+ ('Исмаиллинский район', 'Азербайджан'),
+ ('Кедабекский район', 'Азербайджан'),
+ ('Кельбаджарский район', 'Азербайджан'),
+ ('Кюрдамирский район', 'Азербайджан'),
+ ('Лачинский район', 'Азербайджан'),
+ ('Ленкоранский район', 'Азербайджан'),
+ ('Ленкорань', 'Азербайджан'),
+ ('Лерикский район', 'Азербайджан'),
+ ('Масаллинский район', 'Азербайджан'),
+ ('Мингечевир', 'Азербайджан'),
+ ('Нафталан', 'Азербайджан'),
+ ('Нефтечалинский район', 'Азербайджан'),
+ ('Огузский район', 'Азербайджан'),
+ ('Саатлинский район', 'Азербайджан'),
+ ('Сабирабадский район', 'Азербайджан'),
+ ('Салянский район', 'Азербайджан'),
+ ('Самухский район', 'Азербайджан'),
+ ('Сиазаньский район', 'Азербайджан'),
+ ('Сумгаит', 'Азербайджан'),
+ ('Товузский район', 'Азербайджан'),
+ ('Тертерский район', 'Азербайджан'),
+ ('Уджарский район', 'Азербайджан'),
+ ('Физулинский район', 'Азербайджан'),
+ ('Ханкенди', 'Азербайджан'),
+ ('Хачмазский район', 'Азербайджан'),
+ ('Ходжавендский район', 'Азербайджан'),
+ ('Ходжалинский район', 'Азербайджан'),
+ ('Хызинский район', 'Азербайджан'),
+ ('Шабранский район', 'Азербайджан'),
+ ('Шамкирский район', 'Азербайджан'),
+ ('Шекинский район', 'Азербайджан'),
+ ('Шеки', 'Азербайджан'),
+ ('Шемахинский район', 'Азербайджан'),
+ ('Ширван', 'Азербайджан'),
+ ('Шушинский район', 'Азербайджан'),
+ ('Шуша', 'Азербайджан'),
+ ('Ярдымлинский район', 'Азербайджан'),
+)
+
+CITIES = (
+ ('Москва', 'Москва'),
+ ('Санкт-Петербург', 'Санкт-Петербург'),
+ ('Ташкент', 'Ташкент'),
+ ('Баку', 'Баку'),
+ ('Минск', 'Минск'),
+ ('Новосибирск', 'Новосибирская область'),
+ ('Алма-Ата', 'Алма-Ата'),
+ ('Екатеринбург', 'Свердловская область'),
+ ('Нижний Новгород', 'Нижегородская область'),
+ ('Самара', 'Самарская область'),
+ ('Казань', 'Республика Татарстан'),
+ ('Омск', 'Омская область'),
+ ('Челябинск', 'Челябинская область'),
+ ('Ереван', 'Ереван'),
+ ('Ростов-на-Дону', 'Ростовская область'),
+ ('Уфа', 'Республика Башкортостан'),
+ ('Волгоград', 'Волгоградская область'),
+ ('Пермь', 'Пермский край'),
+ ('Красноярск', 'Красноярский край'),
+)
+
+
+class Command(BaseCommand):
+ def handle(self, *args, **options):
+ print('---------------------------------------')
+ print('Generating locations...')
+ print('---------------------------------------')
+
+ _root = Location.objects.get_or_create(name='_root', type='_root')[0]
+
+ for country in COUNTRIES:
+ Location.objects.get_or_create(name=country, type='country', parent=_root)
+ print(country)
+
+ for region in REGIONS:
+ region_name = region[0]
+ country_name = region[1]
+ country = Location.objects.get(name=country_name, type='country')
+ Location.objects.get_or_create(name=region_name, type='region', parent=country)
+ print(region_name, country_name)
+
+ for city in CITIES:
+ city_name = city[0]
+ region_name = city[1]
+ region = Location.objects.get(name=region_name, type='region')
+ Location.objects.get_or_create(name=city_name, type='town', parent=region)
+ print(city_name, region_name)
\ No newline at end of file
diff --git a/archilance/urls.py b/archilance/urls.py
index c402dc2..a81eb22 100644
--- a/archilance/urls.py
+++ b/archilance/urls.py
@@ -47,10 +47,6 @@ urlpatterns = [
'message': 'Произошла ошибка при оплате',
}, name='tmp-payment-fail'),
- url(r'^robots\.txt$', TemplateView.as_view(),
- {'template': 'robots.txt', 'mimetype': 'text/plain'}
- ),
-
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG:
diff --git a/assets/index.js b/assets/index.js
index b531a65..e77a0e6 100644
--- a/assets/index.js
+++ b/assets/index.js
@@ -320,8 +320,10 @@ $('[data-tooltip]').tooltip({
}())
+// Contractor experience -------------------------------
-
+$('.profile-building-classifications select').select2({width: 450, placeholder: 'Выберите типы зданий'});
+$('.profile-construction-types select').select2({width: 450, placeholder: 'Выберите виды строительства'});
diff --git a/assets/js/chat.js b/assets/js/chat.js
index 0cb86cd..e541f8d 100644
--- a/assets/js/chat.js
+++ b/assets/js/chat.js
@@ -29,7 +29,12 @@ window.confirm = function (message, callback, caption) {
var SocketHandler = function () {
domain = domain.replace(':' + port, '');
- var url = 'ws://' + domain + '/chat/' + userId + '/';
+ if (window.location.protocol == 'https:') {
+ var ws = "wss://";
+ } else {
+ var ws = "ws://";
+ }
+ var url = ws + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url);
var intervalId;
sock.onopen = function () {
diff --git a/common/templates/printorder_detail.html b/common/templates/printorder_detail.html
index dec4ea2..c780479 100644
--- a/common/templates/printorder_detail.html
+++ b/common/templates/printorder_detail.html
@@ -1 +1,16 @@
-
{{ object }}
+{% extends 'partials/base.html' %}
+
+{% load staticfiles %}
+{% load thumbnail %}
+{% block content %}
+
+
+ {% include 'partials/header.html' %}
+
+
+
Заявка на распечатку принята
+
+ {% include 'partials/footer.html' %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/projects/admin.py b/projects/admin.py
index 008efe3..518e404 100644
--- a/projects/admin.py
+++ b/projects/admin.py
@@ -21,6 +21,12 @@ from .models import (
class BuildingClassficationAdmin(MPTTModelAdmin):
readonly_fields = ('pk', 'lft', 'rght', 'tree_id', 'level')
+ list_display = ('pk', 'name', 'order', 'parent')
+
+
+class ConstructionTypeAdmin(admin.ModelAdmin):
+ # readonly_fields = ('pk', 'lft', 'rght', 'tree_id', 'level')
+ list_display = ('pk', 'name', 'order')
class ProjectAdminForm(forms.ModelForm):
@@ -51,7 +57,7 @@ admin.site.register(Answer)
admin.site.register(Arbitration)
admin.site.register(BuildingClassfication, BuildingClassficationAdmin)
admin.site.register(Candidate)
-admin.site.register(ConstructionType)
+admin.site.register(ConstructionType, ConstructionTypeAdmin)
admin.site.register(Order, OrderAdmin)
admin.site.register(Portfolio)
admin.site.register(PortfolioPhoto)
diff --git a/projects/templates/project_detail.html b/projects/templates/project_detail.html
index 7c1113b..6410839 100644
--- a/projects/templates/project_detail.html
+++ b/projects/templates/project_detail.html
@@ -117,21 +117,28 @@
{{ project.text|linebreaksbr }}
- br
-
-
+
+ {% if project.files.all|length %}
+
+
+ Приложенные файлы ( {{ project.files.all|length }} ):
+
+ {% if request.user.is_authenticated %}
+
+ {% endif %}
+
+ {% endfor %}
+
+
+ {% endif %}
{% if request.user.is_contractor and not answer %}
diff --git a/robots.txt b/robots/robots.txt
similarity index 100%
rename from robots.txt
rename to robots/robots.txt
diff --git a/ssl/nic.ru/intermediate_pem_thawte_ssl123_1.crt b/ssl/nic.ru/intermediate_pem_thawte_ssl123_1.crt
new file mode 100644
index 0000000..1b47a4e
--- /dev/null
+++ b/ssl/nic.ru/intermediate_pem_thawte_ssl123_1.crt
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIE0jCCA7qgAwIBAgIQLGnhL2pnC9md0g+RnvCeUTANBgkqhkiG9w0BAQsFADCB
+qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
+BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTQwNjEwMDAwMDAwWhcNMjQw
+NjA5MjM1OTU5WjBjMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu
+MR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3Rl
+IERWIFNTTCBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+6pQHhchBLPaDEmySX6sfANSWb3TNLhHpbA85AblIkEA5TcSiyHlqpZq9kURld1St
+/yVf7kL7swIP6l163RpUntdzQpvMeV/FTfS3Cxg5IHrdUAFdNEVfTBEO9YcmJrSw
+835xoDFxUIloWmOKFGLljDoWVQ0+66qAHXF644cHq72idM3aCAGdG8wniIxH1Gkl
+Qta7UG2FUNBIgg0In+kj40LGPJi4u27FcBPfGR0B/dK1TuZi9Af6a30Rd8RiT0BO
+pXiXqyxNDKd8w8RQMp/QcJsP//91WTSFrUnVNe5PW9TUNpWgfujFoRy9E0597mNq
+lhmZyKcqAOZRjUbrMFjoLQIDAQABo4IBOTCCATUwEgYDVR0TAQH/BAgwBgEB/wIB
+ADBBBgNVHSAEOjA4MDYGCmCGSAGG+EUBBzYwKDAmBggrBgEFBQcCARYaaHR0cHM6
+Ly93d3cudGhhd3RlLmNvbS9jcHMwDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEB
+BCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL3Quc3ltY2QuY29tMDEGA1UdHwQqMCgw
+JqAkoCKGIGh0dHA6Ly90LnN5bWNiLmNvbS9UaGF3dGVQQ0EuY3JsMCkGA1UdEQQi
+MCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTY5ODAdBgNVHQ4EFgQUn7jB
+qWzy9cAiKpTtXJms1OzXxgcwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutX
+SFAwDQYJKoZIhvcNAQELBQADggEBAFNU8keoAtfvqjV4vkoIDZAYS22eKlMr6VQX
+d3QpftA3BwW45Pq4tGOYRNzGT4EGjDq+xzBXxnD81pMZn8NV1z4fcoqdMFo1lzLL
+Y+TGct/7aMppL9vNUDg+K7urO4LH/UubvXxBmO8BU9g1jyXJAwbmnFfBUQ+e9n2T
+Tfh2yDpr9MSPMzJ/nSGENNmn+ZL6QZFhhAWdo3lGzmfngfJerEy8qKtqbRXinE5a
+2WOAvPdC65pExoxrBja0izKJ3sLxqCaqqaz/6nGm54xB+hc1u7OHMamTwshY4QpO
+lYOcue07pe8I4HT5wxvmB6PuB9dCInkhoKHUHSbT0NamXStBwHk=
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/ssl/nic.ru/proekton.crt b/ssl/nic.ru/proekton.crt
new file mode 100644
index 0000000..5fc2357
--- /dev/null
+++ b/ssl/nic.ru/proekton.crt
@@ -0,0 +1,87 @@
+-----BEGIN CERTIFICATE-----
+MIIFjjCCBHagAwIBAgIQCqciRB6FljImlwWcV0fLYTANBgkqhkiG9w0BAQsFADBj
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMuMR0wGwYDVQQLExRE
+b21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3RlIERWIFNTTCBDQSAt
+IEcyMB4XDTE2MTAxNzAwMDAwMFoXDTE3MTAxNzIzNTk1OVowFzEVMBMGA1UEAwwM
+cHJvZWt0b24uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA238E
+5cBm1jMl1fkQycKHldWwUxjq0xIRKo21ma4l/TBW3EzErh56vJ9PWFhJH7VH77Lj
+IRfxtyA+a7Zja+DJdvkKfWpMubK0SNzi8C3E+wW7J/G9rOCmFWM7SrVaEFX+jltr
+axH396UgBlT8jkg035OCsGzQ/OefbLRTriDG9OQFG+vTSNv7XqUKM0hE8ilBoPnV
+wGuJdUinedV3cPSPU5AKZwnDRjjQ6o5eFj9evEl+3woB1/jFdY2ia4dywUQAU8op
++VXIXnbC2V1UtoZD5BVTq3QTmol7vwmiV5OiwAdzHuBdhjg0tIdJYWV++ux2pegx
+nKeC2lETR0g94b4xzwIDAQABo4ICiDCCAoQwKQYDVR0RBCIwIIIMcHJvZWt0b24u
+Y29tghB3d3cucHJvZWt0b24uY29tMAkGA1UdEwQCMAAwKwYDVR0fBCQwIjAgoB6g
+HIYaaHR0cDovL3RuLnN5bWNiLmNvbS90bi5jcmwwbgYDVR0gBGcwZTBjBgZngQwB
+AgEwWTAmBggrBgEFBQcCARYaaHR0cHM6Ly93d3cudGhhd3RlLmNvbS9jcHMwLwYI
+KwYBBQUHAgIwIwwhaHR0cHM6Ly93d3cudGhhd3RlLmNvbS9yZXBvc2l0b3J5MB8G
+A1UdIwQYMBaAFJ+4wals8vXAIiqU7VyZrNTs18YHMA4GA1UdDwEB/wQEAwIFoDAd
+BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwVwYIKwYBBQUHAQEESzBJMB8G
+CCsGAQUFBzABhhNodHRwOi8vdG4uc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRw
+Oi8vdG4uc3ltY2IuY29tL3RuLmNydDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1
+AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyIjT0RxM227L7MAAABV9LcAU0AAAQDAEYw
+RAIgFd7a+xUZEjUGM+SpPqmXOEukP2Jb3rdV5yISRmbLMW4CIDMaUjjNJCVf64I5
+PAD4ucUK1janHsflLZ+jQtKr0IXaAHcAaPaY+B9kgr46jO65KB1M/HFRXWeT1ETR
+Cmesu09P+8QAAAFX0twBdgAABAMASDBGAiEAyQ5A3wICl8YnLpyTgXjLVPAeHpKF
+fBd+inhL2CZp1egCIQDV9fLkNfVpMTFbNKVZXu8gyfG3dpJQrbCzE3FBd9JJqzAN
+BgkqhkiG9w0BAQsFAAOCAQEAcafiWP81zgV8XQNFI4yfl2LK6om+VpxeOJzrmlXO
+9un96OoP0S4gPav/x75+tq9PBslVFXuB3usEL3io9gX/hBWtrp9Z1ItAnYJ+XTup
+8YbRP+GharJduJyLOYtwJrJDGiYFV4dRct/OqgYGzOpAbX8ty8TA8suY7ovLnlgQ
+pLnZ8qpvlQbZxKay2ThwUcP7pWLoCb2Sgrf4N05Ua7pFSklw0gE2qeur2lEl8aYv
+qd02mqEJY17gRe7Jl2OF+2V47PEiZ23zAzTxgvwODt77OkwbeoQf8MB3E7LwOX6k
+kVCYqpzc6geWsU2l7EqpngUSV/AD3gupmRdWOkCMW0LqKg==
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIE0jCCA7qgAwIBAgIQLGnhL2pnC9md0g+RnvCeUTANBgkqhkiG9w0BAQsFADCB
+qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
+BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMTQwNjEwMDAwMDAwWhcNMjQw
+NjA5MjM1OTU5WjBjMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMu
+MR0wGwYDVQQLExREb21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3Rl
+IERWIFNTTCBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+6pQHhchBLPaDEmySX6sfANSWb3TNLhHpbA85AblIkEA5TcSiyHlqpZq9kURld1St
+/yVf7kL7swIP6l163RpUntdzQpvMeV/FTfS3Cxg5IHrdUAFdNEVfTBEO9YcmJrSw
+835xoDFxUIloWmOKFGLljDoWVQ0+66qAHXF644cHq72idM3aCAGdG8wniIxH1Gkl
+Qta7UG2FUNBIgg0In+kj40LGPJi4u27FcBPfGR0B/dK1TuZi9Af6a30Rd8RiT0BO
+pXiXqyxNDKd8w8RQMp/QcJsP//91WTSFrUnVNe5PW9TUNpWgfujFoRy9E0597mNq
+lhmZyKcqAOZRjUbrMFjoLQIDAQABo4IBOTCCATUwEgYDVR0TAQH/BAgwBgEB/wIB
+ADBBBgNVHSAEOjA4MDYGCmCGSAGG+EUBBzYwKDAmBggrBgEFBQcCARYaaHR0cHM6
+Ly93d3cudGhhd3RlLmNvbS9jcHMwDgYDVR0PAQH/BAQDAgEGMC4GCCsGAQUFBwEB
+BCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL3Quc3ltY2QuY29tMDEGA1UdHwQqMCgw
+JqAkoCKGIGh0dHA6Ly90LnN5bWNiLmNvbS9UaGF3dGVQQ0EuY3JsMCkGA1UdEQQi
+MCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0xLTY5ODAdBgNVHQ4EFgQUn7jB
+qWzy9cAiKpTtXJms1OzXxgcwHwYDVR0jBBgwFoAUe1tFz6/Oy3r9MZIaarbzRutX
+SFAwDQYJKoZIhvcNAQELBQADggEBAFNU8keoAtfvqjV4vkoIDZAYS22eKlMr6VQX
+d3QpftA3BwW45Pq4tGOYRNzGT4EGjDq+xzBXxnD81pMZn8NV1z4fcoqdMFo1lzLL
+Y+TGct/7aMppL9vNUDg+K7urO4LH/UubvXxBmO8BU9g1jyXJAwbmnFfBUQ+e9n2T
+Tfh2yDpr9MSPMzJ/nSGENNmn+ZL6QZFhhAWdo3lGzmfngfJerEy8qKtqbRXinE5a
+2WOAvPdC65pExoxrBja0izKJ3sLxqCaqqaz/6nGm54xB+hc1u7OHMamTwshY4QpO
+lYOcue07pe8I4HT5wxvmB6PuB9dCInkhoKHUHSbT0NamXStBwHk=
+-----END CERTIFICATE-----
+
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
+qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
+BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
+NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
+LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
+A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
+W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
+3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
+6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
+Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
+NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
+r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
+DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
+YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
+xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
+/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
+LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
+jVaMaA==
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/ssl/nic.ru/proekton_com_2017_10_18.crt b/ssl/nic.ru/proekton_com_2017_10_18.crt
new file mode 100644
index 0000000..e714cac
--- /dev/null
+++ b/ssl/nic.ru/proekton_com_2017_10_18.crt
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFjjCCBHagAwIBAgIQCqciRB6FljImlwWcV0fLYTANBgkqhkiG9w0BAQsFADBj
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3RlLCBJbmMuMR0wGwYDVQQLExRE
+b21haW4gVmFsaWRhdGVkIFNTTDEeMBwGA1UEAxMVdGhhd3RlIERWIFNTTCBDQSAt
+IEcyMB4XDTE2MTAxNzAwMDAwMFoXDTE3MTAxNzIzNTk1OVowFzEVMBMGA1UEAwwM
+cHJvZWt0b24uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA238E
+5cBm1jMl1fkQycKHldWwUxjq0xIRKo21ma4l/TBW3EzErh56vJ9PWFhJH7VH77Lj
+IRfxtyA+a7Zja+DJdvkKfWpMubK0SNzi8C3E+wW7J/G9rOCmFWM7SrVaEFX+jltr
+axH396UgBlT8jkg035OCsGzQ/OefbLRTriDG9OQFG+vTSNv7XqUKM0hE8ilBoPnV
+wGuJdUinedV3cPSPU5AKZwnDRjjQ6o5eFj9evEl+3woB1/jFdY2ia4dywUQAU8op
++VXIXnbC2V1UtoZD5BVTq3QTmol7vwmiV5OiwAdzHuBdhjg0tIdJYWV++ux2pegx
+nKeC2lETR0g94b4xzwIDAQABo4ICiDCCAoQwKQYDVR0RBCIwIIIMcHJvZWt0b24u
+Y29tghB3d3cucHJvZWt0b24uY29tMAkGA1UdEwQCMAAwKwYDVR0fBCQwIjAgoB6g
+HIYaaHR0cDovL3RuLnN5bWNiLmNvbS90bi5jcmwwbgYDVR0gBGcwZTBjBgZngQwB
+AgEwWTAmBggrBgEFBQcCARYaaHR0cHM6Ly93d3cudGhhd3RlLmNvbS9jcHMwLwYI
+KwYBBQUHAgIwIwwhaHR0cHM6Ly93d3cudGhhd3RlLmNvbS9yZXBvc2l0b3J5MB8G
+A1UdIwQYMBaAFJ+4wals8vXAIiqU7VyZrNTs18YHMA4GA1UdDwEB/wQEAwIFoDAd
+BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwVwYIKwYBBQUHAQEESzBJMB8G
+CCsGAQUFBzABhhNodHRwOi8vdG4uc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRw
+Oi8vdG4uc3ltY2IuY29tL3RuLmNydDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1
+AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyIjT0RxM227L7MAAABV9LcAU0AAAQDAEYw
+RAIgFd7a+xUZEjUGM+SpPqmXOEukP2Jb3rdV5yISRmbLMW4CIDMaUjjNJCVf64I5
+PAD4ucUK1janHsflLZ+jQtKr0IXaAHcAaPaY+B9kgr46jO65KB1M/HFRXWeT1ETR
+Cmesu09P+8QAAAFX0twBdgAABAMASDBGAiEAyQ5A3wICl8YnLpyTgXjLVPAeHpKF
+fBd+inhL2CZp1egCIQDV9fLkNfVpMTFbNKVZXu8gyfG3dpJQrbCzE3FBd9JJqzAN
+BgkqhkiG9w0BAQsFAAOCAQEAcafiWP81zgV8XQNFI4yfl2LK6om+VpxeOJzrmlXO
+9un96OoP0S4gPav/x75+tq9PBslVFXuB3usEL3io9gX/hBWtrp9Z1ItAnYJ+XTup
+8YbRP+GharJduJyLOYtwJrJDGiYFV4dRct/OqgYGzOpAbX8ty8TA8suY7ovLnlgQ
+pLnZ8qpvlQbZxKay2ThwUcP7pWLoCb2Sgrf4N05Ua7pFSklw0gE2qeur2lEl8aYv
+qd02mqEJY17gRe7Jl2OF+2V47PEiZ23zAzTxgvwODt77OkwbeoQf8MB3E7LwOX6k
+kVCYqpzc6geWsU2l7EqpngUSV/AD3gupmRdWOkCMW0LqKg==
+-----END CERTIFICATE-----
diff --git a/ssl/nic.ru/root_pem_thawte_ssl123_1.crt b/ssl/nic.ru/root_pem_thawte_ssl123_1.crt
new file mode 100644
index 0000000..190d3fb
--- /dev/null
+++ b/ssl/nic.ru/root_pem_thawte_ssl123_1.crt
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
+qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
+BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
+NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
+LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
+A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
+W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
+3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
+6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
+Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
+NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
+r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
+DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
+YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
+xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
+/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
+LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
+jVaMaA==
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/templates/partials/base.html b/templates/partials/base.html
index d3d09ef..5a036e3 100644
--- a/templates/partials/base.html
+++ b/templates/partials/base.html
@@ -33,7 +33,7 @@
-
+
@@ -100,7 +100,13 @@
if ((queryString.indexOf('/chat') != 0) && (queryString.indexOf('/users/contractor-office/work-projects') != 0)) {
domain = domain.replace(':' + port, '');
- var url = 'ws://' + domain + '/chat/' + userId + '/';
+ if (window.location.protocol == 'https:') {
+ var ws = "wss://";
+ } else {
+ var ws = "ws://";
+ }
+
+ var url = ws + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url);
var intervalId;
sock.onopen = function () {
diff --git a/users/forms.py b/users/forms.py
index f9a4744..b1a3c19 100644
--- a/users/forms.py
+++ b/users/forms.py
@@ -108,6 +108,21 @@ class UserProfileBasicInfoEditForm(forms.ModelForm):
super().__init__(*args, **kwargs)
+class UserProfileExperienceEditForm(UserProfileBasicInfoEditForm):
+ class Meta:
+ model = User
+
+ fields = (
+ 'contractor_specializations',
+ 'first_name',
+ 'last_name',
+ 'location',
+ 'patronym',
+ 'contractor_building_classifications',
+ 'contractor_construction_types',
+ )
+
+
class UserFinancialInfoEditForm(forms.ModelForm):
class Meta:
model = UserFinancialInfo
diff --git a/users/migrations/0019_auto_20161014_2337.py b/users/migrations/0019_auto_20161014_2337.py
new file mode 100644
index 0000000..b487963
--- /dev/null
+++ b/users/migrations/0019_auto_20161014_2337.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-10-15 15:37
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import mptt.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('projects', '0046_merge'),
+ ('users', '0018_auto_20160913_0215'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='user',
+ name='contractor_building_classifications',
+ field=mptt.fields.TreeManyToManyField(blank=True, related_name='contractors', to='projects.BuildingClassfication'),
+ ),
+ migrations.AddField(
+ model_name='user',
+ name='contractor_construction_types',
+ field=models.ManyToManyField(blank=True, related_name='contractors', to='projects.ConstructionType'),
+ ),
+ ]
diff --git a/users/migrations/0020_merge.py b/users/migrations/0020_merge.py
new file mode 100644
index 0000000..79dde87
--- /dev/null
+++ b/users/migrations/0020_merge.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-10-17 22:15
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('users', '0019_auto_20161014_2337'),
+ ('users', '0019_user_is_staff'),
+ ]
+
+ operations = [
+ ]
diff --git a/users/models.py b/users/models.py
index df0ec7b..2e7ac84 100644
--- a/users/models.py
+++ b/users/models.py
@@ -133,6 +133,10 @@ class User(AbstractBaseUser, PermissionsMixin):
contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True)
contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True)
contractor_status = models.CharField(default='free', max_length=20, choices=STATUSES)
+ contractor_building_classifications = TreeManyToManyField('projects.BuildingClassfication',
+ related_name='contractors', blank=True)
+ contractor_construction_types = models.ManyToManyField('projects.ConstructionType', related_name='contractors',
+ blank=True)
created = models.DateTimeField(default=timezone.now)
cro = models.BooleanField(default=False)
date_joined = models.DateTimeField(default=timezone.now)
diff --git a/users/templates/user_financial_info_edit.html b/users/templates/user_financial_info_edit.html
index 60eefc6..5ffb2d5 100644
--- a/users/templates/user_financial_info_edit.html
+++ b/users/templates/user_financial_info_edit.html
@@ -112,6 +112,9 @@
diff --git a/users/templates/user_profile_edit.html b/users/templates/user_profile_edit.html
index 684f46a..d88cf7e 100644
--- a/users/templates/user_profile_edit.html
+++ b/users/templates/user_profile_edit.html
@@ -21,7 +21,7 @@