示例#1
0
    def expand_containers(self, items, containers, _url, chain=(), context=None):
        # seen_context = False
        _url = _url.rstrip("/")
        current = False

        for key, container in self._sort_containers(containers):
            assert IAlchemistContainer.providedBy(container)
            label = container.domain_model.__name__
            descriptor = utils.get_descriptor(container.domain_model)
            if descriptor:
                label = getattr(descriptor, "container_name", None) or getattr(descriptor, "display_name", None)

            if context is not None:
                current = container.__name__ == context.__name__
            selected = not len(chain) and current
            if current:
                # seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            key_url = "%s/%s" % (_url, key)
            items.append(
                {
                    "id": self.get_nav_entry_id(key_url),
                    "label": translate(
                        label, target_language=get_request_language(request=self.request), domain="bungeni"
                    ),
                    "url": key_url,
                    "current": current,
                    "selected": selected,
                    "kind": "container",
                    "nodes": nodes,
                }
            )
示例#2
0
 def translate_objects(self, nodes, lang=None):
     """Translate container items if context domain is translatable
     """
     if not mfaces.ITranslatable.implementedBy(self.domain_model):
         return nodes
     # !+ lang should always be valid here... make not optional, assert?
     if lang is None:
         lang = translation.get_request_language(request=self.request)
     return [ translation.translate_obj(node, lang) for node in nodes ]
示例#3
0
 def translate_objects(self, nodes, lang=None):
     """Translate container items if context domain is translatable
     """
     if not mfaces.ITranslatable.implementedBy(self.domain_model):
         return nodes
     # !+ lang should always be valid here... make not optional, assert?
     if lang is None:
         lang = translation.get_request_language(request=self.request)
     return [translation.translate_obj(node, lang) for node in nodes]
示例#4
0
 def translate_objects(self, nodes, lang=None):
     """ Translate container items if translatable
     """
     if lang is None:
         lang = translation.get_request_language(request=self.request)
     for index, node in enumerate(nodes):
         if ITranslatable.providedBy(node):
             nodes[index] = translation.translate_obj(node, lang)
     return nodes
示例#5
0
    def expand_containers(self,
                          items,
                          containers,
                          _url,
                          chain=(),
                          context=None):
        #seen_context = False
        _url = _url.rstrip("/")
        current = False

        for key, container in containers:
            assert IAlchemistContainer.providedBy(container)
            label = container.domain_model.__name__
            descriptor = utils.get_descriptor(container.domain_model)
            order = 999
            if descriptor:
                order = descriptor.order
                label = getattr(descriptor, "container_name", None) or \
                    getattr(descriptor, "display_name", None)

            if context is not None:
                current = container.__name__ == context.__name__
            selected = not len(chain) and current
            if current:
                #seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            key_url = "%s/%s" % (_url, key)
            items.append({
                "id":
                self.get_nav_entry_id(key_url),
                "order":
                order,
                "label":
                translate(
                    label,
                    target_language=get_request_language(request=self.request),
                    domain="bungeni"),
                "url":
                key_url,
                "current":
                current,
                "selected":
                selected,
                "kind":
                "container",
                "nodes":
                nodes,
            })
        items.sort(key=lambda item: (item['order'], item['label']))
示例#6
0
 def translate_objects(self, nodes, lang=None):
     """ (nodes:[ITranslatable]) -> [nodes]
     """
     if lang is None:
         lang = translation.get_request_language()
     t_nodes = []
     for node in nodes:
         try:
             t_nodes.append(translation.translate_obj(node, lang))
         except (AssertionError,): # node is not ITranslatable
             debug.log_exc_info(sys.exc_info(), log_handler=log.warn)
             t_nodes.append(node)
     return t_nodes
示例#7
0
 def translate(self, context, name):
     lang = get_request_language()
     if not lang:
         return getattr(context, name)
     if interfaces.ITranslatable.providedBy(context):
         if context.language != lang:
             translation = get_translation_for(context, lang)
             translation = filter(lambda tr:tr.field_name==name, 
                 translation
             )
             if translation:
                 return translation[0].field_text
     return getattr(context, name)
示例#8
0
 def translate(self, context, name):
     """Gets translated field values
     """
     lang = get_request_language()
     if not lang:
         return getattr(context, name)
     if interfaces.ITranslatable.providedBy(context):
         if context.language != lang:
             translation = get_translation_for(context, lang)
             translation = filter(lambda tr: tr.field_name == name, translation)
             if translation:
                 return translation[0].field_text
     return getattr(context, name)
示例#9
0
 def translate_objects(self, nodes, lang=None):
     """ (nodes:[ITranslatable]) -> [nodes]
     """
     if lang is None:
         lang = translation.get_request_language()
     t_nodes = []
     for node in nodes:
         try:
             t_nodes.append(translation.translate_obj(node, lang))
         except (AssertionError, ):  # node is not ITranslatable
             debug.log_exc_info(sys.exc_info(), log_handler=log.warn)
             t_nodes.append(node)
     return t_nodes
