예제 #1
0
파일: file.py 프로젝트: Xeon2003/vi
    def onSelectionDataAvailable(self, req):
        data = NetworkService.decode(req)
        assert self.data["dest"]["key"] == data["values"]["key"]
        self.data["dest"] = data["values"]

        self.updateLabel()
        self.previewImg.setFile(self.data["dest"])
예제 #2
0
    def onSelectionDataAvailable(self, req):
        """
			We just received the full information for this entry from the server and can start displaying it
		"""
        data = NetworkService.decode(req)
        assert self.selection["dest"]["key"] == data["values"]["key"]

        if self.using:
            res = (utils.formatString(
                utils.formatString(self.format,
                                   data["values"],
                                   data["structure"],
                                   prefix=["dest"],
                                   language=conf["currentlanguage"]),
                self.selection["rel"],
                self.using,
                prefix=["rel"],
                language=conf["currentlanguage"]) or data["values"]["key"])
        else:
            res = (utils.formatString(
                utils.formatString(self.format,
                                   data["values"],
                                   data["structure"],
                                   prefix=["dest"],
                                   language=conf["currentlanguage"]),
                data["values"],
                data["structure"],
                language=conf["currentlanguage"]) or data["values"]["key"])

        self.selectionTxt["value"] = res
예제 #3
0
 def onCheckUpdate(self) -> None:
     data = NetworkService.decode(self.req)
     self.req.deleteLater()
     try:
         currentVersion = float(open("version.dat", "r").read())
     except:
         currentVersion = 0.0
     needsUpdate = False
     for skel in data["skellist"]:
         rev = float(skel["version"])
         if rev > currentVersion:
             if not self.targetVersion or self.targetVersion < rev:
                 fn = "%sfile" % self.getPlattform()
                 if fn in skel and skel[fn]:
                     self.targetVersion = rev
                     self.targetDL = skel[fn]["dlkey"]
                     self.addLog("%s: %s" % (rev, skel["changelog"]))
                     needsUpdate = True
     if needsUpdate:
         self.showUpdateBtn()
         self.addLog(
             QtCore.QCoreApplication.translate(
                 "Updater", "Updates avaiable. Ready to upgrade."))
     else:
         self.showExitBtn()
         self.addLog(
             QtCore.QCoreApplication.translate(
                 "Updater", "There is no new version avaiable."))
     self.overlay.clear()
예제 #4
0
파일: tree.py 프로젝트: sveneberth/viur-vi
	def onRequestSucceded(self, req):
		if not req in self._currentRequests:
			return

		self._currentRequests.remove(req)
		data = NetworkService.decode(req)
		for skel in data["skellist"]:
			if req.reqType == "node":
				n = self.nodeWidget(self.module, skel, data["structure"])
			else:
				n = self.leafWidget(self.module, skel, data["structure"])

			self.entryFrame.appendChild(n)
			self.entryFrame.sortChildren(self.getChildKey)

		if "cursor" in data.keys() and len(data["skellist"]) == req.params["amount"]:
			self._currentCursor[req.reqType] = data["cursor"]

			req.params["cursor"] = data["cursor"]
			r = NetworkService.request(self.module, "list/%s" % req.reqType, req.params,
									   successHandler=self.onRequestSucceded,
									   failureHandler=self.showErrorMsg)
			r.reqType = req.reqType
			self._currentRequests.append(r)
		else:
			self._currentCursor[req.reqType] = None

		self.actionBar.resetLoadingState()
예제 #5
0
파일: topbar.py 프로젝트: Xeon2003/vi
    def onTaskListAvailable(self, req):
        data = NetworkService.decode(req)
        if not "skellist" in data.keys() or not data["skellist"]:
            conf["tasks"]["server"] = []
            self.hide()
            return

        conf["tasks"]["server"] = data["skellist"]
예제 #6
0
    def _onRequestViewsAvailable(self, req):
        self.requestedViews = NetworkService.decode(req)
        self._buildViewPanes(self.requestedViews, register=True)

        conf["mainWindow"].unlock()

        if not self.isExpanded:
            super(ListHandler, self).onClick()
예제 #7
0
	def onSetDefaultRootNode(self, req):
		"""
			We requested the list of rootNodes for that module and that
			request just finished. Parse the respone and set our rootNode
			to the first rootNode received.
		"""
		data = NetworkService.decode( req )
		if len(data)>0:
			self.setRootNode( data[0]["key"])
