示例#1
0
    def form_name(self):
        parent = self.context.__parent__
        if IAlchemistContainer.providedBy(parent):
            descriptor = queryModelDescriptor(parent.domain_model)
        elif IAlchemistContent.providedBy(self.context):
            descriptor = queryModelDescriptor(self.context.__class__)
        else:
            raise RuntimeError("Unsupported object: %s." % repr(self.context))

        if descriptor:
            name = getattr(descriptor, "display_name", None)

        if name is None:
            name = self.context.__class__.__name__

        return name
示例#2
0
 def __init__(self, context, request):
     super(ContainerJSONBrowserView, self).__init__(context, request)
     self.domain_model = proxy.removeSecurityProxy(
         self.context).domain_model
     self.domain_interface = model.queryModelInterface(self.domain_model)
     self.domain_annotation = model.queryModelDescriptor(
         self.domain_interface)
     self.fields = tuple(container.getFields(
         self.context, self.domain_interface, self.domain_annotation))
     # table keys
     self.table = orm.class_mapper(self.domain_model).mapped_table
     self.utk = dict(
         [ (column.key, column) for column in self.table.columns ])
     
     # sort_on defaults: [str]
     self.defaults_sort_on = getattr(self.domain_model, "sort_on", None)
     # sort_on parameter name: str
     # pick off request, if necessary setting it from the first name
     # defined in defaults_sort_on
     if not self.request.get("sort") and self.defaults_sort_on:
         self.request.form["sort"] = u"sort_%s" % (self.defaults_sort_on[0])
     self.sort_on = request.get("sort")
     # sort_dir: "desc" | "asc"
     # pick off request, if necessary setting it from default in
     # domain model, else "desc"
     if not self.request.get("dir"):
         self.request.form["dir"] = unicode(
             getattr(self.domain_model, "sort_dir", "desc"))
     self.sort_dir = self.request.get("dir")
示例#3
0
 def validate(self, action, data):
     errors = super(AddForm, self).validate(action, data)
     errors += self.validateUnique(action, data)
     descriptor = queryModelDescriptor(self.domain_model)
     for validator in getattr(descriptor, "custom_validators", ()):
         errors += validator(action, data, None, self.context)
     return errors
示例#4
0
def _get_title_from_context(context):
    title = None
    if IAlchemistContent.providedBy(context):
        if IDCDescriptiveProperties.providedBy(context):
            title = context.title
        else:
            props = IDCDescriptiveProperties(context, None)
            if props is not None:
                title = props.title
            else:
                ''' !+
AttributeError: 'GroupAddress' object has no attribute 'short_name':   File "/home/undesa/bungeni/cap_installs/bungeni_install/bungeni/releases/20100305100101/src/bungeni.main/bungeni/ui/viewlets/navigation.py", line 59, in _get_title_from_context
                #title = context.short_name 
So, we temporarily default the above to the context.__class__.__name__:
                '''
                title = getattr(context, "short_name", 
                    context.__class__.__name__)
    elif IAlchemistContainer.providedBy(context):
        domain_model = context._class 
        try:
            descriptor = queryModelDescriptor(domain_model)
        except:
            descriptor = None
            name = ""
        if descriptor:
            name = getattr(descriptor, 'container_name', None)
            if name is None:
                name = getattr(descriptor, 'display_name', None)
        if not name:
            name = getattr(context, '__name__', None)
        title = name
    elif ILocation.providedBy(context) and \
         IDCDescriptiveProperties.providedBy(context):
        title = context.title
    return title
示例#5
0
 def type_name(self):
     descriptor = queryModelDescriptor(self.domain_model)
     if descriptor:
         name = getattr(descriptor, "display_name", None)
     if not name:
         name = getattr(self.domain_model, "__name__", None)
     return name
示例#6
0
 def __init__(self, context, request, view, manager):
     self.context = context
     self.request = request
     self.__parent__ = context.__parent__
     self.manager = manager
     self.query = None
     md = queryModelDescriptor(domain.User)
     self.form_fields = md.fields #.select("user_id", "start_date", "end_date")
示例#7
0
    def validate(self, action, data):
        errors = super(EditForm, self).validate(action, data)

        descriptor = queryModelDescriptor(self.context.__class__)
        for validator in getattr(descriptor, "custom_validators", ()):
            errors += validator(action, data, self.context, self.context.__parent__)

        return errors
