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
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)
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