remotes/origin/PR-39
Mukhtar 9 years ago
commit cd5f8e018f
  1. 338
      archilance/management/commands/fill_locations.py
  2. 4
      archilance/urls.py
  3. 4
      assets/index.js
  4. 7
      assets/js/chat.js
  5. 17
      common/templates/printorder_detail.html
  6. 8
      projects/admin.py
  7. 33
      projects/templates/project_detail.html
  8. 0
      robots/robots.txt
  9. 28
      ssl/nic.ru/intermediate_pem_thawte_ssl123_1.crt
  10. 87
      ssl/nic.ru/proekton.crt
  11. 32
      ssl/nic.ru/proekton_com_2017_10_18.crt
  12. 25
      ssl/nic.ru/root_pem_thawte_ssl123_1.crt
  13. 10
      templates/partials/base.html
  14. 15
      users/forms.py
  15. 27
      users/migrations/0019_auto_20161014_2337.py
  16. 16
      users/migrations/0020_merge.py
  17. 4
      users/models.py
  18. 3
      users/templates/user_financial_info_edit.html
  19. 148
      users/templates/user_profile_edit.html
  20. 2
      users/urls.py
  21. 14
      users/views.py
  22. 25
      wallets/templates/score-detail.html
  23. 1
      yvnu26bm.htm

@ -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)

@ -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:

@ -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: 'Выберите виды строительства'});

@ -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 () {

@ -1 +1,16 @@
<h1>{{ object }}</h1>
{% extends 'partials/base.html' %}
{% load staticfiles %}
{% load thumbnail %}
{% block content %}
{% include 'partials/header.html' %}
<div class="container">
<div class="row">
<h1>Заявка на распечатку принята</h1>
{% include 'partials/footer.html' %}
</div>
</div>
{% endblock %}

@ -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)

@ -117,21 +117,28 @@
{{ project.text|linebreaksbr }}
</p>
</div>
br
<div class="col-lg-10 col-lg-offset-1" style="margin-top: 15px;">
<br>
{% if project.files.all|length %}
<div class="col-lg-10 col-lg-offset-1" style="margin-top: 15px;margin-left:150px;margin-bottom: 15px;">
Приложенные файлы ( {{ project.files.all|length }} ):
<ul>
{% for file in project.files.all %}
<li class="existing-file-widget">
{% if request.user.is_authenticated %}
<a href="{{ file }}" class="file-upload-label">
{% endif %}
<p class="textProIn">
Приложенные файлы:
{{ file.file.name|basename }} {{ file.file.size|filesizeformat }}
{% for file in project.files.all %}
<li class="existing-file-widget">
<a href="{{ file }}"
class="file-upload-label">{{ file.file.name|basename }} {{ file.file.size|filesizeformat }}</a>
</li>
{% endfor %}
</p>
</div>
{% if request.user.is_authenticated %}
</a>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="col-lg-10 col-lg-offset-1">
{% if request.user.is_contractor and not answer %}

@ -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-----

@ -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-----

@ -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-----

@ -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-----

@ -33,7 +33,7 @@
<link rel="icon" href="{% static 'img/favicon.jpg' %}" type="image/x-icon">
<link rel="shortcut icon" href="{% static 'img/favicon50.jpg' %}" type="image/x-icon">
<link rel="apple-touch-icon" href="{% static 'img/favicon128.jpg' %}" sizes="128x128" >
<link rel="apple-touch-icon" href="{% static 'img/favicon128.jpg' %}" sizes="128x128">
<link rel="icon" type="image/png" href="{% static 'img/favicon50.jpg' %}" sizes="32x32">
<link rel="icon" type="image/png" href="{% static 'img/favicon18.jpg' %}" sizes="16x16">
@ -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 () {

@ -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

@ -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'),
),
]

@ -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 = [
]

@ -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)

@ -112,6 +112,9 @@
<div class="btn-group valProject valProject2" role="group">
<a href="{% url 'users:user-profile-edit' pk=pk %}" class="btn btn-default">Общая информация</a>
<a href="{% url 'users:user-financial-info-edit' pk=pk %}" class="btn btn-default active">Финансовая информация</a>
{% if request.user.is_contractor %}
<a href="{% url 'users:user-experience-edit' pk=pk %}" class="btn btn-default">Опыт</a>
{% endif %}
</div>
</div>

