From e2706d640fe8e88da2a7765df54ed33cf9112b21 Mon Sep 17 00:00:00 2001 From: Eligiusz Kurzawa Date: Mon, 11 Jan 2021 21:01:47 +0100 Subject: [PATCH] 11# added changes to update form --- templates/users/update.html | 46 +++++++++++++++++++++++++++++++++++-- users/urls.py | 2 +- users/views.py | 18 +++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/templates/users/update.html b/templates/users/update.html index 7df66ad..7298d29 100644 --- a/templates/users/update.html +++ b/templates/users/update.html @@ -7,7 +7,7 @@
-

Login

+

Update Profile

@@ -51,7 +51,49 @@
- + +
+
+ + + {% endif %} + + {% if user.is_employer %} +
+ {% csrf_token %} + {% if form.errors %} + + {% endif %} + {% for field in form.visible_fields|slice:"3" %} +
+
+ + +
+
+ {% endfor %} + +
+
+ + +
+
+ +
+
+
diff --git a/users/urls.py b/users/urls.py index df5f78a..c4b664b 100644 --- a/users/urls.py +++ b/users/urls.py @@ -6,5 +6,5 @@ urlpatterns = [ path('register/', UserRegisterView.as_view(), name='register'), path('login/', UserLoginView.as_view(), name='login'), path('logout/', UserLogoutView.as_view(), name='logout'), - path('update//', UserUpdateView.as_view(), name='update'), + path('update-profile//', UserUpdateView.as_view(), name='update_profile'), ] diff --git a/users/views.py b/users/views.py index 3071f1c..571adec 100644 --- a/users/views.py +++ b/users/views.py @@ -1,6 +1,10 @@ +from django.contrib.auth.decorators import login_required from django.contrib.auth.views import LoginView, LogoutView from django.contrib.messages.views import SuccessMessageMixin +from django.http import HttpResponseRedirect from django.shortcuts import redirect +from django.urls import reverse +from django.utils.decorators import method_decorator from django.views.generic import CreateView, UpdateView from users.forms import AccountRegisterForm, UserUpdateForm @@ -34,8 +38,22 @@ class UserLogoutView(LogoutView): template_name = 'users/login.html' +@method_decorator(login_required(login_url='/users/login'), name='dispatch') class UserUpdateView(SuccessMessageMixin, UpdateView): model = Profile success_message = "You updated your profile!" template_name = 'users/update.html' form_class = UserUpdateForm + + def form_valid(self, form): + form.instance.user = self.request.user + return super(UserUpdateView, self).form_valid(form) + + def get(self, request, *args, **kwargs): + self.object = self.get_object() + if self.object.user != request.user: + return HttpResponseRedirect('/') + return super(UserUpdateView, self).get(request, *args, **kwargs) + + def get_success_url(self): + return reverse('users: update_profile', kwargs={'pk': self.object.pk})