default < PR-11

remotes/origin/PR-39
PekopT 9 years ago
commit fe7631be20
  1. 4
      assets/index.js
  2. 15
      users/forms.py
  3. 27
      users/migrations/0019_auto_20161014_2337.py
  4. 4
      users/models.py
  5. 3
      users/templates/user_financial_info_edit.html
  6. 30
      users/templates/user_profile_edit.html
  7. 2
      users/urls.py
  8. 12
      users/views.py

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

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

@ -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,13 +110,38 @@
<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">
{% if request.experience_edit %}
<div class="titleF1 disTab">
<div class="col-lg-6">Классификация зданий</div>
<div class="col-lg-6">Виды строительства</div>
</div>
<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="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить">
</div>
{% else %}
<div class="titleF1 disTab">
<div class="col-lg-3">Дата рождения</div>
<div class="col-lg-3">Пол</div>
@ -184,6 +209,7 @@
<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()

Loading…
Cancel
Save