src/pyams_content/shared/common/zmi/header.py
changeset 222 178dd0dd970c
parent 190 1402402dcf1c
child 277 9649f8ce3b1c
equal deleted inserted replaced
221:348007b1b4b0 222:178dd0dd970c
   112                                              principal=security.get_principal(state.state_principal).title)
   112                                              principal=security.get_principal(state.state_principal).title)
   113         else:
   113         else:
   114             self.state = state_format.format(state=state_label.get_label(context, request, format=False),
   114             self.state = state_format.format(state=state_label.get_label(context, request, format=False),
   115                                              principal=security.get_principal(state.state_principal).title)
   115                                              principal=security.get_principal(state.state_principal).title)
   116         self.state_date = translate(_("since {date}")).format(date=format_datetime(state.state_date, request=request))
   116         self.state_date = translate(_("since {date}")).format(date=format_datetime(state.state_date, request=request))
   117         has_update_state = versions.has_version(workflow.update_states)
   117         # check for links to other versions
   118         if (state.state not in workflow.update_states and has_update_state) or \
   118         links = []
   119            (state.state in workflow.retired_states and has_update_state):
   119         draft_versions = sorted(versions.get_versions(workflow.update_states),
   120             target = sorted(versions.get_versions(workflow.update_states),
   120                                 key=lambda x: IWorkflowState(x).version_id)
   121                             key=lambda x: IWorkflowState(x).version_id)[-1]
   121         waiting_versions = sorted(versions.get_versions(workflow.waiting_states),
   122             if target is not context:
   122                                   key=lambda x: IWorkflowState(x).version_id)
   123                 self.version_link = {
   123         published_versions = sorted(versions.get_versions(workflow.published_states),
   124                     'css_class': 'text-danger',
   124                                     key=lambda x: IWorkflowState(x).version_id)
   125                     'href': absolute_url(target, request, 'admin'),
   125         if (state.version_id > 1) or (state.state != workflow.initial_state):
   126                     'title': translate(_("access new version"))
   126             if draft_versions:
   127                 }
   127                 target = draft_versions[0]
   128             else:
   128                 if target is not context:
   129                 self.version_link = None
   129                     links.append({'title': translate(_("access new version")),
   130         elif state.state not in workflow.published_states and versions.has_version(workflow.published_states):
   130                                   'href': absolute_url(target, request, 'admin'),
   131             target = sorted(versions.get_versions(workflow.published_states),
   131                                   'css_class': 'text-danger'})
   132                             key=lambda x: IWorkflowState(x).version_id,
   132             elif waiting_versions:
   133                             reverse=True)[-1]
   133                 target = waiting_versions[-1]
   134             self.version_link = {
   134                 if target is not context:
   135                 'css_class': 'text-danger',
   135                     links.append({'title': translate(_("access waiting version")),
   136                 'href': absolute_url(target, request, 'admin'),
   136                                   'href': absolute_url(target, request, 'admin'),
   137                 'title': translate(_("access published version"))
   137                                   'css_class': 'text-danger'})
   138             }
   138             if published_versions:
   139         else:
   139                 target = published_versions[0]
   140             self.version_link = None
   140                 if target is not context:
       
   141                     links.append({'title': translate(_("access published version")),
       
   142                                   'href': absolute_url(target, request, 'admin'),
       
   143                                   'css_class': 'text-danger'})
       
   144             if state.state not in (workflow.retired_states | workflow.archived_states):
       
   145                 retired_versions = sorted(versions.get_versions(workflow.retired_states),
       
   146                                           key=lambda x: IWorkflowState(x).version_id)
       
   147                 if retired_versions:
       
   148                     target = retired_versions[-1]
       
   149                     if target is not context:
       
   150                         links.append({'title': translate(_("access retired version")),
       
   151                                       'href': absolute_url(target, request, 'admin'),
       
   152                                       'css_class': 'text-danger'})
       
   153                 else:
       
   154                     archived_versions = sorted(versions.get_versions(workflow.archived_states),
       
   155                                                key=lambda x: IWorkflowState(x).version_id)
       
   156                     if archived_versions:
       
   157                         target = archived_versions[-1]
       
   158                         if target is not context:
       
   159                             links.append({'title': translate(_("access archived version")),
       
   160                                           'href': absolute_url(target, request, 'admin'),
       
   161                                           'css_class': 'text-danger'})
       
   162         self.versions_links = links
   141 
   163 
   142     @property
   164     @property
   143     def title(self):
   165     def title(self):
   144         tool = get_parent(self.context, ISharedTool)
   166         tool = get_parent(self.context, ISharedTool)
   145         return II18n(tool).query_attribute('title', request=self.request)
   167         return II18n(tool).query_attribute('title', request=self.request)