class ItemFactory:
    attributes_constant = -1  # should be overridden

    def __init__(self, projects_roots=False):
        if not projects_roots:
            projects_roots = (settings.PARSLEY_CONTRIBUTED_PROJECTS_ROOT, settings.PARSLEY_CORE_PROJECTS_ROOT)
        self.projects_roots = projects_roots
        self._create_item_class()

    def _create_item_class(self):
        if self.attributes_constant <= -1:
            raise Exception("Item Factory fields should be overridden")
        self.item = ModuleInfoItem(self.attributes_constant)
        self.supported_parameters = self.item.getSupportedParameters(self.attributes_constant)

    def _get_modules_info_file_objects(self):
        for major_version in settings.PARSLEY_SUPPORTED_MAJOR_VERSIONS:
            Git().checkout_all_projects(major_version)
            for projects_root in self.projects_roots:
                is_core_project = projects_root == settings.PARSLEY_CORE_PROJECTS_ROOT
                projects = ProjectsRoot(projects_root, major_version, is_core_project)
                for obj in projects.getModuleInfoFileObjects():
                    yield obj

    def get_items(self):
        for info in self._get_modules_info_file_objects():
            for item in self.get_items_from_info_file_object(info):
                yield item

    def get_items_from_info_file_object(self, info):
        raise NotImplementedError("ItemFactory.extractItems() should be implemented")
class ItemFactory:
    attributes_constant = -1  # should be overridden

    def __init__(self, projects_roots=False):
        if not projects_roots:
            projects_roots = (
                settings.PARSLEY_CONTRIBUTED_PROJECTS_ROOT,
                settings.PARSLEY_CORE_PROJECTS_ROOT,
            )
        self.projects_roots = projects_roots
        self._create_item_class()

    def _create_item_class(self):
        if self.attributes_constant <= -1:
            raise Exception("Item Factory fields should be overridden")
        self.item = ModuleInfoItem(self.attributes_constant)
        self.supported_parameters = self.item.getSupportedParameters(
            self.attributes_constant)

    def _get_modules_info_file_objects(self):
        for major_version in settings.PARSLEY_SUPPORTED_MAJOR_VERSIONS:
            Git().checkout_all_projects(major_version)
            for projects_root in self.projects_roots:
                is_core_project = projects_root == settings.PARSLEY_CORE_PROJECTS_ROOT
                projects = ProjectsRoot(projects_root, major_version,
                                        is_core_project)
                for obj in projects.getModuleInfoFileObjects():
                    yield obj

    def get_items(self):
        for info in self._get_modules_info_file_objects():
            for item in self.get_items_from_info_file_object(info):
                yield item

    def get_items_from_info_file_object(self, info):
        raise NotImplementedError(
            'ItemFactory.extractItems() should be implemented')
 def _create_item_class(self):
     if self.attributes_constant <= -1:
         raise Exception("Item Factory fields should be overridden")
     self.item = ModuleInfoItem(self.attributes_constant)
     self.supported_parameters = self.item.getSupportedParameters(
         self.attributes_constant)
 def _create_item_class(self):
     if self.attributes_constant <= -1:
         raise Exception("Item Factory fields should be overridden")
     self.item = ModuleInfoItem(self.attributes_constant)
     self.supported_parameters = self.item.getSupportedParameters(self.attributes_constant)