add end of conference date

This commit is contained in:
Élie Bouttier 2019-06-08 13:02:19 +02:00
parent 1af6ada49d
commit 87d9b070c0
4 changed files with 37 additions and 3 deletions

View File

@ -373,8 +373,11 @@ class ConferenceForm(forms.ModelForm):
class Meta:
model = Conference
fields = [
'name', 'venue', 'city', 'contact_email', 'acceptances_disclosure_date', 'schedule_publishing_date', 'schedule_redirection_url',
'volunteers_opening_date', 'volunteers_closing_date', 'video_publishing_date', 'reply_email', 'secure_domain', 'staff',
'name', 'venue', 'city', 'contact_email', 'acceptances_disclosure_date',
'schedule_publishing_date', 'schedule_redirection_url',
'volunteers_opening_date', 'volunteers_closing_date',
'end_date', 'video_publishing_date',
'reply_email', 'secure_domain', 'staff',
]
widgets = {
'staff': UsersWidget(),

View File

@ -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'),
),
]

View File

@ -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_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'))
end_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('End of the conference date'))
custom_css = models.TextField(blank=True)
external_css_link = models.URLField(blank=True)
@ -52,6 +53,10 @@ class Conference(models.Model):
closing = self.volunteers_closing_date
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
def opened_categories(self):
now = timezone.now()

View File

@ -14,6 +14,7 @@ from django.core.mail import send_mail
from django.forms import modelform_factory
from django import forms
from django.views.decorators.http import require_http_methods
from django.core.cache import cache
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):
# TODO: handle multiple speakers case
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
if talk.confirmed == 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)
@staff_required
def schedule_evict(request):
cache.clear()
messages.success(request, _('Schedule evicted from cache.'))
return redirect('/')
class Select2View(StaffRequiredMixin, AutoResponseView):
pass