Files
@ dadee611a059
Branch filter:
Location: copyleftconf-website-fork/pinaxcon/proposals/models.py - annotation
dadee611a059
4.6 KiB
text/x-python
css: Navbar hover color is a function of the primary color.
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 | 04f246d85071 1de0a5d46ab9 04f246d85071 1de0a5d46ab9 04f246d85071 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 abbe05ee0e6a 1de0a5d46ab9 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 7a25022890a1 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 abbe05ee0e6a 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 abbe05ee0e6a 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 e472ddff2c42 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 40c42af2d618 1de0a5d46ab9 50bc1497e971 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 1de0a5d46ab9 04f246d85071 04f246d85071 04f246d85071 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 2ad649da3033 e472ddff2c42 e472ddff2c42 2ad649da3033 2ad649da3033 2ad649da3033 e472ddff2c42 e472ddff2c42 e472ddff2c42 e472ddff2c42 e472ddff2c42 2ad649da3033 04f246d85071 04f246d85071 e472ddff2c42 e472ddff2c42 e472ddff2c42 2ad649da3033 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=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"
|