示例#8
0
    def form_name(self):
        parent = self.context.__parent__
        #DESCRIPTOR(miano, June 2011) This originally first checked the parent's 
        #descriptor then the item's descriptor. Why???
        #This was causing an error in the display pages of items in the 
        #workspace since the workspace containers have no descriptor
        #defined for them.
        if IAlchemistContent.providedBy(self.context):
            descriptor = queryModelDescriptor(self.context.__class__)
        elif IAlchemistContainer.providedBy(parent):
            descriptor = queryModelDescriptor(parent.domain_model)
        else:
            raise RuntimeError("Unsupported object: %s." % repr(self.context))

        if descriptor:
            name = getattr(descriptor, "display_name", None)

        if name is None:
            name = self.context.__class__.__name__

        return name
示例#9
0
def getFields(context, interface=None, annotation=None):
    """Generator of all fields that will be displayed in a containerlisting .
    
    Redefines alchemist.ui.container.getFields, making use of the 
    listing_columns declaration of the field's descriptor.
    """
    if interface is None: 
        domain_model = proxy.removeSecurityProxy(context.domain_model)
        interface = model.queryModelInterface(domain_model)
    if annotation is None:
        annotation = model.queryModelDescriptor(interface)
    for column in annotation.listing_columns:
        yield interface[column]
示例#10
0
def getFields(context, interface=None, annotation=None):
    """Generator of all [zope.schema] fields that will be displayed in a 
    container listing.
    
    Redefines alchemist.ui.container.getFields, making use of the 
    @listing_columns property of the ModelDescriptor class.
    """
    if interface is None:
        domain_model = proxy.removeSecurityProxy(context.domain_model)
        interface = model.queryModelInterface(domain_model)
    if annotation is None:
        annotation = model.queryModelDescriptor(interface)
    for field_name in annotation.listing_columns:
        yield interface[field_name]
示例#11
0
def getFields(context, interface=None, annotation=None):
    """Generator of all [zope.schema] fields that will be displayed in a 
    container listing.
    
    Redefines alchemist.ui.container.getFields, making use of the 
    @listing_columns property of the ModelDescriptor class.
    """
    if interface is None:
        domain_model = proxy.removeSecurityProxy(context.domain_model)
        interface = model.queryModelInterface(domain_model)
    if annotation is None:
        annotation = model.queryModelDescriptor(interface)
    for field_name in annotation.listing_columns:
        yield interface[field_name]
示例#12
0
    def __init__(self, context, request, view, manager):
        super(DisplayViewlet, self).__init__(context, request, view, manager)
        # set add url before we change context
        self.add_url = self.get_add_url()

        target = self.get_target()
        if target is None:
            self.status = _(u"No item has been set")
        else:
            self.context = target
            self.has_data = True
            assert self.factory is not None
            descriptor = queryModelDescriptor(self.factory)
            self.form_fields = descriptor.fields
示例#13
0
    def __init__(self, context, request, view, manager):
        super(DisplayViewlet, self).__init__(
            context, request, view, manager)
        # set add url before we change context
        self.add_url = self.get_add_url()

        target = self.get_target()
        if target is None:
            self.status = _(u"No item has been set")
        else:
            self.context = target
            self.has_data = True
            assert self.factory is not None
            descriptor = queryModelDescriptor(self.factory)
            self.form_fields = descriptor.fields
示例#14
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in self._agenda_private_state_ids:
         return s_list
     else:
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 "name": IDCDescriptiveProperties(schedule.item).title,
                 "status": str(misc.get_wf_state(schedule.item)),
                 "url": IDCDescriptiveProperties(schedule.item).uri,
                 "item_type": schedule.item.type,
                 "heading": True if schedule.item.type == "heading" else False,
                 "item_type_title": (descriptor.display_name 
                     if descriptor else schedule.item.type),
             })
         return s_list
