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)
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')