import datetime from django.db import models from django.db.models import Q class AdManager(models.Manager): """ A Custom Manager for ads """ def get_random_ad(self, ad_category, ad_zone): """ Returns a random advert that belongs to the specified category and zone """ now = datetime.datetime.now() if ad_category=='': try: ad = self.get_query_set().filter( zone__slug=ad_zone, enabled=True).filter( # is expired or no expiration Q(expires_on__gt=now) | Q(expires_on__isnull=True) ).order_by('?')[0] except IndexError: return None else: try: ad = self.get_query_set().filter( category__slug=ad_category, zone__slug=ad_zone, enabled=True).filter( # is expired or no expiration Q(expires_on__gt=now) | Q(expires_on__isnull=True) ).order_by('?')[0] except IndexError: return None return ad def enabled(self): return self.get_query_set().filter(enabled=True)