Revert "allow to close the CFP"

This reverts commit 1f635cb379.
This commit is contained in:
Élie Bouttier 2016-09-28 19:44:06 +02:00
parent b605a85903
commit bd8538e7e2
6 changed files with 36 additions and 79 deletions

View File

@ -125,4 +125,4 @@ class TopicForm(forms.ModelForm):
return name return name
ConferenceForm = modelform_factory(Conference, fields=['cfp', 'home']) ConferenceForm = modelform_factory(Conference, fields=['home'])

View File

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10 on 2016-09-24 12:08
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('proposals', '0012_topic_track'),
]
operations = [
migrations.AddField(
model_name='conference',
name='cfp',
field=models.IntegerField(choices=[(0, 'Forthcoming (closed)'), (1, 'Open'), (2, 'Completed (closed)')], default=0),
),
]

View File

@ -18,18 +18,8 @@ from .utils import query_sum
class Conference(models.Model): class Conference(models.Model):
CFP_FORTHCOMING = 0 site = models.OneToOneField(Site, on_delete=models.CASCADE)
CFP_OPEN = 1
CFP_COMPLETED = 2
CFP_CHOICES = [
(CFP_FORTHCOMING, _('Forthcoming (closed)')),
(CFP_OPEN, _('Open')),
(CFP_COMPLETED, _('Completed (closed)')),
]
site = models.OneToOneField(Site, on_delete=models.CASCADE, related_name='conference')
home = models.TextField(blank=True, default="") home = models.TextField(blank=True, default="")
cfp = models.IntegerField(choices=CFP_CHOICES, default=0, verbose_name=_('Call for Participation'))
def __str__(self): def __str__(self):
return str(self.site) return str(self.site)

View File

@ -2,38 +2,39 @@
{% load bootstrap3 staticfiles i18n %} {% load bootstrap3 staticfiles i18n %}
{% block admintab %} class="active"{% endblock %} {% block talktab %} class="active"{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Conference settings" %}</h1>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3>{% trans "Home page" %}</h3> <h3>{% trans "Home page" %}</h3>
</div>
<div class="panel-body">
<form method="post" role="form">
{% csrf_token %}
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#editor" role="tab" data-toggle="tab">Editor</a></li>
<li><a href="#preview" role="tab" data-toggle="tab">Preview</a></li>
<li><a href="https://daringfireball.net/projects/markdown/syntax" target="blank" role="tab">Syntaxe</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="editor" style="max-height: 220px; margin-bottom: 20px;">
<div class="form-group">
<textarea style="width: 100%; height: 220px;" id="markdown-content" name="home">{{ conference.home }}</textarea>
</div>
</div> </div>
<div class="panel-body"> <div class="tab-pane well" id="preview" style="min-height: 220px; magin-bottom: 20px;">
<form method="post" role="form"> <div id="preview-content"></div>
{% csrf_token %}
{% bootstrap_field form.cfp %}
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a href="#editor" role="tab" data-toggle="tab">Editor</a></li>
<li><a href="#preview" role="tab" data-toggle="tab">Preview</a></li>
<li><a href="https://daringfireball.net/projects/markdown/syntax" target="blank" role="tab">Syntaxe</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="editor" style="max-height: 220px; margin-bottom: 20px;">
<div class="form-group">
<textarea style="width: 100%; height: 220px;" id="markdown-content" name="home">{{ conference.home }}</textarea>
</div>
</div>
<div class="tab-pane well" id="preview" style="min-height: 220px; magin-bottom: 20px;">
<div id="preview-content"></div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>
</div> </div>
<div class="form-group">
<button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-pencil"></span> Submit</button>
</div>
</div>
</form>
</div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -19,12 +19,6 @@
{% endif %} {% endif %}
<br /> <br />
{% if conf.cfp == conf.CFP_FORTHCOMING %}
<em>{% trans "The Call for Participation is not yet open." %}</em>
{% elif conf.cfp == conf.CFP_OPEN %}
<a class="btn btn-success" href="{% url 'add-talk' %}">{% trans "Propose a talk" %}</a> <a class="btn btn-success" href="{% url 'add-talk' %}">{% trans "Propose a talk" %}</a>
{% elif conf.cfp == conf.CFP_COMPLETED %}
<em>{% trans "The Call for Participation is completed." %}</em>
{% endif %}
{% endblock %} {% endblock %}

View File

@ -17,7 +17,7 @@ from django.http import HttpResponse
from accounts.models import Participation from accounts.models import Participation
from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin from accounts.mixins import OrgaRequiredMixin, StaffRequiredMixin
from accounts.decorators import orga_required, staff_required from accounts.decorators import orga_required, staff_required
from accounts.utils import is_orga, is_staff from accounts.utils import is_staff
from conversations.models import ConversationWithParticipant, ConversationAboutTalk, Message from conversations.models import ConversationWithParticipant, ConversationAboutTalk, Message
@ -53,14 +53,12 @@ def conference(request):
@login_required @login_required
def participate(request): def participate(request):
site = get_current_site(request) talks = Talk.objects.filter(site=get_current_site(request))
talks = Talk.objects.filter(site=site)
my_talks = talks.filter(speakers=request.user) my_talks = talks.filter(speakers=request.user)
proposed_talks = talks.exclude(speakers=request.user).filter(proposer=request.user) proposed_talks = talks.exclude(speakers=request.user).filter(proposer=request.user)
return render(request, 'proposals/participate.html', { return render(request, 'proposals/participate.html', {
'my_talks': my_talks, 'my_talks': my_talks,
'proposed_talks': proposed_talks, 'proposed_talks': proposed_talks,
'conf': site.conference,
}) })
@staff_required @staff_required
@ -137,24 +135,18 @@ def talk_list(request):
@login_required @login_required
def talk_edit(request, talk=None): def talk_edit(request, talk=None):
site = get_current_site(request) if talk:
if talk: # edit existing talk talk = get_object_or_404(Talk, slug=talk, site=get_current_site(request))
talk = get_object_or_404(Talk, slug=talk, site=site)
if not talk.is_editable_by(request.user): if not talk.is_editable_by(request.user):
raise PermissionDenied() raise PermissionDenied()
else: # add new talk form = TalkForm(request.POST or None, instance=talk, site=get_current_site(request))
if site.conference.cfp != Conference.CFP_OPEN and not is_orga(request, request.user): if not is_staff(request, request.user):
raise PermissionDenied() form.fields.pop('track')
form = TalkForm(request.POST or None, instance=talk, site=site)
if talk: if talk:
form.fields['title'].disabled = True form.fields['title'].disabled = True
form.fields['topics'].disabled = True form.fields['topics'].disabled = True
if not talk.is_editable_by(request.user):
form.fields.pop('track')
else: else:
form.fields['speakers'].initial = [request.user] form.fields['speakers'].initial = [request.user]
if not is_orga(request, request.user):
form.fields.pop('track')
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
if hasattr(talk, 'id'): if hasattr(talk, 'id'):
talk = form.save() talk = form.save()