Skip to content

Commit

Permalink
Template update for easy user navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
ZEZE1020 committed Jan 13, 2025
1 parent 1bd22cd commit 03cb5ff
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 16 deletions.
12 changes: 12 additions & 0 deletions accounts/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ('username', 'email', 'bio', 'profile_picture')

class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('username', 'email', 'bio', 'profile_picture')
24 changes: 10 additions & 14 deletions accounts/urls.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
# accounts/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet, follow_user, unfollow_user
from django.urls import path
from . import views

router = DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
path('', include(router.urls)),
path('follow/<int:user_id>/', follow_user, name='follow-user'),
path('unfollow/<int:user_id>/', unfollow_user, name='unfollow-user'),
path('users/', views.UserListView.as_view(), name='user-list'),
path('users/<int:pk>/', views.UserDetailView.as_view(), name='user-detail'),
path('users/create/', views.UserCreateView.as_view(), name='user-create'),
path('users/update/<int:pk>/', views.UserUpdateView.as_view(), name='user-update'),
path('', views.home, name='home'),
path('signup/', views.signup, name='signup'),
path('login/', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
path('profile/<int:user_id>/', views.user_profile, name='user-profile'),
path('profile/<int:user_id>/update/', views.user_update, name='user-update'),
path('profile/<int:user_id>/delete/', views.user_delete, name='user-delete'),
path('follow/<int:user_id>/', views.follow_user, name='follow-user'),
path('unfollow/<int:user_id>/', views.unfollow_user, name='unfollow-user'),
]
35 changes: 33 additions & 2 deletions accounts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from rest_framework.response import Response
from rest_framework import status
from django.views.generic import ListView, DetailView, CreateView, UpdateView
from django.contrib.auth import login, authenticate
from django.contrib.auth import login, authenticate, logout
from django.shortcuts import render, redirect
from django.shortcuts import render, get_object_or_404
from .models import CustomUser, Follow, Post

from .forms import CustomUserCreationForm, CustomUserChangeForm
class UserViewSet(viewsets.ModelViewSet):
queryset = CustomUser.objects.all()
serializer_class = UserSerializer
Expand Down Expand Up @@ -62,6 +62,37 @@ def user_profile(request, user_id):
return render(request, 'accounts/profile.html', context)


def signup(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST, request.FILES)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('home')
else:
form = CustomUserCreationForm()
return render(request, 'signup.html', {'form': form})

def user_update(request, user_id):
user = get_object_or_404(CustomUser, id=user_id)
if request.method == 'POST':
form = CustomUserChangeForm(request.POST, request.FILES, instance=user)
if form.is_valid():
form.save()
return redirect('user-profile', user_id=user_id)
else:
form = CustomUserChangeForm(instance=user)
return render(request, 'user_update.html', {'form': form})

def user_delete(request, user_id):
user = get_object_or_404(CustomUser, id=user_id)
if request.method == 'POST':
user.delete()
logout(request)
return redirect('home')
return render(request, 'user_delete.html', {'user': user})


@api_view(['POST'])
@permission_classes([IsAuthenticated])
def follow_user(request, user_id):
Expand Down
12 changes: 12 additions & 0 deletions templates/accounts/user_delete.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{% extends 'base.html' %}

{% block title %}Delete Profile{% endblock %}

{% block content %}
<h2>Are you sure you want to delete your profile?</h2>
<p>This action cannot be undone.</p>
<form method="post">
{% csrf_token %}
<button type="submit" class="btn btn-danger">Delete</button>
</form>
{% endblock %}
13 changes: 13 additions & 0 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@

<main>
{% block content %}
{% extends 'base.html' %}

{% block title %}Sign Up{% endblock %}

{% block content %}
<h2>Sign Up</h2>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Sign Up</button>
</form>
{% endblock %}

{% endblock %}
</main>

Expand Down

0 comments on commit 03cb5ff

Please sign in to comment.