Exemple #1
0
    def __init__(self, name, settings=None):
        super(ArtellaProject, self).__init__()

        self._tray = None

        clean_name = self._get_clean_name(name)

        # Register project configurations
        try:
            project_config_mod = importlib.import_module(
                '{}.config'.format(clean_name))
            tp.ConfigsMgr().register_package_configs(
                clean_name, os.path.dirname(project_config_mod.__file__))
        except RuntimeError:
            artellapipe.logger.warning(
                'No Configuration Module found for project: {}'.format(
                    clean_name))

        self._config = tp.ConfigsMgr().get_config(
            config_name='artellapipe-project',
            package_name=clean_name,
            root_package_name='artellapipe',
            environment=os.environ.get(
                '{}_env'.format(self._get_clean_name(name)), 'DEVELOPMENT'),
            config_dict={
                'title': clean_name.title(),
                'project_lower': clean_name.replace(' ', '').lower(),
                'project_upper': clean_name.replace(' ', '').upper(),
            })
        self._config_data = self._config.data

        self._settings = settings
        self.init_settings()
Exemple #2
0
def register_configs():
    """
    Registers aretellapipe configuration files
    """

    import tpDcc as tp
    from artellapipe import config

    artella_configs_path = os.environ.get('ARTELLA_CONFIGS_PATH', None)
    if artella_configs_path and os.path.isdir(artella_configs_path):
        tp.ConfigsMgr().register_package_configs('artellapipe',
                                                 artella_configs_path)
    else:
        tp.ConfigsMgr().register_package_configs(
            'artellapipe', os.path.dirname(config.__file__))
    def __init__(self,
                 project,
                 install_path,
                 paths_to_register=None,
                 tag=None,
                 dev=False):

        self._logger = None
        self._name = None
        self._version = None
        self._plugins = None
        self._install_path = install_path
        self._paths_to_register = paths_to_register if paths_to_register else list(
        )
        self._tag = tag
        self._dev = dev

        self._set_environment_variables(project)

        config = tpDcc.ConfigsMgr().get_config(
            config_name='artellapipe-launcher',
            package_name=project.get_clean_name(),
            root_package_name='artellapipe',
            environment=project.get_environment())

        super(ArtellaLauncher, self).__init__(project=project,
                                              name='ArtellaLauncherWindow',
                                              title='Launcher',
                                              config=config)

        self.init_config()
        self._logger = self.create_logger()[1]

        self.init()
Exemple #4
0
    def config(self):
        if not self.__class__._config:
            self.__class__._config = tp.ConfigsMgr().get_config(
                config_name='artellapipe-assets',
                package_name=artellapipe.project.get_clean_name(),
                root_package_name='artellapipe',
                environment=artellapipe.project.get_environment())

        return self.__class__._config
Exemple #5
0
    def _create_lib_config(self, project_name, lib_path, project, config_dict):
        lib_config = tpDcc.ConfigsMgr().get_config(
            config_name=lib_path.replace('.', '-'),
            package_name=project_name,
            root_package_name='artellapipe',
            environment=project.get_environment(),
            config_dict=config_dict)

        return lib_config
    def __init__(self, project, launcher, parent=None):

        self._dccs = dict()
        self._splash = None
        self._departments = dict()
        self._selected_dcc = None
        self._selected_version = None

        self._config = tpDcc.ConfigsMgr().get_config(
            config_name='artellapipe-launcher-plugins-dccselector',
            package_name=project.get_clean_name(),
            root_package_name='artellapipe',
            environment=project.get_environment())

        super(DCCSelector, self).__init__(project=project,
                                          launcher=launcher,
                                          parent=parent)
Exemple #7
0
    def __init__(self, *args, **kwargs):

        self._project = kwargs.pop('project')
        project_name = self._project.get_clean_name()
        config_name = self.FULL_NAME.replace('.', '-')
        config_dict = kwargs.get('config_dict', dict())
        config_dict.update({
            'join': os.path.join,
            'user': os.path.expanduser('~'),
            'filename': self.FILE_NAME,
            'fullname': self.FULL_NAME,
            'project': project_name
        })
        new_config = tpDcc.ConfigsMgr().get_config(
            config_name=config_name,
            package_name=project_name,
            root_package_name='artellapipe',
            environment=self._project.get_environment(),
            config_dict=config_dict)
        kwargs['config'] = new_config

        super(ArtellaTool, self).__init__(*args, **kwargs)
    def process(self, instance):

        if not instance.data.get('publish', False):
            return False

        project = instance.data.get('project', None)
        assert project, 'No valid project defined in current instance: {}'.format(
            instance)

        shots_config = tp.ConfigsMgr().get_config(
            config_name='artellapipe-shots')

        assert shots_config, 'No valid shots configuration file found in current instance: {}'.format(
            instance)

        shot_node = instance.data.get('shot', None)
        assert shot_node, 'No valid shot node found in current instance: {}'.format(
            instance)

        # Retrieve master layout file path
        sequence_name = shot_node.get_sequence()
        assert sequence_name, 'No valid sequence name found linked to current instance: {}'.format(
            instance)
        sequence = artellapipe.SequencesMgr().find_sequence(sequence_name)
        assert sequence, 'No valid sequence found linked to current instance: {}'.format(
            instance)
        sequence_file_type = sequence.get_file_type('master')
        assert sequence, 'File type "master" not found in current project'
        sequence_file_type.open_file()

        shot_name = shot_node.get_name()
        assert tp.Dcc.object_exists(
            shot_name), 'No valid shot found in current instance: {}'.format(
                instance)

        all_shots = artellapipe.ShotsMgr().find_all_shots()
        assert all_shots, 'No shots defined in current project!'

        start_frame = shots_config.get('start_frame', default=101)

        found = False
        for shot in all_shots:
            if shot.get_name() == shot_name:
                found = True
                break
        assert found, 'Shot with name: "{}" not found in current sequence!'.format(
            shot_name)

        new_version = bool(
            util.strtobool(
                os.environ.get(
                    '{}_SEQUENCES_PUBLISHER_NEW_VERSION'.format(
                        project.get_clean_name().upper()), 'False')))
        base_comment = '{} | {} | Sequences Publisher > Shot "{}" Export'.format(
            timedate.get_current_time(), osplatform.get_user(True), shot_name)
        comment = instance.data.get('comment', None)
        if comment:
            base_comment = '{} | {}'.format(base_comment, comment)

        valid_export = artellapipe.ShotsMgr().export_shot(
            shot_name,
            start_frame=start_frame,
            new_version=new_version,
            comment=base_comment)
        assert valid_export, 'Shot with name "{}" was not exported successfully!'.format(
            shot_name)

        return True
Exemple #9
0
    def create_menus(self, package_name, project=None):
        """
        Overrides base ToolsManager create menus function
        :param package_name: str
        :param project: ArtellaProject
        """

        if not project:
            if hasattr(artellapipe, 'project') and artellapipe.project:
                project = artellapipe.project
        if not project:
            artellapipe.logger.warning(
                'Impossible to create menu because project is not defined!')
            return False

        self._menu_names[package_name] = project.config.get('menu', 'name')
        self._object_menu_names[package_name] = project.config.get(
            'menu', 'object_name')

        self.remove_previous_menus(project=project, package_name=package_name)
        self.create_project_description_menu(package_name=package_name,
                                             project=project)
        main_menu = self.create_main_menu(package_name=package_name)
        if not main_menu:
            artellapipe.logger.warning(
                'Impossible to create main menu for "{}"'.format(package_name))
            return False

        menus_config = tpDcc.ConfigsMgr().get_config(
            config_name='artellapipe-menu',
            package_name=project.get_clean_name(),
            root_package_name='artellapipe',
            environment=project.get_environment())
        if not menus_config:
            artellapipe.logger.warning(
                'Impossible to create menu for project "{}" because menu configuration file not found!'
                .format(project.get_clean_name()))
            return False

        menus_config = menus_config.get('menus', default=list())
        if menus_config:
            for menu_data in menus_config:
                for _, data in menu_data.items():
                    for i in iter(data):
                        if python.is_string(i) and i == 'separator':
                            main_menu.addSeparator()
                            continue
                        self._menu_creator(main_menu,
                                           i,
                                           project.get_clean_name(),
                                           dev=project.is_dev())

        # Tools Menus
        tools_menu_data = self.get_tools_menus() or dict()
        for pkg_name, menu_data in tools_menu_data.items():
            for tool_path, data in menu_data.items():
                for i in iter(data):
                    if python.is_string(i) and i == 'separator':
                        main_menu.addSeparator()
                        continue
                    self._menu_creator(main_menu,
                                       i,
                                       project.get_clean_name(),
                                       dev=project.is_dev())

        self.create_tray_menu(project=project)
        self.create_bug_tracker_action(package_name=package_name)

        return True