Small improvements on CFP: more mandatory fields
This commit is contained in:
parent
90134fa29f
commit
ae279d7218
|
@ -40,6 +40,10 @@ class Conference(models.Model):
|
||||||
venue = models.TextField(blank=True, default="")
|
venue = models.TextField(blank=True, default="")
|
||||||
city = models.CharField(max_length=64, blank=True, default="")
|
city = models.CharField(max_length=64, blank=True, default="")
|
||||||
contact_email = models.CharField(max_length=100, blank=True)
|
contact_email = models.CharField(max_length=100, blank=True)
|
||||||
|
|
||||||
|
custom_css = models.TextField(blank=True)
|
||||||
|
external_css_link = models.URLField(blank=True)
|
||||||
|
|
||||||
#subscriptions_open = models.BooleanField(default=False) # workshop subscription
|
#subscriptions_open = models.BooleanField(default=False) # workshop subscription
|
||||||
|
|
||||||
#def cfp_is_open(self):
|
#def cfp_is_open(self):
|
||||||
|
@ -62,23 +66,27 @@ class Conference(models.Model):
|
||||||
|
|
||||||
class Participant(PonyConfModel):
|
class Participant(PonyConfModel):
|
||||||
|
|
||||||
#LICENCES = IntEnum('Video licence', 'CC-Zero CC-BY CC-BY-SA CC-BY-ND CC-BY-NC CC-BY-NC-SA CC-BY-NC-ND')
|
|
||||||
|
|
||||||
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
||||||
|
|
||||||
name = models.CharField(max_length=128, blank=True)
|
name = models.CharField(max_length=128, verbose_name=_('Your Name'))
|
||||||
email = models.EmailField()
|
email = models.EmailField()
|
||||||
|
|
||||||
phone_number = models.CharField(max_length=16, blank=True, default='', verbose_name=_('Phone number'))
|
biography = models.TextField(verbose_name=_('Biography'))
|
||||||
biography = models.TextField(blank=True, verbose_name=_('Biography'))
|
|
||||||
token = models.UUIDField(default=uuid.uuid4, editable=False)
|
token = models.UUIDField(default=uuid.uuid4, editable=False)
|
||||||
|
|
||||||
# TALK
|
twitter = models.CharField(max_length=100, blank=True, default='', verbose_name=_('Twitter'))
|
||||||
#videotaped = models.BooleanField(_("I'm ok to be recorded on video"), default=True)
|
linkedin = models.CharField(max_length=100, blank=True, default='', verbose_name=_('LinkedIn'))
|
||||||
#video_licence = models.IntegerField(choices=enum_to_choices(LICENCES), default=2, verbose_name=_("Video licence"))
|
github = models.CharField(max_length=100, blank=True, default='', verbose_name=_('Github'))
|
||||||
#sound = models.BooleanField(_("I need sound"), default=False)
|
website = models.CharField(max_length=100, blank=True, default='', verbose_name=_('Website'))
|
||||||
|
facebook = models.CharField(max_length=100, blank=True, default='', verbose_name=_('Facebook'))
|
||||||
|
mastodon = models.CharField(max_length=100, blank=True, default='', verbose_name=_('Mastodon'))
|
||||||
|
|
||||||
|
phone_number = models.CharField(max_length=64, blank=True, default='', verbose_name=_('Phone number'))
|
||||||
|
|
||||||
|
language = models.CharField(max_length=10, blank=True)
|
||||||
|
|
||||||
notes = models.TextField(default='', blank=True, verbose_name=_("Notes"), help_text=_('This field is only visible by organizers.'))
|
notes = models.TextField(default='', blank=True, verbose_name=_("Notes"), help_text=_('This field is only visible by organizers.'))
|
||||||
|
|
||||||
vip = models.BooleanField(default=False)
|
vip = models.BooleanField(default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -223,10 +231,10 @@ class Talk(PonyConfModel):
|
||||||
title = models.CharField(max_length=128, verbose_name=_('Talk Title'))
|
title = models.CharField(max_length=128, verbose_name=_('Talk Title'))
|
||||||
slug = AutoSlugField(populate_from='title', unique=True)
|
slug = AutoSlugField(populate_from='title', unique=True)
|
||||||
#abstract = models.CharField(max_length=255, blank=True, verbose_name=_('Abstract'))
|
#abstract = models.CharField(max_length=255, blank=True, verbose_name=_('Abstract'))
|
||||||
description = models.TextField(blank=True, verbose_name=_('Description of your talk'))
|
description = models.TextField(verbose_name=_('Description of your talk'))
|
||||||
track = models.ForeignKey(Track, blank=True, null=True, verbose_name=_('Track'))
|
track = models.ForeignKey(Track, blank=True, null=True, verbose_name=_('Track'))
|
||||||
notes = models.TextField(blank=True, verbose_name=_('Message to organizers'), help_text=_('If you have any constraint or if you have anything that may help you to select your talk, like a video or slides of your talk, please write it down here'))
|
notes = models.TextField(blank=True, verbose_name=_('Message to organizers'), help_text=_('If you have any constraint or if you have anything that may help you to select your talk, like a video or slides of your talk, please write it down here'))
|
||||||
category = models.ForeignKey(TalkCategory, blank=True, null=True, verbose_name=_('Talk Category'))
|
category = models.ForeignKey(TalkCategory, verbose_name=_('Talk Category'))
|
||||||
videotaped = models.BooleanField(_("I'm ok to be recorded on video"), default=True)
|
videotaped = models.BooleanField(_("I'm ok to be recorded on video"), default=True)
|
||||||
video_licence = models.CharField(choices=LICENCES, default='CC-BY-SA', max_length=10, verbose_name=_("Video licence"))
|
video_licence = models.CharField(choices=LICENCES, default='CC-BY-SA', max_length=10, verbose_name=_("Video licence"))
|
||||||
sound = models.BooleanField(_("I need sound"), default=False)
|
sound = models.BooleanField(_("I need sound"), default=False)
|
||||||
|
|
|
@ -5,7 +5,7 @@ from . import views
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', views.talk_proposal, name='talk-proposal'),
|
url(r'^$', views.talk_proposal, name='talk-proposal'),
|
||||||
url(r'^(?P<talk_id>[\w\-]+)/speaker/add/$', views.talk_proposal_speaker_edit, name='talk-proposal-speaker-add'),
|
url(r'^(?P<talk_id>[\w\-]+)/speaker/add/$', views.talk_proposal_speaker_edit, name='talk-proposal-speaker-add'),
|
||||||
url(r'^(?P<talk_id>[\w\-]+)/speaker/(?P<speaker_id>[\w\-]+)/$', views.talk_proposal_speaker_edit, name='talk-proposal-speaker-edit'),
|
url(r'^(?P<talk_id>[\w\-]+)/speaker/(?P<participant_id>[\w\-]+)/$', views.talk_proposal_speaker_edit, name='talk-proposal-speaker-edit'),
|
||||||
url(r'^(?P<talk_id>[\w\-]+)/(?P<participant_id>[\w\-]+)/$', views.talk_proposal, name='talk-proposal-edit'),
|
url(r'^(?P<talk_id>[\w\-]+)/(?P<participant_id>[\w\-]+)/$', views.talk_proposal, name='talk-proposal-edit'),
|
||||||
#url(r'^markdown/$', views.markdown_preview, name='markdown'),
|
#url(r'^markdown/$', views.markdown_preview, name='markdown'),
|
||||||
#url(r'^$', views.home, name='home'),
|
#url(r'^$', views.home, name='home'),
|
||||||
|
|
|
@ -33,6 +33,7 @@ def talk_proposal(request, talk_id=None, participant_id=None):
|
||||||
participant, created = Participant.objects.get_or_create(email=participant_form.cleaned_data['email'], site=site)
|
participant, created = Participant.objects.get_or_create(email=participant_form.cleaned_data['email'], site=site)
|
||||||
participant_form = ParticipantForm(request.POST, instance=participant)
|
participant_form = ParticipantForm(request.POST, instance=participant)
|
||||||
participant = participant_form.save()
|
participant = participant_form.save()
|
||||||
|
participant.language = request.LANGUAGE_CODE
|
||||||
participant.save()
|
participant.save()
|
||||||
|
|
||||||
talk.save()
|
talk.save()
|
||||||
|
@ -50,7 +51,7 @@ Your talk has been submitted for {}.
|
||||||
|
|
||||||
Here are the details of your talk:
|
Here are the details of your talk:
|
||||||
Title: {}
|
Title: {}
|
||||||
Description {}
|
Description: {}
|
||||||
|
|
||||||
You can at anytime:
|
You can at anytime:
|
||||||
- edit your talk: {}
|
- edit your talk: {}
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
|
|
||||||
{% block js %}{% endblock %}
|
{% block js %}{% endblock %}
|
||||||
|
|
||||||
|
{% if site.conference.external_css_link %}
|
||||||
|
<link href="{{ site.conference.external_css_link }}" rel="stylesheet">
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||||
|
|
Loading…
Reference in New Issue