From 73471e1b3ce101b06bb824311d2ef1c3b5a24837 Mon Sep 17 00:00:00 2001 From: PekopT Date: Sat, 15 Oct 2016 04:33:01 +0300 Subject: [PATCH] fixes --- archilance/settings/base.py | 2 +- assets/css/main.css | 4 +- assets/index.js | 58 ++++++++++++--------- projects/models.py | 9 ++-- projects/templates/_trash/project_form.html | 15 +++--- specializations/admin.py | 4 +- specializations/serializers.py | 2 +- users/migrations/0019_user_is_staff.py | 20 +++++++ users/models.py | 7 +-- 9 files changed, 73 insertions(+), 48 deletions(-) create mode 100644 users/migrations/0019_user_is_staff.py diff --git a/archilance/settings/base.py b/archilance/settings/base.py index ff03ede..e61ea09 100644 --- a/archilance/settings/base.py +++ b/archilance/settings/base.py @@ -173,8 +173,8 @@ AUTHENTICATION_BACKENDS = ( 'social.backends.vk.VKOAuth2', 'social.backends.odnoklassniki.OdnoklassnikiOAuth2', 'social.backends.mailru.MailruOAuth2', - # 'django.contrib.auth.backends.ModelBackend', 'users.backend.EmailOrUsernameModelBackend', + 'django.contrib.auth.backends.ModelBackend', ) # SOCIAL_AUTH_FACEBOOK_KEY = '222531191461451' diff --git a/assets/css/main.css b/assets/css/main.css index aad0124..7422889 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -5996,10 +5996,10 @@ a.linkS2[data-target="#withdraw-money"]{ line-height: 15px; } .tooltip.top{ - margin-top: 0px; + margin-top: 0; } .changeBlock { - min-height: 450px; + min-height: 500px; display: table; padding: 143px 20px 120px 20px; } diff --git a/assets/index.js b/assets/index.js index cbe510c..915f5c4 100644 --- a/assets/index.js +++ b/assets/index.js @@ -1,10 +1,10 @@ // Constants ----------------------------------------------- -var API_PAGE_SIZE = 100 -var LIVE_IMAGE_UPLOAD_URL = '/common/live-image-upload/create/' -var STUB_IMAGE_URL = '/static/img/profile.jpg' - +var API_PAGE_SIZE = 100; +var LIVE_IMAGE_UPLOAD_URL = '/common/live-image-upload/create/'; +var STUB_IMAGE_URL = '/static/img/profile.jpg'; +var DEFAULT_WORK_TYPE = 403; // Plugins init -------------------------------------------- @@ -90,32 +90,32 @@ $('[data-tooltip]').tooltip({ var $workTypeSelect = $container.find('.-project-work-type-select-field').first() if (!_.isEmpty($workTypeSelect)) { - var workTypeId = Number($workTypeSelect.find('option:selected').first().val()) || 1 + var workTypeId = Number($workTypeSelect.find('option:selected').first().val()) || DEFAULT_WORK_TYPE; $workTypeSelect.on('change', function($evt) { var $that = $(this) var workTypeId = Number($that.val()) reinitSpecializationsByWorkType(specSelects, workTypeId).then(function(rootSpec) { - updateSpecializationWidgets(rootSpec.id, $container, $chosenSpecId, specSelects) + updateSpecializationWidgets(workTypeId, $container, $chosenSpecId, specSelects) }) }) } else { var $workTypeRadios = $container.find('.-project-work-type-radios-container').first().find('input[type=radio]') if (!_.isEmpty($workTypeRadios)) { - var workTypeId = Number($workTypeRadios.filter(':checked').val()) || 1 + var workTypeId = Number($workTypeRadios.filter(':checked').val()) || DEFAULT_WORK_TYPE; $workTypeRadios.on('change', function($evt) { var $that = $(this) var workTypeId = Number($that.val()) reinitSpecializationsByWorkType(specSelects, workTypeId).then(function(rootSpec) { - updateSpecializationWidgets(rootSpec.id, $container, $chosenSpecId, specSelects) + updateSpecializationWidgets(workTypeId, $container, $chosenSpecId, specSelects) }) }) } else { - var workTypeId = 1 + var workTypeId = DEFAULT_WORK_TYPE; } } @@ -142,29 +142,35 @@ $('[data-tooltip]').tooltip({ function reinitSpecializationsByWorkType(specSelects, workTypeId) { - return $.get('/api/specializations/?parent__name=_root') + return $.get('/api/specializations/?parent__id='+workTypeId) .then(function(res) { - var rootSpecs = res.results - + var rootSpecs = res.results; + console.log('workTypeId', workTypeId) if (workTypeId == null) { - var url = '/api/specializations/' - var specId = null + var url = '/api/specializations/'; + // var specId = null } else { - var rootSpec = ({1: rootSpecs[0], 2: rootSpecs[1], 3: rootSpecs[2]})[workTypeId] - var specId = rootSpec.id + var specializations = {}; + $.each(rootSpecs, function(key, spec) { + specializations[spec.id] = spec; + }); + // var rootSpec = specializations[workTypeId]; + var rootSpec = rootSpecs[0].parent; + console.log('rootSpec', rootSpec); + // var specId = rootSpec.id var url = format('/api/specializations/?lft__gte=%s&rght__lte=%s', rootSpec.lft, rootSpec.rght) } - specSelects[0].select2(_.merge(specSelectOptions, {ajax: {url: url}})) - specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: null}})) - specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: null}})) - specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: null}})) + specSelects[0].select2(_.merge(specSelectOptions, {ajax: {url: url}})); + specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: null}})); + specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: null}})); + specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: null}})); // TODO: Hardcoded: - specSelects[0].select2('container').closest('.-single-spec-select').css('display', workTypeId === 2 ? 'none' : 'block') - specSelects[1].select2('container').closest('.-single-spec-select').find('.-dynamic-label').first().text(workTypeId === 2 ? 'Перечень услуг' : 'Стадия проекта') + // specSelects[0].select2('container').closest('.-single-spec-select').css('display', workTypeId === 2 ? 'none' : 'block'); + specSelects[1].select2('container').closest('.-single-spec-select').find('.-dynamic-label').first().text(workTypeId === 2 ? 'Перечень услуг' : 'Стадия проекта'); return rootSpec @@ -176,10 +182,10 @@ $('[data-tooltip]').tooltip({ return getSpecializationTree(specId).then(function(specs) { var spec = specs.spec - specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel2}})) - specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel3}})) - specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel4}})) - + specSelects[1].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel2}})); + specSelects[2].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel3}})); + specSelects[3].select2(_.merge(specSelectOptions, {ajax: {url: specs.urlLevel4}})); + var specLevel1 = specs.specLevel1; var specLevel2 = specs.specLevel2; var specLevel3 = specs.specLevel3; diff --git a/projects/models.py b/projects/models.py index 8e1c488..6c9869a 100644 --- a/projects/models.py +++ b/projects/models.py @@ -83,11 +83,7 @@ class Realty(models.Model): class Project(models.Model, HitCountMixin): - WORK_TYPES = ( - (1, 'Проектирование'), - (2, 'Техническое сопровождение'), - # (3, 'Устранение замечаний в проекте'), - ) + WORK_TYPES = tuple([(x.pk, x.name) for x in Specialization.objects.filter(level=1)]) DEAL_TYPES = ( ('secure_deal', 'Безопасная сделка'), # "Безопасная сделка (с резервированием бюджета)" @@ -117,6 +113,9 @@ class Project(models.Model, HitCountMixin): text = models.TextField(blank=True) work_type = models.IntegerField(default=1, choices=WORK_TYPES) + def __init__(self, *args, **kwargs): + super(Project, self).__init__(*args, **kwargs) + def __str__(self): return self.name diff --git a/projects/templates/_trash/project_form.html b/projects/templates/_trash/project_form.html index bb07f8e..1b557fd 100644 --- a/projects/templates/_trash/project_form.html +++ b/projects/templates/_trash/project_form.html @@ -45,15 +45,12 @@

{% trans 'project_stage0' %}:

-
- -

Проектирование

-
- -
- -

Техническое сопровождение

-
+ {% for type in project_form.work_type.choices %} +
+ +

{{ x.1 }}

+
+ {% endfor %}
+ Добавить раздел diff --git a/specializations/admin.py b/specializations/admin.py index 7eff347..a2be00a 100644 --- a/specializations/admin.py +++ b/specializations/admin.py @@ -6,7 +6,9 @@ from .models import Specialization class SpecializationAdmin(MPTTModelAdmin): readonly_fields = ('pk', 'lft', 'rght', 'tree_id', 'level') - list_display = ('pk', 'name', 'order') + list_display = ('pk', 'name', 'order', 'level', 'parent') + list_filter = ('level', ) + def get_queryset(self, request): qs = super(SpecializationAdmin, self).get_queryset(request) diff --git a/specializations/serializers.py b/specializations/serializers.py index 594f471..a615eb9 100755 --- a/specializations/serializers.py +++ b/specializations/serializers.py @@ -30,7 +30,7 @@ class SpecializationSerializer(ModelSerializer): fields = ( 'children', 'parent', - 'projects', + # 'projects', 'id', 'level', diff --git a/users/migrations/0019_user_is_staff.py b/users/migrations/0019_user_is_staff.py new file mode 100644 index 0000000..8049eaf --- /dev/null +++ b/users/migrations/0019_user_is_staff.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-10-15 00:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0018_auto_20160913_0215'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='is_staff', + field=models.BooleanField(default=False), + ), + ] diff --git a/users/models.py b/users/models.py index 7759dbc..df0ec7b 100644 --- a/users/models.py +++ b/users/models.py @@ -142,6 +142,7 @@ class User(AbstractBaseUser, PermissionsMixin): first_name = models.CharField(max_length=255, blank=True) gender = models.CharField(max_length=30, choices=GENDERS, blank=True, null=True) is_active = models.BooleanField(default=True) + is_staff = models.BooleanField(default=False) last_name = models.CharField(max_length=255, blank=True) last_time_visit = models.DateTimeField(default=timezone.now) location = TreeForeignKey('common.Location', related_name='users', null=True, blank=True) @@ -162,9 +163,9 @@ class User(AbstractBaseUser, PermissionsMixin): elif self.location.level == 1: return self.location.name - @property - def is_staff(self): - return self.is_superuser + # @property + # def is_staff(self): + # return self.is_superuser def __str__(self): return self.email