def add_processing_module(self, module):
        m = get_class(module['path'], module['class'])
        if m:
            m.info = module
            self._modules['Processing'][module['name']] = m

            self._add_module_options(module)
            self._add_module_permissions(module)

            # Add module to transform if 'generates' is defined
            if module['generates']:
                self._add_transforms(module)

            # Add module to triggers if 'triggered_by' is defined
            if module['triggered_by']:
                self._add_module_triggers(module)
            # Otherwise, add to general purpose modules
            else:
                self._general.append(module['name'])
                # Also, if module acts on specific file type, add a specific trigger
                if module['acts_on']:
                    for source_type in iterify(module['acts_on']):
                        self._add_trigger(self._triggers,
                                          "_generated_file(%s)" % source_type,
                                          module)
 def add_module(self, module):
     m = get_class(module['path'], module['class'])
     if m:
         m.info = module
         try:
             m = m()
             if m and m.initialize():
                 self._modules[module['type']].append(m)
         except Exception, e:
             print "Could not initialize module '{0}': {1}".format(
                 module['name'], e)
Beispiel #3
0
    def enable(self, id):
        """Enable a module

        .. :quickref: Module; Enable a module

        Requires the `manage_modules` permission.

        If successful, will return the module in ``module``.
        Otherwise, errors will be available in ``errors``.

        :param id: id of the module to enable.
        """
        module = ModuleInfo(get_or_404(ModuleInfo.get_collection(), _id=id))

        if 'error' in module:
            flash(
                "Cannot enable '{}' because of errors installing dependencies."
                .format(module['name']), 'danger')
            return validation_error(url_for('ModulesView:index'))

        # See if module is properly configured
        module_class = get_class(module['path'], module['class'])
        module_class.info = module
        try:
            module_class()
        except MissingConfiguration as e:
            if e.name:
                flash(
                    "You must configure '{}' before trying to enable '{}'".
                    format(e.name, module['name']), 'warning')
                return validation_error(
                    url_for('ModulesView:configuration', id=e.id))
            else:
                flash(
                    "You must configure '{}' before trying to enable it.".
                    format(module['name']), 'warning')
                return validation_error(
                    url_for('ModulesView:configure', id=module['_id']))

        module.update_value('enabled', True)
        dispatcher.reload()

        readme = module.get_readme()
        if readme:
            flash(readme, 'persistent')

        return redirect({'module': clean_modules(module)},
                        url_for('ModulesView:index'))
    def add_filetype_module(self, module):
        def add_one(acts_on, module):
            if acts_on not in self._modules['Filetype']:
                self._modules['Filetype'][acts_on] = []

            self._modules['Filetype'][acts_on].append(module)

        m = get_class(module['path'], module['class'])

        if m:
            m.info = module
            try:
                m = m()
                if m and m.initialize():
                    if len(module['acts_on']) == 0:
                        add_one('*', m)
                    else:
                        for acts_on in module['acts_on']:
                            add_one(acts_on, m)
            except Exception, e:
                print "Could not initialize module '{0}': {1}".format(
                    module['name'], e)
 def add_preloading_module(self, module):
     m = get_class(module['path'], module['class'])
     if m:
         m.info = module
         self._add_module_options(module)
         self._modules['Preloading'].append(m)
    def add_virtualization_module(self, module):
        m = get_class(module['path'], module['class'])

        if m:
            m.info = module
            self._modules['Virtualization'].append(m)