77from apps .users .forms import SigninForm , SignupForm , UserPasswordChangeForm , UserSetPasswordForm , UserPasswordResetForm , ProfileForm
88from django .contrib .auth import logout
99from django .urls import reverse
10+ from django .contrib .auth .decorators import login_required
11+ from django .contrib .auth .hashers import check_password
12+ from django .contrib import messages
13+ from django .contrib .auth .models import User
14+ from django .core .paginator import Paginator
15+ from apps .users .utils import user_filter
1016
1117# Create your views here.
1218
@@ -48,17 +54,96 @@ def signout_view(request):
4854 return redirect (reverse ('signin' ))
4955
5056
57+ @login_required (login_url = '/users/signin/' )
5158def profile (request ):
5259 profile = get_object_or_404 (Profile , user = request .user )
5360 if request .method == 'POST' :
54- form = ProfileForm (request .POST , request . FILES , instance = profile )
61+ form = ProfileForm (request .POST , instance = profile )
5562
5663 if form .is_valid ():
5764 form .save ()
65+ messages .success (request , 'Profile updated successfully' )
5866 else :
5967 form = ProfileForm (instance = profile )
6068
6169 context = {
6270 'form' : form ,
71+ 'segment' : 'profile' ,
6372 }
64- return render (request , 'pages/dashboard/profile.html' , context )
73+ return render (request , 'pages/dashboard/profile.html' , context )
74+
75+
76+ def upload_avatar (request ):
77+ profile = get_object_or_404 (Profile , user = request .user )
78+ if request .method == 'POST' :
79+ profile .avatar = request .FILES .get ('avatar' )
80+ profile .save ()
81+ messages .success (request , 'Avatar uploaded successfully' )
82+ return redirect (request .META .get ('HTTP_REFERER' ))
83+
84+
85+ def change_password (request ):
86+ user = request .user
87+ if request .method == 'POST' :
88+ if check_password (request .POST .get ('current_password' ), user .password ):
89+ user .set_password (request .POST .get ('new_password' ))
90+ user .save ()
91+ messages .success (request , 'Password changed successfully' )
92+ else :
93+ messages .error (request , "Password doesn't match!" )
94+ return redirect (request .META .get ('HTTP_REFERER' ))
95+
96+
97+
98+ def user_list (request ):
99+ filters = user_filter (request )
100+ user_list = User .objects .filter (** filters )
101+ form = SignupForm ()
102+
103+ page = request .GET .get ('page' , 1 )
104+ paginator = Paginator (user_list , 5 )
105+ users = paginator .page (page )
106+
107+ if request .method == 'POST' :
108+ form = SignupForm (request .POST )
109+ if form .is_valid ():
110+ return post_request_handling (request , form )
111+
112+ context = {
113+ 'users' : users ,
114+ 'form' : form ,
115+ }
116+ return render (request , 'pages/apps/users.html' , context )
117+
118+
119+ @login_required (login_url = '/users/signin/' )
120+ def post_request_handling (request , form ):
121+ form .save ()
122+ return redirect (request .META .get ('HTTP_REFERER' ))
123+
124+ @login_required (login_url = '/users/signin/' )
125+ def delete_user (request , id ):
126+ user = User .objects .get (id = id )
127+ user .delete ()
128+ return redirect (request .META .get ('HTTP_REFERER' ))
129+
130+
131+ @login_required (login_url = '/users/signin/' )
132+ def update_user (request , id ):
133+ user = User .objects .get (id = id )
134+ if request .method == 'POST' :
135+ user .username = request .POST .get ('username' )
136+ user .first_name = request .POST .get ('first_name' )
137+ user .last_name = request .POST .get ('last_name' )
138+ user .email = request .POST .get ('email' )
139+ user .save ()
140+ return redirect (request .META .get ('HTTP_REFERER' ))
141+
142+
143+ @login_required (login_url = '/users/signin/' )
144+ def user_change_password (request , id ):
145+ user = User .objects .get (id = id )
146+ if request .method == 'POST' :
147+ user .set_password (request .POST .get ('password' ))
148+ user .save ()
149+ return redirect (request .META .get ('HTTP_REFERER' ))
0 commit comments