#ARC-11 #ARC-4

remotes/origin/setup
ArturBaybulatov 10 years ago
parent 5d06b0e51d
commit d530365022
  1. 18
      users/forms.py
  2. 4
      users/models.py
  3. 171
      users/templates/user_financial_info_edit.html
  4. 2
      users/templates/user_profile_edit.html
  5. 56
      users/views.py

@ -41,6 +41,24 @@ class UserProfileEditForm(forms.ModelForm):
super().__init__(*args, **kwargs)
class UserProfileBasicInfoEditForm(forms.ModelForm):
class Meta:
model = User
fields = (
'avatar',
'contractor_specializations',
'first_name',
'last_name',
'location',
'patronym',
)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super().__init__(*args, **kwargs)
class UserFinancialInfoEditForm(forms.ModelForm):
class Meta:
model = UserFinancialInfo

@ -68,10 +68,10 @@ class UserFinancialInfo(models.Model):
residency = models.CharField(max_length=50, choices=RESIDENCIES)
subdivision_code = models.CharField(max_length=10)
yandex_money = models.CharField(max_length=50)
def __str__(self):
return self.fio
class Meta:
verbose_name = 'Финансовая информация'
verbose_name_plural = 'Финансовая информация'

@ -6,73 +6,6 @@
<div class="container mainScore">
<div class="row">
<div class="projectsBlock disTab">
<div class="col-lg-12">
<div class="col-lg-3 divCol3">
<div class="avatar">
<div class="avatarInset">
<img src="img/profile.jpg" alt="profile-image">
</div>
</div>
<div class="menuUser upload-img disTab">
<div class="upload2 up-l1">
<input type="file" name="upload">
<p>Загрузить фотографию</p>
</div>
</div>
</div>
<div class="col-lg-9 divCol9">
<div class="col-lg-4">
<p class="name-edit-p">ФИО:</p>
<input type="text" value="-------" class="box-sizing inp-edit">
<input type="text" value="-------" class="box-sizing inp-edit">
<input type="text" value="-------" class="box-sizing inp-edit">
</div>
<div class="col-lg-4">
<p class="name-edit-p">Специализация:</p>
<div class="polsF1 pols-edit disTab">
<select class="selectpicker4">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
<select class="selectpicker4">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
<a href="javascript:void(0)" class="add-edit">
Добавить еще
</a>
</div>
</div>
<div class="col-lg-4">
<p class="name-edit-p">Местоположение:</p>
<div class="polsF1 pols-edit disTab">
<select class="selectpicker4">
<option>Страна</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
<select class="selectpicker4">
<option>Город</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="buttonGP btn-edit disTab">
<div class="btn-group valProject valProject2" role="group" aria-label="...">
<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>
</div>
</div>
<form action="{% url 'users:user-financial-info-edit' pk=pk %}" method="POST" enctype="multipart/form-data" novalidate>
{% csrf_token %}
@ -82,6 +15,76 @@
<input type="hidden" name="next" value="{% url 'users:contractor-profile' pk=pk %}">
{% endif %}
<div class="projectsBlock disTab">
<div class="col-lg-12">
<div class="col-lg-3 divCol3">
<div class="avatar">
<div class="avatarInset">
<img src="{{ form.avatar.value.url }}" alt="profile-image">
</div>
</div>
<div class="menuUser upload-img disTab">
<div class="upload2 up-l1">
<input type="file" name="{{ form.avatar.html_name }}">
<p>Загрузить фотографию</p>
</div>
</div>
</div>
<div class="col-lg-9 divCol9">
<div class="col-lg-4">
<p class="name-edit-p">ФИО</p>
<input type="text" value="{{ form.last_name.value }}" name="{{ form.last_name.html_name }}" class="box-sizing inp-edit">
<input type="text" value="{{ form.first_name.value }}" name="{{ form.first_name.html_name }}" class="box-sizing inp-edit">
<input type="text" value="{{ form.patronym.value }}" name="{{ form.patronym.html_name }}" class="box-sizing inp-edit">
</div>
{% if request.user.is_contractor %}
<div class="col-lg-4">
<p class="name-edit-p">Специализации</p>
<div id="simpleSpecContainer">
<div class="i polsF1 pols-edit disTab -simple-spec-widget" style="display: none">
<input type="hidden" class="-simple-spec-select" style="width: 100%">
<input type="hidden" class="-chosen-simple-spec-id" name="{{ form.contractor_specializations.html_name }}">
</div>
{% for spec_id in form.contractor_specializations.value %}
<div class="polsF1 pols-edit disTab -simple-spec-widget">
<input type="hidden" class="-simple-spec-select" style="width: 100%">
<input type="hidden" class="-chosen-simple-spec-id" name="{{ form.contractor_specializations.html_name }}" value="{{ spec_id }}">
</div>
{% endfor %}
</div>
<a href="#" onclick="return false" class="add-edit" id="addSpec">
Добавить еще
</a>
</div>
{% endif %}
<div class="col-lg-4">
<p class="name-edit-p">Местоположение</p>
<div class="polsF1 pols-edit disTab">
<div><input type="hidden" class="-location-select -location-select-country" style="width: 100%"></div>
<div><input type="hidden" class="-location-select -location-select-region" style="width: 100%"></div>
<div><input type="hidden" class="-location-select -location-select-city" style="width: 100%"></div>
<input type="hidden" id="chosenLocationId" name="{{ form.location.html_name }}" value="{{ form.location.value }}">
</div>
</div>
</div>
</div>
</div>
<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">Общая информация</a>
<a href="{% url 'users:user-financial-info-edit' pk=pk %}" class="btn btn-default active">Финансовая информация</a>
</div>
</div>
<div class="col-lg-12 col12 new-filter">
<div class="filter clearfix">
<div class="titleF1 disTab">
@ -92,13 +95,13 @@
<div class="polsF1 disTab">
<div class="col-lg-6">
<input type="text" class="searchInp box-sizing" value="{{ form.fio.value }}" name="{{ form.fio.name }}">
<input type="text" class="searchInp box-sizing" value="{{ fin_info_form.fio.value }}" name="{{ fin_info_form.fio.html_name }}">
</div>
<div class="col-lg-3">
<input type="text" class="box-sizing surr surr2" value="{{ form.date_of_birth.value }}" name="{{ form.date_of_birth.name }}">
<input type="text" class="box-sizing surr surr2" value="{{ fin_info_form.date_of_birth.value }}" name="{{ fin_info_form.date_of_birth.html_name }}">
</div>
<div class="col-lg-3">
<input type="text" class="box-sizing surr surr2" value="{{ form.phone.value }}" name="{{ form.phone.name }}">
<input type="text" class="box-sizing surr surr2" value="{{ fin_info_form.phone.value }}" name="{{ fin_info_form.phone.html_name }}">
</div>
</div>
@ -107,9 +110,9 @@
</div>
<div class="searchF1 polsF1 polsFF radio-afer">
{% for residency in form.residency %}
{% for residency in fin_info_form.residency %}
<div class="col-lg-3">
<label><input type="radio" value="{{ residency.choice_value }}" name="{{ form.residency.name }}" {% if residency.choice_value|stringformat:"s" == form.instance.residency|stringformat:"s" %}checked{% endif %}><span></span></label>
<label><input type="radio" value="{{ residency.choice_value }}" name="{{ fin_info_form.residency.html_name }}" {% if residency.choice_value|stringformat:"s" == fin_info_form.instance.residency|stringformat:"s" %}checked{% endif %}><span></span></label>
<p class="text-afer">
{{ residency.choice_label }}
</p>
@ -122,9 +125,9 @@
</div>
<div class="searchF1 polsF1 polsFF radio-afer new-doubt">
{% for lstatus in form.legal_status %}
{% for lstatus in fin_info_form.legal_status %}
<div class="col-lg-3">
<label><input value="{{ lstatus.choice_value }}" type="radio" name="{{ form.legal_status.name }}" {% if lstatus.choice_value|stringformat:"s" == form.instance.legal_status|stringformat:"s" %}checked{% endif %}><span></span></label>
<label><input value="{{ lstatus.choice_value }}" type="radio" name="{{ fin_info_form.legal_status.html_name }}" {% if lstatus.choice_value|stringformat:"s" == fin_info_form.instance.legal_status|stringformat:"s" %}checked{% endif %}><span></span></label>
<p class="text-afer">
{{ lstatus.choice_label }}
</p>
@ -139,10 +142,10 @@
<div class="polsF1 disTab new-doubt">
<div class="col-lg-3">
<input type="text" value="{{ form.passport_series.value }}" class="box-sizing surr surr2" name="{{ form.passport_series.name }}" placeholder="КН">
<input type="text" value="{{ fin_info_form.passport_series.value }}" class="box-sizing surr surr2" name="{{ fin_info_form.passport_series.html_name }}" placeholder="КН">
</div>
<div class="col-lg-3">
<input type="text" value="{{ form.passport_number.value }}" class="box-sizing surr surr2" name="{{ form.passport_number.name }}" placeholder="0099321">
<input type="text" value="{{ fin_info_form.passport_number.value }}" class="box-sizing surr surr2" name="{{ fin_info_form.passport_number.html_name }}" placeholder="0099321">
</div>
<div class="col-lg-6">
<input type="text" name="search" class="searchInp box-sizing">
@ -156,10 +159,10 @@
<div class="polsF1 disTab new-doubt">
<div class="col-lg-3">
<input type="text" value="{{ form.subdivision_code.value }}" class="box-sizing surr surr2" placeholder="0033" name="{{ form.subdivision_code.name }}">
<input type="text" value="{{ fin_info_form.subdivision_code.value }}" class="box-sizing surr surr2" placeholder="0033" name="{{ fin_info_form.subdivision_code.html_name }}">
</div>
<div class="col-lg-9">
<input type="text" value="{{ form.passport_issued_by.value }}" class="searchInp box-sizing" name="{{ form.passport_issued_by.name }}">
<input type="text" value="{{ fin_info_form.passport_issued_by.value }}" class="searchInp box-sizing" name="{{ fin_info_form.passport_issued_by.html_name }}">
</div>
</div>
@ -170,7 +173,7 @@
<div class="polsF1 disTab new-doubt">
<div class="col-lg-3">
<input type="text" value="{{ form.passport_issue_date.value }}" name="{{ form.passport_issue_date.name }}" class="box-sizing surr surr2" placeholder="11.12.1994">
<input type="text" value="{{ fin_info_form.passport_issue_date.value }}" name="{{ fin_info_form.passport_issue_date.html_name }}" class="box-sizing surr surr2" placeholder="11.12.1994">
</div>
<div class="col-lg-9">
<input type="text" class="searchInp box-sizing">
@ -186,19 +189,19 @@
<div class="polsF1 disTab new-doubt">
<div class="col-lg-3">
<input type="text" value="{{ form.inn.value }}" class="box-sizing surr surr2" name="{{ form.inn.name }}">
<input type="text" value="{{ fin_info_form.inn.value }}" class="box-sizing surr surr2" name="{{ fin_info_form.inn.html_name }}">
</div>
<div class="col-lg-3">
<input type="text" value="{{ form.yandex_money.value }}" class="box-sizing surr surr2" name="{{ form.yandex_money.name }}">
<input type="text" value="{{ fin_info_form.yandex_money.value }}" class="box-sizing surr surr2" name="{{ fin_info_form.yandex_money.html_name }}">
</div>
<div class="col-lg-3">
<input type="text" value="{{ form.credit_card_number.value }}" class="box-sizing surr surr2" name="{{ form.credit_card_number.name }}">
<input type="text" value="{{ fin_info_form.credit_card_number.value }}" class="box-sizing surr surr2" name="{{ fin_info_form.credit_card_number.html_name }}">
</div>
<div class="col-lg-3">
{{ form.passport_scan.value }}
{{ fin_info_form.passport_scan.value }}
<div class="upload2 up-l1 take-new">
<input type="file" name="{{ form.passport_scan.name }}">
<input type="file" name="{{ fin_info_form.passport_scan.html_name }}">
<p>Прикрепить файл</p>
</div>
</div>