예제 #8
0
    def parseAnswer(self, req):
        res = re.search("JSON\(\((.*)\)\)", req.result)

        if res:
            answ = json.loads(res.group(1))
        else:
            answ = NetworkService.decode(req)

        return answ
예제 #9
0
    def nextChunkComplete(self, req):
        answ = NetworkService.decode(req)

        if self.structure is None:
            self.structure = answ["structure"]

        if not answ["skellist"]:
            self.exportToFile()
            return

        self.data.extend(answ["skellist"])
        self.nextChunk(answ["cursor"])
예제 #10
0
파일: list.py 프로젝트: phorward/viur-vi
    def _onRequestViewsAvailable(self, req):
        self.requestedViews = NetworkService.decode(req)
        self._buildViewPanes(self.requestedViews,
                             register=True,
                             requested=True)

        self.unlock()

        if not self.isExpanded:
            if self.mode == "normal":
                super(ListHandler, self).onClick()
            elif self.childPanes:
                self.childPanes[0].onClick()
예제 #11
0
	def onRootNodesAvailable(self, req):
		res = NetworkService.decode( req )
		for node in res:
			option = html5.Option()
			option["value"] = node["key"]
			option.appendChild( html5.TextNode( node[ "name"] ) )
			if node["key"] == self.parent().parent().rootNode:
				option["selected"] = True
			self.appendChild( option )

		if len(self.children()) > 1 and not self.parent().parent().context:
			self.show()
		else:
			self.hide()
예제 #12
0
    def onUserTestSuccess(self, req):
        """
			We received a response from the server
		"""
        try:
            data = NetworkService.decode(req)
        except:
            self.showMessage()
            return

        if self.isCurrentlyFailed:
            if conf["currentUser"] != None and conf["currentUser"][
                    "key"] == data["values"]["key"]:
                self.hideMessage()
예제 #13
0
	def onGetAuthMethodsSuccess(self, req):
		answ = NetworkService.decode(req)

		methods = []
		for method in answ:
			handler = loginHandlerSelector.select(method[0], method[1])
			if not handler:
				print("Warning: Login-Handler \"%s\" with second factor \"%s\" unknown" % (method[0], method[1]))
				continue
			# Check if this handler is already inserted!
			if not any([c.__class__.__name__ == handler.__name__ for c in self.loginMethodSelector._children]):
				handler(self)

		self.haveLoginHandlers = True
		self.invoke()
예제 #14
0
	def doSkipLogin(self, req):
		answ = NetworkService.decode(req)
		if answ.get("action") != "view":
			self.doShowLogin()
			return

		conf["currentUser"] = answ["values"]

		if conf["vi.access.rights"]:
			if not any([x in conf["currentUser"].get("access", []) for x in conf["vi.access.rights"]]):
				self.insufficientRights()
				return
				#self.loginScreen.redirectNoAdmin()

		print("User already logged in")
		conf["theApp"].admin()
예제 #15
0
    def setIndexSuccess(self, req):
        answ = NetworkService.decode(req)

        if answ["action"] == "setSortIndexSuccess":
            table = self.getDataTable()

            if DynaTable and isinstance(table, DynaTable):
                data = table.data
            else:
                data = table._model

            data[req.src]["sortindex"] = float(answ["values"]["sortindex"])

            print("retrieved new sortindex", data[req.src]["sortindex"])

            self.switchRows(req.src, req.dst)
예제 #16
0
	def showErrorMsg(self, req=None, code=None):
		"""
			Removes all currently visible elements and displays an error message
		"""
		try:
			print(req.result)
			print(NetworkService.decode(req))
		except:
			pass

		if code and (code==401 or code==403):
			txt = translate("Access denied!")
		else:
			txt = translate("An error occurred: {code}", code=code or 0)

		conf["mainWindow"].log("error", txt)

		if self.wasInitialRequest:
			conf["mainWindow"].removeWidget(self)
예제 #17
0
파일: list.py 프로젝트: Xeon2003/vi
    def onCompletion(self, req):
        """
			Pass the rows received to the datatable.
			@param req: The network request that succeed.
		"""
        if not req in self._currentRequests:
            return

        self._currentRequests.remove(req)
        self.actionBar.resetLoadingState()

        data = NetworkService.decode(req)

        if data["structure"] is None:
            if self.table.getRowCount():
                self.table.setDataProvider(
                    None)  #We cant load any more results
            else:
                self.table["style"]["display"] = "none"
                self.emptyNotificationDiv["style"]["display"] = ""
                #self.element.innerHTML = "<center><strong>Keine Ergebnisse</strong></center>"
            return

        self.table["style"]["display"] = ""
        self.emptyNotificationDiv["style"]["display"] = "none"
        self._structure = data["structure"]

        if not self._tableHeaderIsValid:
            if not self.columns:
                self.columns = []
                for boneName, boneInfo in data["structure"]:
                    if boneInfo["visible"]:
                        self.columns.append(boneName)
            self.setFields(self.columns)

        if data["skellist"] and "cursor" in data.keys():
            self._currentCursor = data["cursor"]
            self.table.setDataProvider(self)
        else:
            self.table.setDataProvider(None)

        self.table.extend(data["skellist"])
