from django.db import models from django.contrib.auth.models import User class TimeSlot(models.Model): slot = models.DateTimeField() def __str__(self): return self.slot.strftime("%A, %B %d, %Y @ %I:%M %p") class Location(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class TalkType(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class AudienceSkillLevel(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class Category(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class Meta: verbose_name_plural = "Categories" class ProposalManager(models.Manager): def for_user(self, user): return self.get_query_set().filter(proposers=user) def approved(self): return self.get_query_set().filter(approved=True) class Proposal(models.Model): objects = ProposalManager() title = models.CharField(max_length=255) type = models.ForeignKey(TalkType) category = models.ForeignKey(Category) audience_skill_level = models.ForeignKey(AudienceSkillLevel) location = models.ForeignKey(Location, blank=True, null=True) time_slot = models.ForeignKey(TimeSlot, blank=True, null=True) proposers = models.ManyToManyField(User) approved = models.BooleanField(default=False) recording_release = models.BooleanField(default=False) outline = models.TextField(blank=True) abstract = models.TextField(blank=True) notes = models.TextField(blank=True) def __str__(self): return self.title