示例#15
0
    def expand_containers(self,
                          items,
                          containers,
                          _url,
                          chain=(),
                          context=None):
        #seen_context = False
        current = False

        for key, container in containers:
            if IAlchemistContainer.providedBy(container):
                descriptor = queryModelDescriptor(
                    proxy.removeSecurityProxy(container).domain_model)
                if descriptor:
                    name = getattr(descriptor, "container_name", None)
                    if name is None:
                        name = getattr(descriptor, "display_name", None)

                if not name:
                    name = container.domain_model.__name__
            else:
                assert IDCDescriptiveProperties.providedBy(container)
                container = proxy.removeSecurityProxy(container)
                name = container.title

            if context is not None:
                current = container.__name__ == context.__name__

            selected = len(chain) == 0 and current

            if current:
                #seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            items.append({
                "title": name,
                "url": "%s/%s" % (_url.rstrip("/"), key),
                "current": current,
                "selected": selected,
                "kind": "container",
                "nodes": nodes,
            })
示例#16
0
    def expand_containers(self,
                          items,
                          containers,
                          _url,
                          chain=(),
                          context=None):
        #seen_context = False
        current = False

        for key, container in containers:
            if IAlchemistContainer.providedBy(container):
                descriptor = queryModelDescriptor(
                    proxy.removeSecurityProxy(container).domain_model)
                if descriptor:
                    name = getattr(descriptor, 'container_name', None)
                    if name is None:
                        name = getattr(descriptor, 'display_name', None)

                if not name:
                    name = container.domain_model.__name__
            else:
                assert IDCDescriptiveProperties.providedBy(container)
                container = proxy.removeSecurityProxy(container)
                name = container.title

            if context is not None:
                current = container.__name__ == context.__name__

            selected = len(chain) == 0 and current

            if current:
                #seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            items.append({
                'title': name,
                'url': "%s/%s" % (_url.rstrip('/'), key),
                'current': current,
                'selected': selected,
                'kind': 'container',
                'nodes': nodes,
            })
示例#17
0
 def get_item_types(self):
     workspace_config = component.getUtility(IWorkspaceTabsUtility)
     roles = get_workspace_roles() + OBJECT_ROLES
     domains = []
     for role in roles:
         dom = workspace_config.get_role_domains(role,
                                                 self.context.__name__)
         if dom:
             for key in dom:
                 if key not in domains:
                     domains.append(key)
     result = dict([("", "-")])
     for domain in domains:
         value = workspace_config.get_type(domain)
         if value:
             descriptor = queryModelDescriptor(domain)
             name = descriptor.display_name if descriptor else value
             result[value] = translate(name, context=self.request)
     return result
示例#18
0
 def __init__(self, max_size, model_interface, invalidating_class_names):
     """ max_size:int - max number of items to cache, 0 implies unlimited,
             oldest in excess of max are discarded
         model_interface: interface domain model for this listing
         invalidating_class_names:[str] - names of domain classes that 
             when modified will invalidate this cache
         
         descriptor: descriptor instance for domain model for this listing
         filter_params: [name:str] - query string filter parameter names
     """
     self.cache = evoque.collection.Cache(max_size)
     self.descriptor = model.queryModelDescriptor(model_interface)
     # !+CACHE_INVALIDATION(mr, sep-2010) this should be left open-ended?
     # sanity check -- ensure every specified (domain) class_name exists
     for icn in invalidating_class_names:
         assert getattr(domain, icn), "No such domain class: %s" % (icn)
     self.invalidating_class_names = invalidating_class_names
     # dynamically build the incoming (request querystring) filter
     # parameter names lists from the domain class descriptor
     self.filter_params = ["filter_%s" % (field_name) for field_name in self.descriptor.listing_columns]
示例#19
0
 def get_item_types(self):
     workspace_config = component.getUtility(IWorkspaceTabsUtility)
     roles = get_workspace_roles() + OBJECT_ROLES
     domains = []
     for role in roles:
         dom = workspace_config.get_role_domains(
             role, self.context.__name__
             )
         if dom:
             for key in dom:
                 if key not in domains:
                     domains.append(key)
     result = dict([("", "-")])
     for domain in domains:
         value = workspace_config.get_type(domain)
         if value:
             descriptor = queryModelDescriptor(domain)
             name = descriptor.display_name if descriptor else value
             result[value] = translate(name, context=self.request)
     return result
