Coverage for website/views/ReaderEditView.py: 53%
45 statements
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
1from django.contrib import messages
2from django.shortcuts import get_object_or_404, redirect, render
4from website.forms import EditReaderForm, UserChangeForm
5from website.models import User
6from website.models.ReaderModel import Reader
9def reader_edit(request):
10 reader = get_object_or_404(Reader, user__email=request.user.email)
11 form = EditReaderForm(instance=reader)
12 user_form = UserChangeForm(instance=request.user)
14 if request.POST:
15 username_free = check_user_form(request, reader)
16 reader_request_post = check_request_post(request)
17 if reader_request_post is not None:
18 if reader.image != "" and reader_request_post["image"] is not None:
19 reader.image.delete(save=True)
20 reader.image = reader_request_post["image"]
21 if username_free and check_reader_form(request, reader):
22 messages.success(request, "Dados atualizados com sucesso.")
23 return redirect("/")
24 elif not reader_request_post["check_username_request"]:
25 messages.error(request, "Nome de usuário já está em uso.")
26 context = {
27 "userForm": user_form,
28 "readerForm": form,
29 }
30 return render(
31 request, template_name="edit-reader/edit-reader.html", context=context
32 )
35def check_request_post(request):
36 reader_post_request_data = None
37 if request.POST:
38 reader_post_request_data = {
39 "username": request.POST["username"],
40 "name": request.POST["reader_name"],
41 "check_username_request": Reader.objects.filter(
42 user__username=request.POST["username"]
43 )
44 .exclude(user__id=request.user.id)
45 .first(),
46 "image": request.FILES.get("image", None),
47 }
49 return reader_post_request_data
52def check_user_form(request, reader):
53 user_form = UserChangeForm(request.POST, instance=request.user)
54 reader_user = check_request_post(request)
55 username_free = reader_user["check_username_request"] != reader.user.username
56 if (
57 user_form.is_valid()
58 and reader_user["username"] != reader.user.username
59 and username_free
60 ):
61 user_reader = get_object_or_404(User, id=reader.user.id)
62 user_reader.username = reader_user["username"]
63 user_reader.save()
64 return username_free
67def check_reader_form(request, reader):
68 reader_form = EditReaderForm(request.POST, request.FILES, instance=reader)
69 check_post = check_request_post(request)
70 if reader_form.is_valid():
71 reader.reader_name = check_post["name"]
72 reader.save()
73 return True
74 return False