add end of conference date
This commit is contained in:
parent
1af6ada49d
commit
87d9b070c0
|
@ -373,8 +373,11 @@ class ConferenceForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Conference
|
model = Conference
|
||||||
fields = [
|
fields = [
|
||||||
'name', 'venue', 'city', 'contact_email', 'acceptances_disclosure_date', 'schedule_publishing_date', 'schedule_redirection_url',
|
'name', 'venue', 'city', 'contact_email', 'acceptances_disclosure_date',
|
||||||
'volunteers_opening_date', 'volunteers_closing_date', 'video_publishing_date', 'reply_email', 'secure_domain', 'staff',
|
'schedule_publishing_date', 'schedule_redirection_url',
|
||||||
|
'volunteers_opening_date', 'volunteers_closing_date',
|
||||||
|
'end_date', 'video_publishing_date',
|
||||||
|
'reply_email', 'secure_domain', 'staff',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
'staff': UsersWidget(),
|
'staff': UsersWidget(),
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.0 on 2019-06-08 10:59
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('cfp', '0025_auto_20171216_1546'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='conference',
|
||||||
|
name='end_date',
|
||||||
|
field=models.DateTimeField(blank=True, default=None, null=True, verbose_name='End of the conference date'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -42,6 +42,7 @@ class Conference(models.Model):
|
||||||
volunteers_opening_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment opening date'))
|
volunteers_opening_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment opening date'))
|
||||||
volunteers_closing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment closing date'))
|
volunteers_closing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment closing date'))
|
||||||
video_publishing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Video publishing date'))
|
video_publishing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Video publishing date'))
|
||||||
|
end_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('End of the conference date'))
|
||||||
|
|
||||||
custom_css = models.TextField(blank=True)
|
custom_css = models.TextField(blank=True)
|
||||||
external_css_link = models.URLField(blank=True)
|
external_css_link = models.URLField(blank=True)
|
||||||
|
@ -52,6 +53,10 @@ class Conference(models.Model):
|
||||||
closing = self.volunteers_closing_date
|
closing = self.volunteers_closing_date
|
||||||
return opening and opening < now and (not closing or closing > now)
|
return opening and opening < now and (not closing or closing > now)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def completed(self):
|
||||||
|
return self.end_date and self.end_date <= timezone.now()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def opened_categories(self):
|
def opened_categories(self):
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
|
|
10
cfp/views.py
10
cfp/views.py
|
@ -14,6 +14,7 @@ from django.core.mail import send_mail
|
||||||
from django.forms import modelform_factory
|
from django.forms import modelform_factory
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
from django_select2.views import AutoResponseView
|
from django_select2.views import AutoResponseView
|
||||||
|
|
||||||
|
@ -426,7 +427,7 @@ def proposal_talk_edit(request, speaker, talk_id=None):
|
||||||
def proposal_talk_acknowledgment(request, speaker, talk_id, confirm):
|
def proposal_talk_acknowledgment(request, speaker, talk_id, confirm):
|
||||||
# TODO: handle multiple speakers case
|
# TODO: handle multiple speakers case
|
||||||
talk = get_object_or_404(Talk, site=request.conference.site, speakers__pk=speaker.pk, pk=talk_id)
|
talk = get_object_or_404(Talk, site=request.conference.site, speakers__pk=speaker.pk, pk=talk_id)
|
||||||
if not request.conference.disclosed_acceptances or not talk.accepted:
|
if not request.conference.disclosed_acceptances or not talk.accepted or request.conference.completed:
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
if talk.confirmed == confirm:
|
if talk.confirmed == confirm:
|
||||||
if confirm:
|
if confirm:
|
||||||
|
@ -1312,5 +1313,12 @@ def staff_schedule(request, program_format):
|
||||||
return schedule(request, program_format=program_format, pending=True, template='cfp/staff/schedule.html', cache=False)
|
return schedule(request, program_format=program_format, pending=True, template='cfp/staff/schedule.html', cache=False)
|
||||||
|
|
||||||
|
|
||||||
|
@staff_required
|
||||||
|
def schedule_evict(request):
|
||||||
|
cache.clear()
|
||||||
|
messages.success(request, _('Schedule evicted from cache.'))
|
||||||
|
return redirect('/')
|
||||||
|
|
||||||
|
|
||||||
class Select2View(StaffRequiredMixin, AutoResponseView):
|
class Select2View(StaffRequiredMixin, AutoResponseView):
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Reference in New Issue