def loginApp(request): if request.method == 'POST' or request.method == 'GET': try: username = request.POST['username'] password = request.POST['psw'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return render(request, 'MM/workspace.html', context={'user': user}) else: return render(request, 'MM/login.html', context={ 'loginmessage': "Login not success Please try to re login" }) except: logError(log=sys.exc_info()) else: print("its get method")
def exeCode(*args, **kwargs): #print(kwargs) #print(args) #data=kwargs['data'] cache.clear() retData = '' try: funname = kwargs.get('data').get('fun_name') codeObj = cache.get(funname + '_data') #print("In EXE code method", getFilePath(funname)) if not codeObj: #print("exe code if block") fileLocation = getFilePath(funname) code_obj = compile(open(fileLocation).read(), funname, 'exec') cache.set_many({ funname + '_data': open(fileLocation).read(), funname + '_location': fileLocation }) else: code_obj = compile(codeObj, funname, 'exec') logMessage(message="Execution start for function-->" + funname) exec(code_obj, globals()) retData = globals()[funname](kwargs.get('data')) logMessage(message="Execution End for function-->" + funname) except: logError(message="Unexpected error while execution file:" + funname, log=sys.exc_info()) return retData
def UIPreview(request): """ Used this function to return Preview Screen :param request: :return: """ print(request.POST['filename']) try: """filePath = MM_Utiliy.getTeplatePath(MM_Utiliy,request.POST['filename']) f = open(filePath, "r") data=f.read() f.close() #print(data) parsehtml = MM_Utiliy.parseHtml(MM_Utiliy,data,"Preview")""" tempName = 'MM/' + request.POST.get('filename', '') + '.html' print(tempName) return render(request, tempName, {'Hello': "How rdsfsdfsd u"}) #return JsonResponse("<div>{% include 'MM/UIOptions.html' %}</div>",safe=False) except: logError(log=sys.exc_info()) exc_type, exc_value, exc_traceback = sys.exc_info() return HttpResponse( "Faild to parse the file, Please check the logs for error\n" + repr(traceback.format_exception(exc_type, exc_value, exc_traceback)))
def ElementFileSaveOrUpdate(element, request): try: rootdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if request.get('element_type') == "Section": tempplatespath = os.path.join(os.path.join(rootdir, "templates"), "MM") filePath = os.path.join(tempplatespath, request.get('element_name') + ".html") f = open(filePath, "w+") f.write(parseHtml(request.get('element_stream'), "Save")) f.close() elif request.get('element_type') == "Tag": tempplatespath = os.path.join(os.path.join(rootdir, "templates"), "MM") filePath = os.path.join(tempplatespath, request.get('element_name') + ".html") f = open(filePath, "w+") f.write(request.get(request.get('element_name') + "_html")) f.close() tagpath = os.path.join(os.path.join(rootdir, "MM"), "templatetags") filePath = os.path.join(tagpath, request.get('element_name') + ".py") f = open(filePath, "w+") f.write(request.get(request.get('element_name') + "_py")) f.close() return "Element Files save Sucess" except: logError(log=sys.exc_info()) return "Element Save Fail"
def ElementDBSave(self,element,request): try: print(request.POST) ElementObject = MPM_element.objects.get_or_create(element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = element['element_stream'] ElementObject.element_displayname = element['element_name'] ElementObject.element_mode = "Original" ElementObject.element_type = element['element_type'] ElementObject.save() element['element_name']=element['element_name']+"_Dev" ElementObject = MPM_element.objects.get_or_create(element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = request.POST['element_stream'] ElementObject.element_displayname = request.POST['element_name'] ElementObject.element_mode = "Development" ElementObject.element_type = element['element_type'] ElementObject.save() return "DBSucess" except: logError(sys.exc_info()) return "DBFail"
def CompleAndExec(self,request): """Used to compile the code""" print(request.POST) codeObj = cache.get('test2') print(codeObj) if not codeObj: fileName = "C:/Users/anjaneyulua/Documents/Apache24/htdocs/MPM/MM/templatetags/test2.py" code_obj = compile(open(fileName).read(), 'test2', 'exec') cache.add('test2','hello',86400) # code_obj = compile(code, 'scheduler', 'exec') # exec('print(code)') # ns = globals() print("else block") try: exec(code_obj, globals()) # getattr(self,'f')() # eval('f') # ns['f']() globals()['show_results1']("hello") except: print("Unexpected error for file:", sys.exc_info()) logError(sys.exc_info()) else: print("if block") globals()['show_results1']("hello") return "Hello"
def DickUpdate(key, originalData, updateData): try: if key in originalData: originalData[key].update(updateData) else: originalData[key] = updateData return originalData except: logError(log=sys.exc_info()) return originalData
def ElementFileSaveOrUpdate(self,element): try: rootdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if element['element_type'] == "Section": tempplatespath = os.path.join(os.path.join(rootdir, "templates"),"MM") filePath = os.path.join(tempplatespath,element['element_name']+".html") f = open(filePath, "w+") f.write(element['element_stream']) f.close() return "Element Files save Sucess" except: logError(sys.exc_info()) return "Element Save Fail"
def logoutapp(request): """ Used to log out the user :param request: :return: """ try: logout(request) return render(request, 'MM/login.html', context={ 'loginmessage': "Successfully logged out, Please login here" }) except: logError(log=sys.exc_info())
def UIElementSave(request): """ Used to save the UI Screen :param request: :return: """ try: # print(request) # print(request.POST['element_dev_stream']) # web_page = WebPage.objects.get_or_create(topic=top, url=fakeurl, name=fake_name)[0] # Setup defaults element = {} element['element_name'] = request.get('element_name') element['element_createddatetime'] = datetime.datetime.now() element['element_updatedatetime'] = datetime.datetime.now() element['element_stream'] = request.get('element_stream') #element['element_stream'] = parseHtml(request.get('element_stream'), "Save") element['element_displayname'] = request.get('element_name') element['element_mode'] = "Development" element['element_type'] = request.get('element_type') status = ElementDBSave(element, request) if status == "DBSucess": fileSatatus = ElementFileSaveOrUpdate(element, request) if fileSatatus == "Element Files save Sucess": return "File Save Sucess" else: return "File Save Failed" return "Save Sucess" else: return "DBFail" except: logError(log=sys.exc_info()) return "Save failed"
def parseHtml(html, action): """ Used to parse HTML :param html: :return: """ soup = BeautifulSoup(html, "lxml") generatedhtl = '' # print(soup) for tag in soup.find_all(attrs={"data-edit": "remove"}): tag.decompose() for tag in soup.find_all(attrs={"data-edit": "merge"}): tag.unwrap() for tag in soup.find_all(attrs={"data-edit": "regenerate"}): data_controlset = json.loads(tag['data-controlset']) # print(".......................",data_controlset.get('layout_class','Hello')) if data_controlset.get("controlType", '') == "label": #print(data_controlset) new_col_tag = soup.new_tag("div") new_col_tag['class'] = data_controlset.get("column_class", '') new_col_tag['style'] = data_controlset.get("column_style", '') new_label_tag = soup.new_tag("label") new_label_tag.string = "{{ " + data_controlset.get( "label_property_property", '') + " }}" new_label_tag['class'] = data_controlset.get( "label_property_class", '') new_label_tag['style'] = data_controlset.get( "label_property_style", '') # new_label_tag.string='{% include "MM/UIOptions.html" %}' new_col_tag.append(new_label_tag) tag.replace_with(new_col_tag) if data_controlset.get("controlType", '') == "input": new_col_tag = soup.new_tag("div") new_col_tag['class'] = data_controlset.get("column_class", '') new_col_tag['style'] = data_controlset.get("column_style", '') new_label_tag = soup.new_tag("label") new_label_tag.string = "{{ " + data_controlset.get( "input_property_label", '') + " }}" new_label_tag['for'] = data_controlset.get( "input_property_property", '') new_label_tag['class'] = data_controlset.get( "label_property_class", '') new_label_tag['style'] = data_controlset.get( "label_property_style", '') new_input_tag = soup.new_tag("input") new_input_tag['name'] = data_controlset.get( "input_property_property", '') new_input_tag['class'] = data_controlset.get( "property_property_class", '') new_input_tag['style'] = data_controlset.get( "property_property_style", '') new_input_tag['value'] = "{{" + data_controlset.get( "input_property_property", '') + "}}" new_label_tag.append(new_input_tag) new_col_tag.append(new_label_tag) tag.replace_with(new_col_tag) if data_controlset.get("controlType", '') == "button": new_col_tag = soup.new_tag("div") new_col_tag['class'] = data_controlset.get("column_class", '') new_col_tag['style'] = data_controlset.get("column_style", '') new_input_tag = soup.new_tag("input") new_input_tag['type'] = "button" new_input_tag['value'] = data_controlset.get( "button_property_value", '') new_input_tag['class'] = data_controlset.get( "button_property_class", '') new_input_tag['style'] = data_controlset.get( "button_property_style", '') new_input_tag['onclick'] = data_controlset.get( "button_property_click", '') new_col_tag.append(new_input_tag) tag.replace_with(new_col_tag) if data_controlset.get("controlType", '') == "dropdown": new_col_tag = soup.new_tag("div") new_col_tag['class'] = data_controlset.get("column_class", '') new_col_tag['style'] = data_controlset.get("column_style", '') #tag_data = {"choices": ["First choice", "second choice", "6th choice"]} tag_data = data_controlset new_col_tag.string = "{% load Tagutility %}{% TagUtility context fun_name='testDropdown' Tagdata='" + json.dumps( tag_data) + "'%}" tag.replace_with(new_col_tag) if data_controlset.get("controlType", '') == "layout": tag['class'] = data_controlset.get("layout_class", '') tag['style'] = data_controlset.get("layout_style", '') if data_controlset.get("controlType", '') == "emptycontol": new_col_tag = soup.new_tag("div") new_col_tag['class'] = data_controlset.get("column_class", '') new_col_tag['style'] = "height:20px;" + data_controlset.get( "column_style", '') # new_span_tag = soup.new_tag("span") # new_span_tag['style'] = "height:20px" # new_col_tag.append(new_span_tag) tag.replace_with(new_col_tag) if action == "Preview": try: """ReviewfilePath = MM_Utiliy.getTeplatePath(MM_Utiliy, "UIPreview_MPM") rf = open(ReviewfilePath, "r+") phtml = rf.read() Psoup = BeautifulSoup(phtml, "lxml") ptag = Psoup.find_all(id="previewID") new_tag=soup.new_tag("div") new_tag['id']='previewID' #print(soup.prettify()) new_tag.append(soup) for el in ptag: el.replace_with(new_tag) rf.seek(0) rf.write(Psoup.prettify()) rf.close()""" Psoup = BeautifulSoup(soup.prettify(formatter="html"), 'lxml') htmlTag = Psoup.body headTag = Psoup.new_tag("head") linkTag1 = Psoup.new_tag("link") linkTag1[ 'href'] = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" linkTag1['rel'] = 'stylesheet' linkTag2 = Psoup.new_tag("link") linkTag2['href'] = "static/css/Portal.css" linkTag2['rel'] = 'stylesheet' linkTag3 = Psoup.new_tag("link") linkTag3[ 'href'] = "//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" linkTag3['rel'] = 'stylesheet' scriptTag = Psoup.new_tag("script") scriptTag[ 'src'] = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" scriptTag2 = Psoup.new_tag("script") scriptTag2[ 'src'] = "https://code.jquery.com/ui/1.12.1/jquery-ui.js" scriptTag3 = Psoup.new_tag("script") scriptTag3['src'] = "static/js/tabs.js" scriptTag4 = Psoup.new_tag("script") scriptTag4['src'] = "static/js/app.js" scriptTag5 = Psoup.new_tag("script") scriptTag5['src'] = "static/js/Portal.js" headTag.append(linkTag1) headTag.append(linkTag2) headTag.append(linkTag3) headTag.append(scriptTag) headTag.append(scriptTag2) headTag.append(scriptTag3) headTag.append(scriptTag4) headTag.append(scriptTag5) # headTag.wrap(' <head><meta charset="utf-8"/><title>Preview</title><link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><script src="static/js/Portal.js" type="text/javascript"></script><link href="static/css/Portal.css" rel="stylesheet"/></head>') htmlTag.insert_before(headTag) #print(Psoup) return Psoup.prettify(formatter="html") except: logError(log=sys.exc_info()) return soup.prettify(formatter="html")
def parseForm(request): try: # print("Parse Form",request) soup = BeautifulSoup("<html><form></form></html>", "lxml") new_form_tag = soup.new_tag("form") new_form_tag['method'] = request.get('method', 'POST') new_form_tag['action'] = "/" + request.get('action', '') new_form_tag['id'] = request.get('element_name', '') hideEle = [k for k in request.keys() if k.startswith('hide_')] for v in hideEle: new_input_tag = soup.new_tag("input") new_input_tag['name'] = request.get(v, '') new_input_tag['value'] = "{{" + request.get(v, '') + "}}" new_input_tag['type'] = "hidden" new_form_tag.append(new_input_tag) new_div_tag = soup.new_tag("div") new_form_tag.append(new_div_tag) new_div_tag.string = '{% include "MM/' + request.get( 'includeElement', '') + '.html" %}' # includeElement new_script_tag = soup.new_tag("script") new_script_tag.string = "$(document).on('submit','#" + request.get('element_name', '') + "',function(e){\n" \ " e.preventDefault();\n" \ "$.ajax({ data: $(this).serialize(),\n" \ "type: $(this).attr('method'),\n" \ "url: $(this).attr('action'),\n" \ "success: function(response) {\n" \ "var controlData = JSON.parse(response.responseData.response);\n" \ "console.log(controlData);\n" \ "$('#" + request.get( 'element_name', '') + "').html(response.html);\n" \ "//console.log(response.responseData.controlType);\n" \ "$('#'+controlData.id).attr('data-controlset',response.responseData.response);\n" \ "$('#'+controlData.id).attr('class',controlData.column_class);\n" \ "$('#'+controlData.id).attr('style',controlData.column_style);\n" \ "if(response['success']) {\n" \ "}\n" \ "if(response['error']) {\n" \ "}\n" \ "},\n" \ "error: function (request, status, error) {\n" \ "console.log(request.responseText);\n" \ "}\n" \ "});\n" \ "});\n" formtag = soup.form formtag.replace_with(new_form_tag) htmltag = soup.html htmltag.insert_after(new_script_tag) #print("new Form", new_form_tag) print("form tag", soup.prettify(formatter="html")) # foodict = [k for k in request.keys() if k.startswith('hide_')] # print("Pares From", foodict) return soup.prettify(formatter="html") except: logError(log=sys.exc_info()) return True
def ElementDBSave(element, request): try: #print(request) if request.get('element_type') == "Section": ElementObject = MPM_element.objects.get_or_create( element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = parseHtml( request.get('element_stream'), "Save") ElementObject.element_displayname = element['element_name'] ElementObject.element_mode = "Original" ElementObject.element_type = element['element_type'] ElementObject.save() elif request.get('element_type') == "Tag": element['element_name'] = request.get('element_name') + "_py" ElementObject = MPM_element.objects.get_or_create( element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = request.get(element['element_name']) ElementObject.element_displayname = element['element_name'] ElementObject.element_mode = "Original" ElementObject.element_type = element['element_type'] ElementObject.save() element['element_name'] = request.get('element_name') + "_html" ElementObject = MPM_element.objects.get_or_create( element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = request.get(element['element_name']) ElementObject.element_displayname = element['element_name'] ElementObject.element_mode = "Original" ElementObject.element_type = element['element_type'] ElementObject.save() elif request.get('element_type') == "Form": ElementObject = MPM_element.objects.get_or_create( element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = parseForm(request) ElementObject.element_displayname = element['element_name'] ElementObject.element_mode = "Original" ElementObject.element_type = element['element_type'] ElementObject.save() rootdir = os.path.dirname( os.path.dirname(os.path.abspath(__file__))) tempplatespath = os.path.join(os.path.join(rootdir, "templates"), "MM") filePath = os.path.join(tempplatespath, request.get('element_name') + ".html") f = open(filePath, "w+") f.write(ElementObject.element_stream) f.close() hideEle = { k: v for k, v in request.items() if k.startswith('hide_') } request['hideEle'] = hideEle request['element_stream'] = returnHtmlAsStringFromTemplate( templateName='MM/NewFormWorkAreawithoutheader.html', templateData=request) print("DB save", request.get('element_stream')) element['element_name'] = request.get('element_name') + "_Dev" ElementObject = MPM_element.objects.get_or_create( element_name=element['element_name'], defaults=element)[0] ElementObject.element_updatedatetime = datetime.datetime.now() if (ElementObject.element_createddatetime == ""): ElementObject.element_createddatetime = datetime.datetime.now() ElementObject.element_stream = request.get('element_stream') ElementObject.element_displayname = request.get('element_name') ElementObject.element_mode = "Development" ElementObject.element_type = element['element_type'] ElementObject.save() return "DBSucess" except: logError(log=sys.exc_info()) return "DBFail"