コード例 #1
0
    def fullNumber(self, value):
        if IDraftedContent.providedBy(self):
            location = self.__parent__.getLocation()
            parents = filter(IUserManual.providedBy, [location] + getParents(location))
        else:
            parents = filter(IUserManual.providedBy, getParents(self))
        manual = parents[-1]
        numbers = map(int, value.split('.'))
        ct = getUtility(IContentType, name='content.usermanualpage')
        del self.__parent__[self.__name__]
        for number in numbers[0:-1]:
            try:
                manual = IOrder(manual).getByPosition(number)
            except KeyError:
                m = ct.create(_(u'Autocreated page'), _(u'Autocreated page description'))
                m.number = number
                ct.__bind__(manual).add(m)
                manual = m
        self.number = numbers[-1]
        manual[INameChooser(manual).chooseName(self.__name__, self)] = self
        IOrder(self.__parent__).rebuild()

        if IUserManualPage.providedBy(self.__parent__):
            return '%s.%s'%(self.__parent__.fullNumber, self.number)
        return str(self.number)
コード例 #2
0
ファイル: search.py プロジェクト: Zojax/zojax.ui.searching
 def getItemParentThreads(item):
     res = []
     parents = []
     for parent in [item]+getParents(item):
         for shortcut in IShortcuts(parent, {}).items():
             res.append(parents + [shortcut]+ getParents(shortcut))
         parents.append(parent)
     res.append(parents)
     def getUrl(items):
         items = filter(lambda y: not ISite.providedBy(y), items)
         items.reverse()
         return "%s/%s"%(absoluteURL(items[0], request), "/".join(map(lambda x: x.__name__, items[1:])))
     return map(lambda x: getUrl(x), res)
コード例 #3
0
ファイル: service.py プロジェクト: skaeser/z3c.taskqueue
 def getServicePath(self):
     path = [
         parent.__name__ for parent in getParents(self) if parent.__name__
     ]
     path.reverse()
     path.append(self.__name__)
     return path
コード例 #4
0
def evolve(context):
    root = getRootFolder(context)
    old_site = getSite()
    for site in findObjectsMatching(root, ISite.providedBy):
        setSite(site)
        try:
            for shortcut in list(findObjectsMatching(site, IShortcut.providedBy)):
                print 'updating shortcut', shortcut
                try:
                    getParents(shortcut.raw_target)
                except TypeError:
                    try:
                        objectRemoved(shortcut.raw_target, None)
                    except ComponentLookupError:
                        pass
        finally:
            setSite(old_site)
コード例 #5
0
 def getId(self):
     context = self.context
     if not context.__name__:
         # always try to be unique
         return str(id(context))
     parents = [context.__name__]
     parents += [parent.__name__ for parent in getParents(context)
                 if parent.__name__]
     return '\\'.join(parents)
コード例 #6
0
    def getTitle(self, content):
        def itemtitle(i):
            item = IItem(i, None)
            if item is None:
                return i.__name__
            else:
                return u"%s (%s)" % (item.title, i.__name__)

        items = filter(lambda x: x.__name__ is not None, reversed([content] + getParents(content)))
        return "/".join(map(itemtitle, items))
コード例 #7
0
    def __init__(self, context, request, view, manager=None):
        context = removeSecurityProxy(context)
        objects = []
        vhr = request.getVirtualHostRoot()
        try:
            parents = [context] + list(getParents(context))
        except:
            site = getSite()
            parents = [site] + list(getParents(site))

        for obj in parents:
            objects.append(obj)
            if sameProxiedObjects(obj, vhr) or isinstance(obj, Exception):
                break

        objects.reverse()
        self.objects = objects

        super(BreadcrumbsViewlet, self).__init__(
            context, request, view, manager)
コード例 #8
0
ファイル: cache.py プロジェクト: Zojax/zojax.portlet
    def update(self, instance):
        global tagging

        name = u'portlet:%s'%instance.__name__
        value = self.genValue()

        # update self
        tagging.update(name, value, instance.context)

        # update in parents
        for context in getParents(instance.context):
            tagging.update(name, value, context)
コード例 #9
0
ファイル: bootstrap.py プロジェクト: Zojax/zojax.catalog
    def findObjectsProviding(root):
        if ISite.providedBy(root):
            yield root
        
        try:
            if len(getParents(root)) > 3:
                raise StopIteration()
        except TypeError:
            raise StopIteration()

        values = getattr(root, 'values', None)
        if callable(values):
            for subobj in values():
                for match in findObjectsProviding(subobj):
                    yield match
