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 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
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 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']))
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 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)
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.' ), )
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)
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})
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)
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')