Пример #1
0
 def _checkId(self, id, allow_dup=0):
     content = self.get_content(name=id)
     if len(content):
         if ILibraryFolderProxy.providedBy(content[0]):
             return
     PortalFolderBase._checkId(self, id, allow_dup)
     BTreeFolder2Base._checkId(self, id, allow_dup)
Пример #2
0
 def __init__(self, id, title=''):
     # BBB To be removed in Plone 3.5
     log_deprecated("LargePloneFolder is deprecated and will be removed in "
                    "Plone 3.5. Please use ATBTreeFolder from ATCT instead.")
     BTreeFolder2Base.__init__(self, id)
     BasePloneFolder.__init__(self, id, title)
     self.id=id
     self.title=title
Пример #3
0
    def __getattr__(self, name):
        if name.startswith('__') or name == '_v__providedBy__':
            raise AttributeError(name)
        try:
            return DexterityContent.__getattr__(self, name)
        except AttributeError:
            pass

        return BTreeFolder2Base.__getattr__(self, name)
Пример #4
0
 def fix_folderish_types(self):
     log = self.mklog()
     catalog = api.portal.get_tool("portal_catalog")
     ordering_nb = btree_nb = 0
     for brain in catalog():
         obj = brain.getObject()
         is_container = isinstance(obj, BTreeFolder2Base)
         if not is_container:
             continue
         if not IOrdering.providedBy(obj):
             alsoProvides(obj, IOrdering)
             obj.reindexObject(["object_provides"])
             ordering_nb += 1
         if obj._tree is None:
             BTreeFolder2Base._initBTrees(obj)
             btree_nb += 1
     log("{0} objects IOrdering interface have been fixed.".format(
         ordering_nb))
     log("{0} objects tree have been fixed.".format(btree_nb))
Пример #5
0
def migrate_patient_item_to_container(portal):
    """Migrate patient objects to be folderish

    Base class changed from Item -> Container

    https://community.plone.org/t/changing-dx-content-type-base-class-from-item-to-container
    http://blog.redturtle.it/2013/02/25/migrating-dexterity-items-to-dexterity-containers
    """
    logger.info("Migrate patients to be folderish ...")
    patients = portal.patients
    for patient in patients.objectValues():
        pid = patient.getId()
        patients._delOb(pid)
        patient.__class__ = Patient
        patients._setOb(pid, patient)
        BTreeFolder2Base._initBTrees(patients[pid])
        patients[pid].reindexObject()

    transaction.commit()
    logger.info("Migrate patients to be folderish [DONE]")
Пример #6
0
def migrate_base_class_to_new_class(obj,
                                    indexes=[
                                        'is_folderish',
                                        'object_provides',
                                    ],
                                    old_class_name='',
                                    new_class_name='',
                                    migrate_to_folderish=False,
                                    ):
    if not old_class_name:
        old_class_name = get_old_class_name_string(obj)
    if not new_class_name:
        new_class_name = get_portal_type_name_string(obj)
        if not new_class_name:
            logger.warning(
                'The type {0} has no fti!'.format(obj.portal_type))
            return False

    was_item = not isinstance(obj, BTreeFolder2Base)
    if old_class_name != new_class_name:
        obj_id = obj.getId()
        module_name, class_name = new_class_name.rsplit('.', 1)
        module = importlib.import_module(module_name)
        new_class = getattr(module, class_name)

        # update obj class
        parent = obj.__parent__
        parent._delOb(obj_id)
        obj.__class__ = new_class
        parent._setOb(obj_id, obj)

    is_container = isinstance(obj, BTreeFolder2Base)

    if was_item and is_container or migrate_to_folderish and is_container:
        #  If Itemish becomes Folderish we have to update obj _tree
        BTreeFolder2Base._initBTrees(obj)

    # reindex
    obj.reindexObject(indexes)

    return True
Пример #7
0
def migrate_base_class_to_new_class(obj,
                                    indexes=[
                                        'is_folderish',
                                        'object_provides',
                                    ],
                                    old_class_name='',
                                    new_class_name='',
                                    migrate_to_folderish=False,
                                    ):
    if not old_class_name:
        old_class_name = get_old_class_name_string(obj)
    if not new_class_name:
        new_class_name = get_portal_type_name_string(obj)
        if not new_class_name:
            logger.warning(
                'The type {0} has no fti!'.format(obj.portal_type))
            return False

    was_item = not isinstance(obj, BTreeFolder2Base)
    if old_class_name != new_class_name:
        obj_id = obj.getId()
        module_name, class_name = new_class_name.rsplit('.', 1)
        module = importlib.import_module(module_name)
        new_class = getattr(module, class_name)

        # update obj class
        parent = obj.__parent__
        parent._delOb(obj_id)
        obj.__class__ = new_class
        parent._setOb(obj_id, obj)

    is_container = isinstance(obj, BTreeFolder2Base)

    if was_item and is_container or migrate_to_folderish and is_container:
        #  If Itemish becomes Folderish we have to update obj _tree
        BTreeFolder2Base._initBTrees(obj)

    # reindex
    obj.reindexObject(indexes)

    return True
Пример #8
0
 def _checkId(self, id, allow_dup=0):
     PortalFolderBase._checkId(self, id, allow_dup)
     BTreeFolder2Base._checkId(self, id, allow_dup)
Пример #9
0
 def __init__(self, id, title=''):
     PortalFolderBase.__init__(self, id, title)
     BTreeFolder2Base.__init__(self, id)
Пример #10
0
 def _checkId(self, id, allow_dup=0):
     BasePloneFolder._checkId(self, id, allow_dup)
     BTreeFolder2Base._checkId(self, id, allow_dup)
Пример #11
0
 def __init__(self, id=None, **kwargs):
     PortalFolderBase.__init__(self, id)
     BTreeFolder2Base.__init__(self, id)
     DexterityContent.__init__(self, id, **kwargs)