Files @ 76b653ed8afb
Branch filter:

Location: website/www/conservancy/apps/events/models.py

Denver Gingerich
Lawsuit FAQ now uses ESXi 6.0 and add minor fixes.

The main change here is that the lawsuit FAQ page now shows one how to
verify that VMware combined Linux source code with their binary-only
components using VMware's ESXi 6.0 rather than ESXi 5.5 Update 2.
This required a couple minor path changes and updates to the memory
addresses and SHA-1 checksums. The analysis steps otherwise remained
the same.

The FAQ is now more generic in its discussion of the ESXi versions
that were originally analyzed, in order to avoid confusion with the
analysis provided in the FAQ, which uses a newer version and reaches
the same conclusion.

Some minor, unrelated fixes were also added. These include:
* add period at end of paragraphs where it was previously missing
* convert ">" in <pre> and <code> to "&gt;" so the page is valid HTML
* convert "&" in <pre> to "&amp;" so the page is valid HTML
* add missing 's' to "truct pci_driver"
* fix the "tg.c" filename - this should be "tg3.c"
from django.db import models
from conservancy.apps.staff.models import Person
from conservancy.apps.worldmap.models import EarthLocation
from datetime import datetime, timedelta

class EventTag(models.Model):
    """Tagging for events

    (currently unused)
    """

    label = models.CharField(max_length=100)

    date_created = models.DateField(auto_now_add=True)

    def __unicode__(self):
        return self.label

class PastEventManager(models.Manager):
    """Returns all past events"""

    def get_queryset(self):
        return super(PastEventManager, self).get_queryset().filter(date__lt=datetime.today())

class FutureEventManager(models.Manager):
    """Returns all future events"""

    def get_queryset(self):
        return super(FutureEventManager, self).get_queryset().filter(date__gte=datetime.today())

class Event(models.Model):
    """Model for Conservancy staff member events (presentations, etc)"""

    title = models.CharField(max_length=400)
    date = models.DateField()
    date_tentative = models.BooleanField(default=False)
    datetime = models.CharField("Date and Time", max_length=300, blank=True)
    slug = models.SlugField(unique_for_year='date')
    description = models.TextField(blank=True)
    people = models.ManyToManyField(Person, null=True, blank=True)
    location = models.CharField(max_length=1000)
    earth_location = models.ForeignKey(EarthLocation, null=True, blank=True,
                                       help_text="Label will not be displayed")
    tags = models.ManyToManyField(EventTag, null=True, blank=True)

    date_created = models.DateTimeField(auto_now_add=True)
    date_last_modified = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ("-date",)

    def __unicode__(self):
        return u"%s (%s)" % (self.title, self.date)

    def get_absolute_url(self):
        return u"/events/%s/%s/" % (self.date.strftime("%Y"), self.slug)

    def day_after(self):
        return self.date + timedelta(days=1)

    # for aggregate feed
    pub_date = property(lambda self: self.date_created)

    objects = models.Manager()
    past = PastEventManager()
    future = FutureEventManager()

class EventMedia(models.Model):
    """Media from an event

    includes transcripts, audio, and video pieces
    """

    event = models.ForeignKey(Event)
    format = models.CharField(max_length=1,
                              choices=(('T', 'Transcript'),
                                       ('A', 'Audio'),
                                       ('V', 'Video')))
    local = models.CharField(max_length=300, blank=True,
                             help_text="Local filename of the resource.  File should be uploaded into the static directory that corresponds to the event.")
    # verify_exists removed https://docs.djangoproject.com/en/1.7/releases/1.4/
    remote = models.URLField(blank=True,
                             help_text="Remote URL of the resource.  Required if 'local' is not given.")
    novel = models.BooleanField(help_text="Is it a new piece of media or another form of an old one?  If it is new it will be included in the event-media RSS feed and shown on the front page for a bit.", default=False)

    date_created = models.DateTimeField(auto_now_add=True)
    date_last_modified = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = 'event media'

    def __unicode__(self):
        return u"%s media: %s" % (self.event, self.format)