コード例 #10
0
    def findObjectsProviding(root):
        if ISite.providedBy(root):
            yield root

        try:
            if len(getParents(root)) > 3:
                raise StopIteration()
        except TypeError:
            raise StopIteration()

        values = getattr(root, 'values', None)
        if callable(values):
            for subobj in values():
                for match in findObjectsProviding(subobj):
                    yield match
コード例 #11
0
ファイル: index.py プロジェクト: Zojax/zojax.pathindex
    def _get_values(self, value, includeValue=False):
        try:
            intid = getUtility(IIntIds)
            parents = getParents(value)
        except:
            return None

        if includeValue:
            parents.append(value)

        ids = []
        for ob in parents:
            id = intid.queryId(removeAllProxies(ob))
            if id is not None:
                ids.append(id)

        if ids:
            return ids
        else:
            return None
コード例 #12
0
ファイル: __init__.py プロジェクト: return1/masterthesis
    def __call__(self):
        root = IPhysicallyLocatable(self.context).getNearestSite()
        parents = getParents(self.context)

        # remove all parents below the first found site
        while parents[-1] != root:
            parents.pop()

        parents.pop() #remove Site from parents
        parents.reverse()

        parentSiblings = [ sorted( [
            {'name':IEntryNav(sibling).getEntryMenuName(),
             'order':IEntryNav(sibling).getEntryMenuOrder(),
             'url':absoluteURL(sibling, self.request),
             'active':((sibling in parents) and 'parent') or False}
            for sibling in IEntryNav(item).getSiblings() ] ,
                                key=itemgetter('order')) for item in parents ]

        mySiblings = sorted( [
            {'name':IEntryNav(sibling).getEntryMenuName(),
             'order':IEntryNav(sibling).getEntryMenuOrder(),
             'url':absoluteURL(sibling, self.request),
             'active':((sibling == self.context) and 'self') or False} \
            for sibling in IEntryNav(self.context).getSiblings() ] ,
                             key=itemgetter('order')) 

        
        children = sorted( [
            {'name':IEntryNav(child).getEntryMenuName(),
             'order':IEntryNav(child).getEntryMenuOrder(),
             'url':absoluteURL(child, self.request) }
            for child in IEntryNav(self.context).getChildren() ],
                           key=itemgetter('order'))
        
        parentSiblings.append(mySiblings)
        
        if len(children):
            parentSiblings.append(children)

        return parentSiblings
コード例 #13
0
    def __call__(self, context):
        terms = []
        ids = getUtility(IIntIds)
        site = getSite()
        try:
            for i in [site] + getParents(site):
                if not ISite.providedBy(i):
                    continue
                setSite(i)
                fields = getUtility(IProfileFields)
                for name, field in fields.items():
                    id  = ids.getId(field)
                    path = getPath(i)[1:]
                    if path:
                        path += '/'
                    terms.append((path+IItem(field).title, id))

            terms.sort()
            return Vocabulary(
                [SimpleTerm(name, name, title) for title, name in terms])
        finally:
            setSite(site)
コード例 #14
0
ファイル: search.py プロジェクト: Zojax/zojax.ui.searching
 def getURL(self, item):
     request = self.request
     try:
         parents = getParents(item)
     except TypeError:
         return '#'
     def getItemParentThreads(item):
         res = []
         parents = []
         for parent in [item]+getParents(item):
             for shortcut in IShortcuts(parent, {}).items():
                 res.append(parents + [shortcut]+ getParents(shortcut))
             parents.append(parent)
         res.append(parents)
         def getUrl(items):
             items = filter(lambda y: not ISite.providedBy(y), items)
             items.reverse()
             return "%s/%s"%(absoluteURL(items[0], request), "/".join(map(lambda x: x.__name__, items[1:])))
         return map(lambda x: getUrl(x), res)
     contextURL = absoluteURL(self.context, self.request)
     try:
         return filter(lambda x: contextURL in x, getItemParentThreads(item))[0]
     except IndexError:
         return absoluteURL(item, request)
