X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/fb2124a285959c8952d2903deefdbea421c5272f..96926ace045422f0f5f1f474a174ebbdc253a023:/contrib/julian/models.py?ds=sidebyside diff --git a/contrib/julian/models.py b/contrib/julian/models.py index 3ec97b0..44b51f6 100644 --- a/contrib/julian/models.py +++ b/contrib/julian/models.py @@ -6,6 +6,7 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError, ObjectDoesNotExist from django.core.validators import RegexValidator from django.db import models +from django.db.models.query import QuerySet from django.http import HttpResponse, Http404 from django.utils.encoding import force_unicode from philo.contrib.julian.feedgenerator import ICalendarFeed @@ -73,6 +74,10 @@ class TimedModel(models.Model): abstract = True +class EventManager(models.Manager): + def get_query_set(self): + return self.model.QuerySet(self.model) + class Event(Entity, TimedModel): name = models.CharField(max_length=255) slug = models.SlugField(max_length=255, unique_for_date='start_date') @@ -94,6 +99,22 @@ class Event(Entity, TimedModel): last_modified = models.DateTimeField(auto_now=True) uuid = models.TextField() # Format? + objects = EventManager() + + class QuerySet(QuerySet): + + def upcoming(self): + return self.filter(start_date__gte=datetime.date.today()) + + def current(self): + return self.filter(start_date__lte=datetime.date.today(), end_date__gte=datetime.date.today()) + + def single_day(self): + return self.filter(start_date__exact=models.F('end_date')) + + def multiday(self): + return self.exclude(start_date__exact=models.F('end_date')) + def __unicode__(self): return self.name