Files @ 0ddae3c8e35b
Branch filter:

Location: CopyleftConf/copyleftconf-website/pinaxcon/proposals/models.py - annotation

Brett Smith
venue: Add accessibility notes.
04f246d85071
1de0a5d46ab9
04f246d85071
1de0a5d46ab9
04f246d85071
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
a3c31d2daa8f
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
abbe05ee0e6a
1de0a5d46ab9
1de0a5d46ab9
a3c31d2daa8f
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
fb110e93f1e1
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
abbe05ee0e6a
1de0a5d46ab9
a3c31d2daa8f
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
abbe05ee0e6a
1de0a5d46ab9
a3c31d2daa8f
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
a3c31d2daa8f
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
1de0a5d46ab9
a3c31d2daa8f
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
a3c31d2daa8f
a3c31d2daa8f
2ad649da3033
2ad649da3033
2ad649da3033
a3c31d2daa8f
a3c31d2daa8f
a3c31d2daa8f
a3c31d2daa8f
a3c31d2daa8f
2ad649da3033
04f246d85071
04f246d85071
a3c31d2daa8f
a3c31d2daa8f
a3c31d2daa8f
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"