From 57ed5e546b341f51acc90a1f3ca78388780a67b1 2016-09-23 11:23:46 From: Scott Bragg Date: 2016-09-23 11:23:46 Subject: [PATCH] CFPs that are ready (#68) * CFPs that are ready * Updated choices for sysadmin --- diff --git a/pinaxcon/proposals/admin.py b/pinaxcon/proposals/admin.py index b5418e6496534b6c5d8381f48b1919ebce879179..63471fa8d6c47c9bd6d3c7b04e319a46f07d6c6e 100644 --- a/pinaxcon/proposals/admin.py +++ b/pinaxcon/proposals/admin.py @@ -7,6 +7,12 @@ from symposion.proposals import models as symposion_models @admin.register(models.TalkProposal) @admin.register(models.TutorialProposal) @admin.register(models.MiniconfProposal) +@admin.register(models.SysAdminProposal) +@admin.register(models.WriteTheDocsProposal) +@admin.register(models.OpenRadioProposal) +@admin.register(models.SecurityProposal) +@admin.register(models.WootconfProposal) +@admin.register(models.KernelProposal) class CategoryAdmin(admin.ModelAdmin): class AdditionalSpeakerInline(admin.TabularInline): diff --git a/pinaxcon/proposals/forms.py b/pinaxcon/proposals/forms.py index 8f0630ae3e74fa4445e6178024897766951ba455..fa63b58f84f7af7de457118898166a5a491b0b27 100644 --- a/pinaxcon/proposals/forms.py +++ b/pinaxcon/proposals/forms.py @@ -3,7 +3,8 @@ from django import forms from pinaxcon import widgets from .models import TalkProposal, TutorialProposal, MiniconfProposal - +from .models import SysAdminProposal, WriteTheDocsProposal, WootconfProposal +from .models import KernelProposal, OpenRadioProposal, SecurityProposal class ProposalForm(forms.ModelForm): @@ -80,3 +81,117 @@ class MiniconfProposalForm(ProposalForm): "private_abstract" : widgets.AceMarkdownEditor(), "technical_requirements" : widgets.AceMarkdownEditor(), } + +class SysAdminProposalForm(ProposalForm): + + class Meta: + model = SysAdminProposal + fields = [ + "title", + "talk_format", + "target_audience", + "abstract", + "private_abstract", + "technical_requirements", + "project", + "project_url", + "recording_release", + "materials_release", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } + +class WriteTheDocsProposalForm(ProposalForm): + + class Meta: + model = WriteTheDocsProposal + fields = [ + "title", + "talk_format", + "target_audience", + "abstract", + "private_abstract", + "technical_requirements", + "project", + "project_url", + "recording_release", + "materials_release", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } + +class RadioProposalForm(ProposalForm): + + class Meta: + model = OpenRadioProposal + fields = [ + "title", + "abstract", + "private_abstract", + "technical_requirements", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } + +class KernelProposalForm(ProposalForm): + + class Meta: + model = KernelProposal + fields = [ + "title", + "abstract", + "private_abstract", + "technical_requirements", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } + +class WootconfProposalForm(ProposalForm): + + class Meta: + model = WootconfProposal + fields = [ + "title", + "abstract", + "private_abstract", + "technical_requirements", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } + +class SecurityProposalForm(ProposalForm): + + class Meta: + model = SecurityProposal + fields = [ + "title", + "abstract", + "private_abstract", + "technical_requirements", + ] + + widgets = { + "abstract" : widgets.AceMarkdownEditor(), + "private_abstract" : widgets.AceMarkdownEditor(), + "technical_requirements" : widgets.AceMarkdownEditor(), + } diff --git a/pinaxcon/proposals/migrations/0002_sysadminproposal_writethedocsproposal.py b/pinaxcon/proposals/migrations/0002_sysadminproposal_writethedocsproposal.py new file mode 100644 index 0000000000000000000000000000000000000000..8f2fa22ef515d72e3d98c50210f7254f13eb9f44 --- /dev/null +++ b/pinaxcon/proposals/migrations/0002_sysadminproposal_writethedocsproposal.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-21 10:36 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('symposion_proposals', '0001_initial'), + ('proposals', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='SysAdminProposal', + 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=[(1, b'User'), (2, b'Business'), (3, b'Community'), (4, b'Developer')])), + ('recording_release', models.BooleanField(default=True, help_text=b"I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")), + ('materials_release', models.BooleanField(default=True, help_text=b"I allow Linux Australia 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")), + ('talk_format', models.IntegerField(choices=[(1, b'Long Presentation (45 min)'), (2, b'Short Presentation (20 min)'), (3, b'Lightning Talk (5 min)')])), + ], + options={ + 'verbose_name': 'System Administration Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + migrations.CreateModel( + name='WriteTheDocsProposal', + 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=[(1, b'User'), (2, b'Business'), (3, b'Community'), (4, b'Developer')])), + ('recording_release', models.BooleanField(default=True, help_text=b"I allow Linux Australia to release any recordings of presentations covered by this proposal, under the Creative Commons Attribution-Share Alike Australia 3.0 Licence")), + ('materials_release', models.BooleanField(default=True, help_text=b"I allow Linux Australia 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")), + ('talk_format', models.IntegerField(choices=[(1, b'Long Presentation (40 min)'), (2, b'Short Presentation (20 min)')])), + ], + options={ + 'verbose_name': 'WriteThe Docs Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + ] diff --git a/pinaxcon/proposals/migrations/0003_kernelproposal_openradioproposal_securityproposal_wootconfproposal.py b/pinaxcon/proposals/migrations/0003_kernelproposal_openradioproposal_securityproposal_wootconfproposal.py new file mode 100644 index 0000000000000000000000000000000000000000..88c092263c54590828adced2a67a3724bac2728a --- /dev/null +++ b/pinaxcon/proposals/migrations/0003_kernelproposal_openradioproposal_securityproposal_wootconfproposal.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-21 10:44 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('symposion_proposals', '0001_initial'), + ('proposals', '0002_sysadminproposal_writethedocsproposal'), + ] + + operations = [ + migrations.CreateModel( + name='KernelProposal', + 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')), + ], + options={ + 'verbose_name': 'Kernel Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + migrations.CreateModel( + name='OpenRadioProposal', + 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')), + ], + options={ + 'verbose_name': 'OpenRadio Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + migrations.CreateModel( + name='SecurityProposal', + 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')), + ], + options={ + 'verbose_name': 'Security/Privacy Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + migrations.CreateModel( + name='WootconfProposal', + 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')), + ], + options={ + 'verbose_name': 'WOOTCONF Miniconf Proposal', + }, + bases=('symposion_proposals.proposalbase',), + ), + ] diff --git a/pinaxcon/proposals/models.py b/pinaxcon/proposals/models.py index f7d25ceeb3602dd9a3b216bcd7e9293d6345893d..8a4bff5c677b6875422194b0cf1b3cbfa2eb851a 100644 --- a/pinaxcon/proposals/models.py +++ b/pinaxcon/proposals/models.py @@ -54,3 +54,53 @@ class MiniconfProposal(ProposalBase): class Meta: verbose_name = "miniconf proposal" + +class SysAdminProposal(Proposal): + + TYPE_SHORT_PRESENTATION = 1 + TYPE_LIGHTNING_TALK = 2 + + TALK_FORMATS = [ + (TYPE_SHORT_PRESENTATION, "Short Presentation (20 min)"), + (TYPE_LIGHTNING_TALK, "Lightning Talk (5 min)"), + ] + + talk_format = models.IntegerField(choices=TALK_FORMATS) + + class Meta: + verbose_name = "System Administration Miniconf Proposal" + +class WriteTheDocsProposal(Proposal): + + TYPE_LONG_PRESENTATION = 1 + TYPE_SHORT_PRESENTATION = 2 + + TALK_FORMATS = [ + (TYPE_LONG_PRESENTATION, "Long Presentation (40 min)"), + (TYPE_SHORT_PRESENTATION, "Short Presentation (20 min)"), + ] + + talk_format = models.IntegerField(choices=TALK_FORMATS) + + class Meta: + verbose_name = "WriteThe Docs Miniconf Proposal" + +class OpenRadioProposal(ProposalBase): + + class Meta: + verbose_name = "OpenRadio Miniconf Proposal" + +class WootconfProposal(ProposalBase): + + class Meta: + verbose_name = "WOOTCONF Miniconf Proposal" + +class KernelProposal(ProposalBase): + + class Meta: + verbose_name = "Kernel Miniconf Proposal" + +class SecurityProposal(ProposalBase): + + class Meta: + verbose_name = "Security/Privacy Miniconf Proposal" diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index 144468be17b150153cd49b62d1d165c4d6b95caf..eb7aa3425489bfeabcc337a71148bbb73175ece5 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -253,7 +253,14 @@ PROPOSAL_FORMS = { "talk": "pinaxcon.proposals.forms.TalkProposalForm", "tutorial": "pinaxcon.proposals.forms.TutorialProposalForm", "miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm", + "sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm", + "radio-miniconf": "pinaxcon.proposals.forms.RadioProposalForm", + "wootconf-miniconf": "pinaxcon.proposals.forms.WootconfProposalForm", + "writethedocs-miniconf": "pinaxcon.proposals.forms.WriteTheDocsProposalForm", + "security-miniconf": "pinaxcon.proposals.forms.SecurityProposalForm", + "kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm", } + #PINAX_PAGES_HOOKSET = "pinaxcon.hooks.PinaxPagesHookSet" #PINAX_BOXES_HOOKSET = "pinaxcon.hooks.PinaxBoxesHookSet"