예제 #18
0
    def onSkeyAvailable(self, req):
        """
			Internal callback - the Security-Key is known.
		"""
        formData = eval("new FormData();")
        formData.append("file", req.file)

        if self.context:
            for k, v in self.context.items():
                formData.append(k, v)

        if req.node and str(req.node) != "null":
            formData.append("node", req.node)

        formData.append("skey", NetworkService.decode(req))
        self.xhr = eval("new XMLHttpRequest()")
        self.xhr.open("POST", req.destUrl)
        self.xhr.onload = self.onLoad
        self.xhr.upload.onprogress = self.onProgress
        self.xhr.send(formData)
예제 #19
0
파일: tree.py 프로젝트: sveneberth/viur-vi
	def onPathRequestSucceded(self, req):
		"""
			Rebuild the displayed path-list according to request data
		"""
		answ = NetworkService.decode(req)
		skel = answ["values"]

		if skel["parentdir"] and skel["parentdir"] != skel["key"]:
			c = NodeWidget(self.module, skel, [])

			NetworkService.request(
				self.module, "view/node/%s" % skel["parentdir"],
				successHandler=self.onPathRequestSucceded
			)

		else:
			c = NodeWidget(self.module, {"key": self.rootNode, "name": "root"}, [])
			c.addClass("is_rootnode")

		self.pathList.prependChild(c)
예제 #20
0
	def onRequestSucceded(self, req):
		"""
			The NetworkRequest for a (sub)node finished.
			Create a new HierarchyItem for each entry received and add them to our view
		"""
		if not req in self._currentRequests:
			#Prevent inserting old (stale) data
			self.actionBar.resetLoadingState()
			return

		self._currentRequests.remove(req)
		data = NetworkService.decode(req)

		if req.node == self.rootNode:
			ol = self.entryFrame
		else:
			tmp = self.itemForKey(req.node)
			ol = tmp.ol
			assert ol is not None

		for skel in data["skellist"]:
			hi = HierarchyItem( self.module, skel, data["structure"] )
			ol.appendChild( hi )
			if hi.data["key"] in self._expandedNodes:
				hi.toggleExpand()
				if not hi.isLoaded:
					hi.isLoaded = True
					self.loadNode(hi.data["key"])

		if not ol._children and ol != self.entryFrame:
			ol.parent()["class"].append("has_no_childs")

		if data["skellist"] and data["cursor"]:
			self.loadNode(req.node, data["cursor"])

		self.actionBar.resetLoadingState()
예제 #21
0
 def onModuleViewAvailable(self, req):
     answ = NetworkService.decode(req)
     self.data["dest"] = answ["values"]
     self.updateLabel()
예제 #22
0
 def getCurrentUserSuccess(self, req):
     answ = NetworkService.decode(req)
     conf["currentUser"] = answ["values"]
     self.startup()