コード例 #15
0
ファイル: xmlobject.py プロジェクト: grodniewicz/oship
    def singleBranchTree(self, root=''):
        """Return an XML document with the siblings and parents of an object.

        There is only one branch expanded, in other words, the tree is
        filled with the object, its siblings and its parents with
        their respective siblings.

        """
        result = 'selected'
        oldItem = self.context

        vh = self.request.getVirtualHostRoot()
        if vh:
            vhrootView = getMultiAdapter(
                    (vh, self.request), name='absolute_url')
            baseURL = vhrootView() + '/'
            try:
                rootName = '[' + vh.__name__ + ']'
            except:
                # we got the containment root itself as the virtual host
                # and there is no name.
                rootName = _('[top]')
            parents = getParentsFromContextToObject(self.context, vh)
        else:
            rootName = _('[top]')
            baseURL = self.request.getApplicationURL() + '/'
            parents = getParents(self.context)

        rootName = translate(rootName, context=self.request, default=rootName)

        for item in parents:
            # skip skin if present
            #if item == oldItem:
            #        continue
            subItems = []
            if IReadContainer.providedBy(item):
                keys = list(item.keys())
                if len(keys) >= 1000:
                    keys = []
            else:
                keys = []

            # include the site manager
            keys.append(u'++etc++site')

            for name in keys:
                # Only include items we can traverse to
                subItem = traverse(item, name, None)
                iconUrl = self.getIconUrl(subItem)
                subitem_len = self.getLengthOf(subItem)
                if subitem_len >= 0:
                    # the test below seems to be broken
                    # with the ++etc++site case
                    if subItem == oldItem:
                        subItems.append(xmlEscapeWithCData(
                            u'<collection name=%s length=%s '
                            u'icon_url=%s>%s</collection>', 
                            name, subitem_len, iconUrl, result))
                    else:
                        subItems.append(xmlEscape(
                            u'<collection name=%s length=%s '
                            u'icon_url=%s/>',
                            name, subitem_len, iconUrl))
                else:
                    subItems.append(xmlEscape(
                        u'<item name=%s icon_url=%s />', name, iconUrl))

            result = u' '.join(subItems)
            oldItem = item

        # do not forget root folder
        iconUrl = self.getIconUrl(oldItem)
        result = xmlEscapeWithCData(
                  u'<collection name=%s baseURL=%s length=%s '
                  u'icon_url=%s isroot="">%s</collection>',
                  rootName, baseURL, len(oldItem), iconUrl, result)

        self.request.response.setHeader('Content-Type', 'text/xml')
        setNoCacheHeaders(self.request.response)
        title = translate(titleTemplate,
                          context=self.request, default=titleTemplate)
        loading = translate(loadingMsg,
                          context=self.request, default=loadingMsg)
        return xmlEscapeWithCData(
                u'<?xml version="1.0" ?>'
                u'<children title_tpl=%s loading_msg=%s>%s</children>',
                title, loading, result)
コード例 #16
0
ファイル: entry.py プロジェクト: return1/stadtgespraeche
def UpdateEntryChildrenOnRemoveSubscriber(entry, event):
    for obj in getParents(entry):
        if IEntryCountChildren.providedBy(obj):
            obj.children -= 1 #remove one child-count on all parents
コード例 #17
0
ファイル: entry.py プロジェクト: return1/stadtgespraeche
def UpdateEntryChildrenOnAddSubscriber(entry, event):
    for obj in getParents(entry):
        if IEntryCountChildren.providedBy(obj):
            obj.children += 1 #add one child-count on all parents
コード例 #18
0
ファイル: index.py プロジェクト: Zojax/zojax.catalog
 def _get_values_shortcuts(self, value, includeValue=False, includeShortcuts=True):
     try:
         intid = getUtility(IIntIds)
         parents = set(getParents(value))
     except Exception, e:
         return None
コード例 #19
0
 def testGetParents(self):
     from zope.traversing.api import getParents
     self.assertEqual(getParents(self.item), [self.folder, self.root])
コード例 #20
0
ファイル: actions.py プロジェクト: Zojax/zojax.usermanual
 def url(self):
     return '%s/'%absoluteURL(filter(IUserManual.providedBy, getParents(self.context))[0], self.request)
コード例 #21
0
ファイル: service.py プロジェクト: jakke/z3c.taskqueue
 def getServicePath(self):
     path = [parent.__name__ for parent in getParents(self)
                    if parent.__name__]
     path.reverse()
     path.append(self.__name__)
     return path
コード例 #22
0
 def testGetParents(self):
     from zope.traversing.api import getParents
     self.assertEqual(
         getParents(self.item),
         [self.folder, self.root]
         )
コード例 #23
0
ファイル: blog.py プロジェクト: bendavis78/zope
 def parents(self):
     parent_list = getParents(self.context)
     parent_list.reverse()
     return parent_list[1:]
コード例 #24
0
 def resultURL(self, context, request):
     site = None
     for path_element in [context] + getParents(context):
         if IQuotationtoolSite.providedBy(path_element):
             site = path_element
             return absoluteURL(site, request) + u"/@@searchResult.html"