aboutsummaryrefslogtreecommitdiff
path: root/blog_admin/views.py
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-09-09 04:36:00 -0400
committerBobby <[email protected]>2022-09-09 04:36:00 -0400
commit17547403cfb2b3b765ebb4c5f2afda365cb17673 (patch)
treebf753613b874a195e384d9b6dae080ab9d432bb4 /blog_admin/views.py
parent38ffb6cf78b30d788bac2d5029cbb60b2493c27f (diff)
downloadthatcomputerscientist-17547403cfb2b3b765ebb4c5f2afda365cb17673.tar.xz
thatcomputerscientist-17547403cfb2b3b765ebb4c5f2afda365cb17673.zip
Added user interactivity as per roles
Diffstat (limited to 'blog_admin/views.py')
-rw-r--r--blog_admin/views.py57
1 files changed, 49 insertions, 8 deletions
diff --git a/blog_admin/views.py b/blog_admin/views.py
index 34b4176b..372ac1e2 100644
--- a/blog_admin/views.py
+++ b/blog_admin/views.py
@@ -11,12 +11,11 @@ def users(request):
page = int(page)
except:
page = 1
- superusers = User.objects.filter(is_superuser=True)
users = User.objects.filter(is_superuser=False)[(page-1)*50:page*50]
num_pages = User.objects.filter(is_superuser=False).count() // 50 + 1
print(num_pages)
url_to_render = 'blog_admin/users.html?page={}'.format(page) if int(page) and int(page) > 1 else 'blog_admin/users.html'
- return render(request, url_to_render, { 'title': 'Manage Users', 'super_users': superusers, 'normal_users': users, 'num_pages': num_pages, 'page': page })
+ return render(request, url_to_render, { 'title': 'Manage Users', 'normal_users': users, 'num_pages': num_pages, 'page': page })
else:
return redirect('blog:home')
@@ -40,17 +39,13 @@ def search(request):
if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff):
if q:
try:
- # Get the superusers where username or email or first_name or last_name contains q or the user id is int(q)
- superusers = User.objects.filter(is_superuser=True).filter(username__icontains=q) | User.objects.filter(is_superuser=True).filter(email__icontains=q) | User.objects.filter(is_superuser=True).filter(first_name__icontains=q) | User.objects.filter(is_superuser=True).filter(last_name__icontains=q) | User.objects.filter(is_superuser=True).filter(id = int(q))
# Get the normal users where username or email or first_name or last_name contains q or the user id is int(q)
users = User.objects.filter(is_superuser=False).filter(username__icontains=q) | User.objects.filter(is_superuser=False).filter(email__icontains=q) | User.objects.filter(is_superuser=False).filter(first_name__icontains=q) | User.objects.filter(is_superuser=False).filter(last_name__icontains=q) | User.objects.filter(is_superuser=False).filter(id = int(q))
except:
- # Get the superusers where username or email or first_name or last_name contains q
- superusers = User.objects.filter(is_superuser=True).filter(username__icontains=q) | User.objects.filter(is_superuser=True).filter(email__icontains=q) | User.objects.filter(is_superuser=True).filter(first_name__icontains=q) | User.objects.filter(is_superuser=True).filter(last_name__icontains=q)
# Get the normal users where username or email or first_name or last_name contains q
users = User.objects.filter(is_superuser=False).filter(username__icontains=q) | User.objects.filter(is_superuser=False).filter(email__icontains=q) | User.objects.filter(is_superuser=False).filter(first_name__icontains=q) | User.objects.filter(is_superuser=False).filter(last_name__icontains=q)
- return render(request, 'blog_admin/users.html', { 'title': 'Search Results for "{}"'.format(q), 'super_users': superusers, 'normal_users': users })
+ return render(request, 'blog_admin/users.html', { 'title': 'Search Results for "{}"'.format(q), 'normal_users': users })
else:
return redirect('blog-admin:users')
else:
@@ -92,4 +87,50 @@ def new_user(request):
return redirect('blog-admin:new-user')
else:
- return render(request, 'blog_admin/new_user.html', { 'title': 'Create New User' }) \ No newline at end of file
+ return render(request, 'blog_admin/new_user.html', { 'title': 'Create New User' })
+ else:
+ return redirect('blog:home')
+
+def edit_user(request, user_id):
+ if request.user.is_authenticated and (request.user.is_superuser or request.user.is_staff):
+ if request.method == 'POST':
+ request_user = request.user
+ user = User.objects.get(id=user_id)
+ user.username = request.POST.get('username')
+ user.email = request.POST.get('email')
+ user.first_name = request.POST.get('first_name')
+ user.last_name = request.POST.get('last_name')
+ user.is_superuser = True if request_user.is_superuser and request.POST.get('is_superuser') == 'on' else False
+ user.is_staff = True if request_user.is_superuser and request.POST.get('is_staff') == 'on' else False
+ user.is_active = True if request.POST.get('is_active') == 'on' else False
+
+ # User Profile Data
+ try:
+ user_profile = UserProfile.objects.get(user=user)
+ except:
+ user_profile = UserProfile(user=user)
+ user_profile.bio = request.POST.get('bio')
+ user_profile.location = request.POST.get('location')
+ user_profile.gravatar_email = request.POST.get('gravatar_email')
+ user_profile.email_verified = True if request.POST.get('email_verified') == 'on' else False
+
+ # Save the user
+ try:
+ user.save()
+ user_profile.save()
+ messages.success(request, 'User updated successfully!')
+ return redirect('blog-admin:users')
+ # maybe user name is taken
+ except Exception as e:
+ messages.error(request, 'Error: {}'.format(e), extra_tags='edit_user_update_error')
+ return redirect('blog-admin:edit-user', user_id=user_id)
+
+ else:
+ user = User.objects.get(id=user_id)
+ try:
+ user_profile = UserProfile.objects.get(user=user)
+ except:
+ user_profile = None
+ return render(request, 'blog_admin/edit_user.html', { 'title': 'Edit User', 'edit_user': user, 'edit_user_profile': user_profile })
+ else:
+ return redirect('blog:home') \ No newline at end of file