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 @@
Общая информация Финансовая информация + {% if request.user.is_contractor %} + Опыт + {% endif %}
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 @@
-
+ {% csrf_token %} {% if request.user.is_customer %} @@ -110,80 +110,106 @@
-
-
Дата рождения
-
Пол
-
Статус
-
- -
-
- {{ form.date_of_birth }} + {% if request.experience_edit %} +
+
Классификация зданий
+
Виды строительства
- -
- {% for id, text in form.gender.field.choices %} - - -

{{ text }}    

- {% endfor %} + +
+
+ {{ form.contractor_building_classifications }} +
+ +
+ {{ form.contractor_construction_types }} +
- -
- {{ form.contractor_status }} + + -
- -
-
Сайт
-
Skype
-
Телефон
-
Второй телефон
-
- -
-
- + {% else %} +
+
Дата рождения
+
Пол
+
Статус
- -
- + +
+
+ {{ form.date_of_birth }} +
+ +
+ {% for id, text in form.gender.field.choices %} + + +

{{ text }}    

+ {% endfor %} +
+ +
+ {{ form.contractor_status }} +
- -
- + +
+
Сайт
+
Skype
+
Телефон
+
Второй телефон
- -
- + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
-
- -
-
- -

Есть допуск СРО

+ +
+
+ +

Есть допуск СРО

+
-
- - + + + {% endif %}
diff --git a/users/urls.py b/users/urls.py index 4fdd564..1bf8480 100755 --- a/users/urls.py +++ b/users/urls.py @@ -27,6 +27,8 @@ urlpatterns = [ urls.url(r'^(?P\d+)/financial-info/edit/$', UserFinancialInfoEditView.as_view(), name='user-financial-info-edit'), + urls.url(r'^(?P\d+)/experience/edit/$', UserProfileEditView.as_view(), name='user-experience-edit'), + urls.url(r'^customers/(?P\d+)/$', CustomerProfileOpenProjectsView.as_view(), name='customer-profile-open-projects'), urls.url(r'^customers/(?P\d+)/trashed-projects/$', CustomerProfileTrashedProjectsView.as_view(), diff --git a/users/views.py b/users/views.py index 0cfddbe..a3add17 100644 --- a/users/views.py +++ b/users/views.py @@ -36,6 +36,7 @@ from .forms import ( UserFinancialInfoEditForm, UserProfileBasicInfoEditForm, UserProfileEditForm, + UserProfileExperienceEditForm, ) @@ -44,6 +45,11 @@ class UserProfileEditView(BaseMixin, View): template_name = 'user_profile_edit.html' def dispatch(self, request, *args, **kwargs): + if request.resolver_match.url_name == 'user-experience-edit': + if not request.user.is_contractor(): + raise PermissionDenied + self.form_class = UserProfileExperienceEditForm + request.experience_edit = True if request.user.is_authenticated() and request.user.pk == int(kwargs.get('pk')): return super().dispatch(request, *args, **kwargs) else: @@ -238,10 +244,12 @@ class ContractorFilterView(BaseMixin, View): contractors = contractors.filter(orders__project__work_type=work_type) if build_classif: - contractors = contractors.filter(orders__project__realty__building_classification=build_classif) - + contractors = contractors.filter(Q(orders__project__realty__building_classification=build_classif) | + Q(contractor_building_classifications=build_classif)) + if constr_type: - contractors = contractors.filter(orders__project__realty__construction_type=constr_type) + contractors = contractors.filter(Q(orders__project__realty__construction_type=constr_type) | + Q(contractor_construction_types=constr_type)) if get_teams: teams = Team.objects.all() diff --git a/wallets/templates/score-detail.html b/wallets/templates/score-detail.html index 9a9d862..1162505 100644 --- a/wallets/templates/score-detail.html +++ b/wallets/templates/score-detail.html @@ -2,6 +2,29 @@ {% load staticfiles %} {% load thumbnail %} + +{% block head_css %} + +{% endblock %} + {% block content %} @@ -113,7 +136,7 @@
- + diff --git a/yvnu26bm.htm b/yvnu26bm.htm new file mode 100644 index 0000000..d49a3e0 --- /dev/null +++ b/yvnu26bm.htm @@ -0,0 +1 @@ +e3zWZQbN7tVPtRzgjqnq \ No newline at end of file
Дата