diff --git a/media/users/contractors/images.jpg b/media/users/contractors/images.jpg
new file mode 100644
index 0000000..621001e
Binary files /dev/null and b/media/users/contractors/images.jpg differ
diff --git a/media/users/contractors/images_iusxZEz.jpg b/media/users/contractors/images_iusxZEz.jpg
new file mode 100644
index 0000000..621001e
Binary files /dev/null and b/media/users/contractors/images_iusxZEz.jpg differ
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' %}
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
Специализация:
+
+
+
+
+ Добавить еще
+
+
+
+
+
Местоположение:
+
+
+
+
+
+
+
+
+
+
+ {% 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 %}#}
-
-{#{% 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})
+
+
+
+