Exemple #1
0
    def renderViewKeys(self, name):
        """\
        Render a list of keys for this view.
        """

        exposurefile = self.context.context
        note = zope.component.queryAdapter(exposurefile, name=name)
        if not note:
            # XXX maybe some sort of error instead?
            return
        fields = fieldvalues(note)
        return fields
Exemple #2
0
    def _export(self, cur, prefix=''):

        # we don't have or need leading / to denote root.
        if not prefix:
            objpath = lambda x: '%s' % x
        else:
            objpath = lambda x: '%s/%s' % (prefix, x)

        for obj_id, obj in cur.items():
            p = objpath(obj_id)
            # do stuff depend on type

            if IExposureFile.providedBy(obj):
                d = {}
                for n in IExposureFile.names():
                    d[n] = getattr(obj, n)
                # query each views manually.
                d['views'] = viewinfo(obj)
                d['hidden_views'] = obj.hidden_views
                # retain the subject.
                d['Subject'] = obj.Subject()
                # deprecate the docgen fields off the object
                d['docview_generator'] = None
                d['docview_gensource'] = None
                yield (p, d,)
            elif IExposureFolder.providedBy(obj):
                # we are ignoring other folder types, let an adapter
                # handle it below.
                for i in self._export(obj, p):
                    yield i
            else:
                # we don't know, so we ask an adapter to provide the
                # structure required, and trust they won't provide
                # something they don't own.
                a = zope.component.queryAdapter(obj, IExposurePortDataProvider)
                if a is not None:
                    yield a()

        # folder gets appended last for lazy reason - we assume all
        # paths will be created as files, meaning folders are created 
        # automatically, rather than creating that as file.
        # Then annotations can be assigned to them later, use viewinfo
        # to grab the relevant fields.
        fv = fieldvalues(cur)
        # need the subject of the current folder.
        fv['Subject'] = cur.Subject()
        yield (prefix, fv,)