forked from rc/aircox
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import datetime
 | 
						|
 | 
						|
from django.utils.translation import gettext as _
 | 
						|
from django.utils import timezone as tz
 | 
						|
 | 
						|
from ..models import Diffusion, Log, Page
 | 
						|
from .page import PageListView
 | 
						|
 | 
						|
class HomeView(PageListView):
 | 
						|
    template_name = 'aircox/home.html'
 | 
						|
    model = Page
 | 
						|
    queryset = Page.objects.select_subclasses()
 | 
						|
    paginate_by = 10
 | 
						|
    list_count = 40
 | 
						|
    logs_count = 5
 | 
						|
    has_filters = False
 | 
						|
 | 
						|
    def get_logs(self):
 | 
						|
        today = datetime.date.today()
 | 
						|
        logs = Log.objects.on_air().today(today).filter(track__isnull=False)
 | 
						|
        diffs = Diffusion.objects.on_air().today(today)
 | 
						|
        return Log.merge_diffusions(logs, diffs, self.logs_count)
 | 
						|
 | 
						|
    def get_sidebar_queryset(self):
 | 
						|
        today = datetime.date.today()
 | 
						|
        return Diffusion.objects.on_air().today(today)
 | 
						|
 | 
						|
    def get_top_diffs(self):
 | 
						|
        now = tz.now()
 | 
						|
        current_diff = Diffusion.objects.on_air().now(now).first()
 | 
						|
        next_diffs = Diffusion.objects.on_air().after(now)
 | 
						|
        if current_diff:
 | 
						|
            diffs = [current_diff] + list(next_diffs.exclude(pk=current_diff.pk)[:2])
 | 
						|
        else:
 | 
						|
            diffs = next_diffs[:3]
 | 
						|
        return diffs
 | 
						|
 | 
						|
    def get_context_data(self, **kwargs):
 | 
						|
        kwargs['logs'] = self.get_logs()
 | 
						|
        kwargs['top_diffs'] = self.get_top_diffs()
 | 
						|
        return super().get_context_data(**kwargs)
 | 
						|
 | 
						|
 | 
						|
 |