copyleftconf-website/pinaxcon/proposals/models.py

131 lines
4.6 KiB
Python
Raw Normal View History

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,
2017-09-18 03:28:41 +00:00
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,
2017-09-18 03:28:41 +00:00
default=False,
verbose_name=_("Travel assistance required?"),
help_text=_("Check this field if you require travel assistance."),
)
lodging_assistance = models.BooleanField(
blank=True,
2017-09-18 03:28:41 +00:00
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."),
)
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."),
)
code_of_conduct = models.BooleanField(
2017-09-18 03:32:05 +00:00
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):
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"),
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,
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
)
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."),
2017-08-13 19:52:57 +00:00
)
class Meta:
abstract = True
class TalkProposal(Proposal):
class Meta:
verbose_name = "talk proposal"