Example #1
0
def ajaxCreateGrid(request):
    if not request.user.is_authenticated():
        return redirect_to(request, '/auth/login/')

    if request.method == 'POST':
        
        #for key in request.REQUEST.keys():
        #    print 'key: ' + key + ' values: ' + request.REQUEST[key]
        #print '------'
        
        gridType= None
        userObj= request.user
        isConcernAlternativeResponseGrid= False
        #check the if the inputs are correct
        if request.POST.has_key('nAlternatives') and request.POST.has_key('nConcerns'): #and request.POST.has_key('gridName')
            if request.POST.has_key('gridType'):
                if request.POST['gridType'] == 'response':
                    return HttpResponse(createXmlErrorResponse("Invalid request, unsupported operation"), content_type='application/xml') 
                elif request.POST['gridType'] == 'user':
                    gridType= Grid.GridType.USER_GRID
                else:
                    return HttpResponse(createXmlErrorResponse("Unsupported grid type"), content_type='application/xml')
            else:
                #if the gridType key is not found assume it is a user grid
                gridType= Grid.GridType.USER_GRID
        else:
            return HttpResponse(createXmlErrorResponse("Invalid request, request is missing argument(s)"), content_type='application/xml')

        #lets validate the data
        try:                
            obj= __validateInputForGrid__(request, isConcernAlternativeResponseGrid)
        except KeyError as error:
            print "Exception in user code:"
            print '-'*60
            traceback.print_exc(file=sys.stdout)
            print '-'*60
            return HttpResponse(createXmlErrorResponse(error.args[0]), content_type='application/xml')
        except ValueError as error:
            print "Exception in user code:"
            print '-'*60
            traceback.print_exc(file=sys.stdout)
            print '-'*60
            return HttpResponse(createXmlErrorResponse(error.args[0]), content_type='application/xml')
        except:
            print "Exception in user code:"
            print '-'*60
            traceback.print_exc(file=sys.stdout)
            print '-'*60
            return HttpResponse(createXmlErrorResponse('Unknown error'), content_type='application/xml')
        nConcerns, nAlternatives, concernValues, alternativeValues, ratioValues= obj
        gridName= None
        if request.POST.has_key('gridName'):
            result= validateName(request.POST['gridName'])
            if  type(result) == StringType:
                gridName= result
            else:
                return result
        try:
            createGrid(userObj, gridType,  gridName, nConcerns, nAlternatives, concernValues, alternativeValues, ratioValues, True)
        except:
            #return render_to_response('gridMng/createGrid.html', {'existingProjectName': request.REQUEST['grid']}, context_instance=RequestContext(request))
            return HttpResponse(createXmlErrorResponse("Could not create grid."), content_type='application/xml')
    #return an empty grid page
    return getCreateMyGridPage(request)
Example #2
0
def ajaxUpdateGrid(request):
    if not request.user.is_authenticated():
        return redirect_to(request, '/auth/login/')
    
    for key in request.REQUEST.keys():
        print 'key: ' + key + ' values: ' + request.REQUEST[key]
    print '------'
    
    user1= request.user
    gridObj= None
    isConcernAlternativeResponseGrid= False
    
    #lets determine what type of grid we are dealing with here
    if request.POST.has_key('gridType'):
        gridType= request.POST['gridType']
        if gridType == 'session':
            if request.POST.has_key('sessionUSID') and request.POST.has_key('iteration'):
                facilitatorObj= Facilitator.objects.isFacilitator(request.user)
                if facilitatorObj :
                    session= facilitatorObj.session_set.filter(usid= request.POST['sessionUSID'])
                    if len(session) >= 1:
                        session= session[0]
                        sessionGridRelation= session.sessiongrid_set.filter(iteration= request.POST['iteration'])
                        if len(sessionGridRelation) >= 1:
                            if session.state.name == State.CHECK:
                                gridObj= sessionGridRelation[0].grid
                            else:
                                return HttpResponse(createXmlErrorResponse("Grid can\t be changed in the current session state"), content_type='application/xml')
                        else:
                            return HttpResponse(createXmlErrorResponse("Grid was not found"), content_type='application/xml')
                    else:
                        return HttpResponse(createXmlErrorResponse("Session was not found"), content_type='application/xml')
                else:
                    return HttpResponse(createXmlErrorResponse("You are not a facilitator, can't change grid"), content_type='application/xml')
            else:
                return HttpResponse(createXmlErrorResponse("Invalid request, request is missing argument(s)"), content_type='application/xml')
        elif gridType == 'response':
            return HttpResponse(createXmlErrorResponse("Invalid request, unsupported operation"), content_type='application/xml')
        elif gridType == 'user':
            gridObj= Grid.objects.get(user= user1, usid= request.POST['gridUSID'])
    else:
        try:
            gridObj= Grid.objects.get(user= user1, usid= request.POST['gridUSID'])
        except:
            pass

    if request.POST.has_key('gridName'):
        gridCheckNameResult= validateName(request.POST['gridName'])
        if  type(gridCheckNameResult) == StringType:
            gridObj.name= gridCheckNameResult
        else:
            #if the grid name isn't a string than it is an error
            return gridCheckNameResult
    #because django will save stuff to the database even if .save() is not called, we need to validate everything before starting to create the objects that will be used to populate the db
    obj= None
    try:
        obj= __validateInputForGrid__(request, isConcernAlternativeResponseGrid)
    except KeyError as error:
        print "Exception in user code:"
        print '-'*60
        traceback.print_exc(file=sys.stdout)
        print '-'*60
        return HttpResponse(createXmlErrorResponse(error.args[0]), content_type='application/xml')
    except ValueError as error:
        print "Exception in user code:"
        print '-'*60
        traceback.print_exc(file=sys.stdout)
        print '-'*60
        return HttpResponse(createXmlErrorResponse(error.args[0]), content_type='application/xml')
    except:
        print "Exception in user code:"
        print '-'*60
        traceback.print_exc(file=sys.stdout)
        print '-'*60
        return HttpResponse(createXmlErrorResponse('Unknown error'), content_type='application/xml')
    nConcerns, nAlternatives, concernValues, alternativeValues, ratioValues= obj     
    
    #update the grid
    if gridObj != None: 
        try:   
            isGridCreated= updateGrid(gridObj , nConcerns, nAlternatives, concernValues, alternativeValues, ratioValues, isConcernAlternativeResponseGrid)
            if isGridCreated:
                return HttpResponse(createXmlSuccessResponse('Grid was saved', createDateTimeTag(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))), content_type='application/xml')
        except:
            print "Exception in user code:"
            print '-'*60
            traceback.print_exc(file=sys.stdout)
            print '-'*60
            return HttpResponse(createXmlErrorResponse('Unknown error'), content_type='application/xml')
    else:
        return HttpResponse(createXmlErrorResponse("No grid found"), content_type='application/xml')