Files
@ 1de0a5d46ab9
Branch filter:
Location: CopyleftConf/copyleftconf-website/pinaxcon/proposals/models.py - annotation
1de0a5d46ab9
3.6 KiB
text/x-python
Adds ConferenceSpeaker model to Symposion
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 04f246d85071 1de0a5d46ab9 04f246d85071 1de0a5d46ab9 04f246d85071 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 04f246d85071 | from django.db import models
from django.utils.translation import ugettext_lazy as _
from symposion.markdown_parser import parse
from symposion.proposals.models import ProposalBase
from symposion.speakers.models import SpeakerBase
class ConferenceSpeaker(SpeakerBase):
def clean_twitter_username(self):
value = self.twitter_username
if value.startswith("@"):
value = value[1:]
return value
def save(self, *args, **kwargs):
self.experience_html = parse(self.experience)
self.twitter_username = self.clean_twitter_username()
return super(ConferenceSpeaker, self).save(*args, **kwargs)
twitter_username = models.CharField(
max_length=15,
blank=True,
help_text=_(u"Your Twitter account")
)
first_time = models.BooleanField(
blank=True,
verbose_name=_("First-time speaker?"),
help_text=_("Check this field if this is your first time speaking "
"at a technical conference."),
)
experience = models.TextField(blank=True, help_text=_
("List any past speaking experience you have. This can include "
"user groups, meetups, or presentations at work or school. Edit "
"using <a href='http://warpedvisions.org/projects/"
"markdown-cheat-sheet/target='_blank'>"
"Markdown</a>."),
verbose_name=_("Past speaking experience"),
)
experience_html = models.TextField(blank=True)
travel_assistance = models.BooleanField(
blank=True,
verbose_name=_("Travel assistance required?"),
help_text=_("Check this field if you require travel assistance to get "
"to North Bay Python in Petaluma, California."),
)
lodging_assistance = models.BooleanField(
blank=True,
verbose_name=_("Lodging assistance required?"),
help_text=_("Check this field if you require lodging assistance in "
"Petaluma, California during North Bay Python."),
)
home_city = models.CharField(
blank=True,
max_length=127,
help_text=_("Which city (and state, and country) will you be "
"traveling from to get to North Bay Python?"),
)
minority_group = models.CharField(blank=True, max_length=256,
verbose_name=_("Diversity statement"),
help_text=_("If you are a member of one or more groups that are "
"under-represented in the tech industry, you may list "
"these here. Your response is optional."),
)
code_of_conduct = models.BooleanField(
help_text=_("I have read and, in the event that my proposal is "
"accepted, agree that I will comply with the "
"<a href='/code-of-conduct'>Code of Conduct</a>."),
)
class Proposal(ProposalBase):
AUDIENCE_LEVEL_NOVICE = 1
AUDIENCE_LEVEL_EXPERIENCED = 2
AUDIENCE_LEVEL_INTERMEDIATE = 3
AUDIENCE_LEVELS = [
(AUDIENCE_LEVEL_NOVICE, "Novice"),
(AUDIENCE_LEVEL_INTERMEDIATE, "Intermediate"),
(AUDIENCE_LEVEL_EXPERIENCED, "Experienced"),
]
audience_level = models.IntegerField(choices=AUDIENCE_LEVELS)
recording_release = models.BooleanField(
default=True,
help_text="By submitting your proposal, you agree to give permission to the conference organizers to record, edit, and release audio and/or video of your presentation. If you do not agree to this, please uncheck this box."
)
class Meta:
abstract = True
class TalkProposal(Proposal):
class Meta:
verbose_name = "talk proposal"
|