Add LCA2021 Miniconfs
Setup proposal types for miniconfs at LCA2021.
This commit is contained in:
parent
252697b842
commit
38aebda92e
6 changed files with 246 additions and 25 deletions
|
@ -24,6 +24,11 @@ models_to_register = [
|
||||||
models.TalkProposal,
|
models.TalkProposal,
|
||||||
models.TutorialProposal,
|
models.TutorialProposal,
|
||||||
models.MiniconfProposal,
|
models.MiniconfProposal,
|
||||||
|
### LCA2021 Miniconfs
|
||||||
|
models.GlamProposal,
|
||||||
|
models.KernelProposal,
|
||||||
|
models.OpenHardwareProposal,
|
||||||
|
models.SysAdminProposal,
|
||||||
]
|
]
|
||||||
|
|
||||||
for model in models_to_register:
|
for model in models_to_register:
|
||||||
|
|
|
@ -84,3 +84,51 @@ class MiniconfProposalForm(ProposalForm):
|
||||||
"materials_release",
|
"materials_release",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
### LCA2020 Miniconfs
|
||||||
|
|
||||||
|
class MiniconfSessionProposalForm(ProposalForm):
|
||||||
|
|
||||||
|
def __init__(self, *a, **k):
|
||||||
|
super(MiniconfSessionProposalForm, self).__init__(*a, **k)
|
||||||
|
self.fields['ticket_acknowledgement'].required = True
|
||||||
|
|
||||||
|
|
||||||
|
GLAM_FIELDS = copy.copy(TALK_FORMAT_FIELDS)
|
||||||
|
GLAM_FIELDS.insert(3, "require_approval")
|
||||||
|
|
||||||
|
|
||||||
|
class GlamProposalForm(MiniconfSessionProposalForm):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.GlamProposal
|
||||||
|
fields = GLAM_FIELDS
|
||||||
|
|
||||||
|
|
||||||
|
class KernelProposalForm(MiniconfSessionProposalForm):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.KernelProposal
|
||||||
|
fields = TALK_FORMAT_FIELDS
|
||||||
|
|
||||||
|
|
||||||
|
HARDWARE_FIELDS = copy.copy(TALK_FORMAT_FIELDS)
|
||||||
|
HARDWARE_FIELDS.insert(3, "experience_level")
|
||||||
|
|
||||||
|
|
||||||
|
class OpenHardwareProposalForm(MiniconfSessionProposalForm):
|
||||||
|
|
||||||
|
def __init__(self, *a, **k):
|
||||||
|
super(OpenHardwareProposalForm, self).__init__(*a, **k)
|
||||||
|
self.fields['experience_level'].required = True
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.OpenHardwareProposal
|
||||||
|
fields = HARDWARE_FIELDS
|
||||||
|
|
||||||
|
|
||||||
|
class SysAdminProposalForm(MiniconfSessionProposalForm):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.SysAdminProposal
|
||||||
|
fields = TALK_FORMAT_FIELDS
|
||||||
|
|
||||||
|
|
77
pinaxcon/proposals/migrations/0017_lca2021_miniconfs.py
Normal file
77
pinaxcon/proposals/migrations/0017_lca2021_miniconfs.py
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
# Generated by Django 2.2.17 on 2020-11-23 10:16
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('symposion_proposals', '0003_auto_20170702_2250'),
|
||||||
|
('proposals', '0016_auto_20190624_2328'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='GlamProposal',
|
||||||
|
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, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
|
||||||
|
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of 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>")),
|
||||||
|
('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>")),
|
||||||
|
('talk_format', models.IntegerField(choices=[(1, 'Short Presentation (15 or 20 min)'), (2, 'Long Presentation (45 min)')], default=2, 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 as linux.conf.au miniconfs are unfunded community run events.')),
|
||||||
|
('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?')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'GO GLAM Miniconf Proposal',
|
||||||
|
},
|
||||||
|
bases=('symposion_proposals.proposalbase',),
|
||||||
|
),
|
||||||
|
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')),
|
||||||
|
('target_audience', models.IntegerField(choices=[(1, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
|
||||||
|
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of 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>")),
|
||||||
|
('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>")),
|
||||||
|
('talk_format', models.IntegerField(choices=[(1, 'Short Presentation (15 or 20 min)'), (2, 'Long Presentation (45 min)')], default=2, 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 as linux.conf.au miniconfs are unfunded community run events.')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Kernel Miniconf Proposal',
|
||||||
|
},
|
||||||
|
bases=('symposion_proposals.proposalbase',),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='OpenHardwareProposal',
|
||||||
|
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')),
|
||||||
|
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of 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>")),
|
||||||
|
('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>")),
|
||||||
|
('ticket_acknowledgement', models.BooleanField(default=False, help_text='I understand that I will be required to purchase a conference ticket as linux.conf.au miniconfs are unfunded community run events.')),
|
||||||
|
('target_audience', models.IntegerField(choices=[(1, 'Hardware'), (2, 'Firmware'), (3, 'Community'), (4, 'Other')], help_text='What is the main focus for your session? If Other, please provide detail in the private abstract.')),
|
||||||
|
('experience_level', models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at? Note: We are aiming for a range of session skill levels.')),
|
||||||
|
('talk_format', models.IntegerField(choices=[(1, 'Presentation'), (2, 'Tutorial'), (3, 'Hands-on')], default=1, help_text='Will your session be a presentation, tutorial or hands-on (e.g how to use KiCAD or some other tooling)?')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Open Hardware Miniconf Proposal',
|
||||||
|
},
|
||||||
|
bases=('symposion_proposals.proposalbase',),
|
||||||
|
),
|
||||||
|
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, 'User'), (2, 'Business'), (3, 'Community'), (4, 'Developer')])),
|
||||||
|
('recording_release', models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of 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>")),
|
||||||
|
('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>")),
|
||||||
|
('ticket_acknowledgement', models.BooleanField(default=False, help_text='I understand that I will be required to purchase a conference ticket as linux.conf.au miniconfs are unfunded community run events.')),
|
||||||
|
('talk_format', models.IntegerField(choices=[(1, 'Short Presentation (15 or 20 min)')], default=1, help_text='Talks at the System Administration Miniconf will be short presentations.')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'System Administration Miniconf Proposal',
|
||||||
|
},
|
||||||
|
bases=('symposion_proposals.proposalbase',),
|
||||||
|
),
|
||||||
|
]
|
|
@ -10,14 +10,14 @@ class Proposal(ProposalBase):
|
||||||
TARGET_COMMUNITY = 3
|
TARGET_COMMUNITY = 3
|
||||||
TARGET_DEVELOPER = 4
|
TARGET_DEVELOPER = 4
|
||||||
|
|
||||||
TARGET_AUIDENCES = [
|
TARGET_AUDIENCES = [
|
||||||
(TARGET_USER, "User"),
|
(TARGET_USER, "User"),
|
||||||
(TARGET_BUSINESS, "Business"),
|
(TARGET_BUSINESS, "Business"),
|
||||||
(TARGET_COMMUNITY, "Community"),
|
(TARGET_COMMUNITY, "Community"),
|
||||||
(TARGET_DEVELOPER, "Developer"),
|
(TARGET_DEVELOPER, "Developer"),
|
||||||
]
|
]
|
||||||
|
|
||||||
target_audience = models.IntegerField(choices=TARGET_AUIDENCES)
|
target_audience = models.IntegerField(choices=TARGET_AUDIENCES)
|
||||||
|
|
||||||
recording_release = models.BooleanField(
|
recording_release = models.BooleanField(
|
||||||
default=True,
|
default=True,
|
||||||
|
@ -54,7 +54,7 @@ class TutorialProposal(Proposal):
|
||||||
|
|
||||||
class MiniconfProposal(Proposal):
|
class MiniconfProposal(Proposal):
|
||||||
|
|
||||||
target_audience = models.IntegerField(choices=Proposal.TARGET_AUIDENCES,
|
target_audience = models.IntegerField(choices=Proposal.TARGET_AUDIENCES,
|
||||||
default=Proposal.TARGET_DEVELOPER)
|
default=Proposal.TARGET_DEVELOPER)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -64,15 +64,11 @@ class MiniconfProposal(Proposal):
|
||||||
class MiniconfSessionProposal(Proposal):
|
class MiniconfSessionProposal(Proposal):
|
||||||
|
|
||||||
FORMAT_SHORT_PRESENTATION = 1
|
FORMAT_SHORT_PRESENTATION = 1
|
||||||
FORMAT_MEDIUM_PRESENTATION = 2
|
FORMAT_LONG_PRESENTATION = 2
|
||||||
FORMAT_LONG_PRESENTATION = 3
|
|
||||||
FORMAT_DEMONSTRATION = 4
|
|
||||||
FORMAT_OTHER = 5
|
|
||||||
|
|
||||||
TALK_FORMATS = [
|
TALK_FORMATS = [
|
||||||
(FORMAT_SHORT_PRESENTATION, "Lightning Talk (5-10 min)"),
|
(FORMAT_SHORT_PRESENTATION, "Short Presentation (15 or 20 min)"),
|
||||||
(FORMAT_MEDIUM_PRESENTATION, "Short Presentation (20-25 min)"),
|
(FORMAT_LONG_PRESENTATION, "Long Presentation (45 min)"),
|
||||||
(FORMAT_LONG_PRESENTATION, "Presentation (40-45 min)"),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
talk_format = models.IntegerField(
|
talk_format = models.IntegerField(
|
||||||
|
@ -84,9 +80,102 @@ class MiniconfSessionProposal(Proposal):
|
||||||
ticket_acknowledgement = models.BooleanField(
|
ticket_acknowledgement = models.BooleanField(
|
||||||
default=False,
|
default=False,
|
||||||
help_text="I understand that I will be required to purchase a conference ticket "
|
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."
|
"as linux.conf.au miniconfs are unfunded community run events."
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
|
class GlamProposal(MiniconfSessionProposal):
|
||||||
|
|
||||||
|
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?"
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_glam_miniconf(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "GO GLAM Miniconf Proposal"
|
||||||
|
|
||||||
|
|
||||||
|
class KernelProposal(MiniconfSessionProposal):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Kernel Miniconf Proposal"
|
||||||
|
|
||||||
|
|
||||||
|
class OpenHardwareProposal(MiniconfSessionProposal):
|
||||||
|
|
||||||
|
TARGET_HARDWARE = 1
|
||||||
|
TARGET_FIRMWARE = 2
|
||||||
|
TARGET_COMMUNITY = 3
|
||||||
|
TARGET_OTHER = 4
|
||||||
|
|
||||||
|
TARGET_AUDIENCES = [
|
||||||
|
(TARGET_HARDWARE, "Hardware"),
|
||||||
|
(TARGET_FIRMWARE, "Firmware"),
|
||||||
|
(TARGET_COMMUNITY, "Community"),
|
||||||
|
(TARGET_OTHER, "Other"),
|
||||||
|
]
|
||||||
|
|
||||||
|
LEVEL_BEGINNER = 1
|
||||||
|
LEVEL_INTERMEDIATE = 2
|
||||||
|
LEVEL_ADVANCED = 3
|
||||||
|
|
||||||
|
EXPERIENCE_LEVEL = [
|
||||||
|
(LEVEL_BEGINNER, "Beginner"),
|
||||||
|
(LEVEL_INTERMEDIATE, "Intermediate"),
|
||||||
|
(LEVEL_ADVANCED, "Advanced"),
|
||||||
|
]
|
||||||
|
|
||||||
|
FORMAT_PRESENTATION = 1
|
||||||
|
FORMAT_TUTORIAL = 2
|
||||||
|
FORMAT_HANDS_ON = 3
|
||||||
|
|
||||||
|
TALK_FORMATS = [
|
||||||
|
(FORMAT_PRESENTATION, "Presentation"),
|
||||||
|
(FORMAT_TUTORIAL, "Tutorial"),
|
||||||
|
(FORMAT_HANDS_ON, "Hands-on"),
|
||||||
|
]
|
||||||
|
|
||||||
|
target_audience = models.IntegerField(
|
||||||
|
choices=TARGET_AUDIENCES,
|
||||||
|
help_text="What is the main focus for your session? If Other, please provide detail in the private abstract.",
|
||||||
|
)
|
||||||
|
|
||||||
|
experience_level = models.IntegerField(
|
||||||
|
choices=EXPERIENCE_LEVEL,
|
||||||
|
help_text="What level of experience will your session be pitched at? Note: We are aiming for a range of session skill levels."
|
||||||
|
)
|
||||||
|
|
||||||
|
talk_format = models.IntegerField(
|
||||||
|
choices=TALK_FORMATS,
|
||||||
|
default=FORMAT_PRESENTATION,
|
||||||
|
help_text="Will your session be a presentation, tutorial or hands-on (e.g how to use KiCAD or some other tooling)?"
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Open Hardware Miniconf Proposal"
|
||||||
|
|
||||||
|
|
||||||
|
class SysAdminProposal(MiniconfSessionProposal):
|
||||||
|
|
||||||
|
FORMAT_SHORT_PRESENTATION = 1
|
||||||
|
|
||||||
|
TALK_FORMATS = [
|
||||||
|
(FORMAT_SHORT_PRESENTATION, "Short Presentation (15 or 20 min)"),
|
||||||
|
]
|
||||||
|
|
||||||
|
talk_format = models.IntegerField(
|
||||||
|
choices=TALK_FORMATS,
|
||||||
|
default=FORMAT_SHORT_PRESENTATION,
|
||||||
|
help_text="Talks at the System Administration Miniconf will be short presentations."
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "System Administration Miniconf Proposal"
|
||||||
|
|
|
@ -362,6 +362,11 @@ PROPOSAL_FORMS = {
|
||||||
"talk": "pinaxcon.proposals.forms.TalkProposalForm",
|
"talk": "pinaxcon.proposals.forms.TalkProposalForm",
|
||||||
"tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
|
"tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
|
||||||
"miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
|
"miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
|
||||||
|
### LCA2021 Miniconfs
|
||||||
|
"glam-miniconf": "pinaxcon.proposals.forms.GlamProposalForm",
|
||||||
|
"kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
|
||||||
|
"open-hardware-miniconf": "pinaxcon.proposals.forms.OpenHardwareProposalForm",
|
||||||
|
"sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm",
|
||||||
}
|
}
|
||||||
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk", "Miniconf")
|
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk", "Miniconf")
|
||||||
|
|
||||||
|
|
|
@ -48,23 +48,20 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if proposal.can_exhibit %}
|
{% if proposal.experience_level %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label class="list-label col-md-2">Can exhibit?</label>
|
<label class="list-label col-md-2">Experience Level</label>
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<p>{{ proposal.get_can_exhibit_display }}</p>
|
<p>{{ proposal.get_experience_level_display }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
</div>
|
||||||
<label class="list-label col-md-2">Exhibition Requirements</label>
|
{% endif %}
|
||||||
<div class="col-md-10">
|
|
||||||
{% if proposal.exhibition_requirements %}
|
|
||||||
<div class="special_requirements monospace-text">{{ proposal.exhibition_requirements|safe }}</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="special_requirements monospace-text"><b>No Special Talk Requirements Requested</b></div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</div>
|
{% if proposal.is_glam_miniconf %}
|
||||||
|
<div class="row">
|
||||||
|
<label class="list-label col-md-2">Requires Approval</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<p>{{ proposal.require_approval }} </p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -223,7 +220,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Travel</th>
|
<th>Travel</th>
|
||||||
<th>Accomodation</th>
|
<th>Accommodation</th>
|
||||||
<th>Details</th>
|
<th>Details</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
Loading…
Reference in a new issue