Modified the get_start and get_end methods to return datetimes if times are specified.
[philo.git] / contrib / julian / models.py
index 44b51f6..c1682cc 100644 (file)
@@ -65,10 +65,10 @@ class TimedModel(models.Model):
                        raise ValidationError("A %s cannot end before it starts." % self.__class__.__name__)
        
        def get_start(self):
-               return self.start_date
+               return datetime.datetime.combine(self.start_date, self.start_time) if self.start_time else self.start_date
        
        def get_end(self):
-               return self.end_date
+               return datetime.datetime.combine(self.end_date, self.end_time) if self.end_time else self.end_date
        
        class Meta:
                abstract = True
@@ -76,7 +76,17 @@ class TimedModel(models.Model):
 
 class EventManager(models.Manager):
        def get_query_set(self):
-               return self.model.QuerySet(self.model)
+               return EventQuerySet(self.model)
+
+class EventQuerySet(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'))
 
 class Event(Entity, TimedModel):
        name = models.CharField(max_length=255)
@@ -101,20 +111,6 @@ class Event(Entity, TimedModel):
        
        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