Skip to content

Commit eddefab

Browse files
committed
Improve spacing in accounts
1 parent 88f40f9 commit eddefab

File tree

3 files changed

+102
-30
lines changed

3 files changed

+102
-30
lines changed

accounts/models.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@
22
from django.contrib.auth.models import User
33
from django.db.models.signals import post_save
44
from django.dispatch import receiver
5-
6-
# Create your models here.
5+
from tickets.models import Ticket
6+
from datetime import datetime
77

88

99
class Profile(models.Model):
10+
"""Profile class is required to allow additional User fields to be saved"""
1011
user = models.OneToOneField(User, on_delete=models.CASCADE)
1112
is_pro_user = models.BooleanField(default=False)
13+
pro_user_since_date = models.DateTimeField(null=True, default=None)
14+
image = models.ImageField(
15+
upload_to='profile_image', null=True, default=None)
16+
zoom_id = models.CharField(max_length=50, null=True, default=None)
1217

1318
def __str__(self):
1419
return self.user.username
1520

16-
# bio = models.TextField(max_length=500, blank=True)
17-
# location = models.CharField(max_length=30, blank=True)
18-
# birth_date = models.DateField(null=True, blank=True)
19-
2021

2122
@receiver(post_save, sender=User)
2223
def create_user_profile(sender, instance, created, **kwargs):

accounts/urls.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
from django.conf.urls import url, include
1+
from django.conf.urls import url
22
from . import views
3-
from accounts.views import index, logout, login, registration, user_profile, user_list
3+
from accounts.views import index, logout, login, registration, user_profile, user_list, update_first_name, update_last_name, update_zoomid, grant_staff_access
44

55
urlpatterns = [
66
url(r'^logout/$', logout, name='logout'),
77
url(r'^login/$', login, name='login'),
88
url(r'^register/$', registration, name='registration'),
99
url(r'^profile/$', user_profile, name='profile'),
1010
url(r'^user_list/$', user_list, name='user_list'),
11+
url(r'^update_first_name/$', update_first_name, name='update_first_name'),
12+
url(r'^update_last_name/$', update_last_name, name='update_last_name'),
13+
url(r'^update_zoomid/(?P<pk>\d+)/$', update_zoomid, name='update_zoomid'),
14+
url(r'^grant_staff_access/(?P<pk>\d+)/$',
15+
grant_staff_access, name='grant_staff_access')
1116
]

accounts/views.py

Lines changed: 88 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
1-
from django.shortcuts import render, redirect, reverse
1+
from django.shortcuts import render, redirect, reverse, get_object_or_404
22
from django.contrib import auth, messages
33
from django.contrib.auth.decorators import login_required
44
from django.contrib.auth.models import User
55
from .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

119
def index(request):
12-
"""Render Index.html"""
10+
"""Render Home Page"""
1311
return render(request, 'index.html')
1412

1513

1614
@login_required()
1715
def 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()
7369
def 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()
8086
def 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

Comments
 (0)