diff --git a/pinaxcon/proposals/admin.py b/pinaxcon/proposals/admin.py index 40725bec8a06e0412b557669d600106b716f7d50..6fa34d09677d990341def5458d54f428226c066d 100644 --- a/pinaxcon/proposals/admin.py +++ b/pinaxcon/proposals/admin.py @@ -25,6 +25,7 @@ models_to_register = [ models.MemberProjectProposal, models.ContainerDaysProposal, models.SustainableOpenSourceBusinessProposal, + models.SoftwareWorkerCoopsProposal, models.DiversityEquityInclusionProposal, models.FOSSAtPlayProposal, models.OpenSourcAIDataProposal, diff --git a/pinaxcon/proposals/forms.py b/pinaxcon/proposals/forms.py index 4da26a63873a5fe09cda6bcd980e40c022beeb6d..2969e7fece3d01da156cb7a727bbc84e8bca990b 100644 --- a/pinaxcon/proposals/forms.py +++ b/pinaxcon/proposals/forms.py @@ -87,6 +87,12 @@ class SustainableOpenSourceBusinessProposalForm(MiniconfProposalForm): fields = TALK_FORMAT_FIELDS +class SoftwareWorkerCoopsProposalForm(MiniconfProposalForm): + class Meta: + model = models.SoftwareWorkerCoopsProposal + fields = TALK_FORMAT_FIELDS + + class DiversityEquityInclusionProposalForm(MiniconfProposalForm): class Meta: model = models.DiversityEquityInclusionProposal diff --git a/pinaxcon/proposals/migrations/0009_auto_20230421_0139.py b/pinaxcon/proposals/migrations/0009_auto_20230421_0139.py new file mode 100644 index 0000000000000000000000000000000000000000..97533992fdb7ddeda7d3001843b2b809289d34bb --- /dev/null +++ b/pinaxcon/proposals/migrations/0009_auto_20230421_0139.py @@ -0,0 +1,114 @@ +# Generated by Django 2.2.28 on 2023-04-21 08:39 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('symposion_proposals', '0003_auto_20170702_2250'), + ('proposals', '0008_auto_20230420_0241'), + ] + + operations = [ + migrations.CreateModel( + name='SoftwareWorkerCoopsProposal', + 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-Share Alike Australia 3.0 Licence")), + ('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': 'Software Worker Co-ops', + }, + bases=('symposion_proposals.proposalbase',), + ), + migrations.AlterModelOptions( + name='sustainableopensourcebusinessproposal', + options={'verbose_name': 'Sustainable Open Source Business'}, + ), + migrations.AlterField( + model_name='aarch64arm64proposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='bsdunixproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='communityproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='containerdaysproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='copyleftcomplianceproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='diversityequityinclusionproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='fossatplayproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='fossforeducationproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='fossindailylifeproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='memberprojectproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='opensourcaidataproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='openworkproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='scienceofcommunityproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='sustainableopensourcebusinessproposal', + name='talk_format', + field=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.'), + ), + migrations.AlterField( + model_name='xmppproposal', + name='talk_format', + field=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.'), + ), + ] diff --git a/pinaxcon/proposals/models.py b/pinaxcon/proposals/models.py index 8adeb625336ad228c8b0904090cfa72bd6a7031b..c445136b05b9f4c6dec811c2f0de323eeae46d3c 100644 --- a/pinaxcon/proposals/models.py +++ b/pinaxcon/proposals/models.py @@ -139,8 +139,9 @@ class MiniconfSessionProposal(Proposal): FORMAT_OTHER = 5 TALK_FORMATS = [ - (FORMAT_MEDIUM_PRESENTATION, "Short Presentation (15 or 20 min)"), - (FORMAT_LONG_PRESENTATION, "Long Presentation (45 min)"), + (FORMAT_SHORT_PRESENTATION, "Lightning Talk (5-10 min)"), + (FORMAT_MEDIUM_PRESENTATION, "Short Presentation (20-25 min)"), + (FORMAT_LONG_PRESENTATION, "Long Presentation (40-45 min)"), ] talk_format = models.IntegerField( @@ -176,7 +177,12 @@ class ContainerDaysProposal(MiniconfSessionProposal): class SustainableOpenSourceBusinessProposal(MiniconfSessionProposal): class Meta: - verbose_name = "Sustainable Open Source Business/ Software Worker Coops proposal" + verbose_name = "Sustainable Open Source Business" + + +class SoftwareWorkerCoopsProposal(MiniconfSessionProposal): + class Meta: + verbose_name = "Software Worker Co-ops" class DiversityEquityInclusionProposal(MiniconfSessionProposal): diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index 0f0d3275d3b02528b9c336ed8c1aad2b480548f2..94b75c7254c8911595155c87cdd5167b2ad0e54a 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -372,6 +372,7 @@ PROPOSAL_FORMS = { "sfc-member-project": "pinaxcon.proposals.forms.MemberProjectProposalForm", "container-days": "pinaxcon.proposals.forms.ContainerDaysProposalForm", "sustainable-open-source-business": "pinaxcon.proposals.forms.SustainableOpenSourceBusinessProposalForm", + "software-worker-coops": "pinaxcon.proposals.forms.SoftwareWorkerCoopsProposalForm", "diversity-equity-inclusion": "pinaxcon.proposals.forms.DiversityEquityInclusionProposalForm", "foss-at-play": "pinaxcon.proposals.forms.FOSSAtPlayProposalForm", "open-source-ai-data": "pinaxcon.proposals.forms.OpenSourcAIDataProposalForm",