def test_setting_default_subobjects(self):
     self.portal_properties.manageSubobjects(['ZopeType0', 'ZopeType1'],
                                             ['NyType0', 'NyType1'])
     fmt = FolderMetaTypes(self.portal.info)
     self.assertEqual(set(fmt.get_values()),
                      set(['ZopeType0', 'ZopeType1', 'NyType0', 'NyType1']))
     self.assertEqual(set(fmt.get_values()), set(self.portal.adt_meta_types))
 def test_setting_default_subobjects(self):
     self.portal_properties.manageSubobjects(['ZopeType0', 'ZopeType1'],
                                             ['NyType0', 'NyType1'])
     fmt = FolderMetaTypes(self.portal.info)
     self.assertEqual(set(fmt.get_values()),
                      set(['ZopeType0', 'ZopeType1', 'NyType0', 'NyType1']))
     self.assertEqual(set(fmt.get_values()),
                      set(self.portal.adt_meta_types))
Exemple #3
0
 def test_subobjects_customization(self):
     # customize one subfolder
     self.portal.info.subfolder1.manageSubobjects(subobjects=[],
                                            ny_subobjects=['Naaya Document'])
     # change global setting
     portal_properties = self.portal.getPropertiesTool()
     portal_properties.manageSubobjects([], ['Naaya Calendar'])
     fmt0 = FolderMetaTypes(self.portal.info.subfolder0)
     fmt1 = FolderMetaTypes(self.portal.info.subfolder1)
     # check
     self.assertEqual(set(fmt0.get_values()), set(['Naaya Calendar']))
     self.assertFalse(fmt0.has_custom_value)
     self.assertEqual(set(fmt1.get_values()), set(['Naaya Document']))
     self.assertTrue(fmt1.has_custom_value)
