Beispiel #1
0
    def reply(self):
        # Traverse to historical version
        if self.version:
            serializer = queryMultiAdapter((self.context, self.request),
                                           ISerializeToJson)
            data = serializer(version=self.version)
            return data

        # Listing historical data
        content_history_viewlet = ContentHistoryViewlet(
            self.context, self.request, None, None)
        site_url = getSite().absolute_url()
        content_history_viewlet.navigation_root_url = site_url
        content_history_viewlet.site_url = site_url
        history = content_history_viewlet.fullHistory()

        unwanted_keys = [
            'diff_current_url',
            'diff_previous_url',
            'preview_url',
            'actor_home',
            'actorid',
            'revert_url',
            'version_id',
        ]

        for item in history:
            item['actor'] = {
                '@id': '{}/@users/{}'.format(site_url, item['actorid']),
                'id': item['actorid'],
                'fullname': item['actor'].get('fullname'),
                'username': item['actor'].get('username'),
            }

            if item['type'] == 'versioning':
                item['version'] = item['version_id']
                item['@id'] = '{}/@history/{}'.format(
                    self.context.absolute_url(), item['version'])

                # If a revert_url is present, then CMFEditions has checked our
                # permissions.
                item['may_revert'] = bool(item.get('revert_url'))

            # Versioning entries use a timestamp,
            # workflow ISO formatted string
            if not isinstance(item['time'], basestring):
                item['time'] = dt.fromtimestamp(item['time']).isoformat()

            # The create event has an empty 'action', but we like it to say
            # 'Create', alike the transition_title
            if item['action'] is None:
                item['action'] = 'Create'

            # clean up
            for key in unwanted_keys:
                if key in item:
                    del item[key]

        return json_compatible(history)
Beispiel #2
0
    def reply(self):
        # Traverse to historical version
        if self.version:
            serializer = queryMultiAdapter((self.context, self.request),
                                           ISerializeToJson)
            data = serializer(version=self.version)
            return data

        # Listing historical data
        content_history_viewlet = ContentHistoryViewlet(
            self.context, self.request, None, None)
        site_url = getSite().absolute_url()
        content_history_viewlet.navigation_root_url = site_url
        content_history_viewlet.site_url = site_url
        history = content_history_viewlet.fullHistory()
        if history is None:
            history = []

        unwanted_keys = [
            "diff_current_url",
            "diff_previous_url",
            "preview_url",
            "actor_home",
            "actorid",
            "revert_url",
            "version_id",
        ]

        for item in history:
            item["actor"] = {
                "@id": "{}/@users/{}".format(site_url, item["actorid"]),
                "id": item["actorid"],
                "fullname": item["actor"].get("fullname"),
                "username": item["actor"].get("username"),
            }

            if item["type"] == "versioning":
                item["version"] = item["version_id"]
                item["@id"] = "{}/@history/{}".format(
                    self.context.absolute_url(), item["version"])

                # If a revert_url is present, then CMFEditions has checked our
                # permissions.
                item["may_revert"] = bool(item.get("revert_url"))

            # Versioning entries use a timestamp,
            # workflow ISO formatted string
            if not isinstance(item["time"], str):
                item["time"] = dt.fromtimestamp(int(item["time"])).isoformat()

            # The create event has an empty 'action', but we like it to say
            # 'Create', alike the transition_title
            if item["action"] is None:
                item["action"] = "Create"

            # We want action, state and transition names translated
            if "state_title" in item:
                item["state_title"] = self.context.translate(
                    safe_unicode(item["state_title"]), context=self.request)

            if "transition_title" in item:
                item["transition_title"] = self.context.translate(
                    safe_unicode(item["transition_title"]),
                    context=self.request)

            if "action" in item:
                item["action"] = self.context.translate(safe_unicode(
                    item["action"]),
                                                        context=self.request)

            # clean up
            for key in unwanted_keys:
                if key in item:
                    del item[key]

        return json_compatible(history)