Source

django-basic-events / events / managers.py

import datetime

from django.db import models
from django.db.models import Q


class EventManager(models.Manager):
    def upcoming(self):
        """
        QuerySet of next n upcoming events
        """
        today = datetime.date.today()
        return self.get_query_set().filter(
            Q(begin_date__gte=today) | Q(end_date__gte=today)
        ).order_by('begin_date')
        
    def previous(self):
        """
        QuerySet of next n upcoming events
        """
        today = datetime.date.today()
        return self.get_query_set().filter(
            Q(begin_date__lt=today) | Q(end_date__lt=today)
        ).order_by('begin_date')


class PublishedEventManager(EventManager):
    def get_query_set(self):
        return super(PublishedEventManager, self).get_query_set().filter(
            is_published=True,
        )