Пример #1
0
    def runImportStepFromProfile(self,
                                 profile_id,
                                 step_id,
                                 run_dependencies=True,
                                 purge_old=None):
        """ See ISetupTool.
        """
        old_context = self._import_context_id
        context = self._getImportContext(profile_id, purge_old)

        self.applyContext(context)

        info = self.getImportStepMetadata(step_id)

        if info is None:
            self._import_context_id = old_context
            raise ValueError, 'No such import step: %s' % step_id

        dependencies = info.get('dependencies', ())

        messages = {}
        steps = []

        if run_dependencies:
            for dependency in dependencies:
                if dependency not in steps:
                    steps.append(dependency)
        steps.append(step_id)

        full_import = (set(steps) == set(self.getSortedImportSteps()))
        event.notify(
            BeforeProfileImportEvent(self, profile_id, steps, full_import))

        for step in steps:
            message = self._doRunImportStep(step, context)
            messages[step] = message or ''

        message_list = filter(None, [message])
        message_list.extend(['%s: %s' % x[1:] for x in context.listNotes()])
        messages[step_id] = '\n'.join(message_list)

        self._import_context_id = old_context

        event.notify(ProfileImportedEvent(self, profile_id, steps,
                                          full_import))

        return {'steps': steps, 'messages': messages}
Пример #2
0
        results = []

        detect_steps = steps is None

        for profile_id in chain:
            context = self._getImportContext(profile_id, purge_old, archive)
            self.applyContext(context)

            if detect_steps:
                steps = self.getSortedImportSteps()

            messages = {}

            event.notify(
                BeforeProfileImportEvent(self, profile_id, steps, True))
            for step in steps:
                message = self._doRunImportStep(step, context)
                message_list = filter(None, [message])
                message_list.extend(
                    ['%s: %s' % x[1:] for x in context.listNotes()])
                messages[step] = '\n'.join(message_list)
                context.clearNotes()

            event.notify(ProfileImportedEvent(self, profile_id, steps, True))

            results.append({'steps': steps, 'messages': messages})

        data = {'steps': [], 'messages': {}}
        for result in results:
            for step in result['steps']: