Files
Steve Kossouho e3ebf6bf4f Add documentation and source
Added documentation, source and extra files.
2025-07-02 20:26:50 +02:00

82 lines
1.9 KiB
Python

from typing import List, Optional
from annoying.decorators import render_to
from django.http import HttpRequest, HttpResponseRedirect
from demonstration.forms import SearchForm, PersonForm, UploadForm
NAMES: List[str] = [
"Jean",
"Paul",
"Robert",
"Julien",
"Nicolas",
"François",
"Julie",
"Marie",
"Anne",
"Évelyne",
"Jeanne",
"Claire",
]
@render_to("demonstration/index.html")
def view_index(request: HttpRequest): # noqa
return {}
@render_to("demonstration/search_form_view.html")
def view_search_form(request: HttpRequest): # noqa
"""
View for the search form.
Args:
request: HTTP request.
Returns:
Data for rendering the template, as a context dictionary.
"""
form = SearchForm(request.GET) if request.GET else SearchForm()
results: List[str] = []
if form.is_valid():
query: str = form.cleaned_data["query"].lower()
results = [item for item in NAMES if query in item.lower()]
return {"form": form, "results": results}
@render_to("demonstration/person_form_view.html")
def view_person_form(request: HttpRequest): # noqa
"""
View for the person form.
Args:
request: HTTP request.
Returns:
Data for rendering the template, as a context dictionary.
"""
form = PersonForm(request.POST) if request.method == "POST" else PersonForm()
return {"form": form}
@render_to("demonstration/upload_form_view.html")
def view_upload_form(request: HttpRequest): # noqa
"""
View for the upload form.
Args:
request: HTTP request.
Returns:
Data for rendering the template, as a context dictionary.
"""
form = UploadForm(request.POST, request.FILES) if request.method == "POST" else UploadForm()
image_url: Optional[str] = None
if form.is_valid():
image_url = form.save_uploaded_file(request)
return {"form": form, "image_url": image_url}