Merge branch 'master' into julian
[philo.git] / contrib / julian / models.py
index db6ad71..33c4d51 100644 (file)
@@ -1,4 +1,5 @@
 from django.db import models
+from django.contrib.auth.models import User
 from philo.models.base import Tag, Entity, Titled
 import datetime
 
@@ -6,19 +7,23 @@ if not hasattr(settings, 'PHILO_LOCATION_MODULE'):
        class Location(Entity, Titled):
                slug = models.SlugField(max_length=255, unique=True)
 
-
-if not hasattr(settings, 'PHILO_CALENDAR_MODULE'):
-       class Calendar(Entity, Titled):
-               slug = models.SlugField(max_length=255, unique=True)
-
-
+# Needs to be organised in a sensical order.
 class Event(Entity, Titled):
        description = models.TextField()
-       start_time = models.DateTimeField()
-       end_time = models.DateTimeField()
+       start_time = models.DateTimeField(blank=True, null=True)
+       end_time = models.DateTimeField(blank=True, null=True)
        is_all_day_event = models.BooleanField(default=False)
-       time_created = models.DateTimeField(default=datetime.datetime.now)
-       location = models.ForeignKey(getattr(settings, 'PHILO_LOCATION_MODULE', Location), related_name='events')
-       calendars = models.ManyToManyField(getattr(settings, 'PHILO_CALENDAR_MODULE', Calendar), related_name='events')
-       tags = models.ManyToManyField(Tag)
+       location = models.ForeignKey(getattr(settings, 'PHILO_LOCATION_MODULE', Location), related_name='events', blank=True, null=True)
+       tags = models.ManyToManyField(Tag, blank=True, null=True)
+       parent_event = models.ForeignKey(Event, blank=True, null=True)                          # To handle series' of events.
+       user = models.ForeignKey(getattr(settings, 'PHILO_PERSON_MODULE', User))        # Should this be optional?
+       url = models.URLField(blank=True, null=True)
+       attachment = models.FileField(upload_to='events/attachments/%Y/%m/%d', blank=True, null=True)
+       image = models.ImageField(upload_to='events/images/%Y/%m/%d', blank=True, null=True)
+
 
+class Calendar(Entity, Titled):
+       slug = models.SlugField(max_length=255, unique=True)
+       events = models.ManyToManyField(Event, related_name='calendars')
+       
+# NOTES: Only let start time be blank if it has child events with times.
\ No newline at end of file