コード例 #1
0
 def groups_data(self):
     group_list = []
     try:
         group = self.context.get_group()
         if model_interfaces.ICommittee.providedBy(group):
             group_container = group.parent_group.committees
         else:
             group = self.context.get_group()
             group_container = group.committees
             group_list.append({
                 "key":
                 self.context.group_id,
                 "label":
                 IDCDescriptiveProperties(group).title,
             })
         group_list += [
             {
                 "key": comm.committee_id,
                 "label": IDCDescriptiveProperties(comm).title
             } for comm in group_container.values()
             if checkPermission("bungeni.committee_member.Add", comm)
         ]
     except AttributeError:
         log.warn("Context %s has no committees", self.context)
     return group_list
コード例 #2
0
 def group_id(self):
     if IDoc.providedBy(self.context):
         if hasattr(self.context, "group_id") and self.context.group is not None:
             return IDCDescriptiveProperties(self.context.group).short_title
         elif hasattr(self.context, "chamber_id"):
             return IDCDescriptiveProperties(self.context.chamber).short_tile
     return translate("n/a", context=get_request())
コード例 #3
0
ファイル: dc.py プロジェクト: mohalfaki/bungeni-portal
 def verbose_title(self):
     context = _merged(self.context)
     sitting_title = _(
         "verbose_sitting_title",
         default=u"Sitting of ${group_name} @ ${sitting_venue}",
         mapping={
             "group_name": IDCDescriptiveProperties(context.group).title,
             "sitting_venue": IDCDescriptiveProperties(context.venue).title
         })
     return translate_i18n(sitting_title)
