Set up tracks for 2025

This commit is contained in:
Ben Sturmfels 2025-03-04 23:26:41 +11:00
parent 034c8f0549
commit 445564b98e
Signed by: bsturmfels
GPG key ID: 023C05E2C9C068F0
5 changed files with 177 additions and 114 deletions

View file

@ -21,21 +21,16 @@ class CategoryAdmin(admin.ModelAdmin):
models_to_register = [
models.AIAndMachineLearningProposal,
models.DiversityEquityAndInclusionProposal,
models.FOSSAndARM64Proposal,
models.FOSSFundingandEconomicsProposal,
models.DistrosProposal,
models.FOSSInDailyLifeProposal,
models.FOSSInEducationProposal,
models.LicensingAndLegalIssuesProposal,
models.MobileDeviceUserFreedomProposal,
models.ReproducibilityProposal,
models.RightToRepairProposal,
models.LegalIssuesProposal,
models.LinuxKernalProposal,
models.P2PLocalFirstProposal,
models.ScienceOfCommunityProposal,
models.MemberProjectsProposal,
models.SupportingUserGroupsProposal,
models.XMPPProposal,
models.WildCardProposal,
models.XMPPProposal,
]
for model in models_to_register:
admin.site.register(model, CategoryAdmin,

View file

@ -61,27 +61,9 @@ class MiniconfProposalForm(ProposalForm):
pass
class AIAndMachineLearningProposalForm(MiniconfProposalForm):
class DistrosProposalForm(MiniconfProposalForm):
class Meta:
model = models.AIAndMachineLearningProposal
fields = TALK_FORMAT_FIELDS
class DiversityEquityAndInclusionProposalForm(MiniconfProposalForm):
class Meta:
model = models.DiversityEquityAndInclusionProposal
fields = TALK_FORMAT_FIELDS
class FOSSAndARM64ProposalForm(MiniconfProposalForm):
class Meta:
model = models.FOSSAndARM64Proposal
fields = TALK_FORMAT_FIELDS
class FOSSFundingandEconomicsProposalForm(MiniconfProposalForm):
class Meta:
model = models.FOSSFundingandEconomicsProposal
model = models.DistrosProposal
fields = TALK_FORMAT_FIELDS
@ -97,39 +79,21 @@ class FOSSInEducationProposalForm(MiniconfProposalForm):
fields = TALK_FORMAT_FIELDS
class KeynotePanelProposalForm(MiniconfProposalForm):
class LegalIssuesProposalForm(MiniconfProposalForm):
class Meta:
model = models.KeynotePanelProposal
model = models.LegalIssuesProposal
fields = TALK_FORMAT_FIELDS
class LicensingAndLegalIssuesProposalForm(MiniconfProposalForm):
class LinuxKernalProposalForm(MiniconfProposalForm):
class Meta:
model = models.LicensingAndLegalIssuesProposal
model = models.LinuxKernalProposal
fields = TALK_FORMAT_FIELDS
class MobileDeviceUserFreedomProposalForm(MiniconfProposalForm):
class P2PLocalFirstProposalForm(MiniconfProposalForm):
class Meta:
model = models.MobileDeviceUserFreedomProposal
fields = TALK_FORMAT_FIELDS
class ReproducibilityProposalForm(MiniconfProposalForm):
class Meta:
model = models.ReproducibilityProposal
fields = TALK_FORMAT_FIELDS
class RightToRepairProposalForm(MiniconfProposalForm):
class Meta:
model = models.RightToRepairProposal
fields = TALK_FORMAT_FIELDS
class SeleniumProposalForm(MiniconfProposalForm):
class Meta:
model = models.SeleniumProposal
model = models.P2PLocalFirstProposal
fields = TALK_FORMAT_FIELDS
@ -139,12 +103,6 @@ class ScienceOfCommunityProposalForm(MiniconfProposalForm):
fields = TALK_FORMAT_FIELDS
class MemberProjectsProposalForm(MiniconfProposalForm):
class Meta:
model = models.MemberProjectsProposal
fields = TALK_FORMAT_FIELDS
class SupportingUserGroupsProposalForm(MiniconfProposalForm):
class Meta:
model = models.SupportingUserGroupsProposal

View file

@ -0,0 +1,152 @@
# Generated by Django 2.2.28 on 2025-03-04 03:37
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('symposion_proposals', '0003_auto_20170702_2250'),
('symposion_speakers', '0012_auto_20230420_0018'),
('symposion_reviews', '0001_initial'),
('symposion_schedule', '0009_presentation_videos'),
('proposals', '0015_seleniumproposal'),
]
operations = [
migrations.CreateModel(
name='DistrosProposal',
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 (<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 Software Freedom Conservancy to release any other material (such as slides) from presentations covered by this proposal, under the <a href='https://creativecommons.org/licenses/by-sa/4.0/'> Creative Commons Attribution-ShareAlike 4.0 International</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?', 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': 'Distros talk proposal',
},
bases=('symposion_proposals.proposalbase',),
),
migrations.CreateModel(
name='LinuxKernalProposal',
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 (<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 Software Freedom Conservancy to release any other material (such as slides) from presentations covered by this proposal, under the <a href='https://creativecommons.org/licenses/by-sa/4.0/'> Creative Commons Attribution-ShareAlike 4.0 International</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?', 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': 'Linux Kernal talk proposal',
},
bases=('symposion_proposals.proposalbase',),
),
migrations.CreateModel(
name='P2PLocalFirstProposal',
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 (<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 Software Freedom Conservancy to release any other material (such as slides) from presentations covered by this proposal, under the <a href='https://creativecommons.org/licenses/by-sa/4.0/'> Creative Commons Attribution-ShareAlike 4.0 International</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?', 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': 'Peer-to-Peer and Local First talk proposal',
},
bases=('symposion_proposals.proposalbase',),
),
migrations.RenameModel(
old_name='LicensingAndLegalIssuesProposal',
new_name='LegalIssuesProposal',
),
migrations.RemoveField(
model_name='diversityequityandinclusionproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='fossandarm64proposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='fossfundingandeconomicsproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='keynotepanelproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='memberprojectsproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='mobiledeviceuserfreedomproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='reproducibilityproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='righttorepairproposal',
name='proposalbase_ptr',
),
migrations.RemoveField(
model_name='seleniumproposal',
name='proposalbase_ptr',
),
migrations.AlterModelOptions(
name='legalissuesproposal',
options={'verbose_name': 'Legal Issues talk proposal'},
),
migrations.DeleteModel(
name='AIAndMachineLearningProposal',
),
migrations.DeleteModel(
name='DiversityEquityAndInclusionProposal',
),
migrations.DeleteModel(
name='FOSSAndARM64Proposal',
),
migrations.DeleteModel(
name='FOSSFundingandEconomicsProposal',
),
migrations.DeleteModel(
name='KeynotePanelProposal',
),
migrations.DeleteModel(
name='MemberProjectsProposal',
),
migrations.DeleteModel(
name='MobileDeviceUserFreedomProposal',
),
migrations.DeleteModel(
name='ReproducibilityProposal',
),
migrations.DeleteModel(
name='RightToRepairProposal',
),
migrations.DeleteModel(
name='SeleniumProposal',
),
]

