def get_form(request, dialog_name, action, filters): logger.debug("Rendering %s form" % action) if action == 'createinstance': return render_to_response('platforms/oc4j/instanceform.html', { 'action': action, 'filters': filters, 'form': InstanceForm([]), 'dialog_name': dialog_name, 'base_url': settings.BASE_URL }, context_instance=RequestContext(request)) elif action == 'addpool': return render_to_response('platforms/oc4j/poolform.html', { 'action': action, 'filters': filters, 'form': PoolForm([]), 'dialog_name': dialog_name, 'base_url': settings.BASE_URL }, context_instance=RequestContext(request))
def add_pool(request, filters, dialog_name, xhr=None): if request.method == "POST": logger.debug("Recreating form") form = PoolForm(request.POST) #Check if the <xhr> var had something passed to it. if xhr == "xhr": #TODO: Try to use dynamic form validation clean = form.is_valid() rdict = {'bad': 'false', 'filters': filters} try: instancename = request.POST['instancename'] poolname = request.POST['poolname'] username = request.POST['username'] password = request.POST['password'] database = request.POST['database'] dbinstance = request.POST['dbinstance'] except: instancename = None poolname = None username = None password = None database = None dbinstance = None if instancename and poolname and username and password and database and dbinstance: logger.debug("Parameters check: OK.") logger.debug( "Calling MCollective to create instance %s on %s filtered server" % (instancename, filters)) response, content = callRestServer( request.user, filters, 'a7xoas', 'add_pool', 'oc4j=%s;poolname=%s;user=%s;password=%s;database=%s;instance=%s' % (instancename, poolname, username, password, database, dbinstance), wait_response=True, use_task=True, use_backend_scheduler=True) if response.getStatus() == 200: s_resps = [] for server_response in content: if server_response.getStatusCode() == 0: if server_response.getData( ) and "data" in server_response.getData(): if "result" in server_response.getData( )["data"]: s_resps.append({ "server": server_response.getSender(), "response": server_response.getData()["data"] ["result"] }) else: s_resps.append({ "server": server_response.getSender(), "response": server_response.getData()["data"] ["statusmsg"] }) else: s_resps.append({ "server": server_response.getSender(), "response": server_response.getStatusMessage() }) else: s_resps.append({ "server": server_response.getSender(), "message": server_response.getStatusMessage() }) rdict.update({"result": s_resps}) else: rdict.update({ "result": "KO", "message": "Error communicating with server" }) rdict.update({'dialog_name': dialog_name}) # And send it off. else: rdict.update({'bad': 'true'}) d = {} # This was painful, but I can't find a better way to extract the error messages: for e in form.errors.iteritems(): d.update({ e[0]: unicode(e[1]) }) # e[0] is the id, unicode(e[1]) is the error HTML. # Bung all that into the dict rdict.update({'errs': d}) # Make a json whatsit to send back. return HttpResponse(json.dumps(rdict, ensure_ascii=False), mimetype='application/javascript') # It's a normal submit - non ajax. else: if form.is_valid(): # We don't accept non-ajax requests for the moment return HttpResponseRedirect("/") else: # It's not post so make a new form logger.warn("Cannot access this page using GET") raise Http404
def add_pool(request, filters, dialog_name, xhr=None): if request.method == "POST": logger.debug("Recreating form") form = PoolForm(request.POST) #Check if the <xhr> var had something passed to it. if xhr == "xhr": #TODO: Try to use dynamic form validation clean = form.is_valid() rdict = {'bad':'false', 'filters':filters } try: instancename = request.POST['instancename'] poolname = request.POST['poolname'] username = request.POST['username'] password = request.POST['password'] database = request.POST['database'] dbinstance = request.POST['dbinstance'] except: instancename=None poolname=None username=None password=None database=None dbinstance=None if instancename and poolname and username and password and database and dbinstance: logger.debug("Parameters check: OK.") logger.debug("Calling MCollective to create instance %s on %s filtered server" % (instancename, filters)) response, content = callRestServer(request.user, filters, 'a7xoas', 'add_pool', 'oc4j=%s;poolname=%s;user=%s;password=%s;database=%s;instance=%s' %(instancename, poolname, username, password, database, dbinstance), wait_response=True, use_task=True, use_backend_scheduler=True) if response.getStatus() == 200: s_resps = [] for server_response in content: if server_response.getStatusCode()==0: if server_response.getData() and "data" in server_response.getData(): if "result" in server_response.getData()["data"]: s_resps.append({"server": server_response.getSender(), "response":server_response.getData()["data"]["result"]}) else: s_resps.append({"server": server_response.getSender(), "response":server_response.getData()["data"]["statusmsg"]}) else: s_resps.append({"server": server_response.getSender(), "response":server_response.getStatusMessage()}) else: s_resps.append({"server": server_response.getSender(), "message":server_response.getStatusMessage()}) rdict.update({"result":s_resps}) else: rdict.update({"result": "KO", "message": "Error communicating with server"}) rdict.update({'dialog_name':dialog_name}) # And send it off. else: rdict.update({'bad':'true'}) d = {} # This was painful, but I can't find a better way to extract the error messages: for e in form.errors.iteritems(): d.update({e[0]:unicode(e[1])}) # e[0] is the id, unicode(e[1]) is the error HTML. # Bung all that into the dict rdict.update({'errs': d }) # Make a json whatsit to send back. return HttpResponse(json.dumps(rdict, ensure_ascii=False), mimetype='application/javascript') # It's a normal submit - non ajax. else: if form.is_valid(): # We don't accept non-ajax requests for the moment return HttpResponseRedirect("/") else: # It's not post so make a new form logger.warn("Cannot access this page using GET") raise Http404