コード例 #1
0
ファイル: node.py プロジェクト: vishalbelsare/synapse
    async def setTagProp(self, tag, name, valu):
        '''
        Set the value of the given tag property.
        '''
        if not self.hasTag(tag):
            await self.addTag(tag)

        prop = self.snap.core.model.getTagProp(name)
        if prop is None:
            raise s_exc.NoSuchTagProp(
                mesg='Tag prop does not exist in this Cortex.', name=name)

        try:
            norm, info = prop.type.norm(valu)
        except Exception as e:
            mesg = f'Bad property value: #{tag}:{prop.name}={valu!r}'
            return await self.snap._raiseOnStrict(s_exc.BadTypeValu,
                                                  mesg,
                                                  name=prop.name,
                                                  valu=valu,
                                                  emesg=str(e))

        edits = ((s_layer.EDIT_TAGPROP_SET, (tag, name, norm, None,
                                             prop.type.stortype), ()), )

        await self.snap.applyNodeEdit((self.buid, self.form.name, edits))

        props = self.tagprops.get(tag)
        if props is None:
            props = self.tagprops[tag] = {}

        props[name] = norm
コード例 #2
0
ファイル: snap.py プロジェクト: freecamel/synapse
    async def nodesByTagProp(self, form, tag, name):
        prop = self.core.model.getTagProp(name)
        if prop is None:
            mesg = f'No tag property named {name}'
            raise s_exc.NoSuchTagProp(name=name, mesg=mesg)

        for layr in self.layers:
            genr = layr.liftByTagProp(form, tag, name)
            async for node in self._joinStorGenr(layr, genr):
                yield node
コード例 #3
0
    async def nodesByTagProp(self, form, tag, name):
        prop = self.core.model.getTagProp(name)
        if prop is None:
            mesg = f'No tag property named {name}'
            raise s_exc.NoSuchTagProp(name=name, mesg=mesg)

        async for (buid,
                   sodes) in self.core._liftByTagProp(form, tag, name,
                                                      self.layers):
            node = await self._joinSodes(buid, sodes)
            if node is not None:
                yield node
コード例 #4
0
ファイル: node.py プロジェクト: wesinator/synapse
    async def delTagProp(self, tag, name):

        prop = self.snap.core.model.getTagProp(name)
        if prop is None:
            raise s_exc.NoSuchTagProp(name=name)

        curv = self.tagprops.get((tag, name), s_common.novalu)
        if curv is s_common.novalu:
            return False

        edits = ((s_layer.EDIT_TAGPROP_DEL, (tag, name, None,
                                             prop.type.stortype), ()), )

        await self.snap.applyNodeEdit((self.buid, self.form.name, edits))
コード例 #5
0
    async def nodesByTagPropValu(self, form, tag, name, cmpr, valu):
        prop = self.core.model.getTagProp(name)
        if prop is None:
            mesg = f'No tag property named {name}'
            raise s_exc.NoSuchTagProp(name=name, mesg=mesg)

        cmprvals = prop.type.getStorCmprs(cmpr, valu)
        # an empty return probably means ?= with invalid value
        if not cmprvals:
            return

        async for (buid, sodes) in self.core._liftByTagPropValu(
                form, tag, name, cmprvals, self.layers):
            node = await self._joinSodes(buid, sodes)
            if node is not None:
                yield node
コード例 #6
0
ファイル: snap.py プロジェクト: freecamel/synapse
    async def nodesByTagPropValu(self, form, tag, name, cmpr, valu):

        prop = self.core.model.getTagProp(name)
        if prop is None:
            mesg = f'No tag property named {name}'
            raise s_exc.NoSuchTagProp(name=name, mesg=mesg)

        cmprvals = prop.type.getStorCmprs(cmpr, valu)
        # an empty return probably means ?= with invalid value
        if not cmprvals:
            return

        for layr in self.layers:
            genr = layr.liftByTagPropValu(form, tag, name, cmprvals)
            async for node in self._joinStorGenr(layr, genr):
                if node.bylayer['tagprops'].get((tag, prop.name)) != layr:
                    continue
                yield node
コード例 #7
0
ファイル: snap.py プロジェクト: marcomafcorp/synapse
    async def _getNodesByTagProp(self,
                                 name,
                                 tag=None,
                                 form=None,
                                 valu=None,
                                 cmpr='='):

        prop = self.model.getTagProp(name)
        if prop is None:
            mesg = f'No tag property named {name}'
            raise s_exc.NoSuchTagProp(name=name, mesg=mesg)

        cmpf = prop.type.getLiftHintCmpr(valu, cmpr=cmpr)

        full = f'#{tag}:{name}'

        lops = (('tag:prop', {'form': form, 'tag': tag, 'prop': name}), )
        if valu is not None:
            lops[0][1]['iops'] = prop.type.getIndxOps(valu, cmpr)

        async for row, node in self.getLiftNodes(lops, full, cmpf=cmpf):
            yield node
コード例 #8
0
ファイル: node.py プロジェクト: marcomafcorp/synapse
    async def setTagProp(self, tag, name, valu):
        '''
        Set the value of the given tag property.
        '''
        if not self.hasTag(tag):
            await self.addTag(tag)

        prop = self.snap.model.getTagProp(name)
        if prop is None:
            raise s_exc.NoSuchTagProp(name=name)

        try:
            norm, info = prop.type.norm(valu)
        except Exception as e:
            mesg = f'Bad property value: #{tag}:{prop.name}={valu!r}'
            return await self.snap._raiseOnStrict(s_exc.BadPropValu,
                                                  mesg,
                                                  name=prop.name,
                                                  valu=valu,
                                                  emesg=str(e))

        indx = prop.type.indx(norm)

        tagkey = (tag, name)
        curv = self.tagprops.get(tagkey)

        sops = (('tag:prop:set', (self.buid, self.form.name, tag, prop.name,
                                  norm, indx, {})), )

        splices = (self.snap.splice('tag:prop:set',
                                    ndef=self.ndef,
                                    tag=tag,
                                    prop=prop.name,
                                    valu=norm,
                                    curv=curv), )

        await self.snap.stor(sops, splices)

        self.tagprops[tagkey] = norm