Ejemplo n.º 1
0
    def approve_version(self):
        """Aprove the current unapproved version.
        """
        # self._update_publication_status()
        if self._unapproved_version == empty_version:
            raise VersioningError(
                _('There is no unapproved version to approve.'), self)

        if self._approved_version != empty_version:
            raise VersioningError(_('There already is an approved version.'),
                                  self)

        if self._unapproved_version[1] is None:
            raise VersioningError(
                _('Cannot approve version without publication datetime.'),
                self)

        self._approved_version = self._unapproved_version
        self._unapproved_version = empty_version

        version = self._getOb(self._approved_version[0])
        status = IRequestForApprovalStatus(version)
        status.validate()

        notify(events.ContentApprovedEvent(version, status))

        # We may be published now
        self._update_publication_status()