2015-10-16 17:53:02 +00:00
|
|
|
from django.db import models
|
2017-08-13 19:31:22 +00:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
2015-10-16 17:53:02 +00:00
|
|
|
|
2017-08-13 19:31:22 +00:00
|
|
|
from symposion.markdown_parser import parse
|
2015-10-16 17:53:02 +00:00
|
|
|
from symposion.proposals.models import ProposalBase
|
2017-08-13 19:31:22 +00:00
|
|
|
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(
|
2018-10-05 20:46:10 +00:00
|
|
|
max_length=65,
|
2017-08-13 19:31:22 +00:00
|
|
|
blank=True,
|
|
|
|
help_text=_(u"Your Twitter account")
|
|
|
|
)
|
|
|
|
|
|
|
|
first_time = models.BooleanField(
|
|
|
|
blank=True,
|
2017-09-18 03:28:41 +00:00
|
|
|
default=False,
|
2017-08-13 19:31:22 +00:00
|
|
|
verbose_name=_("First-time speaker?"),
|
|
|
|
help_text=_("Check this field if this is your first time speaking "
|
2018-10-05 20:46:10 +00:00
|
|
|
"at a free software conference."),
|
2017-08-13 19:31:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
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/"
|
2018-10-05 19:52:28 +00:00
|
|
|
"markdown-cheat-sheet/' target='_blank'>"
|
2017-08-13 19:31:22 +00:00
|
|
|
"Markdown</a>."),
|
|
|
|
verbose_name=_("Past speaking experience"),
|
|
|
|
)
|
|
|
|
experience_html = models.TextField(blank=True)
|
|
|
|
|
|
|
|
travel_assistance = models.BooleanField(
|
|
|
|
blank=True,
|
2017-09-18 03:28:41 +00:00
|
|
|
default=False,
|
2017-08-13 19:31:22 +00:00
|
|
|
verbose_name=_("Travel assistance required?"),
|
2018-10-05 20:46:10 +00:00
|
|
|
help_text=_("Check this field if you require travel assistance."),
|
2017-08-13 19:31:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
lodging_assistance = models.BooleanField(
|
|
|
|
blank=True,
|
2017-09-18 03:28:41 +00:00
|
|
|
default=False,
|
2017-08-13 19:31:22 +00:00
|
|
|
verbose_name=_("Lodging assistance required?"),
|
2018-10-05 20:46:10 +00:00
|
|
|
help_text=_("Check this field if you require lodging assistance."),
|
2017-08-13 19:31:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
home_city = models.CharField(
|
|
|
|
blank=True,
|
|
|
|
max_length=127,
|
|
|
|
help_text=_("Which city (and state, and country) will you be "
|
2018-10-05 20:46:10 +00:00
|
|
|
"traveling from to get to CopyleftConf?"),
|
2017-08-13 19:31:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
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 "
|
2018-10-05 20:46:10 +00:00
|
|
|
"under-represented in the free software community, you may list "
|
2017-08-13 19:31:22 +00:00
|
|
|
"these here. Your response is optional."),
|
|
|
|
)
|
|
|
|
|
2017-11-16 00:38:21 +00:00
|
|
|
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."),
|
|
|
|
)
|
|
|
|
|
2017-08-13 19:31:22 +00:00
|
|
|
code_of_conduct = models.BooleanField(
|
2017-09-18 03:32:05 +00:00
|
|
|
default=False,
|
2017-08-13 19:31:22 +00:00
|
|
|
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>."),
|
|
|
|
)
|
2015-10-16 17:53:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Proposal(ProposalBase):
|
2017-08-13 19:52:57 +00:00
|
|
|
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"),
|
2018-10-05 20:46:10 +00:00
|
|
|
help_text=_("Check this box if CopyleftConf will be the first "
|
|
|
|
"time this talk is presented."),
|
2017-08-13 19:52:57 +00:00
|
|
|
)
|
|
|
|
slides_release = models.BooleanField(
|
|
|
|
default=True,
|
2018-10-05 20:46:10 +00:00
|
|
|
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."),
|
2017-08-13 19:52:57 +00:00
|
|
|
)
|
2015-10-16 17:53:02 +00:00
|
|
|
recording_release = models.BooleanField(
|
|
|
|
default=True,
|
2018-10-05 20:46:10 +00:00
|
|
|
help_text=_("I authorize Software Freedom Conservancy to distribute a "
|
|
|
|
"recording of my talk under the same license I specify for "
|
|
|
|
"my slides."),
|
2017-08-13 19:52:57 +00:00
|
|
|
|
2015-10-16 17:53:02 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
abstract = True
|
|
|
|
|
|
|
|
|
|
|
|
class TalkProposal(Proposal):
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name = "talk proposal"
|