@ -149,7 +149,7 @@
</div>
<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>
</div>

@ -26,6 +26,7 @@ from work_sell.forms import WorkSellForm
from .forms import (
ContractorFilterForm,
CustomerProfileProjectRealtyForm,
UserProfileBasicInfoEditForm,
UserFinancialInfoEditForm,
UserProfileEditForm,
)
@ -62,14 +63,11 @@ class UserProfileEditView(BaseMixin, View):
def post(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
customer = request.user
# Мухтар, смотри, фишечка:
specs = request.POST.getlist('contractor_specializations')
request.POST.setlist('contractor_specializations', _.compact(specs)) # Ignore empty input values
form = self.form_class(request.POST, request.FILES, request=request, instance=customer)
form = self.form_class(request.POST, request.FILES, request=request, instance=request.user)
if form.is_valid():
form.save()
@ -89,7 +87,8 @@ class UserProfileEditView(BaseMixin, View):
class UserFinancialInfoEditView(BaseMixin, View):
form_class = UserFinancialInfoEditForm
form_class = UserProfileBasicInfoEditForm
fin_info_form_class = UserFinancialInfoEditForm
template_name = 'user_financial_info_edit.html'
def dispatch(self, request, *args, **kwargs):
@ -100,25 +99,32 @@ class UserFinancialInfoEditView(BaseMixin, View):
def get(self, request, *args, **kwargs):
context = self.get_context_data(**_.merge({}, request.GET, kwargs))
form = self.form_class(request=request, instance=request.user.financial_info)
context.update({'form': form})
form = self.form_class(request=request, instance=request.user)
fin_info_form = self.fin_info_form_class(request=request, instance=request.user.financial_info, prefix='fin_info')
context.update({
'form': form,
'fin_info_form': fin_info_form,
})
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
form = self.form_class(request.POST, request.FILES, request=request, instance=request.user.financial_info)
# if form.is_valid():
# financical_instance = form.save()
# request.user.contractor_financial_info = financical_instance
# request.user.save()
# messages.info(request, 'Данные успешно отредактированы')
# return redirect(reverse('users:contractor-financical', kwargs={'pk': request.user.pk}))
#
# return render(request, self.template_name, {'form': form})
specs = request.POST.getlist('contractor_specializations')
request.POST.setlist('contractor_specializations', _.compact(specs)) # Ignore empty input values
if form.is_valid():
form.save()
form = self.form_class(request.POST, request.FILES, request=request, instance=request.user)
fin_info_form = self.fin_info_form_class(request.POST, request.FILES, request=request, instance=request.user.financial_info, prefix='fin_info')
if form.is_valid() and fin_info_form.is_valid():
user = form.save()
fin_info = fin_info_form.save()
user.financial_info = fin_info
user.save()
messages.info(request, 'Финансовая информация успешно отредактирована')
redirect_to = request.POST.get('next')
@ -130,7 +136,17 @@ class UserFinancialInfoEditView(BaseMixin, View):
'<pre>{form}</pre>'
).format(form=pformat(form.errors)))
context.update({'form': form})
if fin_info_form.errors:
messages.info(request, (
'<p>Произошла ошибка (fin_info_form)</p>'
'<pre>{form}</pre>'
).format(form=pformat(fin_info_form.errors)))
context.update({
'form': form,
'fin_info_form': fin_info_form,
})
return render(request, self.template_name, context)
@ -458,8 +474,6 @@ class CustomerProfileReviewsView(BaseMixin, View):
customer = get_object_or_404(User.customer_objects, pk=self.kwargs['pk'])
reviews = Review.objects.filter(target_customer=customer)
# import code; code.interact(local=dict(globals(), **locals()))
context.update({
'reviews': reviews,
'customer': customer,

Loading…
Cancel
Save