Skip to content

Commit

Permalink
Keep adding functions to Artella Indie and Enterprise interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
tpoveda committed Aug 24, 2020
1 parent 7baaf59 commit 7c3b3c7
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 29 deletions.
91 changes: 91 additions & 0 deletions artellapipe/libs/artella/core/artellaenterprise.py
Expand Up @@ -15,12 +15,15 @@
import os
import logging
import traceback
import subprocess
from collections import OrderedDict

import tpDcc as tp
from tpDcc.libs.python import osplatform
from tpDcc.libs.qt.core import qtutils

import artellapipe
from artellapipe.libs import artella as artella_lib
from artellapipe.libs.artella.core import artellaclasses

LOGGER = logging.getLogger('artellapipe-libs-artella')
Expand All @@ -35,6 +38,94 @@ def init(dev=False):
artella.loader.init(dev=dev, create_menu=False, create_callbacks=False)


def get_artella_data_folder():
"""
Returns last version Artella folder installation
:return: str
"""

if osplatform.is_mac():
artella_folder = os.path.join(os.path.expanduser('~/Library/Application Support/'), 'Artella')
elif osplatform.is_windows():
artella_folder = os.path.join(os.getenv('ProgramFiles(x86)'), 'Artella')
else:
return None

LOGGER.debug('ARTELLA FOLDER: {}'.format(artella_folder))
if not os.path.exists(artella_folder):
qtutils.show_info(
None, 'Artella Folder not found!',
'Artella App Folder {} does not exists! Make sure that Artella is installed in your computer!')

return artella_folder


def update_artella_paths():
"""
Updates system path to add artella paths if they are not already added
:return:
"""

return None


def launch_artella_app():
"""
Executes Artella App
"""

if osplatform.is_mac():
artella_app_file = get_artella_app()
elif osplatform.is_windows():
artella_app_file = get_artella_app() + '.exe'
else:
qtutils.show_warning(
None,
'Platform not supported',
'Current platform is not supported by Artella App: {}'.format(osplatform.get_sys_platform())
)
return

artella_app_file = artella_app_file
LOGGER.info('Artella App File: {0}'.format(artella_app_file))

if os.path.isfile(artella_app_file):
LOGGER.info('Launching Artella App ...')
LOGGER.debug('Artella App File: {0}'.format(artella_app_file))

subprocess.Popen(
['cmd.exe', '/C', artella_app_file.replace('\\', '//')],
stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)

# This will open Artella Drive with command window
# subprocess.Popen(
# ['cmd.exe', '/C', artella_app_file.replace('\\', '//')],
# creationflags=subprocess.CREATE_NEW_CONSOLE
# )


def get_artella_app():
"""
Returns path where Artella path is installed
:return: str
"""

artella_app_name = artella_lib.config.get('app', 'enterprise').get('name')
if osplatform.is_windows():
artella_folder = get_artella_data_folder()
return os.path.join(artella_folder, artella_app_name)
elif osplatform.is_mac():
artella_folder = '/System/Applications'
return os.path.join(artella_folder, 'Artella Drive.app')
else:
qtutils.show_warning(
None,
'Platform not supported',
'Current platform is not supported by Artella App: {}'.format(osplatform.get_sys_platform())
)
return ''


def update_local_artella_root():
"""
Updates the environment variable that stores the Artella Local Path
Expand Down
66 changes: 37 additions & 29 deletions artellapipe/libs/artella/core/artellaindie.py
Expand Up @@ -110,7 +110,7 @@ def get_artella_data_folder():
else:
return None

next_version = artella_lib.config.get('app', 'next_version_filename')
next_version = artella_lib.config.get('app', 'indie').get('next_version_filename', '')
artella_app_version = None
version_file = os.path.join(artella_folder, next_version)
if os.path.isfile(version_file):
Expand Down Expand Up @@ -187,10 +187,20 @@ def get_artella_app():
:return: str
"""

