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})
def test_whitespace_validation(self): form = InputForm({'text': " "}) self.assertFalse(form.is_valid())