Serotonin Storm

source>basic>events>models.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.db.models import permalink
from django.contrib.auth.models import User
from tagging.fields import TagField
from basic.places.models import Place

import datetime


class Event(models.Model):
    """ Event model """
    title           = models.CharField(max_length=200)
    slug            = models.SlugField()
    place           = models.ForeignKey(Place, blank=True, null=True)
    one_off_place   = models.CharField(max_length=200, blank=True)
    description     = models.TextField(blank=True)
    submitted_by    = models.ForeignKey(User, blank=True, null=True)
    tags            = TagField()
    created         = models.DateTimeField(auto_now_add=True)
    modified        = models.DateTimeField(auto_now=True)
  
    class Meta:
        verbose_name = _('event')
        verbose_name_plural = _('events')
        db_table = 'events'

    def __unicode__(self):
        return self.title


class EventTime(models.Model):
    """ EventTime model """
    event           = models.ForeignKey(Event, related_name='event_times')
    start           = models.DateTimeField()
    end             = models.DateTimeField(blank=True, null=True)
    is_all_day      = models.BooleanField(default=False)
  
    class Meta:
        verbose_name = _('event time')
        verbose_name_plural = _('event times')
        db_table = 'event_times'
    
    @property
    def is_past(self):
        NOW = datetime.date.now()
        if self.start < NOW:
            return True
        return False

    def __unicode__(self):
        return u'%s' % self.event.title

    @permalink
    def get_absolute_url(self):
        return ('event_detail', None, {
            'year': self.start.year,
            'month': self.start.strftime('%b').lower(),
            'day': self.start.day,
            'slug': self.event.slug,
            'event_id': self.event.id
        })