示例#10
0
 def translate(self, context, name):
     """Gets translated field values
     """
     lang = (get_request_language(default=None)
             or getattr(context, "language", None))
     if not lang:
         return getattr(context, name, "")
     if interfaces.ITranslatable.providedBy(context):
         if context.language != lang:
             translation = get_translation_for(context, lang)
             translation = filter(lambda tr: tr.field_name == name,
                                  translation)
             if translation:
                 if translation[0].field_text:
                     return translation[0].field_text
     return getattr(context, name)
示例#11
0
 def translate_objects(self, nodes, lang=None):
     """ (nodes:[ITranslatable]) -> [nodes]
     """
     if lang is None:
         lang = translation.get_request_language()
     t_nodes = []
     for node in nodes:
         try:
             t_nodes.append(translation.translate_obj(node, lang))
         except (AssertionError,):  # node is not ITranslatable
             debug.log_exc_info(sys.exc_info(), log_handler=log.warn)
             # if a node is not translatable then we assume that NONE of
             # the nodes are translatable, so we simply break out,
             # returning the untranslated nodes as is
             return nodes
     return t_nodes
示例#12
0
 def translate_objects(self, nodes, lang=None):
     """ (nodes:[ITranslatable]) -> [nodes]
     """
     if lang is None:
         lang = translation.get_request_language()
     t_nodes = []
     for node in nodes:
         try:
             t_nodes.append(translation.translate_obj(node, lang))
         except (AssertionError, ):  # node is not ITranslatable
             debug.log_exc_info(sys.exc_info(), log_handler=log.warn)
             # if a node is not translatable then we assume that NONE of
             # the nodes are translatable, so we simply break out,
             # returning the untranslated nodes as is
             return nodes
     return t_nodes
示例#13
0
 def __call__(self):
     # prepare required parameters
     start, limit = self.get_offsets()
     lang = translation.get_request_language(request=self.request)
     context = proxy.removeSecurityProxy(self.context)
     # there may not be a cache defined for this context type
     try:
         cache_key = self.get_cache_key(context, lang, start, limit, 
             self.sort_dir)
         cache = JSLCaches[context.__name__].cache
     except KeyError:
         log.warn(" ********* [%s] No such JSLCache !" % (context.__name__))
         # no cache, proceed...
         return self.json_batch(start, limit, lang)
     # OK, we have a cache and a cache_key
     if not cache.has(cache_key):
         log.debug(" [%s] CACHE SETTING key: %s" % (
             context.__name__, cache_key,))
         cache.set(cache_key, self.json_batch(start, limit, lang))
     return cache.get(cache_key)
示例#14
0
 def __call__(self):
     # prepare required parameters
     start, limit = self.get_offsets()
     lang = translation.get_request_language(request=self.request)
     context = proxy.removeSecurityProxy(self.context)
     # there may not be a cache defined for this context type
     try:
         cache_key = self.get_cache_key(context, lang, start, limit, 
             self.sort_dir)
         cache = JSLCaches[context.__name__].cache
     except KeyError:
         log.warn(" ********* [%s] No such JSLCache !" % (context.__name__))
         # no cache, proceed...
         return self.json_batch(start, limit, lang)
     # OK, we have a cache and a cache_key
     if not cache.has(cache_key):
         log.debug(" [%s] CACHE SETTING key: %s" % (
             context.__name__, cache_key,))
         cache.set(cache_key, self.json_batch(start, limit, lang))
     return cache.get(cache_key)
示例#15
0
 def getLanguage(self):
     return get_request_language()
示例#16
0
 def __call__(self):
     # prepare required parameters
     start, limit = self.get_offsets()  # ? start=0&limit=25
     lang = translation.get_request_language(request=self.request)
     return self.json_batch(start, limit, lang)
示例#17
0
 def getLanguage(self):
     return get_request_language()
示例#18
0
 def publishTraverse(self, request, name):
     self.request_language = get_request_language()
     return getattr(self, RESOURCE_MAPPING.get(name))
示例#19
0
 def getLanguage(self):
     try:
         request = get_request()
         return get_request_language()
     except zope.security.interfaces.NoInteraction:
         return None
示例#20
0
 def __call__(self):
     # prepare required parameters
     start, limit = self.get_offsets()  # ? start=0&limit=25
     lang = translation.get_request_language(request=self.request)
     return self.json_batch(start, limit, lang)
示例#21
0
 def publishTraverse(self, request, name):
     request.response.setHeader("Content-type", 
         RESOURCE_HEADERS.get(name, "text/javascript")
     )
     self.request_language = get_request_language()
     return getattr(self, RESOURCE_MAPPING.get(name))
示例#22
0
 def getLanguage(self):
     try:
         request = get_request()
         return get_request_language()
     except zope.security.interfaces.NoInteraction:
         return None
示例#23
0
 def publishTraverse(self, request, name):
     request.response.setHeader(
         "Content-type", RESOURCE_HEADERS.get(name, "text/javascript"))
     self.request_language = get_request_language()
     return getattr(self, RESOURCE_MAPPING.get(name))
示例#24
0
 def publishTraverse(self, request, name):
     self.request_language = get_request_language()
     return getattr(self, RESOURCE_MAPPING.get(name))