Esempio n. 1
0
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.'))
Esempio n. 2
0
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.'
        ),
    )
Esempio n. 3
0
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.'
        ))
Esempio n. 4
0
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.'))
Esempio n. 5
0
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.'
        ))
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
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.'))
Esempio n. 9
0
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.'
        ),
    )