Skip to content
Snippets Groups Projects
models.py 1.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.conf import settings
    from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    from django.db import models
    
    
    from wagtail.wagtailadmin.edit_handlers import (
        FieldPanel,
        PageChooserPanel,
        StreamFieldPanel,
    )
    from wagtail.wagtailcore.fields import StreamField
    
    from opentech.utils.models import BasePage
    
    
    from .blocks import FundBlock
    
    
    
    class FundPage(BasePage):
        subpage_types = []
        parent_page_types = ['FundIndex']
    
        introduction = models.TextField(blank=True)
        fund_type = models.ForeignKey(
            'wagtailcore.Page',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            blank=True,
            null=True,
    
            on_delete=models.SET_NULL,
            related_name='+',
        )
    
        body = StreamField(FundBlock())
    
    
        content_panels = BasePage.content_panels + [
            FieldPanel('introduction'),
            PageChooserPanel('fund_type', 'apply.FundType'),
            StreamFieldPanel('body'),
        ]
    
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    class FundIndex(BasePage):
    
        subpage_types = ['FundPage']
        parent_page_types = ['home.HomePage']
    
        def get_context(self, request, *args, **kwargs):
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            funds = FundPage.objects.live().public().descendant_of(self)
    
    
            # Pagination
            page = request.GET.get('page', 1)
            paginator = Paginator(funds, settings.DEFAULT_PER_PAGE)
            try:
                news = paginator.page(page)
            except PageNotAnInteger:
                news = paginator.page(1)
            except EmptyPage:
                news = paginator.page(paginator.num_pages)
    
            context = super().get_context(request, *args, **kwargs)
            context.update(news=news)
            return context