From c0c1b398b11bb46f8ca423fb5304b8dae8056151 Mon Sep 17 00:00:00 2001 From: Mukhtar Date: Fri, 17 Jun 2016 13:39:43 +0300 Subject: [PATCH] #ARC-12 Add user edit form contact --- media/users/contractors/images.jpg | Bin 0 -> 4842 bytes media/users/contractors/images_iusxZEz.jpg | Bin 0 -> 4842 bytes users/admin.py | 5 +- users/forms.py | 39 +++- users/mixins.py | 12 +- .../contractor_financical_info_edit.html | 192 ++++++++++++++++++ users/templates/contractor_profile_edit.html | 18 +- .../contractor_profile_test_edit.html | 11 - users/urls.py | 5 +- users/views.py | 60 ++++-- 10 files changed, 286 insertions(+), 56 deletions(-) create mode 100644 media/users/contractors/images.jpg create mode 100644 media/users/contractors/images_iusxZEz.jpg create mode 100644 users/templates/contractor_financical_info_edit.html delete mode 100644 users/templates/contractor_profile_test_edit.html diff --git a/media/users/contractors/images.jpg b/media/users/contractors/images.jpg new file mode 100644 index 0000000000000000000000000000000000000000..621001e5a8be518f61e9f457488917f11099516d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/media/users/contractors/images_iusxZEz.jpg b/media/users/contractors/images_iusxZEz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..621001e5a8be518f61e9f457488917f11099516d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/users/admin.py b/users/admin.py index 0cc2a0b..eb231f7 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import User, Team +from .models import User, Team, ContractorFinancialInfo class UserAdmin(admin.ModelAdmin): @@ -11,6 +11,5 @@ class UserAdmin(admin.ModelAdmin): return ', '.join(g.name for g in obj.groups.all()) admin.site.register(User, UserAdmin) - - +admin.site.register(ContractorFinancialInfo) admin.site.register(Team) diff --git a/users/forms.py b/users/forms.py index c467235..fffae77 100644 --- a/users/forms.py +++ b/users/forms.py @@ -1,7 +1,8 @@ from django import forms from django.forms import ModelForm -from .models import User +from .models import User, ContractorFinancialInfo + class UserEditForm(ModelForm): @@ -14,5 +15,41 @@ class UserEditForm(ModelForm): 'location', 'date_of_birth', 'website', + 'skype', + ) + + + +class ContractorFinancicalInfoForm(ModelForm): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['residency'].choices = self.fields['residency'].choices[1:] + self.fields['legal_status'].choices = self.fields['legal_status'].choices[1:] + + # self.fields['residency'].empty_label = None + # self.fields['residency'].widget.choices = self.fields['residency'].choices + + class Meta: + model = ContractorFinancialInfo + fields = ( + 'fio', + 'date_of_birth', + 'phone', + 'residency', + 'legal_status', + 'passport_series', + 'passport_number', + 'subdivision_code', + 'passport_issued_by', + 'passport_issue_date', + 'inn', + 'yandex_money', + 'credit_card_number', + 'passport_scan', ) + widgets = { + 'residency': forms.RadioSelect(), + 'legal_status': forms.RadioSelect(), + } diff --git a/users/mixins.py b/users/mixins.py index 91bbfc7..e194f8f 100644 --- a/users/mixins.py +++ b/users/mixins.py @@ -4,9 +4,11 @@ from django.http import HttpResponseForbidden class CheckForUserMixin(object): def dispatch(self, request, *args, **kwargs): - pk = kwargs.get('pk') - if pk: - if request.user.pk != int(pk): - return HttpResponseForbidden('403 Forbidden') - + if request.user.is_authenticated(): + pk = kwargs.get('pk') + if pk: + if request.user.pk != int(pk): + return HttpResponseForbidden('403 Forbidden') + else: + return HttpResponseForbidden('403 Forbidden') return super().dispatch(request, *args, **kwargs) diff --git a/users/templates/contractor_financical_info_edit.html b/users/templates/contractor_financical_info_edit.html new file mode 100644 index 0000000..f46d235 --- /dev/null +++ b/users/templates/contractor_financical_info_edit.html @@ -0,0 +1,192 @@ +{% extends 'partials/base.html' %} +{% load staticfiles %} +{% block content %} + {% include 'partials/header.html' %} +
+
+
+
+
+
+
+ profile-image +
+
+ +
+
+
+

ФИО:

+ + + +
+
+

Специализация:

+
+ + + + Добавить еще + +
+
+
+

Местоположение:

+
+ + +
+
+
+
+
+
+
+ + +
+
+
{% csrf_token %} +
+ {{ form.errors }} +
+
+
Имя, Фамилия, Отчество:
+
Дата рождения:
+
Телефон
+
+
+
+ +
+
+ +
+
+ +
+
+
+
Резиденство:
+
+
+ + {% for residency in form.residency %} +
+ +

+ {{ residency.choice_label }} +

+
+ {% endfor %} +
+
+
Юридический статус:
+
+
+ {% for lstatus in form.legal_status %} +
+ +

+ {{ lstatus.choice_label }} +

