def newsession(name): space = ProposalSpace.query.filter_by(name=name).first() if not space: abort(404) if space.status != SPACESTATUS.SUBMISSIONS: abort(403) form = ProposalForm() form.section.query = ProposalSpaceSection.query.filter_by(proposal_space=space, public=True).order_by('title') if request.method == 'GET': form.email.data = g.user.email if form.validate_on_submit(): proposal = Proposal(user=g.user, proposal_space=space) if form.speaking.data: proposal.speaker = g.user else: proposal.speaker = None proposal.votes.vote(g.user) # Vote up your own proposal by default form.populate_obj(proposal) proposal.name = makename(proposal.title) proposal.objective_html = markdown(proposal.objective) proposal.description_html = markdown(proposal.description) proposal.requirements_html = markdown(proposal.requirements) proposal.bio_html = markdown(proposal.bio) db.session.add(proposal) db.session.commit() flash("Your new session has been saved", "info") return redirect(url_for('viewsession', name=space.name, slug=proposal.urlname), code=303) return render_template('autoform.html', form=form, title="Submit a session proposal", submit="Submit session", breadcrumbs=[(url_for('viewspace', name=space.name), space.title)], message=Markup( 'This form uses <a href="http://daringfireball.net/projects/markdown/">Markdown</a> for formatting.'))
def editsession(name, slug): space = ProposalSpace.query.filter_by(name=name).first() if not space: abort(404) proposal_id = int(slug.split('-')[0]) proposal = Proposal.query.get(proposal_id) if not proposal: abort(404) if proposal.user != g.user: abort(403) form = ProposalForm(obj=proposal) form.section.query = ProposalSpaceSection.query.filter_by( proposal_space=space, public=True).order_by('title') # Set markdown flag to True for fields that need markdown conversion markdown_attrs = ('description', 'objective', 'requirements', 'bio') for name in markdown_attrs: attr = getattr(form, name) attr.flags.markdown = True if request.method == 'GET': form.speaking.data = proposal.speaker == g.user if form.validate_on_submit(): form.populate_obj(proposal) proposal.name = makename(proposal.title) if form.speaking.data: proposal.speaker = g.user else: if proposal.speaker == g.user: proposal.speaker = None # Set *_html attributes after converting markdown text for name in markdown_attrs: attr = getattr(proposal, name) html_attr = name + '_html' setattr(proposal, html_attr, markdown(attr)) proposal.edited_at = datetime.utcnow() db.session.commit() flash("Your changes have been saved", "info") return redirect(url_for('viewsession', name=space.name, slug=proposal.urlname), code=303) return render_template( 'autoform.html', form=form, title="Edit session proposal", submit="Save changes", breadcrumbs=[(url_for('viewspace', name=space.name), space.title), (url_for('viewsession', name=space.name, slug=proposal.urlname), proposal.title)], message=Markup( 'This form uses <a href="http://daringfireball.net/projects/markdown/">Markdown</a> for formatting.' ))
def newsession(name): space = ProposalSpace.query.filter_by(name=name).first() if not space: abort(404) if space.status != SPACESTATUS.SUBMISSIONS: abort(403) form = ProposalForm() del form.session_type # We don't use this anymore # Set markdown flag to True for fields that need markdown conversion markdown_attrs = ('description', 'objective', 'requirements', 'bio') for name in markdown_attrs: attr = getattr(form, name) attr.flags.markdown = True form.section.query = ProposalSpaceSection.query.filter_by( proposal_space=space, public=True).order_by('title') if len(list(form.section.query.all())) == 0: # Don't bother with sections when there aren't any del form.section if request.method == 'GET': form.email.data = g.user.email if form.validate_on_submit(): proposal = Proposal(user=g.user, proposal_space=space) if form.speaking.data: proposal.speaker = g.user else: proposal.speaker = None proposal.votes.vote(g.user) # Vote up your own proposal by default form.populate_obj(proposal) proposal.name = makename(proposal.title) # Set *_html attributes after converting markdown text for name in markdown_attrs: attr = getattr(proposal, name) html_attr = name + '_html' setattr(proposal, html_attr, markdown(attr)) db.session.add(proposal) db.session.commit() flash("Your new session has been saved", "info") return redirect(url_for('viewsession', name=space.name, slug=proposal.urlname), code=303) return render_template( 'autoform.html', form=form, title="Submit a session proposal", submit="Submit session", breadcrumbs=[(url_for('viewspace', name=space.name), space.title)], message=Markup( 'This form uses <a href="http://daringfireball.net/projects/markdown/">Markdown</a> for formatting.' ))
def editsession(name, slug): space = ProposalSpace.query.filter_by(name=name).first() if not space: abort(404) proposal_id = int(slug.split('-')[0]) proposal = Proposal.query.get(proposal_id) if not proposal: abort(404) if proposal.user != g.user: abort(403) form = ProposalForm() form.section.query = ProposalSpaceSection.query.filter_by(proposal_space=space, public=True).order_by('title') if request.method == 'GET': form.email.data = proposal.email form.title.data = proposal.title form.section.data = proposal.section form.objective.data = proposal.objective form.session_type.data = proposal.session_type form.technical_level.data = proposal.technical_level form.description.data = proposal.description form.requirements.data = proposal.requirements form.slides.data = proposal.slides form.links.data = proposal.links form.bio.data = proposal.bio form.speaking.data = proposal.speaker == g.user if form.validate_on_submit(): form.populate_obj(proposal) proposal.name = makename(proposal.title) if form.speaking.data: proposal.speaker = g.user else: if proposal.speaker == g.user: proposal.speaker = None proposal.objective_html = markdown(proposal.objective) proposal.description_html = markdown(proposal.description) proposal.requirements_html = markdown(proposal.requirements) proposal.bio_html = markdown(proposal.bio) proposal.edited_at = datetime.utcnow() db.session.commit() flash("Your changes have been saved", "info") return redirect(url_for('viewsession', name=space.name, slug=proposal.urlname), code=303) return render_template('autoform.html', form=form, title="Edit session proposal", submit="Save changes", breadcrumbs=[(url_for('viewspace', name=space.name), space.title), (url_for('viewsession', name=space.name, slug=proposal.urlname), proposal.title)], message=Markup( 'This form uses <a href="http://daringfireball.net/projects/markdown/">Markdown</a> for formatting.'))