added docstrings

This commit is contained in:
yann 2025-05-07 08:35:20 +02:00
parent 97b8747f36
commit f14e945bf2
3 changed files with 87 additions and 3 deletions

View File

@ -5,6 +5,11 @@ from authentication.forms import RegisterForm
def register_page(request): def register_page(request):
"""
Create a User from the register form
:param: request (POST with RegisterForm data)
:return: write the User in DB
"""
form = RegisterForm() form = RegisterForm()
if request.method == 'POST': if request.method == 'POST':
form = RegisterForm(request.POST) form = RegisterForm(request.POST)

View File

@ -3,12 +3,19 @@ from . import models
class TicketForm(forms.ModelForm): class TicketForm(forms.ModelForm):
"""
Form from Ticket, select only 3 fields
"""
class Meta: class Meta:
model = models.Ticket model = models.Ticket
fields = ['title', 'desc', 'image'] fields = ['title', 'desc', 'image']
class ReviewForm(forms.ModelForm): class ReviewForm(forms.ModelForm):
"""
Form from Review
Make rating field a radio select from choices
"""
CHOICES = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5} CHOICES = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5}
rating = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES) rating = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)
@ -18,4 +25,7 @@ class ReviewForm(forms.ModelForm):
class ToFollowForm(forms.Form): class ToFollowForm(forms.Form):
"""
Form asking for a username
"""
user = forms.CharField(label="Nom d'utilisateur", max_length=50) user = forms.CharField(label="Nom d'utilisateur", max_length=50)

View File

