1- from django .shortcuts import render , redirect , reverse
1+ from django .shortcuts import render , redirect , reverse , get_object_or_404
22from django .contrib import auth , messages
33from django .contrib .auth .decorators import login_required
44from django .contrib .auth .models import User
55from .models import Profile
6- from accounts .forms import UserLoginForm , UserRegistrationForm
7-
8- # Create your views here.
6+ from accounts .forms import UserLoginForm , UserRegistrationForm , EditProfileForm
97
108
119def index (request ):
12- """Render Index.html """
10+ """Render Home Page """
1311 return render (request , 'index.html' )
1412
1513
1614@login_required ()
1715def logout (request ):
1816 """Log the user out"""
1917 auth .logout (request )
20- messages .success (request , "You have been successfully logged out." )
18+ messages .success (request , "Logged out." )
2119 return redirect (reverse ('index' ))
2220
2321
@@ -32,15 +30,14 @@ def login(request):
3230 password = request .POST ['password' ])
3331 if user :
3432 messages .success (
35- request , "Welcome, " + user .username + ". You have been successfully logged in." )
33+ request , "Logged in: " + user .username )
3634 auth .login (user = user , request = request )
3735 return redirect (reverse ('tickets' ))
3836 else :
3937 login_form .add_error (
4038 None , "Your username or password is incorrect." )
4139 else :
4240 login_form = UserLoginForm ()
43- # login_form = UserLoginForm()
4441 return render (request , 'login.html' , {'login_form' : login_form })
4542
4643
@@ -54,7 +51,6 @@ def registration(request):
5451
5552 if registration_form .is_valid ():
5653 user = registration_form .save ()
57-
5854 user = auth .authenticate (username = request .POST ['username' ],
5955 password = request .POST ['password1' ])
6056 if user :
@@ -71,25 +67,95 @@ def registration(request):
7167
7268@login_required ()
7369def user_profile (request ):
74- """User's profile page"""
75- user = User .objects .get (email = request .user .email )
76- return render (request , 'profile.html' , {"user" : user })
70+ """Render User's profile page"""
71+ user = get_object_or_404 (User , email = request .user .email )
72+ user_profile_1 = get_object_or_404 (Profile , user_id = request .user .id )
73+ if (request .method == 'POST' ):
74+ form = EditProfileForm (
75+ request .POST , request .FILES , instance = user_profile_1 )
76+ if form .is_valid ():
77+ user_profile_1 .save ()
78+ messages .success (request , "Profile image updated." )
79+ return redirect (user_profile )
80+ else :
81+ form = EditProfileForm (instance = user_profile_1 )
82+ return render (request , 'profile.html' , {"user" : user , "form" : form })
7783
7884
7985@login_required ()
8086def user_list (request ):
8187 """Shows list of all users"""
82- # users = User.objects.filter()
83- sort_field = request .GET ['sort_by' ] if 'sort_by' in request .GET else 'id'
84- users = User .objects .filter ().order_by (sort_field )
85- # Staff
86- staff = User .objects .filter (is_staff = 1 ).order_by (sort_field )
87- # Submitters
88- submitters = User .objects .filter (is_staff = 0 ).order_by (sort_field )
88+ users = User .objects .filter ()
89+ staff = User .objects .filter (is_staff = 1 )
90+ submitters = User .objects .filter (is_staff = 0 )
8991 return render (request , 'user_list.html' , {"users" : users ,
9092 "staff" : staff ,
9193 "submitters" : submitters })
9294
93- # @login_required()
94- # def update_email(request):
95- # """Updates User Email"""
95+
96+ @login_required ()
97+ def update_first_name (request ):
98+ """User Updates First Name"""
99+ user = User .objects .get (email = request .user .email )
100+ if request .method == 'POST' :
101+ form = request .POST
102+ if form ['updated_first_name' ]:
103+ user .first_name = form ['updated_first_name' ]
104+ messages .success (request , "First name updated." )
105+ else :
106+ user .first_name = ''
107+ messages .success (request , "First name cleared." )
108+ user .save ()
109+ return redirect (user_profile )
110+
111+
112+ @login_required ()
113+ def update_last_name (request ):
114+ """User Updates Last Name"""
115+ user = User .objects .get (email = request .user .email )
116+ if request .method == 'POST' :
117+ form = request .POST
118+ if form ['updated_last_name' ]:
119+ user .last_name = form ['updated_last_name' ]
120+ messages .success (request , "Last name updated." )
121+ else :
122+ user .last_name = ''
123+ messages .success (request , "Last name cleared." )
124+ user .save ()
125+ return redirect (user_profile )
126+
127+
128+ @login_required ()
129+ def update_zoomid (request , pk ):
130+ """User Updates Zoom ID"""
131+ user = get_object_or_404 (User , pk = pk )
132+ if request .method == 'POST' :
133+ form = request .POST
134+ if form ['updated_zoomid' ]:
135+ user .profile .zoom_id = form ['updated_zoomid' ]
136+ messages .success (request , "Zoom ID updated successfully." )
137+ else :
138+ user .profile .zoom_id = None
139+ messages .success (request , "Zoom ID cleared." )
140+ user .profile .save ()
141+ return redirect (user_profile )
142+
143+
144+ @login_required ()
145+ def grant_staff_access (request , pk ):
146+ """Allows Code Institute assessors to be immediately granted Staff Access.
147+ This is to ensure Assessors can see the full feature set.
148+ In a non-assessment situation, clicking Request Staff Access link would send email to Admin,
149+ who could then set is_staff to True
150+ """
151+ user = get_object_or_404 (User , pk = pk )
152+ if request .method == 'POST' :
153+ if user .is_staff :
154+ messages .info (
155+ request , "You already have staff access." )
156+ else :
157+ user .is_staff = True
158+ user .save ()
159+ messages .success (
160+ request , "You have been granted Staff Access as a CI Assessor. You can now edit all tickets." )
161+ return redirect (user_profile )
0 commit comments