def _addNewVersion(self, comment=''):
     """Content must be updated, so the history machinery will save a new version"""
     context = self.context
     context.reindexObject()
     if VERSIONING_SUPPORT and isObjectChanged(
             context) and isObjectVersioned(context):
         maybeSaveVersion(context, comment=comment)
def webdavObjectEventHandler(obj, event, comment):
    obj = event.object

    if not isObjectChanged(obj):
        return

    try:
        maybeSaveVersion(obj, comment=comment, force=False)
    except FileTooLargeToVersionError:
        pass  # There's no way to emit a warning here. Or is there?
def webdavObjectEventHandler(obj, event, comment):
    obj = event.object

    if not isObjectChanged(obj):
        return

    try:
        maybeSaveVersion(obj, comment=comment, force=False)
    except FileTooLargeToVersionError:
        pass  # There's no way to emit a warning here. Or is there?
def patched_save(self, text, fieldname):
    """18221 call SaveVersion when using tinyMCE save plugin"""
    self.context.getField(fieldname).set(self.context,
                                         text,
                                         mimetype='text/html')
    # patch
    maybeSaveVersion(self.context,
                     comment="TinyMCE save triggered revision",
                     force=False)

    return "saved"
def handle_document_modified(obj, event, comment):
    obj = event.object

    changed = isObjectChanged(obj)

    if not changed:
        return

    handle_convert_document(obj, event)

    try:
        maybeSaveVersion(obj, policy='version_on_unlock', comment=comment, force=False)
    except FileTooLargeToVersionError:
        pass # There's no way to emit a warning here. Or is there?
Exemple #6
0
    def save_version(self):
        errors = []
        comment = self.request.get('cmfeditions_version_comment', '')
        save_new_version = self.request.get('cmfeditions_save_new_version',
                                            None)
        force = save_new_version is not None

        if not (isObjectChanged(self.context) or force):
            return errors

        try:
            maybeSaveVersion(self.context, comment=comment, force=force)
        except FileTooLargeToVersionError as e:
            errors.append(e)
        return errors
    def __call__(self):
        context = aq_inner(self.context)
        comment = self.request.get('cmfeditions_version_comment', '')
        force = self.request.get('cmfeditions_save_new_version', None) is not None

        if not (isObjectChanged(context) or force):
            return self.success()

        try:
            maybeSaveVersion(context, comment=comment, force=force)
        except FileTooLargeToVersionError:
            IStatusMessage(self.request).addStatusMessage(
                _('Versioning for this file has been disabled because it is too large'),
                type='warn'
                )
        return self.success()
    def __call__(self):
        context = aq_inner(self.context)
        pf = getToolByName(context, 'portal_factory')

        if pf.isTemporary(context):
            # don't do anything if we're in the factory
            return self.success()

        comment = _("Initial revision")

        if isObjectVersioned(context):
            return self.success()

        try:
            maybeSaveVersion(context, comment=comment, force=False)
        except FileTooLargeToVersionError:
            pass # the on edit save will emit a warning

        return self.success()
