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…
	
	Add table
		
		Reference in a new issue