Exemple #4
0
 def test_folders_created_with_default_subobjects(self):
     for i in range(2):
         folder = getattr(self.portal.info, 'subfolder' + str(i))
         fmt = FolderMetaTypes(folder)
         self.assertFalse(fmt.has_custom_value)
         self.assertEqual(set(fmt.get_values()),
                          set(self.portal.adt_meta_types))
    def _update(self, portal):
        to_add = "Naaya Forum"

        filter_out_folders = ['news', 'events', 'stories']
        filter_out_folders_cap = [f.capitalize() for f in filter_out_folders]
        filter_out_folders.extend(filter_out_folders_cap)
        self.log.debug('Filtering out folders: %s', filter_out_folders)

        prop_tool = portal.getPropertiesTool()
        ny_subobjects = [item for item in prop_tool.getProductsMetaTypes() if item in prop_tool.adt_meta_types]
        subobjects = [item for item in prop_tool.get_meta_types(1) if item in prop_tool.adt_meta_types]
        self.log.debug('Found ny_subobjects: %s and subobjects: %s' % (ny_subobjects, subobjects))

        if to_add not in ny_subobjects:
            self.log.debug('Adding %s to ny_subobjects' % to_add)
            ny_subobjects.append(to_add)
            prop_tool.manageSubobjects(subobjects, ny_subobjects)

        ny_folders = [folder for folder in portal.getCatalogedObjectsCheckView(meta_type="Naaya Folder")]
        filtered_folders = []
        for folder in ny_folders:
            f_splits = folder.absolute_url(1).split('/')
            for fs in f_splits:
                if fs in filter_out_folders:
                    break
            else:
                filtered_folders.append(folder)
        ny_folders = filtered_folders

        i, j = 0, 0
        for folder in ny_folders:
            meta_types = FolderMetaTypes(folder)
            f_mt = meta_types.get_values()
            if to_add not in f_mt:
                meta_types.add(to_add)
                i+=1
                self.log.debug('Updated folder %s' % folder.absolute_url(1))
            else:
                j+=1
                self.log.debug('Skipped folder %s' % folder.absolute_url(1))

        self.log.debug('Updated %s folders | Skipped %s folders | Total %s folders' % (i, j, i+j))

        return True
    def _update(self, portal):
        to_add = "Naaya Forum"

        filter_out_folders = ["news", "events", "stories"]
        filter_out_folders_cap = [f.capitalize() for f in filter_out_folders]
        filter_out_folders.extend(filter_out_folders_cap)
        self.log.debug("Filtering out folders: %s", filter_out_folders)

        prop_tool = portal.getPropertiesTool()
        ny_subobjects = [item for item in prop_tool.getProductsMetaTypes() if item in prop_tool.adt_meta_types]
        subobjects = [item for item in prop_tool.get_meta_types(1) if item in prop_tool.adt_meta_types]
        self.log.debug("Found ny_subobjects: %s and subobjects: %s" % (ny_subobjects, subobjects))

        if to_add not in ny_subobjects:
            self.log.debug("Adding %s to ny_subobjects" % to_add)
            ny_subobjects.append(to_add)
            prop_tool.manageSubobjects(subobjects, ny_subobjects)

        ny_folders = [folder for folder in portal.getCatalogedObjectsCheckView(meta_type="Naaya Folder")]
        filtered_folders = []
        for folder in ny_folders:
            f_splits = folder.absolute_url(1).split("/")
            for fs in f_splits:
                if fs in filter_out_folders:
                    break
            else:
                filtered_folders.append(folder)
        ny_folders = filtered_folders

        i, j = 0, 0
        for folder in ny_folders:
            meta_types = FolderMetaTypes(folder)
            f_mt = meta_types.get_values()
            if to_add not in f_mt:
                meta_types.add(to_add)
                i += 1
                self.log.debug("Updated folder %s" % folder.absolute_url(1))
            else:
                j += 1
                self.log.debug("Skipped folder %s" % folder.absolute_url(1))

        self.log.debug("Updated %s folders | Skipped %s folders | Total %s folders" % (i, j, i + j))

        return True
    def update_subobjects(self, portal):
        """ Update allowed subobject in Naaya Folders if Naaya Extended File
        is present in this list

        Required arguments:
        portal -- Naaya Site instance

        """
        # Subobjects
        meta_types = portal.adt_meta_types[:]
        changed = False
        if 'Naaya Extended File' in meta_types:
            meta_types.remove('Naaya Extended File')
            changed = True
        if 'Naaya Blob File' not in meta_types:
            meta_types.append('Naaya Blob File')
            changed = True
        if changed:
            self.log.debug('Updating portal %s subobjects = %s',
                           portal.absolute_url(1), meta_types)
            portal.portal_properties.manageSubobjects(subobjects=meta_types)

        brains = portal.portal_catalog(meta_type='Naaya Folder')
        for brain in brains:
            doc = brain.getObject()
            if not doc:
                continue

            self.log.debug("Replacing object %s", doc.absolute_url())
            folder_meta_types = FolderMetaTypes(doc)
            meta_types = folder_meta_types.get_values()
            changed = False
            if 'Naaya Extended File' in meta_types:
                meta_types.remove('Naaya Extended File')
                changed = True
            if 'Naaya Blob File' not in meta_types:
                meta_types.append('Naaya Blob File')
                changed = True
            if changed:
                self.log.debug('Updating folder %s subobjects = %s',
                               doc.absolute_url(1), meta_types)
                folder_meta_types.set_values(meta_types)
    def update_subobjects(self, portal):
        """ Update allowed subobject in Naaya Folders if Naaya Extended File
        is present in this list

        Required arguments:
        portal -- Naaya Site instance

        """
        # Subobjects
        meta_types = portal.adt_meta_types[:]
        changed = False
        if 'Naaya Extended File' in meta_types:
            meta_types.remove('Naaya Extended File')
            changed = True
        if 'Naaya Blob File' not in meta_types:
            meta_types.append('Naaya Blob File')
            changed = True
        if changed:
            self.log.debug('Updating portal %s subobjects = %s',
                           portal.absolute_url(1), meta_types)
            portal.portal_properties.manageSubobjects(subobjects=meta_types)

        brains = portal.portal_catalog(meta_type='Naaya Folder')
        for brain in brains:
            doc = brain.getObject()
            if not doc:
                continue

            self.log.debug("Replacing object %s", doc.absolute_url())
            folder_meta_types = FolderMetaTypes(doc)
            meta_types = folder_meta_types.get_values()
            changed = False
            if 'Naaya Extended File' in meta_types:
                meta_types.remove('Naaya Extended File')
                changed = True
            if 'Naaya Blob File' not in meta_types:
                meta_types.append('Naaya Blob File')
                changed = True
            if changed:
                self.log.debug('Updating folder %s subobjects = %s',
                               doc.absolute_url(1), meta_types)
                folder_meta_types.set_values(meta_types)
