Files @ f1b6e31c312a
Branch filter:

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

Brett Smith
templates: Ask for support after invoice payment.
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"