def add(self, data):
        if 'import_file' not in data:
            raise ValueError("Import file is not in form")

        taxonomy = registerTaxonomy(self.context,
                                    name=data['taxonomy'],
                                    title=data['field_title'],
                                    description=data['field_description'],
                                    default_language=data['default_language'])

        # Import
        adapter = TaxonomyImportExportAdapter(self.context)

        if 'import_file' in data:
            if data['import_file']:
                import_file = data['import_file'].data
                adapter.importDocument(taxonomy, import_file)
            del data['import_file']

        del data['taxonomy']
        del data['import_file_purge']

        taxonomy.registerBehavior(**data)
        api.portal.show_message(_(u"Taxonomy imported."), request=self.request)

        return self.request.RESPONSE.redirect(self.context.portal_url() +
                                              '/@@taxonomy-settings')
Ejemplo n.º 2
0
    def add(self, data):
        if 'import_file' not in data:
            raise ValueError("Import file is not in form")

        taxonomy = registerTaxonomy(
            self.context,
            name=data['taxonomy'],
            title=data['field_title'],
            description=data['field_description'],
            default_language=data['default_language']
        )

        # Import
        adapter = TaxonomyImportExportAdapter(self.context)

        if 'import_file' in data:
            if data['import_file']:
                import_file = data['import_file'].data
                adapter.importDocument(taxonomy, import_file)
            del data['import_file']

        del data['taxonomy']
        del data['import_file_purge']

        taxonomy.registerBehavior(**data)
        api.portal.show_message(_(u"Taxonomy imported."),
                                request=self.request)

        return self.request.RESPONSE.redirect(
            self.context.portal_url() + '/@@taxonomy-settings'
        )
Ejemplo n.º 3
0
def add_default_taxonomies():
    taxonomies = [{
        'filename': '@@taxonomy-settings-categories-evenements',
        'name': 'categoriesevenements',
        'title': u'Catégories événements',
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-thematiques',
        'name': 'thematiques',
        'title': u'Thématiques',
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-types-activites',
        'name': 'types_activites',
        'title': u"Types d'activités",
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-types-organisations',
        'name': 'types_organisations',
        'title': u"Types d'organisations",
        'field_description': '',
        'default_language': 'fr'
    }]
    for tax in taxonomies:
        # TODO check if no taxonomy exist with same id
        portal = api.portal.get()
        taxonomy = registerTaxonomy(
            portal,
            name=tax['name'],
            title=tax['title'],
            description=tax['field_description'],
            default_language=tax['default_language']
        )

        # Import
        adapter = TaxonomyImportExportAdapter(portal)
        data_path = os.path.join(os.path.dirname(__file__), 'data')
        file_path = os.path.join(data_path, tax['filename'])
        data = open(file_path, 'r').read(),
        import_file = data[0]
        adapter.importDocument(taxonomy, import_file)
        del tax['filename']
        # {'field_description': None, 'title': u'Cat\xe9gorie', 'field_title': u'Cat\xe9gorie', 'description': None, 'is_required': False, 'default_language': u'fr', 'write_permission': None, 'is_single_select': False, 'name': 'collective.taxonomy.generated.categorievent'}
        # {'field_description': '', 'title': 'Cat\xc3\xa9gories \xc3\xa9v\xc3\xa9nements','description': '',  'is_required': False, 'default_language': 'fr', 'write_permission': None, 'is_single_select': False, 'name': 'collective.taxonomy.generated.categoriesevenements'}

        # {'field_description': None,
        # 'title': u'Cat\xe9gorie',
        tax['field_title'] = tax['title']
        # 'description': None,
        tax['is_required'] = False
        tax['write_permission'] = None
        tax['is_single_select'] = False
        # 'name': 'collective.taxonomy.generated.categorievent'}
        taxonomy.registerBehavior(**tax)
        logger.info('Taxonomy {0} imported'.format(tax['name']))
Ejemplo n.º 4
0
def add_default_taxonomies():
    taxonomies = [{
        'filename': '@@taxonomy-settings-categories-evenements',
        'name': 'categoriesevenements',
        'title': u'Catégories événements',
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-thematiques',
        'name': 'thematiques',
        'title': u'Thématiques',
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-types-activites',
        'name': 'types_activites',
        'title': u"Types d'activités",
        'field_description': '',
        'default_language': 'fr'
    }, {
        'filename': '@@taxonomy-settings-types-organisations',
        'name': 'types_organisations',
        'title': u"Types d'organisations",
        'field_description': '',
        'default_language': 'fr'
    }]
    for tax in taxonomies:
        # TODO check if no taxonomy exist with same id
        portal = api.portal.get()
        taxonomy = registerTaxonomy(portal,
                                    name=tax['name'],
                                    title=tax['title'],
                                    description=tax['field_description'],
                                    default_language=tax['default_language'])

        # Import
        adapter = TaxonomyImportExportAdapter(portal)
        data_path = os.path.join(os.path.dirname(__file__), 'data')
        file_path = os.path.join(data_path, tax['filename'])
        data = open(file_path, 'r').read(),
        import_file = data[0]
        adapter.importDocument(taxonomy, import_file)
        del tax['filename']
        # {'field_description': None, 'title': u'Cat\xe9gorie', 'field_title': u'Cat\xe9gorie', 'description': None, 'is_required': False, 'default_language': u'fr', 'write_permission': None, 'is_single_select': False, 'name': 'collective.taxonomy.generated.categorievent'}
        # {'field_description': '', 'title': 'Cat\xc3\xa9gories \xc3\xa9v\xc3\xa9nements','description': '',  'is_required': False, 'default_language': 'fr', 'write_permission': None, 'is_single_select': False, 'name': 'collective.taxonomy.generated.categoriesevenements'}

        # {'field_description': None,
        # 'title': u'Cat\xe9gorie',
        tax['field_title'] = tax['title']
        # 'description': None,
        tax['is_required'] = False
        tax['write_permission'] = None
        tax['is_single_select'] = False
        # 'name': 'collective.taxonomy.generated.categorievent'}
        taxonomy.registerBehavior(**tax)
        logger.info('Taxonomy {0} imported'.format(tax['name']))