Exemple #9
0
    def __call__(self):
        logger = logging.getLogger()
        log_name = __name__ + '.' + self.__name__
        logger.info('STARTING %s browser view', log_name)
        catalog = getToolByName(self.context, 'portal_catalog', None)
        mt = getToolByName(self.context, 'portal_membership', None)
        rt = getToolByName(self.context, "portal_repository", None)
        wf = getToolByName(self.context, "portal_workflow", None)
        res = catalog(show_inactive="True", language="All",
                      sort_on="meta_type")
        count = 0
        objs_urls = []
        wf_error_objs = []
        wf_error_objs_count = 0
        reindex_error_objs = []
        reindex_error_objs_count = 0
        actor = mt.getAuthenticatedMember().id
        for brain in res:
            if brain.EffectiveDate != "None" and \
                            brain.effective < brain.created:
                obj = brain.getObject()
                obj_url = brain.getURL()
                try:
                    review_state = wf.getInfoFor(obj, 'review_state', 'None')
                except WorkflowException:
                    wf_error_objs_count += 1
                    wf_error_objs.append(obj_url)
                    continue
                previous_creation_date = obj.created()
                effective_date = obj.effective()
                obj.setCreationDate(effective_date)
                comment = "Fixed creation date < effective date (issue 21326" \
                          "). Changed creation date from %s to --> %s." % (
                              previous_creation_date,
                              effective_date)
                if not rt.isVersionable(obj):
                    objs_urls.append(brain.getURL(1))
                    history = obj.workflow_history # persistent mapping
                    for name, wf_entries in history.items():
                        wf_entries = list(wf_entries)
                        wf_entries.append({'action': 'Edited',
                                           'review_state': review_state,
                                           'comments': comment,
                                           'actor': actor,
                                           'time': DateTime()})
                        history[name] = tuple(wf_entries)
                else:
                    maybeSaveVersion(obj, comment=comment, force=False)
                try:
                    obj.reindexObject(idxs=['created'])
                except Exception:
                    reindex_error_objs.append(obj_url)
                    reindex_error_objs_count += 1
                    logger.error("%s --> couldn't be reindexed", obj_url)
                    continue
                count += 1
                logger.info('Fixed %s', obj_url)
                objs_urls.append(obj_url)

                if count % 100 == 0:
                    transaction.commit()
        logger.info('ENDING %s browser view', log_name)
        message = \
            "REINDEX ERROR FOR %d objects \n %s \n" \
            "REVIEW STATE ERROR FOR %d objects \n %s \n" \
            "FIXED THE FOLLOWING OBJECTS %d %s" % (
            reindex_error_objs_count, "\n".join(reindex_error_objs),
            wf_error_objs_count, "\n".join(wf_error_objs),
            count, "\n".join(objs_urls))
        return message
 def _addNewVersion(self, comment=''):
     """Content must be updated, so the history machinery will save a new version"""
     context = self.context
     context.reindexObject()
     if VERSIONING_SUPPORT and isObjectChanged(context) and isObjectVersioned(context):
         maybeSaveVersion(context, comment=comment)
Exemple #11
0
 def _createNewVersion(self, obj):
     _ = getToolByName(self.context, 'translation_service').utranslate
     if isObjectChanged(obj) and isObjectVersioned(obj):
         maybeSaveVersion(obj, comment=_(msgid="Bulk text replacement",
                                         domain="rt.bulkmodify",
                                         context=obj))
Exemple #12
0
    def __call__(self):
        count = 0
        context = self.context
        cat = context.portal_catalog
        form = self.request.form
        match = form.get('text', 'bg-grey')
        form_field = form.get('field', 'text')
        ptype = form.get('ptype', 'Fiche')
        brains = cat(portal_type=ptype, show_inactive=True, Language="all")
        pat = [('class="bg-grey"', 'class="pullquote-container"'),
               ('box fullwidth-bg bg-blue',
                   'fullwidth-bg eea-block bg-primary'),
               ('box fullwidth-bg bg-grey',
                'fullwidth-bg eea-block bg-secondary'),
               ('box fullwidth-bg bg-green',
                'fullwidth-bg eea-block bg-tertiary'),
               ('="fullwidth-bg bg-grey',
                '="fullwidth-bg eea-block bg-secondary'),
               ("bg-blue", "box-primary"),
               ('bg-grey', ' box-secondary'),
               ("bg-green", "box-tertiary")
               ]
        modified = []

        mt = getToolByName(context, 'portal_membership', None)
        rt = getToolByName(context, "portal_repository", None)
        wf = getToolByName(context, "portal_workflow", None)
        actor = mt.getAuthenticatedMember().id

        for brain in brains:
            obj = brain.getObject()
            text = obj.getField(form_field).get(obj)
            if match in text:
                review_state = wf.getInfoFor(obj, 'review_state', 'None')
                url = brain.getURL()
                modified.append(url)
                print url
                for pattern in pat:
                    text = text.replace(pattern[0], pattern[1])
                obj.setText(text, mimetype='text/html')
                if obj.portal_type == 'Fiche':
                    text = obj.getEndnotes()
                    if match in text:
                        for pattern in pat:
                            text = text.replace(pattern[0], pattern[1])
                        obj.setEndnotes(text, mimetype='text/html')

                comment = "Modified design elements html #117294"
                if not rt.isVersionable(obj):
                    history = obj.workflow_history  # persistent mapping
                    for name, wf_entries in history.items():
                        wf_entries = list(wf_entries)
                        wf_entries.append({'action': 'Edited',
                                           'review_state': review_state,
                                           'comments': comment,
                                           'actor': actor,
                                           'time': DateTime()})
                        history[name] = tuple(wf_entries)
                else:
                    maybeSaveVersion(obj, comment=comment, force=False)
                try:
                    obj.reindexObject()
                except Exception:
                    logger.error("%s --> couldn't be reindexed", url)
                count += 1

        logger.info("Finished migration of eea.design #117294")
        print '%d objects were modified' % count
        modified.sort()
        pprint(modified)
        logger.info("%s", '\n'.join(modified))
        return '\n'.join(modified)
