Prototype talk proposal forms for "Copyleft and Compliance" and "SFC Member Project" streams
This commit is contained in:
parent
0c3e579b8d
commit
4cf869c9fa
4 changed files with 122 additions and 0 deletions
|
@ -23,6 +23,10 @@ DEFAULT_FIELDS = [
|
|||
"materials_release",
|
||||
]
|
||||
|
||||
TALK_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
|
||||
TALK_FORMAT_FIELDS.insert(2, "talk_format")
|
||||
TALK_FORMAT_FIELDS.append("ticket_acknowledgement")
|
||||
|
||||
class ProposalForm(forms.ModelForm):
|
||||
|
||||
required_css_class = 'label-required'
|
||||
|
@ -48,3 +52,24 @@ class TutorialProposalForm(ProposalForm):
|
|||
class Meta:
|
||||
model = models.TutorialProposal
|
||||
fields = copy.copy(DEFAULT_FIELDS)
|
||||
|
||||
|
||||
class MiniconfProposalForm(ProposalForm):
|
||||
|
||||
def __init__(self, *a, **k):
|
||||
super(MiniconfProposalForm, self).__init__(*a, **k)
|
||||
self.fields['ticket_acknowledgement'].required = True
|
||||
|
||||
|
||||
class CopyleftComplianceProposalForm(MiniconfProposalForm):
|
||||
|
||||
class Meta:
|
||||
model = models.CopyleftComplianceProposal
|
||||
fields = TALK_FORMAT_FIELDS
|
||||
|
||||
|
||||
class MemberProjectProposalForm(MiniconfProposalForm):
|
||||
|
||||
class Meta:
|
||||
model = models.MemberProjectProposal
|
||||
fields = TALK_FORMAT_FIELDS
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
# Generated by Django 2.2.28 on 2023-04-15 04:51
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('symposion_proposals', '0003_auto_20170702_2250'),
|
||||
('proposals', '0004_auto_20221208_0102'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CopyleftComplianceProposal',
|
||||
fields=[
|
||||
('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
|
||||
('target_audience', models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?')),
|
||||
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence.")),
|
||||
('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the <a href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>")),
|
||||
('primary_topic', models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?')),
|
||||
('experience_level', models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?')),
|
||||
('require_approval', models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?')),
|
||||
('content_warning', models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning')),
|
||||
('content_warning_html', models.TextField(blank=True)),
|
||||
('talk_format', models.IntegerField(choices=[(1, 'Lightning Talk (5-10 min)'), (2, 'Short Presentation (20-25 min)'), (3, 'Presentation (40-45 min)')], default=3, help_text='Please indicate your preferred talk length in the private abstract field below.')),
|
||||
('ticket_acknowledgement', models.BooleanField(default=False, help_text='I understand that I will be required to purchase a conference ticket and arrange my own travel and accommodation, as linux.conf.au miniconfs are unfunded community run events.')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Copyleft and Compliance talk proposal',
|
||||
},
|
||||
bases=('symposion_proposals.proposalbase',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MemberProjectProposal',
|
||||
fields=[
|
||||
('proposalbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='symposion_proposals.ProposalBase')),
|
||||
('target_audience', models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?')),
|
||||
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence.")),
|
||||
('materials_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any other material (such as slides) from presentations covered by this proposal, under the <a href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>")),
|
||||
('primary_topic', models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?')),
|
||||
('experience_level', models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?')),
|
||||
('require_approval', models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?')),
|
||||
('content_warning', models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning')),
|
||||
('content_warning_html', models.TextField(blank=True)),
|
||||
('talk_format', models.IntegerField(choices=[(1, 'Lightning Talk (5-10 min)'), (2, 'Short Presentation (20-25 min)'), (3, 'Presentation (40-45 min)')], default=3, help_text='Please indicate your preferred talk length in the private abstract field below.')),
|
||||
('ticket_acknowledgement', models.BooleanField(default=False, help_text='I understand that I will be required to purchase a conference ticket and arrange my own travel and accommodation, as linux.conf.au miniconfs are unfunded community run events.')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'SFC Member Project talk proposal',
|
||||
},
|
||||
bases=('symposion_proposals.proposalbase',),
|
||||
),
|
||||
]
|
|
@ -127,3 +127,43 @@ class TutorialProposal(Proposal):
|
|||
|
||||
class Meta:
|
||||
verbose_name = "tutorial proposal"
|
||||
|
||||
|
||||
class MiniconfSessionProposal(Proposal):
|
||||
|
||||
FORMAT_SHORT_PRESENTATION = 1
|
||||
FORMAT_MEDIUM_PRESENTATION = 2
|
||||
FORMAT_LONG_PRESENTATION = 3
|
||||
FORMAT_DEMONSTRATION = 4
|
||||
FORMAT_OTHER = 5
|
||||
|
||||
TALK_FORMATS = [
|
||||
(FORMAT_SHORT_PRESENTATION, "Lightning Talk (5-10 min)"),
|
||||
(FORMAT_MEDIUM_PRESENTATION, "Short Presentation (20-25 min)"),
|
||||
(FORMAT_LONG_PRESENTATION, "Presentation (40-45 min)"),
|
||||
]
|
||||
|
||||
talk_format = models.IntegerField(
|
||||
choices=TALK_FORMATS,
|
||||
default=FORMAT_LONG_PRESENTATION,
|
||||
help_text="Please indicate your preferred talk length in the private abstract field below."
|
||||
)
|
||||
|
||||
ticket_acknowledgement = models.BooleanField(
|
||||
default=False,
|
||||
help_text="I understand that I will be required to purchase a conference ticket "
|
||||
"and arrange my own travel and accommodation, as linux.conf.au miniconfs are unfunded community run events."
|
||||
)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class CopyleftComplianceProposal(MiniconfSessionProposal):
|
||||
class Meta:
|
||||
verbose_name = "Copyleft and Compliance talk proposal"
|
||||
|
||||
|
||||
class MemberProjectProposal(MiniconfSessionProposal):
|
||||
class Meta:
|
||||
verbose_name = "SFC Member Project talk proposal"
|
||||
|
|
|
@ -363,6 +363,8 @@ CONFERENCE_ID = 1
|
|||
PROPOSAL_FORMS = {
|
||||
"talk": "pinaxcon.proposals.forms.TalkProposalForm",
|
||||
"tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
|
||||
"copyleft-compliance": "pinaxcon.proposals.forms.CopyleftComplianceProposalForm",
|
||||
"sfc-member-project": "pinaxcon.proposals.forms.MemberProjectProposalForm",
|
||||
}
|
||||
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk",)
|
||||
|
||||
|
|
Loading…
Reference in a new issue