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) |