aboutsummaryrefslogtreecommitdiff
path: root/proposals/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'proposals/models.py')
-rw-r--r--proposals/models.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/proposals/models.py b/proposals/models.py
new file mode 100644
index 0000000..8551659
--- /dev/null
+++ b/proposals/models.py
@@ -0,0 +1,75 @@
1from django.db import models
2from django.contrib.auth.models import User
3
4
5class TimeSlot(models.Model):
6
7 slot = models.DateTimeField()
8
9 def __str__(self):
10 return self.slot.strftime("%A, %B %d, %Y @ %I:%M %p")
11
12
13class Location(models.Model):
14
15 name = models.CharField(max_length=255)
16
17 def __str__(self):
18 return self.name
19
20
21class TalkType(models.Model):
22
23 name = models.CharField(max_length=255)
24
25 def __str__(self):
26 return self.name
27
28
29class AudienceSkillLevel(models.Model):
30
31 name = models.CharField(max_length=255)
32
33 def __str__(self):
34 return self.name
35
36
37class Category(models.Model):
38
39 name = models.CharField(max_length=255)
40
41 def __str__(self):
42 return self.name
43
44 class Meta:
45 verbose_name_plural = "Categories"
46
47
48class ProposalManager(models.Manager):
49
50 def for_user(self, user):
51 return self.get_query_set().filter(proposers=user)
52
53
54class Proposal(models.Model):
55
56 objects = ProposalManager()
57
58 title = models.CharField(max_length=255)
59
60 type = models.ForeignKey(TalkType)
61 category = models.ForeignKey(Category)
62 audience_skill_level = models.ForeignKey(AudienceSkillLevel)
63 location = models.ForeignKey(Location, blank=True, null=True)
64 time_slot = models.ForeignKey(TimeSlot, blank=True, null=True)
65 proposers = models.ManyToManyField(User)
66
67 approved = models.BooleanField(default=False)
68 recording_release = models.BooleanField(default=False)
69
70 outline = models.TextField(blank=True)
71 abstract = models.TextField(blank=True)
72 notes = models.TextField(blank=True)
73
74 def __str__(self):
75 return self.title