View file

@ -160,24 +160,9 @@ class MiniconfSessionProposal(Proposal):
abstract = True
class AIAndMachineLearningProposal(MiniconfSessionProposal):
class DistrosProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "AI and Machine Learning talk proposal"
class DiversityEquityAndInclusionProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Diversity Equity and Inclusion and FOSS talk proposal"
class FOSSAndARM64Proposal(MiniconfSessionProposal):
class Meta:
verbose_name = "FOSS and ARM64; from the Cloud to the Edge talk proposal"
class FOSSFundingandEconomicsProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "FOSS Funding and Economics talk proposal"
verbose_name = "Distros talk proposal"
class FOSSInDailyLifeProposal(MiniconfSessionProposal):
@ -190,29 +175,19 @@ class FOSSInEducationProposal(MiniconfSessionProposal):
verbose_name = "FOSS in Education talk proposal"
class KeynotePanelProposal(MiniconfSessionProposal):
class LegalIssuesProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Keynote panel talk proposal"
verbose_name = "Legal Issues talk proposal"
class LicensingAndLegalIssuesProposal(MiniconfSessionProposal):
class LinuxKernalProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Licensing and Legal Issues talk proposal"
verbose_name = "Linux Kernal talk proposal"
class MobileDeviceUserFreedomProposal(MiniconfSessionProposal):
class P2PLocalFirstProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Mobile Device User Freedom talk proposal"
class ReproducibilityProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Reproducability talk proposal"
class RightToRepairProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Right to Repair talk proposal"
verbose_name = "Peer-to-Peer and Local First talk proposal"
class ScienceOfCommunityProposal(MiniconfSessionProposal):
@ -220,16 +195,6 @@ class ScienceOfCommunityProposal(MiniconfSessionProposal):
verbose_name = "Science of Community talk proposal"
class SeleniumProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Selenium talk proposal"
class MemberProjectsProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "SFC Member Projects talk proposal"
class SupportingUserGroupsProposal(MiniconfSessionProposal):
class Meta:
verbose_name = "Supporting User Groups talk proposal"

View file

@ -371,20 +371,13 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = True
CONFERENCE_ID = 4
PROPOSAL_FORMS = {
"ai-and-machine-learning": "pinaxcon.proposals.forms.AIAndMachineLearningProposalForm",
"diversity-equity-and-inclusion": "pinaxcon.proposals.forms.DiversityEquityAndInclusionProposalForm",
"foss-and-arm64": "pinaxcon.proposals.forms.FOSSAndARM64ProposalForm",
"foss-funding-and-economics": "pinaxcon.proposals.forms.FOSSFundingandEconomicsProposalForm",
"distros": "pinaxcon.proposals.forms.DistrosProposalForm",
"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",
"right-to-repair": "pinaxcon.proposals.forms.RightToRepairProposalForm",
"selenium": "pinaxcon.proposals.forms.SeleniumProposalForm",
"legal-issues": "pinaxcon.proposals.forms.LegalIssuesProposalForm",
"linux-kernel": "pinaxcon.proposals.forms.LinuxKernelProposalForm",
"peer-to-peer-local-first": "pinaxcon.proposals.forms.P2PLocalFirstProposalForm",
"science-of-community": "pinaxcon.proposals.forms.ScienceOfCommunityProposalForm",
"member-projects": "pinaxcon.proposals.forms.MemberProjectsProposalForm",
"supporting-user-groups": "pinaxcon.proposals.forms.SupportingUserGroupsProposalForm",
"xmpp": "pinaxcon.proposals.forms.XMPPProposalForm",
"wild-card": "pinaxcon.proposals.forms.WildCardProposalForm",