Coverage for account/views.py: 0.00%
82 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 17:07 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 17:07 -0700
1from django.contrib import messages
2from django.contrib.auth import authenticate, login
3from django.contrib.auth.decorators import login_required
4from django.contrib.auth.models import User
5from django.http import HttpResponse, JsonResponse
6from django.shortcuts import get_object_or_404, render
7from django.views.decorators.http import require_POST
9from actions.models import Action
10from actions.utils import create_action
12from .forms import LoginForm, ProfileEditForm, UserEditForm, UserRegistrationForm
13from .models import Contact, Profile
16def user_login(request):
17 if request.method == "POST":
18 form = LoginForm(request.POST)
19 if form.is_valid():
20 cd = form.cleaned_data
21 user = authenticate(
22 request, username=cd["username"], password=cd["password"]
23 )
24 if user is not None:
25 if user.is_active:
26 login(request, user)
27 return HttpResponse("Authenticated successfully")
28 else:
29 return HttpResponse("Disabled account")
30 else:
31 return HttpResponse("Invalid login")
32 else:
33 form = LoginForm()
34 return render(request, "account/login.html", {"form": form})
37@login_required
38def dashboard(request):
39 # Display all actions by default
40 actions = Action.objects.exclude(user=request.user)
41 following_ids = request.user.following.values_list("id", flat=True)
43 if following_ids:
44 # If user is following others, retriev only their actions
45 actions = actions.filter(user_id__in=following_ids)
46 actions = actions.select_related("user", "user__profile").prefetch_related(
47 "target"
48 )[:10]
49 return render(
50 request,
51 "account/dashboard.html",
52 {"section": "dashboard", "actions": actions},
53 )
56def register(request):
57 if request.method == "POST":
58 user_form = UserRegistrationForm(request.POST)
59 if user_form.is_valid():
60 new_user = user_form.save(commit=False)
61 new_user.set_password(user_form.cleaned_data["password"])
62 new_user.save()
63 Profile.objects.create(user=new_user)
64 create_action(new_user, "has created an account")
65 return render(
66 request,
67 "account/register_done.html",
68 {"new_user": new_user},
69 )
70 else:
71 user_form = UserRegistrationForm()
72 return render(
73 request,
74 "account/register.html",
75 {"user_form": user_form},
76 )
79@login_required
80def edit(request):
81 if request.method == "POST":
82 user_form = UserEditForm(instance=request.user, data=request.POST)
83 profile_form = ProfileEditForm(
84 instance=request.user.profile, data=request.POST, files=request.FILES
85 )
86 if user_form.is_valid() and profile_form.is_valid():
87 user_form.save()
88 profile_form.save()
89 messages.success(request, "Profile updated successfully")
90 else:
91 messages.error(request, "Error updating your profile")
92 else:
93 user_form = UserEditForm(instance=request.user)
94 profile_form = ProfileEditForm(instance=request.user.profile)
95 return render(
96 request,
97 "account/edit.html",
98 {"user_form": user_form, "profile_form": profile_form},
99 )
102@login_required
103def user_list(request):
104 users = User.objects.filter(is_active=True)
105 return render(
106 request, "account/user/list.html", {"section": "people", "users": users}
107 )
110@login_required
111def user_detail(request, username):
112 user = get_object_or_404(User, username=username, is_active=True)
113 return render(
114 request, "account/user/detail.html", {"section": "people", "user": user}
115 )
118@require_POST
119@login_required
120def user_follow(request):
121 user_id = request.POST.get("id")
122 action = request.POST.get("action")
123 if user_id and action:
124 try:
125 user = User.objects.get(id=user_id)
126 if action == "follow":
127 Contact.objects.get_or_create(user_from=request.user, user_to=user)
128 create_action(request.user, "is following", user)
129 else:
130 Contact.objects.filter(user_from=request.user, user_to=user).delete()
131 return JsonResponse({"status": "ok"})
132 except User.DoesNotExist:
133 return JsonResponse({"status": "error"})
134 return JsonResponse({"status": "error"})