Exemplo n.º 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 def getServicePath(self):
     path = [
         parent.__name__ for parent in getParents(self) if parent.__name__
     ]
     path.reverse()
     path.append(self.__name__)
     return path
Exemplo n.º 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)
Exemplo n.º 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)
    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))
Exemplo n.º 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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
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
Exemplo n.º 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
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
    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
Exemplo n.º 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)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
def UpdateEntryChildrenOnRemoveSubscriber(entry, event):
    for obj in getParents(entry):
        if IEntryCountChildren.providedBy(obj):
            obj.children -= 1 #remove one child-count on all parents
Exemplo n.º 17
0
def UpdateEntryChildrenOnAddSubscriber(entry, event):
    for obj in getParents(entry):
        if IEntryCountChildren.providedBy(obj):
            obj.children += 1 #add one child-count on all parents
Exemplo n.º 18
0
 def _get_values_shortcuts(self, value, includeValue=False, includeShortcuts=True):
     try:
         intid = getUtility(IIntIds)
         parents = set(getParents(value))
     except Exception, e:
         return None
Exemplo n.º 19
0
 def testGetParents(self):
     from zope.traversing.api import getParents
     self.assertEqual(getParents(self.item), [self.folder, self.root])
Exemplo n.º 20
0
 def url(self):
     return '%s/'%absoluteURL(filter(IUserManual.providedBy, getParents(self.context))[0], self.request)
Exemplo n.º 21
0
 def getServicePath(self):
     path = [parent.__name__ for parent in getParents(self)
                    if parent.__name__]
     path.reverse()
     path.append(self.__name__)
     return path
 def testGetParents(self):
     from zope.traversing.api import getParents
     self.assertEqual(
         getParents(self.item),
         [self.folder, self.root]
         )
Exemplo n.º 23
0
 def parents(self):
     parent_list = getParents(self.context)
     parent_list.reverse()
     return parent_list[1:]
Exemplo n.º 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"