示例#20
0
    def expand_containers(self, items, containers, _url, chain=(), context=None):
        # seen_context = False
        current = False

        for key, container in containers:
            if IAlchemistContainer.providedBy(container):
                descriptor = queryModelDescriptor(proxy.removeSecurityProxy(container).domain_model)
                if descriptor:
                    name = getattr(descriptor, "container_name", None)
                    if name is None:
                        name = getattr(descriptor, "display_name", None)

                if not name:
                    name = container.domain_model.__name__
            else:
                assert IDCDescriptiveProperties.providedBy(container)
                container = proxy.removeSecurityProxy(container)
                name = container.title

            if context is not None:
                current = container.__name__ == context.__name__

            selected = len(chain) == 0 and current

            if current:
                # seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            items.append(
                {
                    "title": name,
                    "url": "%s/%s" % (_url.rstrip("/"), key),
                    "current": current,
                    "selected": selected,
                    "kind": "container",
                    "nodes": nodes,
                }
            )
示例#21
0
    def expand_containers(self, items, containers, _url, chain=(), context=None):
        #seen_context = False
        current = False
        
        for key, container in containers:
            if IAlchemistContainer.providedBy(container):
                descriptor = queryModelDescriptor(
                    proxy.removeSecurityProxy(container).domain_model)
                if descriptor:
                    name = getattr(descriptor, 'container_name', None)
                    if name is None:
                        name = getattr(descriptor, 'display_name', None)
                        
                if not name:
                    name = container.domain_model.__name__
            else:
                assert IDCDescriptiveProperties.providedBy(container)
                container = proxy.removeSecurityProxy(container)
                name = container.title

            if context is not None:
                current = container.__name__ == context.__name__

            selected = len(chain) == 0 and current

            if current:
                #seen_context = True
                nodes = self.expand(chain)
            else:
                nodes = ()

            items.append(
                {'title': name,
                 'url': "%s/%s" % (_url.rstrip('/'), key),
                 'current': current,
                 'selected': selected,
                 'kind': 'container',
                 'nodes': nodes,
                 })
示例#22
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',tagged=['agendaprivate']):
         return s_list
     else:
     # !+DCPROPERTIES(murithi, april-2011) Factor out properties+i18n to DC
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 'name': IDCDescriptiveProperties(schedule.item).title,
                 'status' : str(misc.get_wf_state(schedule.item))
                 ,
                 'url' : url.set_url_context(('/business/' +
                         schedule.item.type + 's/obj-' + 
                     str(schedule.item.parliamentary_item_id))),
                 'item_type': schedule.item.type,
                 'item_type_title' : (
                     descriptor.display_name if descriptor else
                         schedule.item.type
                 ),
             })
         return s_list
示例#23
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in self._agenda_private_state_ids:
         return s_list
     else:
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 "name":
                 IDCDescriptiveProperties(schedule.item).title,
                 "status":
                 str(misc.get_wf_state(schedule.item)),
                 "url":
                 IDCDescriptiveProperties(schedule.item).uri,
                 "item_type":
                 schedule.item.type,
                 "heading":
                 True if schedule.item.type == "heading" else False,
                 "item_type_title": (descriptor.display_name
                                     if descriptor else schedule.item.type),
             })
         return s_list
示例#24
0
 def __init__(self, max_size, model_interface, invalidating_class_names):
     """ max_size:int - max number of items to cache, 0 implies unlimited,
             oldest in excess of max are discarded
         model_interface: interface domain model for this listing
         invalidating_class_names:[str] - names of domain classes that 
             when modified will invalidate this cache
         
         descriptor: descriptor instance for domain model for this listing
         filter_params: [name:str] - query string filter parameter names
     """
     self.cache = evoque.collection.Cache(max_size)
     self.descriptor = model.queryModelDescriptor(model_interface)
     # !+CACHE_INVALIDATION(mr, sep-2010) this should be left open-ended?
     # sanity check -- ensure every specified (domain) class_name exists
     for icn in invalidating_class_names:
         assert getattr(domain, icn), "No such domain class: %s" % (icn)
     self.invalidating_class_names = invalidating_class_names
     # dynamically build the incoming (request querystring) filter
     # parameter names lists from the domain class descriptor
     self.filter_params = [
         "filter_%s" % (field_name)
         for field_name in self.descriptor.listing_columns
     ]
