diff options
Diffstat (limited to 'proposals/models.py')
-rw-r--r-- | proposals/models.py | 75 |
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 @@ | |||
1 | from django.db import models | ||
2 | from django.contrib.auth.models import User | ||
3 | |||
4 | |||
5 | class 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 | |||
13 | class Location(models.Model): | ||
14 | |||
15 | name = models.CharField(max_length=255) | ||
16 | |||
17 | def __str__(self): | ||
18 | return self.name | ||
19 | |||
20 | |||
21 | class TalkType(models.Model): | ||
22 | |||
23 | name = models.CharField(max_length=255) | ||
24 | |||
25 | def __str__(self): | ||
26 | return self.name | ||
27 | |||
28 | |||
29 | class AudienceSkillLevel(models.Model): | ||
30 | |||
31 | name = models.CharField(max_length=255) | ||
32 | |||
33 | def __str__(self): | ||
34 | return self.name | ||
35 | |||
36 | |||
37 | class 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 | |||
48 | class ProposalManager(models.Manager): | ||
49 | |||
50 | def for_user(self, user): | ||
51 | return self.get_query_set().filter(proposers=user) | ||
52 | |||
53 | |||
54 | class 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 | ||