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

1from django.contrib import messages 

2from django.shortcuts import get_object_or_404, redirect, render 

3 

4from website.forms import EditReaderForm, UserChangeForm 

5from website.models import User 

6from website.models.ReaderModel import Reader 

7 

8 

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) 

13 

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 ) 

33 

34 

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 } 

48 

49 return reader_post_request_data 

50 

51 

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 

65 

66 

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