@ -17,6 +17,12 @@ def home(request):
@login_required @login_required
def flux(request): def flux(request):
"""
Display the user's home page
Get tickets & reviews of followed users, sort latest first
:param: request
:return: queryset of sorted tickets and reviews
"""
followed = UserFollows.objects.filter(user=request.user) followed = UserFollows.objects.filter(user=request.user)
users_followed = [] users_followed = []
for userf in followed: for userf in followed:
@ -36,6 +42,12 @@ def flux(request):
@login_required @login_required
def posts(request): def posts(request):
"""
Get list of tickets and reviews of current user
:param: request
:return: queryset of tickets and reviews
"""
tickets = Ticket.objects.filter(user=request.user) tickets = Ticket.objects.filter(user=request.user)
reviews = Review.objects.filter(user=request.user) reviews = Review.objects.filter(user=request.user)
return render(request, return render(request,
@ -45,14 +57,23 @@ def posts(request):
@login_required @login_required
def ticket(request, ticket_id): def ticket(request, ticket_id):
"""
Get detail of a ticket
:param: request, Ticket id
:return: object Ticket
"""
ticket = Ticket.objects.get(id=ticket_id) ticket = Ticket.objects.get(id=ticket_id)
return render(request, return render(request,
'reviews/ticket.html', 'reviews/ticket.html',
{'ticket': ticket}) {'ticket': ticket})
@login_required @login_required
def create_ticket(request): def create_ticket(request):
"""
Send form, retrieve user's data, create and write object Ticket
:param: request (POST)
:return: form, write Ticket in DB
"""
tickets = Ticket.objects.all() tickets = Ticket.objects.all()
ticket_form = TicketForm() ticket_form = TicketForm()
if request.method == 'POST': if request.method == 'POST':
@ -70,6 +91,11 @@ def create_ticket(request):
@login_required @login_required
@permission_required('review.change_ticket', raise_exception=True) @permission_required('review.change_ticket', raise_exception=True)
def update_ticket(request, ticket_id): def update_ticket(request, ticket_id):
"""
Get new data for a given Ticket id and save changes
:param: request, Ticket id
:return: form, write Ticket in DB
"""
ticket = Ticket.objects.get(id=ticket_id) ticket = Ticket.objects.get(id=ticket_id)
if request.method == 'POST': if request.method == 'POST':
ticket_form = TicketForm(request.POST, instance=ticket) ticket_form = TicketForm(request.POST, instance=ticket)
@ -87,6 +113,11 @@ def update_ticket(request, ticket_id):
@login_required @login_required
@permission_required('review.delete_ticket', raise_exception=True) @permission_required('review.delete_ticket', raise_exception=True)
def delete_ticket(request, ticket_id): def delete_ticket(request, ticket_id):
"""
Delete object from DB for a given Ticket
:param: request, Ticket id
:return: delete Ticket from DB
"""
ticket = Ticket.objects.get(id=ticket_id) ticket = Ticket.objects.get(id=ticket_id)
if request.method == 'POST': if request.method == 'POST':
ticket.delete() ticket.delete()
@ -99,6 +130,11 @@ def delete_ticket(request, ticket_id):
@login_required @login_required
def review(request, review_id): def review(request, review_id):
"""
Get detail of a Review
:param: request, Review id
:return: object Review
"""
review = Review.objects.get(id=review_id) review = Review.objects.get(id=review_id)
return render(request, return render(request,
'reviews/review.html', 'reviews/review.html',
@ -107,6 +143,11 @@ def review(request, review_id):
@login_required @login_required
def create_review(request): def create_review(request):
"""
Create Ticket and related Review in one go
:param: request (POST)
:return: form, write Ticket and Review in DB
"""
ticket_form = TicketForm() ticket_form = TicketForm()
review_form = ReviewForm() review_form = ReviewForm()
if request.method == 'POST': if request.method == 'POST':
@ -136,6 +177,11 @@ def create_review(request):
@login_required @login_required
def ticket_review(request, ticket_id): def ticket_review(request, ticket_id):
"""
Create a Review for a given Ticket
:param: request (POST), Ticket id
:return: form, write Review in DB
"""
ticket = Ticket.objects.get(id=ticket_id) ticket = Ticket.objects.get(id=ticket_id)
review_form = ReviewForm() review_form = ReviewForm()
if request.method == 'POST': if request.method == 'POST':
@ -160,6 +206,11 @@ def ticket_review(request, ticket_id):
@login_required @login_required
def update_review(request, review_id): def update_review(request, review_id):
"""
Get new data for a given Review and save changes
:param: request, Review id
:return: form, write Review in DB
"""
review = Review.objects.get(id=review_id) review = Review.objects.get(id=review_id)
if request.method == 'POST': if request.method == 'POST':
print(request.POST) print(request.POST)
@ -177,6 +228,11 @@ def update_review(request, review_id):
@login_required @login_required
def delete_review(request, review_id): def delete_review(request, review_id):
"""
Delete object from DB for a given Review
:param: request, Review id
:return: delete Review from DB
"""
review = Review.objects.get(id=review_id) review = Review.objects.get(id=review_id)
if request.method == 'POST': if request.method == 'POST':
review.delete() review.delete()
@ -188,18 +244,26 @@ def delete_review(request, review_id):
@login_required @login_required
def subscribed(request): def subscribed(request):
"""
Create UserFollows object for a given username in form
Create a list of followed_users for current user
:param: request (POST with given username)
:return: queryset of UserFollows following current user,
and a queryset of UserFollows followed by current user
"""
follows = UserFollows() follows = UserFollows()
user_form = ToFollowForm() user_form = ToFollowForm()
# list of UserFollows following current user
following = UserFollows.objects.filter(followed_user=request.user) following = UserFollows.objects.filter(followed_user=request.user)
if request.method == 'POST': if request.method == 'POST':
user_form = ToFollowForm(request.POST) user_form = ToFollowForm(request.POST)
if user_form.is_valid(): if user_form.is_valid():
user = user_form.cleaned_data["user"] user = user_form.cleaned_data["user"]
user_followed = User.objects.filter(username=user) follows.followed_user = User.objects.get(username=user)
follows.followed_user = user_followed[0]
follows.user = request.user follows.user = request.user
follows.save() follows.save()
return redirect('subscribed') return redirect('subscribed')
# list of UserFollows followed by current user
followed = UserFollows.objects.filter(user=request.user) followed = UserFollows.objects.filter(user=request.user)
context = { context = {
'user_form': user_form, 'user_form': user_form,
@ -212,6 +276,11 @@ def subscribed(request):
@login_required @login_required
def unsubscribe(request, followed_user_id): def unsubscribe(request, followed_user_id):
"""
Delete a UserFollows for a given followed_user
:param: request, User.id
:return: delete UserFollows from DB
"""
followed = UserFollows.objects.get( followed = UserFollows.objects.get(
user=request.user, user=request.user,
followed_user=followed_user_id) followed_user=followed_user_id)