def get_log(request, filters, dialog_name, xhr=None): if request.method == "POST": logger.debug("Recreating form") form = LogForm(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'] appname = request.POST['appname'] except: instancename=None appname=None if instancename and appname: logger.debug("Parameters check: OK.") logger.debug("Calling MCollective to get log on %s filtered server" % (filters)) response, content = callRestServer(request.user, filters, 'a7xoas', 'get_log', 'instancename=%s;appname=%s' % (instancename,appname), True) if response.status == 200: json_content = json.loads(content) s_resps = [] for server_response in json_content: if server_response['statuscode']==0: s_resps.append({"server": server_response["sender"], "logfile":server_response["data"]["logfile"]}) else: s_resps.append({"server": server_response["sender"], "message":server_response["statusmsg"]}) 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 get_log_form(request, dialog_name, action, filters): logger.debug('Rendering form') return render_to_response('platforms/oc4j/logform.html', { 'action': action, 'filters': filters, 'form': LogForm([]), 'dialog_name': dialog_name, 'base_url': settings.BASE_URL }, context_instance=RequestContext(request))
def get_log(request, filters, dialog_name, xhr=None): if request.method == "POST": logger.debug("Recreating form") form = LogForm(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'] appname = request.POST['appname'] except: instancename = None appname = None if instancename and appname: logger.debug("Parameters check: OK.") logger.debug( "Calling MCollective to get log on %s filtered server" % (filters)) response, content = callRestServer( request.user, filters, 'a7xoas', 'get_log', 'instancename=%s;appname=%s' % (instancename, appname), wait_response=True, use_task=True, use_backend_scheduler=True) if response.getStatus() == 200: s_resps = [] for server_response in content: if server_response and server_response.getStatusCode( ) == 0 and "data" in server_response: log_file = None if server_response.getData( ) and "logfile" in server_response["data"]: log_file = server_response.getData()["logfile"] elif server_response.getData( ) and "data" in server_response.getData( ) and "logfile" in server_response.getData( )["data"]: log_file = server_response.getData( )["data"]["logfile"] if log_file: logger.debug( "Discovered log for server %s: %s" % (server_response.getSender(), log_file)) s_resps.append({ "server": server_response.getSender(), "logfile": log_file }) else: if server_response.getData( ) and "statusmsg" in server_response.getData(): s_resps.append({ "server": server_response.getSender(), "message": server_response.getData()["statusmsg"] }) 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