@ -21,7 +21,7 @@
<div class="container mainScore">
<div class="row">
<form action="{% url 'users:user-profile-edit' pk=pk %}" method="POST" enctype="multipart/form-data" novalidate>
<form method="POST" enctype="multipart/form-data" novalidate>
{% csrf_token %}
{% if request.user.is_customer %}
@ -110,80 +110,106 @@
<div class="buttonGP btn-edit disTab">
<div class="btn-group valProject valProject2" role="group">
<a href="{% url 'users:user-profile-edit' pk=pk %}" class="btn btn-default active">Общая информация</a>
<a href="{% url 'users:user-profile-edit' pk=pk %}"
class="btn btn-default {% if not request.experience_edit %}active{% endif %}">Общая информация</a>
<a href="{% url 'users:user-financial-info-edit' pk=pk %}" class="btn btn-default">Финансовая информация</a>
{% if request.user.is_contractor %}
<a href="{% url 'users:user-experience-edit' pk=pk %}"
class="btn btn-default {% if request.experience_edit %}active{% endif %}">Опыт</a>
{% endif %}
</div>
</div>
<div class="col-lg-12 col12 new-filter">
<div class="filter clearfix">
<div class="titleF1 disTab">
<div class="col-lg-3">Дата рождения</div>
<div class="col-lg-3">Пол</div>
<div class="col-lg-3">Статус</div>
</div>
<div class="polsF1 disTab">
<div class="col-lg-3 birth_edit_dat">
{{ form.date_of_birth }}
{% if request.experience_edit %}
<div class="titleF1 disTab">
<div class="col-lg-6">Классификация зданий</div>
<div class="col-lg-6">Виды строительства</div>
</div>
<div class="col-lg-3 dog-new ed-new">
{% for id, text in form.gender.field.choices %}
<label>
<input
type="radio"
name="{{ form.gender.html_name }}"
value="{{ id }}"
{% if form.gender.value == id %}checked{% endif %}>
<span></span>
</label>
<p>{{ text }}&nbsp;&nbsp;&nbsp;&nbsp;</p>
{% endfor %}
<div class="polsF1 disTab new-doubt">
<div class="col-lg-6 profile-building-classifications">
{{ form.contractor_building_classifications }}
</div>
<div class="col-lg-6 profile-construction-types">
{{ form.contractor_construction_types }}
</div>
</div>
<div class="col-lg-3">
{{ form.contractor_status }}
<div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить">
</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" name="{{ form.website.html_name }}" value="{{ form.website.value }}" class="box-sizing surr surr2" placeholder="beeg.com">
{% else %}
<div class="titleF1 disTab">
<div class="col-lg-3">Дата рождения</div>
<div class="col-lg-3">Пол</div>
<div class="col-lg-3">Статус</div>
</div>
<div class="col-lg-3">
<input type="text" name="{{ form.skype.html_name }}" value="{{ form.skype.value }}" class="box-sizing surr surr2" placeholder="nokia770">
<div class="polsF1 disTab">
<div class="col-lg-3 birth_edit_dat">
{{ form.date_of_birth }}
</div>
<div class="col-lg-3 dog-new ed-new">
{% for id, text in form.gender.field.choices %}
<label>
<input
type="radio"
name="{{ form.gender.html_name }}"
value="{{ id }}"
{% if form.gender.value == id %}checked{% endif %}>
<span></span>
</label>
<p>{{ text }}&nbsp;&nbsp;&nbsp;&nbsp;</p>
{% endfor %}
</div>
<div class="col-lg-3">
{{ form.contractor_status }}
</div>
</div>
<div class="col-lg-3">
<input type="text" name="{{ form.phone.html_name }}" value="{{ form.phone.value }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02">
<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="col-lg-3">
<input type="text" name="{{ form.phone2.html_name }}" value="{{ form.phone2.value }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02">
<div class="searchF1 polsF1 polsFF polsF3">
<div class="col-lg-3">
<input type="text" name="{{ form.website.html_name }}" value="{{ form.website.value }}" class="box-sizing surr surr2" placeholder="beeg.com">
</div>
<div class="col-lg-3">
<input type="text" name="{{ form.skype.html_name }}" value="{{ form.skype.value }}" class="box-sizing surr surr2" placeholder="nokia770">
</div>
<div class="col-lg-3">
<input type="text" name="{{ form.phone.html_name }}" value="{{ form.phone.value }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02">
</div>
<div class="col-lg-3">
<input type="text" name="{{ form.phone2.html_name }}" value="{{ form.phone2.value }}" class="box-sizing surr surr2" placeholder="+7 999 999 44 02">
</div>
</div>
</div>
<div class="col-lg-12">
<div class="col-lg-12 make-new make-eed">
<label>{{ form.cro }}<span></span></label>
<p>Есть допуск СРО</p>
<div class="col-lg-12">
<div class="col-lg-12 make-new make-eed">
<label>{{ form.cro }}<span></span></label>
<p>Есть допуск СРО</p>
</div>
</div>
</div>
<div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить">
</div>
<div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить">
</div>
{% endif %}
</div>
</div>
</form>

@ -27,6 +27,8 @@ urlpatterns = [
urls.url(r'^(?P<pk>\d+)/financial-info/edit/$', UserFinancialInfoEditView.as_view(),
name='user-financial-info-edit'),
urls.url(r'^(?P<pk>\d+)/experience/edit/$', UserProfileEditView.as_view(), name='user-experience-edit'),
urls.url(r'^customers/(?P<pk>\d+)/$', CustomerProfileOpenProjectsView.as_view(),
name='customer-profile-open-projects'),
urls.url(r'^customers/(?P<pk>\d+)/trashed-projects/$', CustomerProfileTrashedProjectsView.as_view(),

@ -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()

@ -2,6 +2,29 @@
{% load staticfiles %}
{% load thumbnail %}
{% block head_css %}
<style>
@media print {
footer, button, a, p, .wrTop, .titleScore, .triangle1 {
display: none !important;
}
.row {
border: 0 !important;
}
.col-lg-12 {
padding: 0;
}
.scoreButtons table {
width: 94% !important;
}
}
</style>
{% endblock %}
{% block content %}
@ -113,7 +136,7 @@
</div>
</div>
<button type="button" class="print-score" onClick="window.print()">Распечатать</button>
<table>
<tr>
<th>Дата</th>

@ -0,0 +1 @@
e3zWZQbN7tVPtRzgjqnq
Loading…
Cancel
Save