Ejemplo n.º 5
0
def create_taxonomy_object(data_tax):
    taxonomy = registerTaxonomy(
        api.portal.get(),
        name=data_tax["taxonomy"],
        title=data_tax["field_title"],
        description=data_tax["field_description"],
        default_language=data_tax["default_language"],
    )

    del data_tax["taxonomy"]
    taxonomy.registerBehavior(**data_tax)
def importTaxonomy(context):
    directory = context.listDirectory('taxonomies/')

    if not directory:
        return

    for filename in directory:
        if filename.endswith('.xml'):
            continue

        if filename.endswith('.cfg'):
            data = context.readDataFile('taxonomies/' + filename)
            config = parseConfigFile(data)

            filename = 'taxonomies/' + filename.replace('.cfg', '.xml')
            body = context.readDataFile(filename)

            if body is not None:
                result = {}

                for name in [
                        'name', 'title', 'description', 'default_language'
                ]:
                    try:
                        result[name] = config.get('taxonomy', name)
                    except configparser.NoOptionError:
                        pass

                taxonomy = registerTaxonomy(context, **result)
                importer = TaxonomyImportExportAdapter(context)
                importer.importDocument(taxonomy, body)

                result = {}

                for name in [
                        'field_title', 'field_description', 'default_language',
                        'write_permission', 'taxonomy_fieldset'
                ]:
                    try:
                        result[name] = config.get('taxonomy', name)
                    except configparser.NoOptionError:
                        pass

                for name in ['is_single_select', 'is_required']:
                    try:
                        result[name] = config.get(
                            'taxonomy', name) == 'true' and True  # noqa: E501
                    except configparser.NoOptionError:
                        pass

                taxonomy.registerBehavior(**result)
Ejemplo n.º 7
0
def importTaxonomy(context):
    directory = context.listDirectory('taxonomies/')

    if not directory:
        return

    for filename in directory:
        if filename.endswith('.xml'):
            continue

        if filename.endswith('.cfg'):
            data = context.readDataFile('taxonomies/' + filename)
            config = parseConfigFile(data)

            filename = 'taxonomies/' + filename.replace('.cfg', '.xml')
            body = context.readDataFile(filename)
            if body is not None:
                result = {}
                for name in ['name', 'title',
                             'description', 'default_language']:
                    try:
                        result[name] = config.get('taxonomy', name)
                    except configparser.NoOptionError:
                        pass

                taxonomy = registerTaxonomy(
                    context,
                    **result
                )
                importer = TaxonomyImportExportAdapter(context)
                importer.importDocument(taxonomy, body)

                result = {}
                for name in ['field_title', 'field_description',
                             'default_language', 'write_permission',
                             'taxonomy_fieldset']:
                    try:
                        result[name] = config.get('taxonomy', name)
                    except configparser.NoOptionError:
                        pass

                for name in ['is_single_select', 'is_required']:
                    try:
                        result[name] = config.get('taxonomy', name) == 'true' and True  # noqa: E501
                    except configparser.NoOptionError:
                        pass

                taxonomy.registerBehavior(**result)
Ejemplo n.º 8
0
def create_taxonomy_object(data_tax, portal):
    taxonomy = registerTaxonomy(
        api.portal.get(),
        name=data_tax["taxonomy"],
        title=data_tax["field_title"],
        description=data_tax["field_description"],
        default_language=data_tax["default_language"],
    )

    adapter = TaxonomyImportExportAdapter(portal)
    data_path = os.path.join(os.path.dirname(__file__), "data")
    file_path = os.path.join(data_path, data_tax["filename"])
    data = (open(file_path, "r").read(), )
    import_file = data[0]
    adapter.importDocument(taxonomy, import_file)

    del data_tax["taxonomy"]
    del data_tax["filename"]
    taxonomy.registerBehavior(**data_tax)
Ejemplo n.º 9
0
def create_taxonomy_object(data_tax, portal):
    taxonomy = registerTaxonomy(
        api.portal.get(),
        name=data_tax["taxonomy"],
        title=data_tax["field_title"],
        description=data_tax["field_description"],
        default_language=data_tax["default_language"],
    )

    adapter = TaxonomyImportExportAdapter(portal)
    data_path = os.path.join(os.path.dirname(__file__), "data")
    file_path = os.path.join(data_path, data_tax["filename"])
    data = (open(file_path, "r").read(),)
    import_file = data[0]
    adapter.importDocument(taxonomy, import_file)

    del data_tax["taxonomy"]
    del data_tax["filename"]
    taxonomy.registerBehavior(**data_tax)
Ejemplo n.º 10
0
def post_install(context):
    """ Post install script
    """
    site = context.aq_parent
    language = 'en'
    if IS_PLONE_4:
        directory = '/profiles/plone4imports/'
    else:
        directory = '/profiles/plone5imports/'

    for name, title in TAXONOMIES.items():
        taxonomy = registerTaxonomy(site, name, title, language,
                                    'Created at install')
        path = os.path.dirname(os.path.realpath(__file__))
        path += directory + name + '.xml'

        with open(path) as xmlfile:
            data = xmlfile.read().encode()
            import_adapter = TaxonomyImportExportAdapter(site)
            import_adapter.importDocument(taxonomy, data)