2af7eaea7f
* The base model requires a value here * But we aren't using one; so there's none on the form * This change supplies a custom enumeration that's specific for this particular model, which has one value, which is a default value, which simply says that the field is N/A * This does mean that when viewing or reviewing the proposal one sees the Target Audience field, but it will say N/A. * Testing has shown that this does not affect the other types which descend from the base Proposal class; they still use the default enumeration.
212 lines
4.9 KiB
Python
212 lines
4.9 KiB
Python
from django.db import models
|
|
|
|
from symposion.proposals.models import ProposalBase
|
|
|
|
|
|
class Proposal(ProposalBase):
|
|
|
|
TARGET_USER = 1
|
|
TARGET_BUSINESS = 2
|
|
TARGET_COMMUNITY = 3
|
|
TARGET_DEVELOPER = 4
|
|
|
|
TARGET_AUIDENCES = [
|
|
(TARGET_USER, "User"),
|
|
(TARGET_BUSINESS, "Business"),
|
|
(TARGET_COMMUNITY, "Community"),
|
|
(TARGET_DEVELOPER, "Developer"),
|
|
]
|
|
|
|
target_audience = models.IntegerField(choices=TARGET_AUIDENCES)
|
|
|
|
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>"
|
|
)
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
|
|
class TalkProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "talk proposal"
|
|
|
|
|
|
class TutorialProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "tutorial proposal"
|
|
|
|
|
|
class MiniconfProposal(Proposal):
|
|
|
|
target_audience = models.IntegerField(choices=Proposal.TARGET_AUIDENCES,
|
|
default=Proposal.TARGET_DEVELOPER)
|
|
|
|
class Meta:
|
|
verbose_name = "miniconf proposal"
|
|
|
|
|
|
class SysAdminProposal(Proposal):
|
|
|
|
TYPE_SHORT_PRESENTATION = 1
|
|
TYPE_LIGHTNING_TALK = 2
|
|
|
|
TALK_FORMATS = [
|
|
(TYPE_SHORT_PRESENTATION, "Short Presentation (15-25 min)"),
|
|
(TYPE_LIGHTNING_TALK, "Lightning Talk (5-10 min)"),
|
|
]
|
|
|
|
talk_format = models.IntegerField(
|
|
choices=TALK_FORMATS,
|
|
help_text="Please indicate your preferred talk length in the private abstract field below.")
|
|
|
|
class Meta:
|
|
verbose_name = "System Administration Miniconf Proposal"
|
|
|
|
|
|
class KernelProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "Kernel Miniconf Proposal"
|
|
|
|
|
|
class GamesProposal(Proposal):
|
|
|
|
TYPE_PRESENTATION = 1
|
|
TYPE_DEMONSTRATION = 2
|
|
TYPE_OTHER = 3
|
|
|
|
TALK_FORMATS = [
|
|
(TYPE_PRESENTATION, "Presentation"),
|
|
(TYPE_DEMONSTRATION, "Demonstration"),
|
|
(TYPE_OTHER, "Other"),
|
|
]
|
|
|
|
talk_format = models.IntegerField(choices=TALK_FORMATS)
|
|
|
|
class Meta:
|
|
verbose_name = "Games and FOSS Miniconf Proposal"
|
|
|
|
|
|
class OpenHardwareProposal(Proposal):
|
|
|
|
TYPE_NORMAL_PRESENTATION = 1
|
|
TYPE_LIGHTNING_TALK = 2
|
|
|
|
TALK_FORMATS = [
|
|
(TYPE_NORMAL_PRESENTATION, "Presentation (20 min)"),
|
|
(TYPE_LIGHTNING_TALK, "Lightning Talk (5 min)"),
|
|
]
|
|
|
|
talk_format = models.IntegerField(choices=TALK_FORMATS)
|
|
|
|
class Meta:
|
|
verbose_name = "Open Hardware Miniconf Proposal"
|
|
|
|
|
|
class ClsXLCAProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "CLSxLCA Miniconf Proposal"
|
|
|
|
|
|
class FuncProgProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "Real World Functional Programming Miniconf Proposal"
|
|
|
|
|
|
class OpenEdProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "Open Education Miniconf Proposal"
|
|
|
|
|
|
class OpenGLAMProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "OpenGLAM Miniconf Proposal"
|
|
|
|
|
|
class FPGAProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "FPGA Miniconf Proposal"
|
|
|
|
|
|
class DevDevProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "Developers Developers Miniconf Proposal"
|
|
|
|
|
|
class ArtTechProposal(Proposal):
|
|
|
|
TYPE_TECH = 1
|
|
TYPE_DEMO = 2
|
|
TYPE_LIGHTNING = 3
|
|
|
|
TALK_FORMATS = [
|
|
(TYPE_TECH, "Tech talk (45 min)"),
|
|
(TYPE_DEMO, "Demonstration (20min)"),
|
|
(TYPE_LIGHTNING, "Lightning Talk (10min)"),
|
|
]
|
|
|
|
talk_format = models.IntegerField(
|
|
choices=TALK_FORMATS,
|
|
default=TYPE_TECH,
|
|
)
|
|
|
|
EXHIBIT_YES = 1
|
|
EXHIBIT_NO = 2
|
|
|
|
EXHIBIT_STATUS = [
|
|
(EXHIBIT_YES, "I am willing and able to exhibit my project on Monday, January 22nd"),
|
|
(EXHIBIT_NO, "I'm unable to exhibit my project")
|
|
]
|
|
|
|
can_exhibit = models.IntegerField(
|
|
choices=EXHIBIT_STATUS,
|
|
default=EXHIBIT_YES,
|
|
)
|
|
|
|
exhibition_requirements = models.TextField(
|
|
blank=True,
|
|
default="",
|
|
)
|
|
|
|
TARGET_NA = 1
|
|
|
|
TARGET_AUDIENCES = [
|
|
(TARGET_NA, "N/A"),
|
|
]
|
|
|
|
target_audience = models.IntegerField(choices=TARGET_AUDIENCES, default=TARGET_NA)
|
|
|
|
# def __init__(self, *args, **kwargs):
|
|
# super(ArtTechProposal, self).__init__(*args, **kwargs)
|
|
# self.target_audience = 3
|
|
|
|
class Meta:
|
|
verbose_name = "Art+Tech Miniconf Proposal"
|
|
|
|
|
|
class BioInformaticsProposal(Proposal):
|
|
|
|
class Meta:
|
|
verbose_name = "Open Source and BioInformatics Miniconf"
|