From 1372f4d27bfd7cdccce4f77cdccc43172b3e8eae Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Thu, 23 May 2024 22:12:12 +1000 Subject: [PATCH] Add keynote panel proposal --- pinaxcon/proposals/forms.py | 6 ++++ .../migrations/0014_keynotepanelproposal.py | 35 +++++++++++++++++++ pinaxcon/proposals/models.py | 5 +++ pinaxcon/settings.py | 1 + 4 files changed, 47 insertions(+) create mode 100644 pinaxcon/proposals/migrations/0014_keynotepanelproposal.py diff --git a/pinaxcon/proposals/forms.py b/pinaxcon/proposals/forms.py index b5968898..21770410 100644 --- a/pinaxcon/proposals/forms.py +++ b/pinaxcon/proposals/forms.py @@ -97,6 +97,12 @@ class FOSSInEducationProposalForm(MiniconfProposalForm): fields = TALK_FORMAT_FIELDS +class KeynotePanelProposalForm(MiniconfProposalForm): + class Meta: + model = models.KeynotePanelProposal + fields = TALK_FORMAT_FIELDS + + class LicensingAndLegalIssuesProposalForm(MiniconfProposalForm): class Meta: model = models.LicensingAndLegalIssuesProposal diff --git a/pinaxcon/proposals/migrations/0014_keynotepanelproposal.py b/pinaxcon/proposals/migrations/0014_keynotepanelproposal.py new file mode 100644 index 00000000..546c29fd --- /dev/null +++ b/pinaxcon/proposals/migrations/0014_keynotepanelproposal.py @@ -0,0 +1,35 @@ +# Generated by Django 2.2.28 on 2024-05-23 05:11 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('symposion_proposals', '0003_auto_20170702_2250'), + ('proposals', '0013_auto_20240515_0500'), + ] + + operations = [ + migrations.CreateModel( + name='KeynotePanelProposal', + 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 Software Freedom Conservancy 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 ( CC BY-NC-SA 4.0) licence.")), + ('materials_release', models.BooleanField(default=True, help_text="I allow Software Freedom Conservancy to release any other material (such as slides) from presentations covered by this proposal, under the Creative Commons Attribution-ShareAlike 4.0 International")), + ('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?', null=True)), + ('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, 'Long 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.')), + ], + options={ + 'verbose_name': 'Keynote panel talk proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + ] diff --git a/pinaxcon/proposals/models.py b/pinaxcon/proposals/models.py index 5fbd26d7..57a0872f 100644 --- a/pinaxcon/proposals/models.py +++ b/pinaxcon/proposals/models.py @@ -190,6 +190,11 @@ class FOSSInEducationProposal(MiniconfSessionProposal): verbose_name = "FOSS in Education talk proposal" +class KeynotePanelProposal(MiniconfSessionProposal): + class Meta: + verbose_name = "Keynote panel talk proposal" + + class LicensingAndLegalIssuesProposal(MiniconfSessionProposal): class Meta: verbose_name = "Licensing and Legal Issues talk proposal" diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index 508e7b35..2e2f064d 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -377,6 +377,7 @@ PROPOSAL_FORMS = { "foss-funding-and-economics": "pinaxcon.proposals.forms.FOSSFundingandEconomicsProposalForm", "foss-in-daily-life": "pinaxcon.proposals.forms.FOSSInDailyLifeProposalForm", "foss-in-education": "pinaxcon.proposals.forms.FOSSInEducationProposalForm", + "keynote-panel": "pinaxcon.proposals.forms.KeynotePanelProposalForm", "licensing-and-legal-issues": "pinaxcon.proposals.forms.LicensingAndLegalIssuesProposalForm", "mobile-device-user-freedom": "pinaxcon.proposals.forms.MobileDeviceUserFreedomProposalForm", "reproducibility": "pinaxcon.proposals.forms.ReproducibilityProposalForm",