예제 #23
0
	def setData( self, request=None, data=None, ignoreMissing=False ):
		"""
		Rebuilds the UI according to the skeleton received from server

		@param request: A finished NetworkService request
		@type request: NetworkService
		@type data: dict
		@param data: The data received
		"""
		assert (request or data)
		if request:
			data = NetworkService.decode( request )

		try:
			skelStructure = {k: v for k, v in data["structure"]}

		except AttributeError:
			NetworkService.notifyChange(self.module)
			conf["mainWindow"].removeWidget( self )
			return

		print
		print("data", data)
		print("action", data["action"])
		if "action" in data and (data["action"] in ["addSuccess", "editSuccess"]):
			NetworkService.notifyChange(self.module)
			logDiv = html5.Div()
			logDiv["class"].append("msg")
			spanMsg = html5.Span()
			spanMsg.appendChild( html5.TextNode( translate("Entry saved!") ))
			spanMsg["class"].append("msgspan")
			logDiv.appendChild(spanMsg)
			if self.module in conf["modules"].keys():
				spanMsg = html5.Span()
				spanMsg.appendChild( html5.TextNode( conf["modules"][self.module]["name"] ))
				spanMsg["class"].append("modulspan")
				logDiv.appendChild(spanMsg)
			if "values" in data.keys() and "name" in data["values"].keys():
				spanMsg = html5.Span()
				spanMsg.appendChild( html5.TextNode( str(data["values"]["name"]) ))
				spanMsg["class"].append("namespan")
				logDiv.appendChild(spanMsg)
			conf["mainWindow"].log("success",logDiv)
			if self.closeOnSuccess:
				conf["mainWindow"].removeWidget( self )
				return
			self.clear()
			# self.bones = {}
			self.reloadData()
			return

		self.clear()
		self.actionbar.resetLoadingState()
		self.dataCache = data

		fieldSets = {}
		cat = "byweek"
		fs = html5.Fieldset()
		fs["class"] = cat
		if cat=="byweek":
			fs["class"].append("active")

		fs["name"] = cat
		legend = html5.Legend()
		fshref = fieldset_A()
		fshref.appendChild(html5.TextNode(cat) )
		legend.appendChild( fshref )
		fs.appendChild(legend)
		section = html5.Section()
		fs.appendChild(section)
		fs._section = section
		fieldSets[ cat ] = fs

		self.dtstart = data["values"]["startdate"]
		startdateLabel = html5.Label("Termin")
		startdateLabel["class"].append("termin")
		startdateLabel["class"].append("date")
		startdate_id = "vi_%s_%s_edit_bn_%s" % ( self.editIdx, self.module, "repeatdate")
		startdateLabel["for"] = startdate_id
		startdate = date.DateViewBoneDelegate("termin", "startdate", skelStructure).render(data["values"], "startdate")
		startdate["id"] = startdate_id
		containerDiv = html5.Div()
		containerDiv.appendChild(startdateLabel)
		containerDiv.appendChild(startdate)
		containerDiv["class"].append("bone")
		containerDiv["class"].append("bone_startdate")
		containerDiv["class"].append("date")
		fieldSets[ cat ]._section.appendChild( containerDiv )

		countLabel = html5.Label("Wiederholungen")
		countLabel["class"].append("count")
		countLabel["class"].append("numeric")
		count_id = "vi_%s_%s_edit_bn_%s" % ( self.editIdx, self.module, "count")
		countLabel["for"] = count_id

		self.count = html5.Input()
		self.count["id"] = count_id
		containerDiv2 = html5.Div()
		containerDiv2["class"].append("bone")
		containerDiv2["class"].append("bone_count")
		containerDiv2["class"].append("date")
		containerDiv2.appendChild(countLabel)
		containerDiv2.appendChild(self.count)

		# containerDiv3 = html5.Div()
		# self.byweekday = list()
		# for key, value in [["MO", "Mo"], ["TU", "Di"], ["TH", "Mi"], ["WE", "Do"], ["FR", "Fr"], ["SA", "Sa"], ["SU", "So"]]:
		# 	alabel=html5.Label()
		# 	acheckbox=html5.Input()
		# 	acheckbox["type"]="checkbox"
		# 	acheckbox["name"]=key
		# 	alabel.appendChild(acheckbox)
		# 	aspan=html5.Span()
		# 	aspan.element.innerHTML=value
		# 	alabel.appendChild(aspan)
		# 	containerDiv3.appendChild(alabel)
		# 	containerDiv2["class"].append("bone")
		# 	containerDiv2["class"].append("bone_count")
		# 	containerDiv2["class"].append("byweekday")
		# 	self.byweekday.append(acheckbox)

		fieldSets[ cat ]._section.appendChild(containerDiv2)
		# fieldSets[ cat ]._section.appendChild(containerDiv3)
		for (k,v) in fieldSets.items():
			if not "active" in v["class"]:
				v["class"].append("active")
		tmpList = [(k,v) for (k,v) in fieldSets.items()]
		tmpList.sort( key=lambda x:x[0])
		for k,v in tmpList:
			self.form.appendChild( v )
			v._section = None
예제 #24
0
파일: tree.py 프로젝트: phorward/viur-vi
 def onSetDefaultRootNode(self, req):
     data = NetworkService.decode(req)
     if len(data) > 0:
         self.setRootNode(data[0]["key"], self.node)