Exemple #9
0
    def update_subobjects(self, portal):
        # Subobjects
        meta_types = portal.adt_meta_types[:]
        if 'Naaya File' in meta_types:
            meta_types.remove('Naaya File')
            meta_types.append('Naaya Blob File')
            self.log.debug('Updating portal %s subobjects = %s', portal.absolute_url(1), meta_types)
            portal.portal_properties.manageSubobjects(subobjects=meta_types)

        brains = portal.portal_catalog(meta_type='Naaya Folder')
        for brain in brains:
            doc = brain.getObject()
            if not doc:
                continue

            folder_meta_types = FolderMetaTypes(doc)
            meta_types = folder_meta_types.get_values()
            if 'Naaya File' in meta_types:
                meta_types.remove('Naaya File')
                meta_types.append('Naaya Blob File')
                self.log.debug('Updating folder %s subobjects = %s', doc.absolute_url(1), meta_types)
                doc.manageSubobjects(subobjects=meta_types)
    def update_subobjects(self, portal):
        # Subobjects
        meta_types = portal.adt_meta_types[:]
        if 'Naaya File' in meta_types:
            meta_types.remove('Naaya File')
            meta_types.append('Naaya Blob File')
            self.log.debug('Updating portal %s subobjects = %s',
                           portal.absolute_url(1), meta_types)
            portal.portal_properties.manageSubobjects(subobjects=meta_types)

        brains = portal.portal_catalog(meta_type='Naaya Folder')
        for brain in brains:
            doc = brain.getObject()
            if not doc:
                continue

            folder_meta_types = FolderMetaTypes(doc)
            meta_types = folder_meta_types.get_values()
            if 'Naaya File' in meta_types:
                meta_types.remove('Naaya File')
                meta_types.append('Naaya Blob File')
                self.log.debug('Updating folder %s subobjects = %s',
                               doc.absolute_url(1), meta_types)
                doc.manageSubobjects(subobjects=meta_types)
Exemple #11
0
def addNyInfoFolder(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an infofolder type of object.
    """
    #process parameters
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _folder_meta_types = schema_raw_data.pop('folder_meta_types', '')

    id = make_id(self,
                 id=id,
                 title=schema_raw_data.get('title', ''),
                 prefix='infofolder')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyInfoFolder_object(self, id, contributor)

    ob.info_type = 'enterprises'

    ob.set_categories()
    _releasedate = DateTime()
    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort(
            )  # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/infofolder_add_html' %
                                             self.absolute_url())
            return

    site = self.getSite()
    #extra settings
    ob_meta_types = FolderMetaTypes(ob)
    parent_meta_types = FolderMetaTypes(self)
    if _folder_meta_types == '':
        #inherit allowd meta types from the parent
        if self.meta_type == site.meta_type:
            ob_meta_types.set_values(site.adt_meta_types)
        else:
            if not parent_meta_types.has_custom_value:
                # if parent uses defaults, so should `ob`
                ob_meta_types.set_values(None)
            else:
                ob_meta_types.set_values(parent_meta_types.get_values())
    else:
        ob_meta_types.set_values(self.utConvertToList(_folder_meta_types))

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
        )
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    #Process extra fields (categories, extra_properties)

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        #l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        #if l_referer == 'infofolder_manage_add' or l_referer.find('infofolder_manage_add') != -1:
        #return self.manage_main(self, REQUEST, update_menu=1)
        #elif l_referer == 'infofolder_add_html':
        #self.setSession('referer', self.absolute_url())
        #return ob.object_submitted_message(REQUEST)
        #REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())
        REQUEST.RESPONSE.redirect('%s/%s/edit_html' %
                                  (self.absolute_url(), id))

    return ob.getId()
def addNyInfoFolder(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an infofolder type of object.
    """
    #process parameters
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _folder_meta_types = schema_raw_data.pop('folder_meta_types', '')

    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='infofolder')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyInfoFolder_object(self, id, contributor)

    ob.info_type = 'enterprises'

    ob.set_categories()
    _releasedate = DateTime()
    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/infofolder_add_html' % self.absolute_url())
            return

    site = self.getSite()
    #extra settings
    ob_meta_types = FolderMetaTypes(ob)
    parent_meta_types = FolderMetaTypes(self)
    if _folder_meta_types == '':
        #inherit allowd meta types from the parent
        if self.meta_type == site.meta_type:
            ob_meta_types.set_values(site.adt_meta_types)
        else:
            if not parent_meta_types.has_custom_value:
                # if parent uses defaults, so should `ob`
                ob_meta_types.set_values(None)
            else:
                ob_meta_types.set_values(parent_meta_types.get_values())
    else:
        ob_meta_types.set_values(self.utConvertToList(_folder_meta_types))

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    #Process extra fields (categories, extra_properties)

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        #l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        #if l_referer == 'infofolder_manage_add' or l_referer.find('infofolder_manage_add') != -1:
            #return self.manage_main(self, REQUEST, update_menu=1)
        #elif l_referer == 'infofolder_add_html':
            #self.setSession('referer', self.absolute_url())
            #return ob.object_submitted_message(REQUEST)
            #REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())
        REQUEST.RESPONSE.redirect('%s/%s/edit_html' % (self.absolute_url(), id))

    return ob.getId()