remotes/origin/PR-39
Andrey Baydashkin 9 years ago
parent 3a5d3bd15a
commit 0e2af5ffa3
  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. 148
      users/templates/user_profile_edit.html
  7. 1
      users/urls.py
  8. 12
      users/views.py

@ -311,8 +311,10 @@ $('[data-tooltip]').tooltip({
}()) }())
// Contractor experience -------------------------------
$('.profile-building-classifications select').select2({width: 450, placeholder: 'Выберите типы зданий'});
$('.profile-construction-types select').select2({width: 450, placeholder: 'Выберите виды строительства'});

@ -104,6 +104,21 @@ class UserProfileBasicInfoEditForm(forms.ModelForm):
super().__init__(*args, **kwargs) 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 UserFinancialInfoEditForm(forms.ModelForm):
class Meta: class Meta:
model = UserFinancialInfo 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'),
),
]

@ -129,6 +129,10 @@ class User(AbstractBaseUser, PermissionsMixin):
contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True) contractor_resume = models.OneToOneField(ContractorResume, related_name='contractor', blank=True, null=True)
contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True) contractor_specializations = TreeManyToManyField(Specialization, related_name='contractors', blank=True)
contractor_status = models.CharField(default='free', max_length=20, choices=STATUSES) 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) created = models.DateTimeField(default=timezone.now)
cro = models.BooleanField(default=False) cro = models.BooleanField(default=False)
date_joined = models.DateTimeField(default=timezone.now) date_joined = models.DateTimeField(default=timezone.now)

@ -112,6 +112,9 @@
<div class="btn-group valProject valProject2" role="group"> <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-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> <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>
</div> </div>

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

@ -28,6 +28,7 @@ app_name = 'users'
urlpatterns = [ urlpatterns = [
urls.url(r'^(?P<pk>\d+)/edit/$', UserProfileEditView.as_view(), name='user-profile-edit'), urls.url(r'^(?P<pk>\d+)/edit/$', UserProfileEditView.as_view(), name='user-profile-edit'),
urls.url(r'^(?P<pk>\d+)/financial-info/edit/$', UserFinancialInfoEditView.as_view(), name='user-financial-info-edit'), 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+)/$', CustomerProfileOpenProjectsView.as_view(), name='customer-profile-open-projects'),
urls.url(r'^customers/(?P<pk>\d+)/trashed-projects/$', CustomerProfileTrashedProjectsView.as_view(), name='customer-profile-trashed-projects'), urls.url(r'^customers/(?P<pk>\d+)/trashed-projects/$', CustomerProfileTrashedProjectsView.as_view(), name='customer-profile-trashed-projects'),

@ -39,6 +39,7 @@ from .forms import (
UserFinancialInfoEditForm, UserFinancialInfoEditForm,
UserProfileBasicInfoEditForm, UserProfileBasicInfoEditForm,
UserProfileEditForm, UserProfileEditForm,
UserProfileExperienceEditForm,
) )
@ -47,6 +48,11 @@ class UserProfileEditView(BaseMixin, View):
template_name = 'user_profile_edit.html' template_name = 'user_profile_edit.html'
def dispatch(self, request, *args, **kwargs): 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')): if request.user.is_authenticated() and request.user.pk == int(kwargs.get('pk')):
return super().dispatch(request, *args, **kwargs) return super().dispatch(request, *args, **kwargs)
else: else:
@ -239,10 +245,12 @@ class ContractorFilterView(BaseMixin, View):
contractors = contractors.filter(orders__project__work_type=work_type) contractors = contractors.filter(orders__project__work_type=work_type)
if build_classif: 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: 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: if get_teams:
teams = Team.objects.all() teams = Team.objects.all()

Loading…
Cancel
Save