Exemple #13
0
    def __call__(self):
        logger = logging.getLogger()
        log_name = __name__ + '.' + self.__name__
        logger.info('STARTING %s browser view', log_name)
        catalog = getToolByName(self.context, 'portal_catalog', None)
        mt = getToolByName(self.context, 'portal_membership', None)
        rt = getToolByName(self.context, "portal_repository", None)
        wf = getToolByName(self.context, "portal_workflow", None)
        res = catalog(show_inactive="True",
                      language="All",
                      sort_on="meta_type")
        count = 0
        objs_urls = []
        wf_error_objs = []
        wf_error_objs_count = 0
        reindex_error_objs = []
        reindex_error_objs_count = 0
        actor = mt.getAuthenticatedMember().id
        for brain in res:
            if brain.EffectiveDate != "None" and \
                            brain.effective < brain.created:
                obj = brain.getObject()
                obj_url = brain.getURL()
                try:
                    review_state = wf.getInfoFor(obj, 'review_state', 'None')
                except WorkflowException:
                    wf_error_objs_count += 1
                    wf_error_objs.append(obj_url)
                    continue
                previous_creation_date = obj.created()
                effective_date = obj.effective()
                obj.setCreationDate(effective_date)
                comment = "Fixed creation date < effective date (issue 21326" \
                          "). Changed creation date from %s to --> %s." % (
                              previous_creation_date,
                              effective_date)
                if not rt.isVersionable(obj):
                    objs_urls.append(brain.getURL(1))
                    history = obj.workflow_history  # persistent mapping
                    for name, wf_entries in history.items():
                        wf_entries = list(wf_entries)
                        wf_entries.append({
                            'action': 'Edited',
                            'review_state': review_state,
                            'comments': comment,
                            'actor': actor,
                            'time': DateTime()
                        })
                        history[name] = tuple(wf_entries)
                else:
                    maybeSaveVersion(obj, comment=comment, force=False)
                try:
                    obj.reindexObject(idxs=['created'])
                except Exception:
                    reindex_error_objs.append(obj_url)
                    reindex_error_objs_count += 1
                    logger.error("%s --> couldn't be reindexed", obj_url)
                    continue
                count += 1
                logger.info('Fixed %s', obj_url)
                objs_urls.append(obj_url)

                if count % 100 == 0:
                    transaction.commit()
        logger.info('ENDING %s browser view', log_name)
        message = \
            "REINDEX ERROR FOR %d objects \n %s \n" \
            "REVIEW STATE ERROR FOR %d objects \n %s \n" \
            "FIXED THE FOLLOWING OBJECTS %d %s" % (
            reindex_error_objs_count, "\n".join(reindex_error_objs),
            wf_error_objs_count, "\n".join(wf_error_objs),
            count, "\n".join(objs_urls))
        return message