artella_folder = os.path.dirname(get_artella_data_folder())
artella_app_name = artella_lib.config.get('app', 'name')

return os.path.join(artella_folder, artella_app_name)
artella_app_name = artella_lib.config.get('app', 'indie').get('name', 'artella')
if osplatform.is_windows():
artella_folder = os.path.dirname(get_artella_data_folder())
return os.path.join(artella_folder, artella_app_name)
elif osplatform.is_mac():
artella_folder = os.path.dirname(get_artella_data_folder())
return os.path.join(artella_folder, artella_app_name)
else:
qtutils.show_warning(
None,
'Platform not supported',
'Current platform is not supported by Artella App: {}'.format(osplatform.get_sys_platform())
)
return ''


def get_artella_program_folder():
Expand Down Expand Up @@ -220,20 +230,17 @@ def launch_artella_app():
Executes Artella App
"""

# TODO: This should not work in MAC, find a cross-platform way of doing this

if os.name == 'mac':
LOGGER.info('Launch Artella App: does not supports MAC yet')
qtutils.show_info(
None,
'Not supported in MAC',
'Artella Pipeline do not support automatically Artella Launch for Mac. '
'Please close Maya, launch Artella manually, and start Maya again!')
if osplatform.is_mac():
artella_app_file = get_artella_app() + '.bundle'
else:
# Executing Artella executable directly does not work
# artella_app_file = get_artella_app() + '.exe'
elif osplatform.is_windows():
artella_app_file = get_artella_launch_shortcut()
else:
qtutils.show_warning(
None,
'Platform not supported',
'Current platform is not supported by Artella App: {}'.format(osplatform.get_sys_platform())
)
return

artella_app_file = artella_app_file
LOGGER.info('Artella App File: {0}'.format(artella_app_file))
Expand All @@ -250,8 +257,7 @@ def close_all_artella_app_processes():
:return:
"""

artella_app_name = artella_lib.config.get('app', 'name')

artella_app_name = artella_lib.config.get('app', 'indie').get('name', 'artella')
psutil_available = False
try:
import psutil
Expand Down Expand Up @@ -345,15 +351,17 @@ def load_artella_maya_plugin():
:return: bool
"""

if tp.is_maya():
artella_plugin_name = artella_lib.config.get('app', 'plugin')
LOGGER.debug('Loading Artella Maya Plugin: {} ...'.format(artella_plugin_name))
artella_maya_plugin_folder = get_artella_dcc_plugin(dcc='maya')
artella_maya_plugin_file = os.path.join(artella_maya_plugin_folder, artella_plugin_name)
if os.path.isfile(artella_maya_plugin_file):
if not tp.Dcc.is_plugin_loaded(artella_plugin_name):
tp.Dcc.load_plugin(artella_maya_plugin_file)
return True
if not tp.is_maya():
return False

artella_plugin_name = artella_lib.config.get('app', 'indie').get('plugin', '')
LOGGER.debug('Loading Artella Maya Plugin: {} ...'.format(artella_plugin_name))
artella_maya_plugin_folder = get_artella_dcc_plugin(dcc='maya')
artella_maya_plugin_file = os.path.join(artella_maya_plugin_folder, artella_plugin_name)
if os.path.isfile(artella_maya_plugin_file):
if not tp.Dcc.is_plugin_loaded(artella_plugin_name):
tp.Dcc.load_plugin(artella_maya_plugin_file)
return True

return False

Expand Down Expand Up @@ -400,7 +408,7 @@ def fix_path_by_project(project, path, fullpath=False):
:return: str
"""

artella_root_prefix = artella_lib.config.get('app', 'root_prefix')
artella_root_prefix = artella_lib.config.get('app', 'indie').get('root_prefix', 'ART_LOCAL_ROOT')
project_path = project.get_path()
new_path = path.replace(project_path, '${}\\'.format(artella_root_prefix))
if fullpath:
Expand Down

0 comments on commit 7c3b3c7

Please sign in to comment.