+
+ {% endfor %} +
+
+
Серия и номер паспорта:
+
Кем выдан:
+
+
+
+ +
+
+ +
+
+ +
+
+
+
Код подразделения:
+
Кем выдан:
+
+
+
+ +
+
+ +
+
+
+
Дата выдачи:
+
Почтовый адрес:
+
+
+
+ +
+
+{# #} +
+
+
+
ИНН:
+
Яндекс.Деньги:
+
Номер карты
+
Скан-копии страниц паспорта
+
+
+
+ +
+
+ +
+
+ +
+
+ {{ form.passport_scan.value }} +
+ + +

Прикрепить файл

+
+
+
+ +
+
+
+ {% include 'partials/footer.html' %} +
+
+{% endblock %} + diff --git a/users/templates/contractor_profile_edit.html b/users/templates/contractor_profile_edit.html index 7d688a3..4b3b240 100644 --- a/users/templates/contractor_profile_edit.html +++ b/users/templates/contractor_profile_edit.html @@ -1,9 +1,7 @@ {% extends 'partials/base.html' %} - {% load staticfiles %} - {% block content %} - {% include 'partials/header.html' %} +{% include 'partials/header.html' %}
@@ -24,9 +22,9 @@

ФИО:

- - - + + +

Специализация:

@@ -131,14 +129,8 @@ Сохранить
- -
- {% include 'partials/footer.html' %} -
-
- + {% include 'partials/footer.html' %}
- {% endblock %} diff --git a/users/templates/contractor_profile_test_edit.html b/users/templates/contractor_profile_test_edit.html deleted file mode 100644 index c39b283..0000000 --- a/users/templates/contractor_profile_test_edit.html +++ /dev/null @@ -1,11 +0,0 @@ -{#{% extends 'partials/base.html' %}#} -{##} -{#{% load staticfiles %}#} -{##} -{#{% block content %}#} -
{% csrf_token %} - {{ form.errors }} - {{ form.as_p }} - -
-{#{% endblock %}#} diff --git a/users/urls.py b/users/urls.py index 62dfc83..baedfac 100755 --- a/users/urls.py +++ b/users/urls.py @@ -10,7 +10,7 @@ from .views import ( CustomerProfileOpenProjectsView, CustomerProfileReviewsView, CustomerProfileTrashedProjectsView, - ContractorTestProfileEditView, + ContractorFinancialInfoEdit, # UserDetailView, # UserInfoListView, UserListView, @@ -33,5 +33,6 @@ urlpatterns = [ # urls.url(r'^info$', UserInfoListView.as_view(), name='users_info_list'), urls.url(r'contractors/$', ContractorListView.as_view(), name='contractor-list' ), # urls.url(r'^(?P\d+)/$', UserView.as_view(), name='user_view'), - urls.url(r'contractors/(?P\d+)/edit/$', ContractorTestProfileEditView.as_view(), name='contractor-edit' ), + urls.url(r'contractors/(?P\d+)/edit/$', ContractorProfileEditView.as_view(), name='contractor-edit' ), + urls.url(r'contractors/(?P\d+)/financialinfo/edit/$', ContractorFinancialInfoEdit.as_view(), name='contractor-financical' ), ] diff --git a/users/views.py b/users/views.py index 1a10177..063d08d 100644 --- a/users/views.py +++ b/users/views.py @@ -1,12 +1,14 @@ -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import render, get_object_or_404, redirect +from django.contrib import messages from django.contrib.auth.models import Group -from django.views.generic import ListView, DetailView, View, UpdateView +from django.views.generic import ListView, DetailView, View, UpdateView, CreateView from django.views.generic.base import TemplateView +from django.core.urlresolvers import reverse from archilance.mixins import BaseMixin -from .models import User +from .models import User, ContractorFinancialInfo from .mixins import CheckForUserMixin -from .forms import UserEditForm +from .forms import UserEditForm, ContractorFinancicalInfoForm class UserListView(ListView): @@ -68,12 +70,13 @@ class CustomerProfileReviewsView(BaseMixin, DetailView): class ContractorProfileEditView(CheckForUserMixin, View): - form_class = '' + form_class = UserEditForm template_name = 'contractor_profile_edit.html' def get(self, request, *args, **kwargs): - contractor = get_object_or_404(User, pk=kwargs.get('pk')) - return render(request, self.template_name, {'contractor': contractor}) + instance= get_object_or_404(User, pk=kwargs.get('pk')) + form = self.form_class(instance=instance) + return render(request, self.template_name, {'form': form}) # class ContractorTestProfileEditView(CheckForUserMixin, View): @@ -85,17 +88,32 @@ class ContractorProfileEditView(CheckForUserMixin, View): # form = self.form_class # return render(request, self.template_name, {'contractor': contractor, 'form': form}) -from django.views.generic import UpdateView -class ContractorTestProfileEditView(CheckForUserMixin, UpdateView): - model = User - fields = ['first_name','last_name','patronym', - 'location', 'date_of_birth','website', 'skype', 'gender', 'cro'] - # form_class = UserEditForm - template_name = 'contractor_profile_test_edit.html' - # success_url = - - # - # def get(self, request, *args, **kwargs): - # contractor = get_object_or_404(User, pk=kwargs.get('pk')) - # form = self.form_class - # return render(request, self.template_name, {'contractor': contractor, 'form': form}) + + + +class ContractorFinancialInfoEdit(CheckForUserMixin, View): + template_name = 'contractor_financical_info_edit.html' + form_class = ContractorFinancicalInfoForm + + def get(self, request, *args, **kwargs): + instance = request.user.contractor_financial_info + + # import code; code.interact(local=dict(globals(), **locals())) + form = self.form_class(instance=instance) + return render(request, self.template_name, {'form': form}) + + def post(self, request, *args, **kwargs): + instance = request.user.contractor_financial_info + form = self.form_class(request.POST, request.FILES, instance=instance) + 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}) + + + +