コード例 #4
0
ファイル: dc.py プロジェクト: mohalfaki/bungeni-portal
 def verbose_title(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     sitting_title = _(
         "verbose_sitting_title",
         default=u"Sitting of ${group_name} @ ${sitting_venue}",
         mapping={
             "group_name": IDCDescriptiveProperties(context.group).title,
             "sitting_venue": IDCDescriptiveProperties(context.venue).title
         })
     return translate_i18n(sitting_title)
コード例 #5
0
def generate_doc_for(domain_class, title=None, expand=True):
    doc = etree.fromstring(SIMPLE_LIST)
    dc_adapter = None
    if title:
        add_sub_element(doc, "li", title)
    if not isinstance(domain_class, Mapper):
        dc_adapter = IDCDescriptiveProperties(domain_class(), None)
        mapped = class_mapper(domain_class)
    else:
        mapped = domain_class
        try:
            dc_adapter = IDCDescriptiveProperties(mapped.class_(), None)
        except:
            logging.error("Unable to get dc adapter for %s", mapped.class_)
    if dc_adapter:
        dc_keys = {}
        dc_keys.update(dc_adapter.__class__.__dict__)
        for (key, value) in dc_keys.iteritems():
            if (not key.startswith("_")) and (not hasattr(value, "__call__")):
                elx = add_sub_element(doc, "li")
                elx.text = "dc:%s" % key
                elx.set("class", "item dcitem")

    props = [prop for prop in mapped.iterate_properties]
    if domain_class == domain.Sitting:
        props.extend(SITTING_EXTRAS)
    for prop in sorted(props,
                       key=lambda p: str(int(hasattr(p, "mapper"))) + p.key):
        sub_el = add_sub_element(doc, "li")
        if hasattr(prop, "mapper") and expand:
            if prop.key in PROCESSED_PROPS.get(mapped.class_.__name__, []):
                continue
            else:
                try:
                    PROCESSED_PROPS[mapped.class_.__name__].add(prop.key)
                except KeyError:
                    PROCESSED_PROPS[mapped.class_.__name__] = set([prop.key])
            sub_el = add_sub_element(doc, "li")
            if prop.uselist:
                sub_title = "+ %s (list)" % (prop.key)
            else:
                sub_title = "+ %s" % prop.key
            add_sub_element(sub_el,
                            "span",
                            sub_title,
                            css_class="sec_title",
                            onclick="toggleBullet(this)")
            sub_el.append(generate_doc_for(prop.mapper, title, prop.uselist))
        else:
            sub_el.text = prop.key
            sub_el.set("class", "item")

    return doc
コード例 #6
0
 def groups_data(self):
     group_list = [{
         "key": comm.committee_id,
         "label": IDCDescriptiveProperties(comm).title
     } for comm in Session().query(domain.Committee).all()
                   if comm.committee_id is not self.context.group_id]
     return group_list
コード例 #7
0
def get_sitting_items(sitting, request, include_actions=False):
    items = []

    if (sitting.status in IWorkflow(sitting).get_state_ids(
            keys=["draft_agenda", "published_agenda"])):
        order = "planned_order"
    else:
        order = "real_order"

    schedulings = map(removeSecurityProxy,
                      sitting.items.batch(order_by=order, limit=None))
    for scheduling in schedulings:
        item = ProxyFactory(location_wrapped(scheduling.item, sitting))

        props = IDCDescriptiveProperties.providedBy(item) and item or \
                IDCDescriptiveProperties(item)

        discussions = tuple(scheduling.discussions.values())
        discussion = discussions and discussions[0] or None
        truncated_discussion = None
        if ((discussion is not None) and (discussion.body is not None)):
            #truncate discussion to first hundred characters
            t_discussion = discussion.body[0:100]
            try:
                #truncate discussion to first two lines
                index = t_discussion.index("<br>")
                index2 = t_discussion.index("<br>", index + 4)
                truncated_discussion = t_discussion[0:index2] + "..."
            except ValueError:
                truncated_discussion = t_discussion + "..."
        state_title = IWorkflow(item).get_state(item.status).title
        item = removeSecurityProxy(item)
        record = {
            "title": props.title,
            "description": props.description,
            "name": stringKey(scheduling),
            "status": item.status,
            "type": item.type.capitalize,
            "state_title": state_title,
            "heading": True if item.type == "heading" else False,
            #"category_id": scheduling.category_id,
            #"category": scheduling.category,
            "discussion": discussion,
            "truncated_discussion": truncated_discussion,
            "delete_url": "%s/delete" % url.absoluteURL(scheduling, request),
            "url": url.absoluteURL(item, request),
        }

        if include_actions:
            record["actions"] = get_scheduling_actions(scheduling, request)
            record["workflow"] = get_workflow_actions(item, request)

            discussion_actions = get_discussion_actions(discussion, request)
            if discussion_actions:
                assert len(discussion_actions) == 1
                record["discussion_action"] = discussion_actions[0]
            else:
                record["discussion_action"] = None
        items.append(record)
    return items
コード例 #8
0
 def render(self, template=None):
     """Render ICAL or send WWW-AUTHENTICATE Header
     
     See `bungeni.ui.errors.Unauthorized`
     """
     event_data_list = [
         config.ICAL_EVENT_TEMPLATE % dict(
             event_start=sitting.start_date.strftime("%Y%m%dT%H%M%S"),
             event_end=sitting.end_date.strftime("%Y%m%dT%H%M%S"),
             event_venue=(IDCDescriptiveProperties(sitting.venue).title
                          if hasattr(sitting, "venue") else u""),
             event_summary=IDCDescriptiveProperties(sitting).verbose_title,
         ) for sitting in self.sittings_and_sessions
     ]
     return config.ICAL_DOCUMENT_TEMPLATE % dict(
         event_data=u"\n".join(event_data_list))
コード例 #9
0
    def form_name(self):
        if IVersion.providedBy(self.context):
            context = self.context.head

        props = IDCDescriptiveProperties.providedBy(context) \
                and context or IDCDescriptiveProperties(context)

        if self.is_translation:
            language = get_language_by_name(self.context.language)['name']
            return _(u"edit_translation_legend",
                     default=u'Editing $language translation of "$title"',
                     mapping={
                         'title': translate(props.title, context=self.request),
                         'language': language
                     })

        elif IVersion.providedBy(self.context):
            return _(u"edit_version_legend",
                     default=u'Editing "$title" (version $version)',
                     mapping={
                         'title': translate(props.title, context=self.request),
                         'version': self.context.version_id
                     })

        return _(
            u"edit_item_legend",
            default=u'Editing "$title"',
            mapping={'title': translate(props.title, context=self.request)})
コード例 #10
0
ファイル: common.py プロジェクト: mohalfaki/bungeni-portal
    def form_name(self):
        if IVersion.providedBy(self.context):
            context = self.context.head
        else:
            context = self.context
        props = IDCDescriptiveProperties(context, None) or context

        if self.is_translation:
            language = get_language_by_name(self.context.language)["name"]
            return _(u"edit_translation_legend",
                     default=u"Editing $language translation of '$title'",
                     mapping={
                         "title": translate(props.title, context=self.request),
                         "language": language
                     })

        elif IVersion.providedBy(self.context):
            return _(u"edit_version_legend",
                     default=u'Editing "$title" (version $version)',
                     mapping={
                         "title": translate(props.title, context=self.request),
                         "version": self.context.seq
                     })
        return _(
            u"edit_item_legend",
            default=u'Editing "$title"',
            mapping={"title": translate(props.title, context=self.request)})
コード例 #11
0
    def add_container_menu_items(self, context, container):
        request = self.request

        _url = url.absoluteURL(container, request)

        if IReadContainer.providedBy(container):
            #XXX should be the same in all containers ?
            container = proxy.removeSecurityProxy(container)
            for name, item in container.items():
                if context is None:
                    selected = False
                else:
                    selected = url.same_path_names(context.__name__, name)
                item = proxy.removeSecurityProxy(item)
                if IDCDescriptiveProperties.providedBy(item):
                    title = item.title
                else:
                    props = IDCDescriptiveProperties(item)
                    title = props.title
                # only items with valid title
                if title is not None:
                    self.items.append(
                        url.get_menu_item_descriptor(title, selected, _url,
                                                     name))
        default_view_name = queryDefaultViewName(container, self.request)
        default_view = component.queryMultiAdapter((container, self.request),
                                                   name=default_view_name)
        if hasattr(default_view, "title") and default_view.title is not None:
            self.items.insert(
                0,
                url.get_menu_item_descriptor(
                    default_view.title,
                    sameProxiedObjects(container, self.context), _url))
コード例 #12
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
コード例 #13
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:
                title = context.short_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
コード例 #14
0
 def __init__(self, context, request):
     browser.BungeniBrowserView.__init__(self, context, request)
     AuditLogMixin.__init__(self)
     if hasattr(self.context, "title"):
         dc = IDCDescriptiveProperties(self.context, None)
         self._page_title = "%s: %s" % (translate(
             self._page_title), dc and dc.title or self.context.title)
コード例 #15
0
 def __init__(self, context, request):
     super(VersionLogView, self).__init__(context.__parent__, request)
     # table to display the versions history
     formatter = date.getLocaleFormatter(self.request, "dateTime", "short")
     # !+ note this breaks the previous sort-dates-as-strings-hack of
     # formatting dates, for all locales, as date.strftime("%Y-%m-%d %H:%M")
     # that, when sorted as a string, gives correct results.
     self.columns = [
         column.SelectionColumn(lambda item: str(item.version_id),
                                name="selection"),
         column.GetterColumn(title=_(u"version"),
                             getter=lambda i, f: '<a href="%s">%d</a>' %
                             ("%s/versions/obj-%d" %
                              (f.url, i.version_id), i.version_id)),
         column.GetterColumn(title=_(u"manual"),
                             getter=lambda i, f: i.manual),
         column.GetterColumn(
             title=_(u"modified"),
             getter=lambda i, f: formatter.format(i.change.date_active)),
         column.GetterColumn(title=_(u"by"),
                             getter=lambda i, f: IDCDescriptiveProperties(
                                 i.change.user).title),
         column.GetterColumn(title=_(u"message"),
                             getter=lambda i, f: i.change.description),
     ]
     self.selection_column = self.columns[0]
コード例 #16
0
ファイル: dc.py プロジェクト: mohalfaki/bungeni-portal
 def title_member(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     mp_user = None
     try:
         mp_user = session.query(domain.MemberOfParliament).filter(
             domain.MemberOfParliament.user_id == context.user_id
         ).one()
     except NoResultFound:
         #this user has no associated MP record
         pass
     except MultipleResultsFound:
         # this should not happen
         log.error("Multiple MP objects found for : %s", context.__str__())
     finally:
         if mp_user is None:
             return self.title
     dc_constituency = IDCDescriptiveProperties(mp_user.constituency)
     return _("member_title_with_constituency",
             default=u"Member of Parliament for ${constituency} (${member})",
             mapping = {
                 "constituency": dc_constituency.title,
                 "member": self.title
             }
     )
コード例 #17
0
ファイル: api.py プロジェクト: bungeni-org/bungeni.main
 def __call__(self):
     data = obj2dict(self.context, 0)
     data["start_date"] = self.context.sitting.start_date
     data["end_date"] = self.context.sitting.end_date
     data["title"] = IDCDescriptiveProperties(self.context).title
     data["url"] = url.absoluteURL(self.context, self.request)
     data["media"] = [obj2dict(m, 0) for m in self.context.debate_media]
     return simplejson.dumps(data, default=dthandler)
コード例 #18
0
    def add_container_menu_items(self, context, container):
        request = self.request
        # add a menu item for each user workspace, if we are in an
        # IWorkspaceSectionLayer
        # !+ if user is logged in or if request.layer_data

        if (interfaces.IWorkspaceSectionLayer.providedBy(request)
                or interfaces.IWorkspaceSchedulingSectionLayer.providedBy(
                    request)):
            try:
                workspaces = IAnnotations(request)["layer_data"].get(
                    "workspaces")
            except:
                workspaces = []
            log.info("%s got user workspaces: %s" % (self, workspaces))
            base_url_path = "/workspace"
            for workspace in workspaces:
                log.info("appending menu item for user workspace: %s" %
                         str(workspace))
                self.items.append(
                    url.get_menu_item_descriptor(
                        workspace.full_name,
                        pos_action_in_url(
                            "/workspace/obj-%s" % workspace.group_id,
                            request.getURL()), base_url_path,
                        "obj-%s" % workspace.group_id))

        _url = url.absoluteURL(container, request)

        if IReadContainer.providedBy(container):
            #XXX should be the same in all containers ?
            container = proxy.removeSecurityProxy(container)
            for name, item in container.items():
                if context is None:
                    selected = False
                else:
                    selected = url.same_path_names(context.__name__, name)
                item = proxy.removeSecurityProxy(item)
                if IDCDescriptiveProperties.providedBy(item):
                    title = item.title
                else:
                    props = IDCDescriptiveProperties(item)
                    title = props.title
                # only items with valid title
                if title is not None:
                    self.items.append(
                        url.get_menu_item_descriptor(title, selected, _url,
                                                     name))
        default_view_name = queryDefaultViewName(container, self.request)
        default_view = component.queryMultiAdapter((container, self.request),
                                                   name=default_view_name)
        if hasattr(default_view, "title") and default_view.title is not None:
            self.items.insert(
                0,
                url.get_menu_item_descriptor(
                    default_view.title,
                    sameProxiedObjects(container, self.context), _url))
コード例 #19
0
ファイル: workspace.py プロジェクト: bungeni-org/bungeni.main
def get_document_groups():
    """Get Document Groups - order by group id
    """
    group_options = [("", "-")]
    user = model_utils.get_login_user()
    groups = [g for g in model_utils.get_user_groups(user)]
    group_values = [(g.group_id, IDCDescriptiveProperties(g).short_title)
                    for g in groups]
    group_options += sorted(group_values)
    return group_options
コード例 #20
0
ファイル: dc.py プロジェクト: mohalfaki/bungeni-portal
 def description(self):
     context = _merged(self.context)
     text = "%s %s %s" % (translate_i18n(_("Submitted by")),
                          context.owner.first_name, context.owner.last_name)
     if context.group:
         text += " to %s" % IDCDescriptiveProperties(context.group).title
     if context.admissible_date:
         text += " (%s %s)" % (translate_i18n(
             _(u"Approved on")), self.formatDate(context.admissible_date))
     return text + "."
コード例 #21
0
 def _get_items(self):
     item_type = capi.get_type_info(self.context).workflow_key
     query = Session().query(domain.ItemSchedule).filter(
         sql.and_(domain.ItemSchedule.item_id == self.item_id,
                  domain.ItemSchedule.item_type == item_type))
     items = []
     for item in query.all():
         items.append(
             dict(sitting_name=IDCDescriptiveProperties(item.sitting).title,
                  sitting_venue=(IDCDescriptiveProperties(
                      item.sitting.venue).title if item.sitting.venue else
                                 _(u"Unknown venue")),
                  minutes=[
                      dict(text=minute.body)
                      for minute in item.itemdiscussions
                  ]))
     if not items:
         self.for_display = False
     return items
コード例 #22
0
    def changeTitle(self):
        """Given a sequence of tuples of old, new ids we rename"""
        request = self.request
        id = request.get("retitle_id")
        new = request.get("new_value")

        item = self.context[id]
        dc = IDCDescriptiveProperties(item)
        dc.title = new
        notify(ObjectModifiedEvent(item, Attributes(IZopeDublinCore, 'title')))
コード例 #23
0
def get_sitting_items(sitting, request, include_actions=False):
    items = []

    if sitting.status in [
            sitting_wf_state[u'draft-agenda'].id,
            sitting_wf_state[u'published-agenda'].id
    ]:
        order = "planned_order"
    else:
        order = "real_order"

    schedulings = map(removeSecurityProxy,
                      sitting.items.batch(order_by=order, limit=None))

    for scheduling in schedulings:
        item = ProxyFactory(location_wrapped(scheduling.item, sitting))

        props = IDCDescriptiveProperties.providedBy(item) and item or \
                IDCDescriptiveProperties(item)

        discussions = tuple(scheduling.discussions.values())
        discussion = discussions and discussions[0] or None

        info = IWorkflowInfo(item, None)
        state_title = info.workflow().workflow.states[item.status].title

        record = {
            'title': props.title,
            'description': props.description,
            'name': stringKey(scheduling),
            'status': item.status,
            'type': item.type.capitalize,
            't': item.type,
            'state_title': state_title,
            #'category_id': scheduling.category_id,
            #'category': scheduling.category,
            'discussion': discussion,
            'delete_url':
            "%s/delete" % ui_url.absoluteURL(scheduling, request),
            'url': ui_url.absoluteURL(item, request)
        }

        if include_actions:
            record['actions'] = get_scheduling_actions(scheduling, request)
            record['workflow'] = get_workflow_actions(item, request)

            discussion_actions = get_discussion_actions(discussion, request)
            if discussion_actions:
                assert len(discussion_actions) == 1
                record['discussion_action'] = discussion_actions[0]
            else:
                record['discussion_action'] = None
        items.append(record)
    return items
コード例 #24
0
ファイル: dc.py プロジェクト: mohalfaki/bungeni-portal
 def description(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     text = "%s %s %s" % (_("Submitted by"), context.owner.first_name,
                          context.owner.last_name)
     if context.ministry:
         text += " to %s" % IDCDescriptiveProperties(context.ministry).title
     if context.admissible_date:
         text += " (%s %s)" % (_(u"Approved on"),
                               self.formatDate(context.admissible_date))
     return text + "."
コード例 #25
0
    def update(self):
        need('yui-dragdrop')
        need('yui-container')

        session = Session()
        group_id = self.get_group_id()

        items = tuple(
            session.query(self.model).filter(
                sql.and_(self.model.status.in_(self.states),
                         self.model.group_id == group_id)))
        sitting = self._parent._parent.context
        scheduled_item_ids = [item.item_id for item in sitting.item_schedule]
        # add location to items
        gsm = component.getSiteManager()
        adapter = gsm.adapters.lookup(
            (interface.implementedBy(self.model), interface.providedBy(self)),
            ILocation)

        items = [adapter(item, None) for item in items]

        # for each item, format dictionary for use in template
        self.items = [
            {
                'title':
                properties.title,
                'name':
                item.__class__.__name__,
                'description':
                properties.description,
                #'date': _(u"$F", mapping={'F':
                #           datetimedict.fromdatetime(item.changes[-1].date)}),
                'date':
                item.changes[-1].date_active,
                'state':
                _(IWorkflow(item).workflow.states[item.status].title),
                'id':
                item.parliamentary_item_id,
                'class': (item.parliamentary_item_id in scheduled_item_ids)
                and "dd-disable" or "",
                'url':
                url.set_url_context(url.absoluteURL(item, self.request))
            }
            for (item,
                 properties) in [(item,
                                  (IDCDescriptiveProperties.providedBy(item)
                                   and item or IDCDescriptiveProperties(item)))
                                 for item in items]
        ]
コード例 #26
0
 def title_member(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     mp_user = session.query(domain.MemberOfParliament).filter(
         domain.MemberOfParliament.user_id == context.user_id
     ).one()
     if mp_user is None:
         return self.title
     dc_constituency = IDCDescriptiveProperties(mp_user.constituency)
     return _("member_title_with_constituency",
             default=u"Member of Parliament for ${constituency} (${member})",
             mapping = {
                 "constituency": dc_constituency.title,
                 "member": self.title
             }
     )
コード例 #27
0
 def columns(self):
     return [
         CustomSelectionColumn(
                 lambda item:str(item.audit_id), name="selection"),
         column.GetterColumn(title=_("version"),
                 getter=lambda i,f:"%s" % (i.audit_id),
                 cell_formatter=lambda g,i,f:'<a href="%s/version-log/%s">%s</a>'
                     % (f.url, i.__name__, i.seq)),
         column.GetterColumn(title=_("procedure"), 
                 getter=lambda i,f:i.procedure),
         column.GetterColumn(title=_("modified"), 
                 getter=lambda i,f:self.date_formatter.format(i.date_active)),
         column.GetterColumn(title=_("by"), 
                 getter=lambda i,f:IDCDescriptiveProperties(i.user).title),
         column.GetterColumn(title=_("message"),
                 getter=lambda i,f:i.note),
     ]
コード例 #28
0
    def update(self):
        need("yui-dragdrop")
        need("yui-container")

        sitting = self._parent._parent.context
        scheduled_item_ids = [item.item_id for item in sitting.item_schedule]

        # add location to items
        gsm = component.getSiteManager()
        adapter = gsm.adapters.lookup(
            (interface.implementedBy(self.model), interface.providedBy(self)),
            ILocation)

        date_formatter = self.get_date_formatter("date", "medium")
        items = [adapter(item, None) for item in self._query_items()]
        # for each item, format dictionary for use in template
        self.items = [
            {
                "title":
                properties.title,
                "name":
                item.__class__.__name__,
                "description":
                properties.description,
                #"date": _(u"$F", mapping={"F":
                #       datetimedict.fromdatetime(item.changes[-1].date)}),
                #"date":item.changes[-1].date,
                # not every item has a auditlog (headings)
                # use last status change instead.
                "date":
                self._item_date(item)
                and date_formatter.format(self._item_date(item)),
                "state":
                IWorkflow(item).get_state(item.status).title,
                "id":
                self._get_item_key(item),
                "class": ((self._get_item_key(item) in scheduled_item_ids
                           and "dd-disable") or ""),
                "url":
                self._item_url(item),
                "type":
                item.type
            } for item, properties in [(
                item, (IDCDescriptiveProperties.providedBy(item) and item
                       or IDCDescriptiveProperties(item))) for item in items]
        ]
コード例 #29
0
 def form_description(self):
     language = get_language_by_name(self.language)["name"]
     props = IDCDescriptiveProperties.providedBy(self.context) \
             and self.context or IDCDescriptiveProperties(self.context)
     if self.is_translation:
         return _(u"edit_translation_legend",
          default=u'Editing $language translation of "$title"',
          mapping={"title": translate(props.title, context=self.request),
                   "language": language}) 
     else:
         return _(u"translate_item_help",
             default=u'The document "$title" has not yet been translated ' \
                 u'into $language. Use this form to add the translation',
             mapping={
                 "title": translate(props.title, context=self.request),
                 "language": language
             }
         )
コード例 #30
0
 def __init__(self,  context, request, view, manager):
     self.context = context
     self.request = request
     self.__parent__ = view
     self.manager = manager
     self.wf_status = "new"
     self.has_status = False
     # table to display the workflow history
     formatter = date.getLocaleFormatter(self.request, "dateTime", "short")
     # !+ note this breaks the previous sort-dates-as-strings-hack of 
     # formatting dates as date.strftime("%Y-%m-%d %H:%M") -- when sorted
     # as a string -- gives correct results (for all locales).
     self.columns = [
         column.GetterColumn(title=_(u"date"), 
             getter=lambda i,f:formatter.format(i.date_active)),
         column.GetterColumn(title=_(u"user"), 
             getter=lambda i,f:IDCDescriptiveProperties(i.user).title),
         column.GetterColumn(title=_(u"description"), 
             getter=lambda i,f:_label(i)),
     ]