Files
@ 7b0993e7deed
Branch filter:
Location: CopyleftConf/copyleftconf-website/pinaxcon/proposals/models.py
7b0993e7deed
4.6 KiB
text/x-python
urls: All pages about attending are handled by views.buy_ticket.
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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | 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=65,
blank=True,
help_text=_(u"Your Twitter account")
)
first_time = models.BooleanField(
blank=True,
default=False,
verbose_name=_("First-time speaker?"),
help_text=_("Check this field if this is your first time speaking "
"at a free software 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,
default=False,
verbose_name=_("Travel assistance required?"),
help_text=_("Check this field if you require travel assistance."),
)
lodging_assistance = models.BooleanField(
blank=True,
default=False,
verbose_name=_("Lodging assistance required?"),
help_text=_("Check this field if you require lodging assistance."),
)
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 CopyleftConf?"),
)
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 free software community, you may list "
"these here. Your response is optional."),
)
reviewer = models.EmailField(
blank=True,
null=True,
verbose_name=_("E-mail of video reviewer"),
help_text=_("Include the e-mail address of someone who can watch a "
"video of your talk, shortly after the video is produced, "
"to ensure quality."),
)
code_of_conduct = models.BooleanField(
default=False,
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):
extra_av = models.TextField(
blank=True,
verbose_name=_("Extra tech and A/V requirements"),
help_text=_("We will provide you with a projector with HDMI "
"connection, an audio connection, and one microphone per "
"speaker. If you need anything more than this to present "
"this talk, please list them here."),
)
new_presentation = models.BooleanField(
default=False,
verbose_name=_("This is a new presentation"),
help_text=_("Check this box if CopyleftConf will be the first "
"time this talk is presented."),
)
slides_release = models.BooleanField(
default=True,
help_text=_("I authorize Software Freedom Conservancy to distribute my "
"slides and related materials under either the GNU General "
"Public License, version 3.0 or the Creative Commons "
"Attribution-ShareAlike License, version 4.0, as I specify; "
"and certify that I have the authority to do so."),
)
recording_release = models.BooleanField(
default=True,
help_text=_("I authorize Software Freedom Conservancy to distribute a "
"recording of my talk under the same license I specify for "
"my slides."),
)
class Meta:
abstract = True
class TalkProposal(Proposal):
class Meta:
verbose_name = "talk proposal"
|