Changeset - 2ad649da3033
[Not reviewed]
0 2 1
Christopher Neugebauer - 7 years ago 2017-08-13 19:52:57
chrisjrn@gmail.com
Adds CFP fields
3 files changed with 114 insertions and 15 deletions:
0 comments (0 inline, 0 general)
pinaxcon/proposals/forms.py
Show inline comments
 
from django import forms
 
from symposion.proposals.forms import ProposalMixIn
 

	
 
from .models import ConferenceSpeaker, TalkProposal
 

	
 

	
 
class ConferenceSpeakerForm(forms.ModelForm):
 

	
 
    class Meta:
 
        model = ConferenceSpeaker
 
        exclude = [
 
            'user',
 
            'biography_html',
 
            'experience_html',
 
            'invite_email',
 
            'invite_token',
 
            'annotation',
 
        ]
 

	
 
    def __init__(self, *a, **k):
 
        super(ConferenceSpeakerForm, self).__init__(*a, **k)
 
        self.fields['code_of_conduct'].required = True
 

	
 

	
 

	
 
class ProposalForm(forms.ModelForm):
 
class ProposalForm(forms.ModelForm, ProposalMixIn):
 

	
 
    def __init__(self, *a, **k):
 
        super(ProposalForm, self).__init__(*a, **k)
 
        self.description_required()
 
        self.abstract_required()
 

	
 
    def clean_description(self):
 
        value = self.cleaned_data["description"]
 
        if len(value) > 400:
 
            raise forms.ValidationError(
 
                u"The description must be less than 400 characters"
 
            )
 
        return value
 

	
 

	
 
class TalkProposalForm(ProposalForm):
 

	
 
    class Meta:
 
        model = TalkProposal
 
        fields = [
 
            "title",
 
            "audience_level",
 
            "description",
 
            "abstract",
 
            "new_presentation",
 
            "extended_presentation",
 
            "additional_notes",
 
            "extra_av",
 
            "slides_release",
 
            "recording_release",
 
        ]
pinaxcon/proposals/migrations/0003_auto_20170813_1945.py
Show inline comments
 
new file 100644
 
# -*- coding: utf-8 -*-
 
# Generated by Django 1.11.4 on 2017-08-13 19:45
 
from __future__ import unicode_literals
 

	
 
from django.db import migrations, models
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    dependencies = [
 
        ('proposals', '0002_conferencespeaker'),
 
    ]
 

	
 
    operations = [
 
        migrations.RemoveField(
 
            model_name='talkproposal',
 
            name='audience_level',
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='extended_presentation',
 
            field=models.BooleanField(default=False, help_text='Most talks at North Bay Python go for 30 minutes. We have some openings for 45-minute talks. If you check this field, please explain in your additional notes how you would use the extra 15 minutes.', verbose_name='Optionally consider this proposal for a 45-minute slot'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='extra_av',
 
            field=models.TextField(blank=True, 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.', verbose_name='Extra tech and A/V requirements'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='new_presentation',
 
            field=models.BooleanField(default=False, help_text='Check this box if North Bay Python will be the first time this talk is presented at a technical conference.', verbose_name='This is a new presentation'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='slides_release',
 
            field=models.BooleanField(default=True, help_text='I authorize North Bay Python to release a copy of my slides and related materials under the Creative Commons Attribution-ShareAlike 3.0 United States licence, and certify that I have the authority to do so.'),
 
        ),
 
        migrations.AlterField(
 
            model_name='conferencespeaker',
 
            name='experience',
 
            field=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'),
 
        ),
 
        migrations.AlterField(
 
            model_name='conferencespeaker',
 
            name='first_time',
 
            field=models.BooleanField(help_text='Check this field if this is your first time speaking at a technical conference.', verbose_name='First-time speaker?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='conferencespeaker',
 
            name='lodging_assistance',
 
            field=models.BooleanField(help_text='Check this field if you require lodging assistance in Petaluma, California during North Bay Python.', verbose_name='Lodging assistance required?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='conferencespeaker',
 
            name='minority_group',
 
            field=models.CharField(blank=True, help_text='If you are a member of one or more groups that are under-represented in the tech industry, you may list these here. Your response is optional.', max_length=256, verbose_name='Diversity statement'),
 
        ),
 
        migrations.AlterField(
 
            model_name='conferencespeaker',
 
            name='travel_assistance',
 
            field=models.BooleanField(help_text='Check this field if you require travel assistance to get to North Bay Python in Petaluma, California.', verbose_name='Travel assistance required?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='talkproposal',
 
            name='recording_release',
 
            field=models.BooleanField(default=True, help_text='I authorize North Bay Python to release a recording of my talk under the Creative Commons Attribution-ShareAlike 3.0 United States licence.'),
 
        ),
 
    ]
pinaxcon/proposals/models.py
Show inline comments
...
 
@@ -71,37 +71,58 @@ class ConferenceSpeaker(SpeakerBase):
 
                    "these here. Your response is optional."),
 
    )
 

	
 
    code_of_conduct = models.BooleanField(
 
        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):
 

	
 
    AUDIENCE_LEVEL_NOVICE = 1
 
    AUDIENCE_LEVEL_EXPERIENCED = 2
 
    AUDIENCE_LEVEL_INTERMEDIATE = 3
 

	
 
    AUDIENCE_LEVELS = [
 
        (AUDIENCE_LEVEL_NOVICE, "Novice"),
 
        (AUDIENCE_LEVEL_INTERMEDIATE, "Intermediate"),
 
        (AUDIENCE_LEVEL_EXPERIENCED, "Experienced"),
 
    ]
 

	
 
    audience_level = models.IntegerField(choices=AUDIENCE_LEVELS)
 

	
 
    extended_presentation = models.BooleanField(
 
        default=False,
 
        verbose_name=_("Optionally consider this proposal for a 45-minute "
 
                       "slot"),
 
        help_text=_("Most talks at North Bay Python go for 30 minutes. We "
 
                    "have some openings for 45-minute talks. If you check this "
 
                    "field, please explain in your additional notes how you "
 
                    "would use the extra 15 minutes."),
 
    )
 
    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 North Bay Python will be the first "
 
                    "time this talk is presented at a technical conference."),
 
    )
 
    slides_release = models.BooleanField(
 
        default=True,
 
        help_text=_("I authorize North Bay Python to release a copy of my "
 
                    "slides and related materials under the Creative Commons "
 
                    "Attribution-ShareAlike 3.0 United States licence, and "
 
                    "certify that I have the authority to do so."),
 
    )
 
    recording_release = models.BooleanField(
 
        default=True,
 
        help_text="By submitting your proposal, you agree to give permission to the conference organizers to record, edit, and release audio and/or video of your presentation. If you do not agree to this, please uncheck this box."
 
        help_text=_("I authorize North Bay Python to release a recording of "
 
                    "my talk under the Creative Commons "
 
                    "Attribution-ShareAlike 3.0 United States licence."),
 

	
 
    )
 

	
 
    class Meta:
 
        abstract = True
 

	
 

	
 
class TalkProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "talk proposal"
0 comments (0 inline, 0 general)