Adds ConferenceSpeaker model to Symposion

This commit is contained in:
Christopher Neugebauer 2017-08-13 12:31:22 -07:00
parent 3f188729f9
commit 1de0a5d46a
4 changed files with 131 additions and 1 deletions

View file

@ -1,6 +1,25 @@
from django import forms from django import forms
from .models import TalkProposal 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):

View file

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-08-13 18:45
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('symposion_speakers', '0007_auto_20170810_1651'),
('proposals', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='ConferenceSpeaker',
fields=[
('speakerbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_speakers.SpeakerBase')),
('twitter_username', models.CharField(blank=True, help_text='Your Twitter account', max_length=15)),
('first_time', models.BooleanField(help_text='')),
('experience', models.TextField(blank=True, help_text="List any past speaking experience you have. 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(help_text='Check this field if you require travel assistance to get to North Bay Python in Petaluma, California.')),
('lodging_assistance', models.BooleanField(help_text='Check this field if you require lodging assistance in Petaluma, California during North Bay Python.')),
('home_city', models.CharField(blank=True, help_text='Which city (and state, and country) will you be traveling from to get to North Bay Python?', max_length=127)),
('minority_group', models.CharField(blank=True, help_text='If you are a member of one or more groups that are underrepresented in the tech industry, you may list these here. Your response is optional.', max_length=256, verbose_name='Diversity statement')),
('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>.")),
],
bases=('symposion_speakers.speakerbase',),
),
]

View file

@ -1,6 +1,81 @@
from django.db import models 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.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=15,
blank=True,
help_text=_(u"Your Twitter account")
)
first_time = models.BooleanField(
blank=True,
verbose_name=_("First-time speaker?"),
help_text=_("Check this field if this is your first time speaking "
"at a technical 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,
verbose_name=_("Travel assistance required?"),
help_text=_("Check this field if you require travel assistance to get "
"to North Bay Python in Petaluma, California."),
)
lodging_assistance = models.BooleanField(
blank=True,
verbose_name=_("Lodging assistance required?"),
help_text=_("Check this field if you require lodging assistance in "
"Petaluma, California during North Bay Python."),
)
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 North Bay Python?"),
)
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 tech industry, you may list "
"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): class Proposal(ProposalBase):

View file

@ -256,6 +256,9 @@ PINAX_STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "your test public
PINAX_STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "your test secret key") PINAX_STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "your test secret key")
PINAX_STRIPE_SEND_EMAIL_RECEIPTS = False PINAX_STRIPE_SEND_EMAIL_RECEIPTS = False
SYMPOSION_SPEAKER_MODEL = "pinaxcon.proposals.models.ConferenceSpeaker"
SYMPOSION_SPEAKER_FORM = "pinaxcon.proposals.forms.ConferenceSpeakerForm"
# Registrasion Attendee profile model # Registrasion Attendee profile model
ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile" ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile"
# Registrasion attendee profile form -- must act on ATTENDEE_PROFILE_FORM # Registrasion attendee profile form -- must act on ATTENDEE_PROFILE_FORM