def describe_funder(self, request, id_=None): '''Import information about a funder into the index.''' tmpl = util.clean_list(request.values.getlist('useful_links[]')) useful_links = [] for link in tmpl: useful_links.append(util.prep_link(link)) if not id_: id_ = util.slug_id(request.values['name']) record = { "id": id_, "name": request.values['name'], # guaranteed to have 'name' "homepage": util.prep_link(request.values.get("homepage",'')), "description": request.values.get("description",''), "interested_in": request.values.get("interested_in",''), "policies": request.values.get("policies",''), "useful_links": useful_links, "tags": util.clean_list(request.values.get("tags",'').split(",")), "created": datetime.now().isoformat(), "modified": datetime.now().isoformat(), "owner": self.owner.id, "license": CROWDSOURCE_CONTRIB_LICENSE, "origin": "Crowdsourced", "origin_method": "crowdsourced" } fundfind.dao.Funder.upsert(record) return id_
def share_fundopp(self, request, id_=None): '''Import information about a funding opportunity into the index.''' tmpl = util.clean_list(request.values.getlist('useful_links[]')) useful_links = [] for link in tmpl: useful_links.append(util.prep_link(link)) if not id_: id_ = util.slug_id(request.values["title"]) record = { "funder": request.values.get("funder", ''), "title": request.values["title"], "residency": request.values.get("residency"), "gender": request.values.get("gender"), "id": id_, "url": util.prep_link(request.values.get("url",'')), "description": Markup.escape(request.values.get("more_info",'')), "issue_date": request.values.get('issue_date',None), "closing_date": request.values.get('closing_date',None), "funds": request.values.get('funds',''), "funds_exactly_or_upto": request.values.get('funds_exactly_or_upto',''), "useful_links": useful_links, "tags": util.clean_list(request.values.get("tags",'').split(",")), "subjects": util.clean_list(request.values.get("subjects",'').split(",")), "created": datetime.now().isoformat(), "modified": datetime.now().isoformat(), "owner": self.owner.id, "license": CROWDSOURCE_CONTRIB_LICENSE, "origin": "Crowdsourced", "origin_method": "crowdsourced" } # cause ElasticSearch exceptions if null or empty string # so just remove them from the document if not record['issue_date']: del record['issue_date'] if not record['closing_date']: del record['closing_date'] fundfind.dao.FundingOpp.upsert(record) return id_
def register(): # TODO: re-enable csrf form = RegisterForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): api_key = str(uuid.uuid4()) account = dao.Account( id=form.username.data, email=form.email.data, api_key=api_key, country=form.country.data, organisation=form.organisation.data, department=form.department.data, research_group=form.research_group.data, interests=util.clean_list( form.interests.data.split(',') ) ) account.set_password(form.password.data) account.save() login_user(account, remember=True) flash('Thanks for signing-up', 'success') return redirect(url_for('home')) if request.method == 'POST' and not form.validate(): flash('Please correct the errors', 'error') return render_template('account/register.html', form=form)