예제 #25
0
	def setData(self, request=None, data=None, ignoreMissing=False, askHierarchyCloning=True):
		"""
		Rebuilds the UI according to the skeleton received from server

		:param request: A finished NetworkService request
		:type request: NetworkService
		:type data: dict
		:param data: The data received
		"""
		assert (request or data)

		if request:
			data = NetworkService.decode(request)

		if "action" in data and (data["action"] == "addSuccess" or data["action"] == "editSuccess"):
			self.modified = False

			logDiv = html5.Div()
			logDiv["class"].append("msg")
			spanMsg = html5.Span()

			spanMsg.appendChild( html5.TextNode( translate( self.logaction ) ) )
			spanMsg["class"].append("msgspan")
			logDiv.appendChild(spanMsg)

			if self.module in conf["modules"].keys():
				spanMsg = html5.Span()
				if self.module.startswith( "_" ):
					spanMsg.appendChild( html5.TextNode( self.key ) )
				else:
					spanMsg.appendChild( html5.TextNode( conf["modules"][self.module]["name"] ))
				spanMsg["class"].append("modulespan")
				logDiv.appendChild(spanMsg)

			if "values" in data.keys() and "name" in data["values"].keys():
				spanMsg = html5.Span()

				name = data["values"].get("name") or data["values"].get("key", "")
				if isinstance(name, dict):
					if conf["currentlanguage"] in name.keys():
						name = name[conf["currentlanguage"]]
					else:
						name = name.values()

				if isinstance(name, list):
					name = ", ".join(name)

				spanMsg.appendChild(html5.TextNode(str(html5.utils.unescape(name))))
				spanMsg["class"].append("namespan")
				logDiv.appendChild(spanMsg)

			try:
				self.key = data["values"]["key"]
			except:
				self.key = None

			conf["mainWindow"].log("success",logDiv)

			if askHierarchyCloning and self.clone:
				# for lists, which are rootNode entries of hierarchies, ask to clone entire hierarchy
				if self.applicationType == EditWidget.appList and "rootNodeOf" in conf[ "modules" ][ self.module ]:
					YesNoDialog( translate( u"Do you want to clone the entire hierarchy?" ),
				                    yesCallback=self.doCloneHierarchy, noCallback=self.closeOrContinue )
					return
				# for cloning within a hierarchy, ask for cloning all subentries.
				elif self.applicationType == EditWidget.appHierarchy:
					YesNoDialog( translate( u"Do you want to clone all subentries of this item?" ),
				                    yesCallback=self.doCloneHierarchy, noCallback=self.closeOrContinue )
					return

			self.closeOrContinue()
			return

		#Clear the UI
		self.clear()
		self.bones = {}
		self.views = {}
		self.containers = {}
		self.actionbar.resetLoadingState()
		self.dataCache = data
		self.modified = False

		tmpDict = {k: v for k, v in data["structure"]}
		fieldSets = {}
		firstCat = None
		currRow = 0
		hasMissing = False
		defaultCat = conf["modules"][self.module].get("visibleName", self.module)

		contextVariable = conf["modules"][self.module].get("editContext")
		if self.mode == "edit" and contextVariable:
			if not self.context:
				self.context = {}

			if "=" in contextVariable:
				contextVariable, contextKey = contextVariable.split("=", 1)
			else:
				contextKey = "key"

			self.context.update({
				contextVariable: data["values"].get(contextKey)
			})

		for key, bone in data["structure"]:

			cat = defaultCat #meow!

			if ("params" in bone.keys()
			    and isinstance(bone["params"], dict)
			    and "category" in bone["params"].keys()):
				cat = bone["params"]["category"]

			if not cat in fieldSets.keys():
				fieldSets[cat] = EditWidgetFieldset(cat)

			wdgGen = editBoneSelector.select(self.module, key, tmpDict)
			widget = wdgGen.fromSkelStructure(self.module, key, tmpDict)
			widget["id"] = "vi_%s_%s_%s_%s_bn_%s" % (self.editIdx, self.module, self.mode, cat, key)

			if "setContext" in dir(widget) and callable(widget.setContext):
				widget.setContext(self.context)

			if "changeEvent" in dir(widget):
				widget.changeEvent.register(self)

			descrLbl = html5.Label(key if conf["showBoneNames"] else bone.get("descr", key))
			descrLbl["class"].append(key)
			descrLbl["class"].append(bone["type"].replace(".","_"))

			# Elements
			if ("params" in bone.keys()
			    and isinstance(bone["params"], dict)
			    and "elements.source" in bone["params"].keys()):
				descrLbl.addClass("elements-%s" % bone["params"]["elements.source"])

			descrLbl["for"] = "vi_%s_%s_%s_%s_bn_%s" % (self.editIdx, self.module, self.mode, cat, key)

			if bone["required"] or (bone.get("unique") and bone["error"]):
				descrLbl["class"].append("is_required")

				if bone["error"] is not None:
					descrLbl["class"].append("is_invalid")
					descrLbl["title"] = bone["error"]
					fieldSets[ cat ]["class"].append("is_incomplete")

					# Put info into message center
					conf["mainWindow"].log("info", "%s: %s" % (bone.get("descr", key), translate(bone["error"])))

					hasMissing = True

				elif bone["error"] is None and not self.wasInitialRequest:
					descrLbl["class"].append("is_valid")

			if isinstance(bone["error"], dict):
				widget.setExtendedErrorInformation(bone["error"])

			containerDiv = html5.Div()
			containerDiv.appendChild(descrLbl)
			containerDiv.appendChild(widget)

			if ("params" in bone.keys()
			    and isinstance(bone["params"], dict)
			    and "tooltip" in bone["params"].keys()):
				containerDiv.appendChild(ToolTip(longText=bone["params"]["tooltip"]))

			fieldSets[cat]._section.appendChild(containerDiv)
			containerDiv.addClass("bone", "bone_%s" % key, bone["type"].replace(".","_"))

			if "." in bone["type"]:
				for t in bone["type"].split("."):
					containerDiv["class"].append(t)

			currRow += 1
			self.bones[key] = widget
			self.containers[key] = containerDiv

			#Hide invisible bones or logic-flavored bones with their default desire
			if not bone["visible"] or (bone["params"] and bone["params"].get("logic.visibleIf")):
				self.containers[key].hide()
			elif bone["visible"] and not firstCat:
				firstCat = fieldSets[cat]

			# NO elif!
			if bone["params"] and bone["params"].get("logic.readonlyIf"):
				self.containers[key].disable()

		# Hide all fieldSets where all fields are invisible
		for fs in fieldSets.values():
			fs.checkVisibility()

		# Show default category
		if firstCat:
			firstCat.removeClass("inactive")
			firstCat.addClass("active")

		tmpList = [(k,v) for (k,v) in fieldSets.items()]
		tmpList.sort(key=lambda x:x[0])

		for k, v in tmpList:
			self.form.appendChild( v )
			v._section = None

		# Views
		views = conf["modules"][self.module].get("editViews")
		if self.mode == "edit" and isinstance(views, list):
			for view in views:
				vmodule = view.get("module")
				vvariable = view.get("context")
				vclass = view.get("class")
				vtitle = view.get("title")
				vcolumns = view.get("columns")
				vfilter = view.get("filter")
				vactions = view.get("actions")

				if not vmodule:
					print("Misconfiured view: %s" % view)
					continue

				if vmodule not in conf["modules"]:
					print("Module '%s' is not described." % vmodule)
					continue

				vdescr = conf["modules"][vmodule]

				fs = EditWidgetFieldset(vmodule, vtitle or vdescr.get("name", vmodule))
				fs.addClass("editview", "inactive")

				if vclass:
					fs.addClass(*vclass)

				fieldSets[vmodule] = EditWidgetFieldset(vmodule, vtitle or vdescr.get("name", vmodule))

				if vvariable:
					context = self.context.copy() if self.context else {}

					if "=" in vvariable:
						vkey, vvalue = vvariable.split("=", 1)
						if vvalue[0] == "$":
							vvalue = data["values"].get(vvalue[1:])
					else:
						vkey = vvariable
						vvalue = data["values"].get("key")

					context[vkey] = vvalue

				else:
					context = self.context

				self.views[vmodule] = ListWidget(
					vmodule,
					filter=vfilter or vdescr.get("filter", {}),
					columns=vcolumns or vdescr.get("columns"),
					context=context,
					actions=vactions
				)

				fs._section.appendChild(self.views[vmodule])
				self.form.appendChild(fs)

		self.unserialize(data["values"])

		if self._hashArgs: #Apply the default values (if any)
			self.unserialize(self._hashArgs)
			self._hashArgs = None

		self._lastData = data

		if hasMissing and not self.wasInitialRequest:
			conf["mainWindow"].log("warning",translate("Could not save entry!"))

		DeferredCall(self.performLogics)
예제 #26
0
파일: topbar.py 프로젝트: Xeon2003/vi
 def onCurrentUserAvailable(self, req):
     data = NetworkService.decode(req)
     conf["currentUser"] = data["values"]
     self.update()