Example #1
0
def guidedSearch(request):        
    ## distinguish forms that take 2 arguments from forms that take 1 argument
    if request.session['currentForm_name'] in form_2arguments:
        form = getattr(sys.modules[__name__], request.session['currentForm_name'])(request, request.GET or None)   #handle GET and POST in the same view
    else:
        form = getattr(sys.modules[__name__], request.session['currentForm_name'])(request.GET or None)
        
    if form.is_valid():
        ## get current question and user's answer
        current_question = request.session['currentForm_name'][:-4]
        formField_name = 'svd_'+current_question
        value = form.cleaned_data[formField_name]
        choices = form.fields[formField_name].choices        
        request.session['svd_guided_answered'].update(question_and_answer(form, value, choices))
        
        ## if user chooses to stop the search, start over; otherwise, perform the search
        if value == 'stop':
            return index(request)
        else:
            ## do search based on user's response
            lookup = "%s__contains" % current_question
            query = {lookup : value}
            request.session['Routines'] = request.session['Routines'].filter(**query)
            
            ## generate a session for current question/answer -->request.session[svd_currentQuestion] = answer
            request.session[formField_name] = value
            
            ## call function find_nextForm to set up next form for next question
            if request.session['currentForm_name'] == 'singleDoubleForm':
                nextForm_name = ''
                nextForm = ''
            else:
                dict_nextQuestion = find_nextForm(request.session['currentForm_name'], request)           
                nextForm_name = dict_nextQuestion['nextForm_name']
                nextForm = dict_nextQuestion['nextForm']
            
            ## make next form current for request.session['currentForm_name']
            request.session['currentForm_name'] = nextForm_name 
            
            ## decide whether or not to use form HTML files (if help buttons are needed, use HTML file instead of form)
            if nextForm_name in form_HTML:
                formHTML = nextForm_name
            else:
                formHTML = "invalid"
            
            ## get ready for the template       
            context = {
                        'formHTML': formHTML,
                        'form': nextForm,
                        'svd_guided_answered' : request.session['svd_guided_answered'],
                        'results' : request.session['Routines'],
                        'advancedSearchMenuForm': advancedSearchMenuForm(),
                        }
            return render_to_response('lighthouse/lapack_svd/index.html', context_instance=RequestContext(request, context))
    else:       
        return index(request)
Example #2
0
def guidedSearch(request):
    form = getattr(sys.modules[__name__], request.session['currentForm_name'])(request.GET or None)
        
    if form.is_valid():
        ## get current question and user's answer
        current_question = request.session['currentForm_name'][:-4]
        formField_name = 'sylvester_'+current_question
        value = form.cleaned_data[formField_name]
        choices = form.fields[formField_name].choices        
        request.session['sylvester_guided_answered'].update(question_and_answer(form, value, choices))

        ## generate a session for current question/answer -->request.session[sylvester_currentQuestion] = answer
        request.session[formField_name] = value
        
        
        ## decide which form order to use
        if request.session['currentForm_name'] == 'standardGeneralizedForm' and request.session['sylvester_standardGeneralized'] == 'standard':
            request.session['form_order'] = form_order_standard
        elif request.session['currentForm_name'] == 'standardGeneralizedForm' and request.session['sylvester_standardGeneralized'] == 'generalized':
            request.session['form_order'] = form_order_generalized

        
        if request.session['sylvester_standardCondition'] == 'no' or request.session['sylvester_generalizedCondition'] == 'no':         ## stop search
            return index(request)
        else:
            ## do search based on user's response (no search needed for 'standardConditionForm', 'generalizedConditionForm')
            if request.session['currentForm_name'] not in ['standardConditionForm', 'generalizedConditionForm']:
                lookup = "%s__contains" % current_question
                query = {lookup : value}
                request.session['Results'] = request.session['Results'].filter(**query)
            
            ## call function find_nextForm to set up next form for next question
            dict_nextQuestion = find_nextForm(request.session['currentForm_name'], request)           
            nextForm_name = dict_nextQuestion['nextForm_name']
            nextForm = dict_nextQuestion['nextForm']
            
            ## make next form current for request.session['currentForm_name']
            request.session['currentForm_name'] = nextForm_name
            
            ## decide whether or not to use form HTML files (if help buttons are needed, use HTML file instead of form)
            if nextForm_name in form_HTML:
                formHTML = nextForm_name
            else:
                formHTML = "invalid"
            
            ## get ready for the template       
            context = {
                        'formHTML': formHTML,
                        'form': nextForm,
                        'sylvester_guided_answered' : request.session['sylvester_guided_answered'],
                        'results' : request.session['Results']
                        }
            return render_to_response('lighthouse/lapack_sylvester/index.html', context_instance=RequestContext(request, context))
    else:       
        return index(request)
Example #3
0
def guidedSearch(request):
    ## distinguish forms that take 2 arguments from forms that take 1 argument
    if request.session['currentForm_name'] in form_2arguments:
        form = getattr(sys.modules[__name__],
                       request.session['currentForm_name'])(
                           request, request.GET
                           or None)  #handle GET and POST in the same view
    else:
        form = getattr(sys.modules[__name__],
                       request.session['currentForm_name'])(request.GET
                                                            or None)

    if form.is_valid():
        ## get current question and user's answer
        current_question = request.session['currentForm_name'][:-4]
        formField_name = 'svd_' + current_question
        value = form.cleaned_data[formField_name]
        choices = form.fields[formField_name].choices
        request.session['svd_guided_answered'].update(
            question_and_answer(form, value, choices))

        ## if user chooses to stop the search, start over; otherwise, perform the search
        if value == 'stop':
            return index(request)
        else:
            ## do search based on user's response
            lookup = "%s__contains" % current_question
            query = {lookup: value}
            request.session['Routines'] = request.session['Routines'].filter(
                **query)

            ## generate a session for current question/answer -->request.session[svd_currentQuestion] = answer
            request.session[formField_name] = value

            ## call function find_nextForm to set up next form for next question
            if request.session['currentForm_name'] == 'singleDoubleForm':
                nextForm_name = ''
                nextForm = ''
            else:
                dict_nextQuestion = find_nextForm(
                    request.session['currentForm_name'], request)
                nextForm_name = dict_nextQuestion['nextForm_name']
                nextForm = dict_nextQuestion['nextForm']

            ## make next form current for request.session['currentForm_name']
            request.session['currentForm_name'] = nextForm_name

            ## decide whether or not to use form HTML files (if help buttons are needed, use HTML file instead of form)
            if nextForm_name in form_HTML:
                formHTML = nextForm_name
            else:
                formHTML = "invalid"

            ## get ready for the template
            context = {
                'formHTML': formHTML,
                'form': nextForm,
                'svd_guided_answered': request.session['svd_guided_answered'],
                'results': request.session['Routines'],
                'advancedSearchMenuForm': advancedSearchMenuForm(),
            }
            return render_to_response('lighthouse/lapack_svd/index.html',
                                      context_instance=RequestContext(
                                          request, context))
    else:
        return index(request)