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
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,)