diff --git a/pinaxcon/proposals/models.py b/pinaxcon/proposals/models.py index 87fb44947b42052609a51105b2af008bf1e1adb2..c609404f7c2872880eb2c42425549a04c90b562a 100644 --- a/pinaxcon/proposals/models.py +++ b/pinaxcon/proposals/models.py @@ -10,14 +10,14 @@ class Proposal(ProposalBase): TARGET_COMMUNITY = 3 TARGET_DEVELOPER = 4 - TARGET_AUIDENCES = [ + TARGET_AUDIENCES = [ (TARGET_USER, "User"), (TARGET_BUSINESS, "Business"), (TARGET_COMMUNITY, "Community"), (TARGET_DEVELOPER, "Developer"), ] - target_audience = models.IntegerField(choices=TARGET_AUIDENCES) + target_audience = models.IntegerField(choices=TARGET_AUDIENCES) recording_release = models.BooleanField( default=True, @@ -54,7 +54,7 @@ class TutorialProposal(Proposal): class MiniconfProposal(Proposal): - target_audience = models.IntegerField(choices=Proposal.TARGET_AUIDENCES, + target_audience = models.IntegerField(choices=Proposal.TARGET_AUDIENCES, default=Proposal.TARGET_DEVELOPER) class Meta: @@ -64,15 +64,11 @@ class MiniconfProposal(Proposal): class MiniconfSessionProposal(Proposal): FORMAT_SHORT_PRESENTATION = 1 - FORMAT_MEDIUM_PRESENTATION = 2 - FORMAT_LONG_PRESENTATION = 3 - FORMAT_DEMONSTRATION = 4 - FORMAT_OTHER = 5 + FORMAT_LONG_PRESENTATION = 2 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)"), + (FORMAT_SHORT_PRESENTATION, "Short Presentation (15 or 20 min)"), + (FORMAT_LONG_PRESENTATION, "Long Presentation (45 min)"), ] talk_format = models.IntegerField( @@ -84,9 +80,102 @@ class MiniconfSessionProposal(Proposal): 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." + "as linux.conf.au miniconfs are unfunded community run events." ) class Meta: 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"