diff options
| author | Bobby <[email protected]> | 2022-09-09 04:36:00 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2022-09-09 04:36:00 -0400 |
| commit | 17547403cfb2b3b765ebb4c5f2afda365cb17673 (patch) | |
| tree | bf753613b874a195e384d9b6dae080ab9d432bb4 /blog_admin | |
| parent | 38ffb6cf78b30d788bac2d5029cbb60b2493c27f (diff) | |
| download | thatcomputerscientist-17547403cfb2b3b765ebb4c5f2afda365cb17673.tar.xz thatcomputerscientist-17547403cfb2b3b765ebb4c5f2afda365cb17673.zip | |
Added user interactivity as per roles
Diffstat (limited to 'blog_admin')
| -rw-r--r-- | blog_admin/urls.py | 1 | ||||
| -rw-r--r-- | blog_admin/views.py | 57 |
2 files changed, 50 insertions, 8 deletions
diff --git a/blog_admin/urls.py b/blog_admin/urls.py index 84d61bbc..2862db88 100644 --- a/blog_admin/urls.py +++ b/blog_admin/urls.py @@ -5,6 +5,7 @@ app_name = 'blog-admin' urlpatterns = [ path('users', views.users, name='users'), path('users/new', views.new_user, name='new-user'), + path('users/<int:user_id>/edit', views.edit_user, name='edit-user'), path('posts', views.posts, name='posts'), path('comments', views.comments, name='comments'), path('categories', views.categories, name='categories'), 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 |