示例#25
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',
                                     tagged=['agendaprivate']):
         return s_list
     else:
         # !+DCPROPERTIES(murithi, april-2011) Factor out properties+i18n to DC
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 'name':
                 IDCDescriptiveProperties(schedule.item).title,
                 'status':
                 str(misc.get_wf_state(schedule.item)),
                 'url':
                 url.set_url_context(
                     ('/business/' + schedule.item.type + 's/obj-' +
                      str(schedule.item.parliamentary_item_id))),
                 'item_type':
                 schedule.item.type,
                 'item_type_title': (descriptor.display_name
                                     if descriptor else schedule.item.type),
             })
         return s_list
示例#26
0
def filterFields(context, form_fields):
    omit_names = []
    if IAlchemistContent.providedBy(context):
        md = queryModelDescriptor(context.__class__)
        for field in form_fields:
            try:
                can_write = security.canWrite(context, field.__name__)
                can_read = security.canAccess(context, field.__name__)
            except AttributeError:
                can_write = can_read = False
            if can_write:
                continue
            if can_read:
                field.for_display = True
                field.custom_widget = md.get(field.__name__).view_widget
            else:
                omit_names.append(field.__name__)
    elif not IAlchemistContainer.providedBy(context):
        ctx = getattr(context, "context", None)
        if ctx:
            filterFields(ctx, form_fields)
        else:
            raise NotImplementedError
    return form_fields.omit(*omit_names)
示例#27
0
 def __init__(self, max_size, model_interface, invalidating_class_names):
     """ max_size:int - max number of items to cache, 0 implies unlimited,
             oldest in excess of max are discarded
         model_interface: interface domain model for this listing
         invalidating_class_names:[str] - names of domain classes that 
             when modified will invalidate this cache
         
         @descriptor: descriptor instance for domain model for this listing
         @filter_params: [name:str] - query string filter parameter names
     """
     self.cache = evoque.collection.Cache(max_size)
     log.debug("JSLCache queryModelDescriptor(%s) -> %s" % (
         model_interface.__name__,
         model.queryModelDescriptor(model_interface)))
     '''
     !+queryModelDescriptor(mr, mar-2011) because of the discrepancy between 
     test and application ZCML code, when running bungeni.ui unittests 
     the call to queryModelDescriptor here (i.e. when importing this module) 
     returns None. To reduce this timing issue, the setting up of the 
     JSLCache attributes descriptor and filter_params is being postponed 
     to when it is needed i.e. when they are actually being called
     and used--which is why they are implemented as properties. They are 
     themselves cached to minimize the overhead of repeated lookups at 
     runtime.
     
     !+queryModelDescriptor(mr, mar-2011) should be renamed, and behaviour 
     changed accordingly (raise an error when None) to getModelDescriptor().
     '''
     self.model_interface = model_interface
     self._descriptor = None
     self._filter_params = None
     # !+CACHE_INVALIDATION(mr, sep-2010) this should be left open-ended?
     # sanity check -- ensure every specified (domain) class_name exists
     for icn in invalidating_class_names:
         assert getattr(domain, icn), "No such domain class: %s" % (icn)
     self.invalidating_class_names = invalidating_class_names
示例#28
0
def filterFields(context, form_fields):
    omit_names = []
    if IAlchemistContent.providedBy(context):
        md = queryModelDescriptor(context.__class__)
        for field in form_fields:
            try:
                can_write = security.canWrite(context, field.__name__)
                can_read = security.canAccess(context, field.__name__)
            except AttributeError:
                can_write = can_read = False
            if can_write:
                continue
            if can_read:
                field.for_display = True
                field.custom_widget = md.get(field.__name__).view_widget
            else:
                omit_names.append(field.__name__)
    elif not IAlchemistContainer.providedBy(context):
        ctx = getattr(context, "context", None)
        if ctx:
            filterFields(ctx, form_fields)
        else:
            raise NotImplementedError
    return form_fields.omit(*omit_names)
