Fix proposal submission.
This commit is contained in:
parent
52d3e827c8
commit
b871613d24
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
|
||||
from django import forms
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
from .models import SpeakerProposal, EventProposal, EventTrack, Url, UrlType
|
||||
|
||||
|
@ -178,18 +179,25 @@ class EventProposalForm(forms.ModelForm):
|
|||
# TODO: make sure the track is part of the current camp, needs camp as form kwarg to verify
|
||||
return track
|
||||
|
||||
def save(self, user, event_type, commit=True):
|
||||
self.instance.user = user
|
||||
self.instance.event_type = event_type
|
||||
super().save(commit=True)
|
||||
if self.cleaned_data.get('slides_url') and (self.instance.event_type.name == 'Talk' or self.instance.event_type.name == 'Lightning Talk'):
|
||||
def save(self, commit=True, user=None, event_type=None):
|
||||
eventproposal = super().save(commit=False)
|
||||
if user:
|
||||
eventproposal.user = user
|
||||
if event_type:
|
||||
eventproposal.event_type = event_type
|
||||
eventproposal.save()
|
||||
|
||||
|
||||
if self.cleaned_data.get('slides_url') and event_type.name in ['Talk', 'Lightning Talk']:
|
||||
url = self.cleaned_data.get('slides_url')
|
||||
if not eventproposal.urls.filter(url=url).exists():
|
||||
slides_url = Url()
|
||||
slides_url.eventproposal = self.instance
|
||||
slides_url.url = self.cleaned_data['slides_url']
|
||||
slides_url.eventproposal = eventproposal
|
||||
slides_url.url = url
|
||||
slides_url.urltype = UrlType.objects.get(name="Slides")
|
||||
slides_url.save()
|
||||
return self.instance
|
||||
|
||||
return eventproposal
|
||||
|
||||
def __init__(self, camp, eventtype=None, *args, **kwargs):
|
||||
# initialise form
|
||||
|
@ -274,7 +282,7 @@ class EventProposalForm(forms.ModelForm):
|
|||
self.fields['submission_notes'].label = 'Talk Notes'
|
||||
self.fields['submission_notes'].help_text = 'Private notes regarding this talk. Only visible to yourself and the BornHack organisers.'
|
||||
|
||||
if eventtype.name == "Lightning Talk":
|
||||
if self.fields.get('slides_url') and eventtype.name == "Lightning Talk":
|
||||
self.fields['slides_url'].help_text += " You will only get assigned a slot if you have provided slides (a title slide is enough if you don't use slides for the talk). You can add an URL later if need be."
|
||||
|
||||
# no duration for talks
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
import logging
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
|
||||
from django.views.generic import ListView, TemplateView, DetailView, View
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.conf import settings
|
||||
from django.views.decorators.http import require_safe
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
|
@ -14,14 +12,13 @@ from django.contrib import messages
|
|||
from django.urls import reverse, reverse_lazy
|
||||
from django.template import Engine, Context
|
||||
from django.shortcuts import redirect
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.shortcuts import get_object_or_404
|
||||
from betterforms.multiform import MultiModelForm
|
||||
import icalendar
|
||||
|
||||
from camps.mixins import CampViewMixin
|
||||
from program.models import Url, UrlType
|
||||
from .mixins import (
|
||||
EnsureUnapprovedProposalMixin,
|
||||
EnsureUserOwnsProposalMixin,
|
||||
EnsureWritableCampMixin,
|
||||
EnsureCFPOpenMixin,
|
||||
|
@ -417,11 +414,7 @@ class EventProposalCreateView(LoginRequiredMixin, CampViewMixin, EnsureWritableC
|
|||
|
||||
def form_valid(self, form):
|
||||
# set camp and user for this eventproposal
|
||||
eventproposal = form.save(
|
||||
user=self.request.user,
|
||||
event_type=self.event_type,
|
||||
commit=True,
|
||||
)
|
||||
eventproposal = form.save(user=self.request.user, event_type=self.event_type)
|
||||
|
||||
# add the speakerproposal to the eventproposal
|
||||
eventproposal.speakers.add(self.speakerproposal)
|
||||
|
@ -569,10 +562,7 @@ class CombinedProposalSubmitView(LoginRequiredMixin, CampViewMixin, CreateView):
|
|||
Save the object(s) here before redirecting
|
||||
"""
|
||||
if hasattr(self, 'speakerproposal'):
|
||||
eventproposal = form.save(commit=False)
|
||||
eventproposal.user = self.request.user
|
||||
eventproposal.event_type = self.eventtype
|
||||
eventproposal.save()
|
||||
eventproposal = form.save(user=self.request.user, event_type=self.eventtype)
|
||||
eventproposal.speakers.add(self.speakerproposal)
|
||||
else:
|
||||
# first save the SpeakerProposal
|
||||
|
@ -584,7 +574,7 @@ class CombinedProposalSubmitView(LoginRequiredMixin, CampViewMixin, CreateView):
|
|||
speakerproposal.save()
|
||||
|
||||
# then save the eventproposal
|
||||
eventproposal = form['eventproposal'].save(commit=False)
|
||||
eventproposal = form['eventproposal'].save(user=self.request.user, event_type=self.eventtype)
|
||||
eventproposal.user = self.request.user
|
||||
eventproposal.event_type = self.eventtype
|
||||
eventproposal.save()
|
||||
|
|
Loading…
Reference in a new issue