diff --git a/users/forms.py b/users/forms.py new file mode 100644 index 0000000..c467235 --- /dev/null +++ b/users/forms.py @@ -0,0 +1,18 @@ +from django import forms +from django.forms import ModelForm + +from .models import User + +class UserEditForm(ModelForm): + + class Meta: + model = User + fields = ( + 'first_name', + 'last_name', + 'patronym', + 'location', + 'date_of_birth', + 'website', + ) + diff --git a/users/mixins.py b/users/mixins.py new file mode 100644 index 0000000..91bbfc7 --- /dev/null +++ b/users/mixins.py @@ -0,0 +1,12 @@ +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') + + return super().dispatch(request, *args, **kwargs) diff --git a/users/templates/contractor_profile_test_edit.html b/users/templates/contractor_profile_test_edit.html new file mode 100644 index 0000000..c39b283 --- /dev/null +++ b/users/templates/contractor_profile_test_edit.html @@ -0,0 +1,11 @@ +{#{% 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 fcb9be9..62dfc83 100755 --- a/users/urls.py +++ b/users/urls.py @@ -10,6 +10,7 @@ from .views import ( CustomerProfileOpenProjectsView, CustomerProfileReviewsView, CustomerProfileTrashedProjectsView, + ContractorTestProfileEditView, # UserDetailView, # UserInfoListView, UserListView, @@ -32,5 +33,5 @@ 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/$', ContractorProfileEditView.as_view(), name='contractor-edit' ), + urls.url(r'contractors/(?P\d+)/edit/$', ContractorTestProfileEditView.as_view(), name='contractor-edit' ), ] diff --git a/users/views.py b/users/views.py index 8b2895a..1a10177 100644 --- a/users/views.py +++ b/users/views.py @@ -5,6 +5,8 @@ from django.views.generic.base import TemplateView from archilance.mixins import BaseMixin from .models import User +from .mixins import CheckForUserMixin +from .forms import UserEditForm class UserListView(ListView): @@ -65,9 +67,35 @@ class CustomerProfileReviewsView(BaseMixin, DetailView): context_object_name = 'customer' -class ContractorProfileEditView(BaseMixin, View): +class ContractorProfileEditView(CheckForUserMixin, View): + form_class = '' 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}) + + +# class ContractorTestProfileEditView(CheckForUserMixin, View): +# form_class = UserEditForm +# template_name = 'contractor_profile_test_edit.html' +# +# 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}) + +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})