示例#29
0
 def __init__(self, max_size, model_interface, invalidating_class_names):
     """ max_size:int - max number of items to cache, 0 implies unlimited,
             oldest in excess of max are discarded
         model_interface: interface domain model for this listing
         invalidating_class_names:[str] - names of domain classes that 
             when modified will invalidate this cache
         
         @descriptor: descriptor instance for domain model for this listing
         @filter_params: [name:str] - query string filter parameter names
     """
     self.cache = evoque.collection.Cache(max_size)
     log.debug("JSLCache queryModelDescriptor(%s) -> %s" % (
         model_interface.__name__,
         model.queryModelDescriptor(model_interface)))
     '''
     !+queryModelDescriptor(mr, mar-2011) because of the discrepancy between 
     test and application ZCML code, when running bungeni.ui unittests 
     the call to queryModelDescriptor here (i.e. when importing this module) 
     returns None. To reduce this timing issue, the setting up of the 
     JSLCache attributes descriptor and filter_params is being postponed 
     to when it is needed i.e. when they are actually being called
     and used--which is why they are implemented as properties. They are 
     themselves cached to minimize the overhead of repeated lookups at 
     runtime.
     
     !+queryModelDescriptor(mr, mar-2011) should be renamed, and behaviour 
     changed accordingly (raise an error when None) to getModelDescriptor().
     '''
     self.model_interface = model_interface
     self._descriptor = None
     self._filter_params = None
     # !+CACHE_INVALIDATION(mr, sep-2010) this should be left open-ended?
     # sanity check -- ensure every specified (domain) class_name exists
     for icn in invalidating_class_names:
         assert getattr(domain, icn), "No such domain class: %s" % (icn)
     self.invalidating_class_names = invalidating_class_names
示例#30
0
 def __init__(self, context):
     self.context = context
     self.domain_model = removeSecurityProxy(self.context).domain_model
     self.domain_interface = model.queryModelInterface(self.domain_model)
     self.domain_annotation = model.queryModelDescriptor(self.domain_interface)
示例#31
0
def get_schedulable_types():
    return dict([
        (name, 
         model.queryModelDescriptor(domain.DOMAIN_CLASSES[name]).container_name)
        for name in SCHEDULABLE_TYPES
    ])
示例#32
0
 def title(self):
     descriptor = queryModelDescriptor(self.context.domain_model)
     return descriptor.container_name
示例#33
0
 def set_untranslatable_fields_for_display(self):
     md = queryModelDescriptor(self.context.__class__)
     for field in self.form_fields:
         if field.__name__ not in self.translatable_field_names():
             field.for_display = True
             field.custom_widget = md.get(field.__name__).view_widget
示例#34
0
 def set_untranslatable_fields_for_display(self):
     md = queryModelDescriptor(self.context.__class__)
     for field in self.form_fields:
         if field.__name__ not in self.translatable_field_names():
             field.for_display = True
             field.custom_widget = md.get(field.__name__).view_widget
示例#35
0
 def __init__(self, context):
     self.context = context
     self.domain_model = removeSecurityProxy(self.context).domain_model
     self.domain_interface = model.queryModelInterface(self.domain_model)
     self.domain_annotation = model.queryModelDescriptor(
         self.domain_interface)
示例#36
0
 def model_descriptor(self):
     return queryModelDescriptor(self.domain_model)
示例#37
0
 def descriptor(self):
     """Get (cached) descriptor instance for self.model_interface.
     """
     if self._descriptor is None:
         self._descriptor = model.queryModelDescriptor(self.model_interface)
     return self._descriptor
示例#38
0
 def descriptor(self):
     """Get (cached) descriptor instance for self.model_interface.
     """
     if self._descriptor is None:
         self._descriptor = model.queryModelDescriptor(self.model_interface)
     return self._descriptor
示例#39
0
 def form_name(self):
     dm = self.context.domain_model
     return getattr(model.queryModelDescriptor(dm), "container_name",
         dm.__name__)
示例#40
0
 def form_name(self):
     descriptor = queryModelDescriptor(self.factory)
     return descriptor.display_name
示例#41
0
def get_schedulable_types():
    return dict([(name, model.queryModelDescriptor(
        domain.DOMAIN_CLASSES[name]).container_name)
                 for name in SCHEDULABLE_TYPES])
示例#42
0
 def model_descriptor(self):
     return queryModelDescriptor(self.domain_model)
示例#43
0
 def form_name(self):
     dm = self.context.domain_model
     return getattr(model.queryModelDescriptor(dm), "container_name",
                    dm.__name__)
示例#44
0
 def title(self):
     descriptor = queryModelDescriptor(self.context.domain_model)
     return descriptor.container_name
示例#45
0
 def type(self):
     descriptor = queryModelDescriptor(self.context.__class__)
     item_type = descriptor.display_name if descriptor \
         else self.context.type
     request = get_request()
     return translate(item_type, context=request)