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 view_proposal_form(request):
    json_data = {}
    proposal = None
    error_message = False

    meeting_list = MeetingFrequency.get_published_objects()
    collection_list = CollectionProcess.get_published_objects()
    association_types = AssociationType.get_published_objects()
    common_properties = CommonProperty.get_published_objects()

    # HANDLE PROPOSAL FORM
    if request.POST:
        form = ProposalForm(prefix='proposal_form', data=request.POST, meeting_list=meeting_list, collection_list=collection_list,
                            association_list=association_types, property_list=common_properties)

        if form.is_valid():

            cleaned_data = form.cleaned_data

            proposal = create_new_proposal(request, cleaned_data)

            # SEND EMAIL
            try:
                send_email(proposal)

            except Exception, e:
                logging.error(e)

            form = ProposalForm(prefix='proposal_form', meeting_list=meeting_list, collection_list=collection_list,
                                association_list=association_types, property_list=common_properties)

        else:
            error_message = True
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 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. 4
0
 def post(self, request, *arg, **kwargs):
     if self.request.accepted_renderer.format == 'html':
         form = ProposalForm(request.POST)
         if form.is_valid():
             pitch = Pitch.objects.get(pk=int(kwargs['pitch_pk']))
             proposal = form.save(commit=False)
             proposal.creator = request.user
             proposal.pitch = pitch
             proposal.save()
             return redirect('/groups/' + str(kwargs["group_pk"]) +
                             "/pitch/" + str(kwargs['pitch_pk']))
Esempio n. 5
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. 6
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. 7
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. 8
0
def edit(id):
    qry = db_session.query(Proposal).filter(
                Proposal.id==id)
    proposal = qry.first()
    if proposal:
        form = ProposalForm(formdata=request.form, obj=proposal)
        if request.method == 'POST' and form.validate():
            # save edits
            save_proposal(proposal, form)
            flash('Proposal updated successfully!')
            return redirect('/amendments/')
        return render_template('edit_proposal.html', form=form)
    else:
        return 'Error loading #{id}'.format(id=id)
Esempio n. 9
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. 10
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.'
        ),
    )
Esempio n. 11
0
def new_proposal():
    form = ProposalForm(request.form, csrf_enabled=False)
    if request.method == 'POST': 
        proposals.insert({
            "name": form.name.data,
            "example": form.example.data,
            "votes": {"yay" : 0, "meh" : 0, "ugh" : 0}
        })
        return redirect("/proposal")
    return render_template("proposal_new.html", title="New Proposal", form=form)
Esempio n. 12
0
def submit_proposal(request):
    if request.method=='POST':
        author_form = AuthorForm(request.POST)
        proposal_form = ProposalForm(request.POST, request.FILES)
        
        if author_form.is_valid() and proposal_form.is_valid:
            author = author_form.save(commit=False)
            author.save()
            
            proposal = proposal_form.save(commit=False)
            proposal.author = author
            proposal.save()

            return HttpResponseRedirect(reverse('program-submit-proposal-complete'))
    else:
        author_form = AuthorForm()
        proposal_form = ProposalForm()

    return render_to_response('program/submit_proposal_form.html',
        {'author_form': author_form, 'proposal_form': proposal_form})
Esempio n. 13
0
def amendments():
    print(1)
    form = ProposalForm(request.form)
    results = []
    query = db_session.query(Proposal)
    results = query.all()
    print(2)
    if request.method == 'POST': #and form.validate():

        amendmentName = request.form['amendmentTitle']
        managerName = request.form['managerName']
        amendment = request.form['amendment']
        year = '2020'
        proposalStatus = 'Proposed'

        print(amendmentName)
        print(managerName)
        print(amendment)
        print(year)
        print(proposalStatus)

        #print(3)
        # print(form)
        # print(form.proposal_name)
        #proposal = Proposal(form.proposal_name, form.proposal_manager, form.proposal_text, form.proposal_season, form.proposal_status)
        proposal = Proposal(amendmentName, managerName, amendment, year, proposalStatus)
        print(proposal)
        # print(4)
        db_session.add(proposal)
        db_session.commit()
        #save_proposal(proposal, form, new=True)
        flash('Proposal saved')
        return redirect('/amendments/')

    table = Amendment_Table(results)
    table.border = True
    # print(table.__html__())
    return render_template("amendments3.html", form=form, table=table)
Esempio n. 14
0
                            association_list=association_types, property_list=common_properties)

        if form.is_valid():

            cleaned_data = form.cleaned_data

            proposal = create_new_proposal(request, cleaned_data)

            # SEND EMAIL
            try:
                send_email(proposal)

            except Exception, e:
                logging.error(e)

            form = ProposalForm(prefix='proposal_form', meeting_list=meeting_list, collection_list=collection_list,
                                association_list=association_types, property_list=common_properties)

        else:
            error_message = True

    else:
        form = ProposalForm(prefix='proposal_form', meeting_list=meeting_list, collection_list=collection_list,
                            association_list=association_types, property_list=common_properties)

    context = {'proposal': proposal, 'proposal_form': form, 'association_types': association_types}
    form_html = render_to_string('snippets/proposal_form.html', context, context_instance=RequestContext(request))
    json_data['form_html'] = form_html
    json_data['error_message'] = error_message

    return HttpResponse(json.dumps(json_data), content_type='application/json')