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 and not lastuser.has_permission("siteadmin"): abort(403) form = ProposalForm(obj=proposal) 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 # 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 proposal.user != g.user: del form.speaking elif 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 proposal.user == g.user: # Only allow the speaker to change this status 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 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 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') # 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.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 # 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 gettag(cls, tagname): tag = cls.query.filter_by(title=tagname).first() if tag: return tag else: name = makename(tagname) # Is this name already in use? If yes, return it tag = cls.query.filter_by(name=name).first() if tag: return tag else: tag = Tag(name=name, title=tagname) db.session.add(tag) return tag
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.'))
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() # 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.' ), )