def zotero_oauth(request): request.session['oauth_verifier'] = request.GET['oauth_verifier'] try: token, userid = zotero.access_info(request, request.GET['oauth_verifier'], request.session['request_token'] ) terms = zotero.get_user_items(request, userid, token, numItems=20) #tokenize search_terms = common_words("".join(terms['abstractSummary'] + terms['creatorSummary'] + terms['title'])) #sanitize for key, val in search_terms.iteritems(): search_terms[key] = [html_escapes.get(c, c) for c in val] request.session['search_terms'] = search_terms return HttpResponseRedirect(reverse('view-stash')) except HTTPError: return HttpResponseRedirect(reverse('site-index'))
def zotero_oauth(request): request.session['oauth_verifier'] = request.GET['oauth_verifier'] try: token, userid = zotero.access_info(request, request.GET['oauth_verifier'], request.session['request_token']) terms = zotero.get_user_items(request, userid, token, numItems=99) #tokenize search_terms = common_words( "".join(terms['abstractSummary'] + terms['creatorSummary'] + terms['title'])) #sanitize for key, val in search_terms.iteritems(): search_terms[key] = [html_escapes.get(c, c) for c in val] request.session['search_terms'] = search_terms return HttpResponseRedirect(reverse('discoveries:view')) except: return HttpResponseRedirect(reverse('site-index'))
def site_index(request): # preliminary site index page # TODO, possibly -- might be worth supporting HEAD requests # since this is the site in if request.method == 'GET': # on get request, initialize an empty form for display form = InputForm() elif request.method == 'POST': # on post, init form based on posted data # if form is invalid, redisplay input form with error messages form = InputForm(request.POST) if form.is_valid(): # actual logic here - infer search terms, query apis, display stuff text = form.cleaned_data['text'] zotero_user = form.cleaned_data['zotero_user'] search_terms = {} if zotero_user: request.session['username'] = zotero_user return HttpResponseRedirect(zotero.oauth_authorize_url(request)) elif text: lang = guess_language.guessLanguage(text[:100]) logger.debug('language detected as %s' % lang) common_terms = common_words(text, 15, lang) dbpedia_terms = get_search_terms(text, lang) # too many terms? phrase? didn't get results when combining # TODO: combine dbpedia + common terms; randomize from dbpedia results #search_terms['keywords'].extend(dbpedia_terms['keywords']) search_terms['keywords'] = list(dbpedia_terms['keywords'])[:10] # if no terms found in dbpedia, use common terms instead # (todo: should be some kind of combination) if not search_terms['keywords']: search_terms['keywords'] = common_terms['keywords'] # within dbpedia_terms there are now lists for # people # places # dates {'early': ,'late': } # people and places were reconciled against DBpedia. Dates contains # only four digit values and could be passed to # if for is valid, # for either text input or zotero where we got terms # print search_terms['keywords'] # store search terms in the session so we can redirect request.session['search_terms'] = search_terms # insert logic for processing zotero username here # zotero_user = form.cleaned_data['zotero_user'] # redirect # NOTE: should probably be http code 303, see other return HttpResponseRedirect(reverse('view-stash')) # if not valid: pass through and redisplay errors return render(request, 'core/site_index.html', {'input_form': form})
def site_index(request): # preliminary site index page # TODO, possibly -- might be worth supporting HEAD requests # since this is the site in if request.method == 'GET': # on get request, initialize an empty form for display form = InputForm() elif request.method == 'POST': # on post, init form based on posted data # if form is invalid, redisplay input form with error messages form = InputForm(request.POST) if form.is_valid(): # actual logic here - infer search terms, query apis, display stuff text = form.cleaned_data['text'] zotero_user = form.cleaned_data['zotero_user'] search_terms = {} if zotero_user: request.session['username'] = zotero_user return HttpResponseRedirect( zotero.oauth_authorize_url(request)) elif text: lang = guess_language.guessLanguage(text[:100]) logger.debug('language detected as %s' % lang) common_terms = common_words(text, 15, lang) dbpedia_terms = get_search_terms(text, lang) # too many terms? phrase? didn't get results when combining # TODO: combine dbpedia + common terms; randomize from dbpedia results #search_terms['keywords'].extend(dbpedia_terms['keywords']) search_terms['keywords'] = list(dbpedia_terms['keywords'])[:10] # if no terms found in dbpedia, use common terms instead # (todo: should be some kind of combination) if not search_terms['keywords']: search_terms['keywords'] = common_terms['keywords'] # within dbpedia_terms there are now lists for # people # places # dates {'early': ,'late': } # people and places were reconciled against DBpedia. Dates contains # only four digit values and could be passed to # if for is valid, # for either text input or zotero where we got terms # print search_terms['keywords'] # store search terms in the session so we can redirect request.session['search_terms'] = search_terms # insert logic for processing zotero username here # zotero_user = form.cleaned_data['zotero_user'] # redirect # NOTE: should probably be http code 303, see other return HttpResponseRedirect(reverse('view-stash')) # if not valid: pass through and redisplay errors return render(request, 'core/site_index.html', {'input_form': form})