70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.shortcuts import render
 | |
| from django.template.loader import render_to_string
 | |
| from random import randint
 | |
| from django.conf import settings
 | |
| from .models import Talk, Profile
 | |
| from asgiref.sync import sync_to_async
 | |
| 
 | |
| 
 | |
| def index(request):
 | |
|     """Render layout page"""
 | |
|     return render(
 | |
|         request,
 | |
|         "layouts/base.html",
 | |
|         {
 | |
|             "room_random": randint(1000000, 9999999),
 | |
|             "DOMAIN": settings.DOMAIN,
 | |
|         },
 | |
|     )
 | |
| 
 | |
| 
 | |
| def page_talks(page=1):
 | |
|     TALK_PER_PAGE = 5
 | |
|     START = TALK_PER_PAGE * (page - 1)
 | |
|     END = TALK_PER_PAGE * page
 | |
|     return render_to_string(
 | |
|         "pages/talks.html",
 | |
|         {
 | |
|             "talks": Talk.objects.order_by("title")[START:END],
 | |
|             "page": page,
 | |
|             "next_page": page + 1,
 | |
|         },
 | |
|     )
 | |
| 
 | |
| 
 | |
| def page_single_talk(id):
 | |
|     return render_to_string(
 | |
|         "pages/talk-single.html",
 | |
|         {
 | |
|             "talk": Talk.objects.get(id=id),
 | |
|         },
 | |
|     )
 | |
| 
 | |
| 
 | |
| def page_profiles():
 | |
|     return render_to_string(
 | |
|         "pages/profiles.html",
 | |
|         {
 | |
|             "profiles": Profile.objects.filter(talkspeaker__isnull=False)
 | |
|             .order_by("full_name")
 | |
|             .distinct()
 | |
|             .all(),
 | |
|         },
 | |
|     )
 | |
| 
 | |
| 
 | |
| def page_about():
 | |
|     return render_to_string("pages/about.html", {})
 | |
| 
 | |
| 
 | |
| def page_results(search):
 | |
|     return render_to_string(
 | |
|         "pages/talks.html",
 | |
|         {
 | |
|             "talks": Talk.objects.filter(title__icontains=search.lower()).order_by(
 | |
|                 "title"
 | |
|             ),
 | |
|             "search": search,
 | |
|         },
 | |
|     )
 |