Coder Social home page Coder Social logo

southpaw-tactic / tactic Goto Github PK

View Code? Open in Web Editor NEW
483.0 84.0 165.0 178.89 MB

Open source remote collaboration platform used for configuring and deploying enterprise Workflow solutions.

Home Page: http://tactic.southpawtech.com

License: Eclipse Public License 1.0

HTML 0.70% Python 41.60% Java 0.59% JavaScript 50.60% Shell 0.04% CSS 4.49% PHP 0.01% PLpgSQL 0.73% Batchfile 0.01% Less 0.59% SCSS 0.65%
workflow digital-assets workflow-engine web-platform workflow-automation vfx visual-effects remote-collaboration

tactic's Introduction

Workflow Platform

TACTIC is an open-source remote collaboration platform used for configuring and deploying enterprise Workflow solutions. These solutions simplify the development and delivery of digital assets through a well defined set of processes. This is accomplished by integrating a core Workflow Engine with Digital Asset Management and Content Management components to provide a complete platform for individualized enterprise Workflow solutions

Features

TACTIC has a number of key components:

  • Workflow Engine and Manager:

  • Data Management

  • Digital Asset Manager

  • Web Framework

Contribute

We are always encouraging people to contribute to the project. This can be in any form starting from asking a question, requesting a feature to fixing bugs or adding new features. We always welcome feedback as that is the driving force that gives us direction on where to go. If you do make any changes to the code, please use your own fork and submit a pull request.

Installation

You can download the latest distributions from any of number of formats from the community downloads

or you can access earlier versions

For detailed installation instructions, the TACTIC System Administration documentation is useful

Getting Started

Getting started is easy. You can start up quickly with an official VM distribution which has the database and webserver all setup for you. Refer to the Quick Start Guide for more information:

Documentation

Detailed documentation can be found on the community site.

There documentation is split in different sections that focus on different aspects of TACTIC:

  1. Quick Start: quick overview of how what to do to get up and running
  2. System Administration: detailed description of installation and connections to database and other external services.
  3. Setup: description of how to set up a TACTIC project for end users to work on.
  4. Developer: documention for developers to customize TACTIC and access the API.

API

TACTIC has a very deep and mature API allow you to customize almost any part of the system.

Python Example

from tactic_client_lib import TacticServerStub
server = TacticServerStub.get()
shots = server.query("vfx/shot", ['sequence_code', 'SEQ001'])
for shot in shots:
    print("shot: ", shot.get("status") )

Javascript Example

let server = TACTIC.get();
server.update(shot_key, {'status', 'Complete'})

Complete documentation can be found on the TACTIC Developer Documentation

Resources

For more information, visit the community site for TACTIC.

Or participate in the TACTIC forum if you have any questions.

There is also a collection of YouTube videos that you can browser through.

Visual Effects (VFX)

TACTIC has a built-in VFX module that has been used as a template for countless productions around the world. Over the years, it's popularity has grown considerably and more and more people become familiar with TACTIC features. Because TACTIC is Open Source, it can configured and connected seamleassly into any studio producing content.

Shot Status and Tracking

Video Review

A Simple Shot Workflow

Predefined and configurable data model

Easily start up your production by creating a project with TACTIC nad selecting the VFX template. Create your own template and reuse your own template for all future productions.

License

Eclipse Public License 1.0

tactic's People

Contributors

alberttam avatar celtonmcgrath avatar christina-kang avatar diegocortassa avatar dmalikspaw avatar erjin avatar frankxuuu avatar fredsakr avatar hjoonchoi avatar hsuchie4 avatar iamsamwhite avatar jiachenyu15 avatar jmenech avatar kenvinlee avatar lhousehold avatar listyque avatar lwinmoe avatar magicreddeer avatar menechel avatar michael0718 avatar mvmram avatar oboreo avatar pranoyde avatar remkonoteboom avatar ruduran avatar ryandzy avatar shivamthareja25 avatar sophattack avatar swarnad avatar ttoaster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tactic's Issues

Some warnings.

WARNING CherryPyStartup: 'Index' object has no attribute 'plugins'
WARNING:
status: 404 Not Found
message: The path '/tactic/plugins/pdfjs/build/pdf.js' was not found.
site:
project_code: plugins
ERROR: 'ActionButtonWdg' object has no attribute 'add_event'
WARNING CherryPyStartup: 'Index' object has no attribute 'plugins'
WARNING:
status: 404 Not Found
message: The path '/tactic/plugins/pdfjs/web/viewer.js' was not found.
site:
project_code: plugins
ERROR: 'ActionButtonWdg' object has no attribute 'add_event'

Edit sthpw/search_object puts random color in color input

Describe the bug
When you try to edit Search Objects table with Edit menu it puts any color in Edit Line input

To Reproduce
Steps to reproduce the behavior:

  1. Go to sthpw/search_object table
  2. Right click on any item > Edit
  3. Look for Color
  4. See random color (even if there is no color on item in db)

Expected behavior
Color which belongs to search type or blank if color not set

Sidebar blanks out when managing sidebar

Issue: Sidebar appears blank after managing sidebar
Steps to reproduce: Go to TACTIC Admin -> Project -> Manage sidebar. Change ordering or add/delete items, and press save.

sidebar_bug

DiscussionWdg should refresh or provide user feedback after adding a note.

Describe the bug
When I add a note using the DiscussionElementWdg (Note column widget), the note is added into the database, and available on refresh. However, I think the DiscussionWdg should provide some kind feedback to the user.

To Reproduce
Steps to reproduce the behavior:

  1. Go to any table with note column.
  2. Click Add Notes, type note and click "Add Note"

Expected behavior
DiscussionWdg refreshes and new note appears in list.

Screenshots
See attached [GIF.](url
discussionwdg
)

In 4.8 Schema also do not bring dialogs when i try to connect nodes!

Uncaught TypeError: Cannot read property 'getElement' of null
at run_bvr (eval at spt.behavior.run_cbjs (behavior.js?ver=4.8.0.a01:254), :21:22)
at Object.spt.behavior.run_cbjs (behavior.js?ver=4.8.0.a01:259)
at Object.spt.named_events._execute_listeners (events.js?ver=4.8.0.a01:153)
at Object.spt.named_events.fire_event (events.js?ver=4.8.0.a01:224)
at Object.spt.pipeline.drag_connector_action (eval at spt.behavior.run_cbjs (behavior.js?ver=4.8.0.a01:254), :1628:18)
at eval (eval at spt.behavior.run_callback_fn (behavior.js?ver=4.8.0.a01:310), :1:60)
at Object.spt.behavior.run_callback_fn (behavior.js?ver=4.8.0.a01:310)
at HTMLDocument.up_handler (mouse.js?ver=4.8.0.a01:646)

Icon generator does not fully respect naming.

Describe the bug
When i checkin my mp4 files, tactic tries to generate preview and icon files. Unfortunately it does not fully respect all naming rules. For example, i have my previews and icons in different folders, but icon generator creates files in the same folder with mp4. And also strange results with the vesionless.
Something similar happening when tactic tries to generate versionless for jpg's.
versionsnaphsot:

<snapshot timestamp="Sat Jun  6 20:39:46 2020" context="animation" search_key="tvs/episode?project=aquariki&code=EPISODE00003" login="admin" checkin_type="strict">
  <file file_code="FILE00030018" name="Episode Pilot_animation_v001.mp4" type="main"/>
  <file file_code="FILE00030020" name="Episode Pilot_animation_v001_web.jpg" type="web" use_naming="false"/>
  <file file_code="FILE00030021" name="Episode Pilot_animation_v001_icon.png" type="icon" use_naming="false"/>
</snapshot>

Versionless snapshot (note, there is duplicated icons and web):

<snapshot ref_snapshot_code="SNAPSHOT00006477" timestamp="Sat Jun  6 20:39:47 2020" context="animation" search_key="tvs/episode?project=aquariki&code=EPISODE00003" login="admin" checkin_type="strict">
  <file file_code="FILE00030022" name="Episode Pilot_animation.mp4" type="main"/>
  <file file_code="FILE00030023" name="Episode Pilot_animation_web.jpg" type="web"/>
  <file file_code="FILE00030024" name="Episode Pilot_animation_icon.png" type="icon"/>
  <file file_code="FILE00030025" name="Episode Pilot_animation_web.jpg" type="web" use_naming="false"/>
  <file file_code="FILE00030026" name="Episode Pilot_animation_icon.png" type="icon" use_naming="false"/>
</snapshot>

To Reproduce
Steps to reproduce the behavior:
Naming for folders:
{project.code}/episodes/{sobject.name}/renders{@case( @get(file.type) == 'playblast', '/'+'__preview', @get(file.type) == 'web', '/'+'__preview/web', @get(file.type) == 'icon', '/'+'__preview/icon')

  1. Checkin any avi or mp4
  2. Wait until previews generated
  3. Look for the files results

Expected behavior
Files generated should respect naming expressions.

Plugin Creator: Not able to upload files

Can`t upload files into plugin creator. Message error: "module 'string' has no attribute 'lower'"

To Reproduce1
Steps to reproduce the behavior:

  1. Clic on Plugins inside Project menu
  2. Click on + to create plugin
  3. Go to FILES
  4. Click ib UPLOAD FILE
  5. Error message "module 'string' has no attribute 'lower" pops up

Expected behavior
Upload spt files

Stack Trace
Starting TACTIC v4.8.0.b01 ...

IS UPLOAD
DEPRECATED: dynamic file in app_server.py
num_files: 1
files: ['/opt/tactic/tactic_temp/upload/93625e37a20f3f8f5f2/LaSP_planos.spt']

user: admin
timestamp: 2020-06-02 17:08:25
method: execute_cmd
ticket: 93625e37a20f3f8f5f2
( 'tactic.ui.app.PluginDirListActionCbk',
{ 'action': 'upload',
'dirname': 'ramon_plugin_stypes_001',
'upload_file_name': 'LaSP_planos.spt'},
{},
{})
Error: module 'string' has no attribute 'lower'

File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5802, in execute_cmd
Command.execute_cmd(cmd)
File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/tactic/ui/app/plugin_wdg.py", line 2681, in execute
basename = File.get_filesystem_name(basename)
File "/opt/tactic/tactic/src/pyasm/biz/file.py", line 388, in get_filesystem_name
ext = string.lower(ext)

Error: module 'string' has no attribute 'lower'


From ExceptionLog.log

File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5802, in execute_cmd
Command.execute_cmd(cmd)
File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/tactic/ui/app/plugin_wdg.py", line 2681, in execute
basename = File.get_filesystem_name(basename)
File "/opt/tactic/tactic/src/pyasm/biz/file.py", line 388, in get_filesystem_name
ext = string.lower(ext)

module 'string' has no attribute 'lower'


File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 583, in new
cmd.execute_cmd(cmd)
File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5802, in execute_cmd
Command.execute_cmd(cmd)
File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/tactic/ui/app/plugin_wdg.py", line 2681, in execute
basename = File.get_filesystem_name(basename)
File "/opt/tactic/tactic/src/pyasm/biz/file.py", line 388, in get_filesystem_name
ext = string.lower(ext)

Error: module 'string' has no attribute 'lower'

request_id: 139714472437504 - #1
timestamp: 2020-06-02 17:08:25
user: admin
simple method: <function ApiXMLRPC.get_widget at 0x7f11e73ff200>
ticket: 93625e37a20f3f8f5f2
( 'tactic.ui.app.plugin_wdg.PluginEditWdg',
{ 'args': { 'dirname': 'ramon_plugin_stypes_001',
'is_refresh': 'true',
'plugin_dir': '/opt/tactic/tactic_data/plugins/ramon_plugin_stypes_001',
'selected': 'files'},
'libraries': { 'spt_button': True,
'spt_calendar': True,
'spt_help': True,
'spt_html5upload': True,
'spt_icon_button': True,
'spt_mobile_table': True,
'spt_popup': True,
'spt_tab': True,
'spt_table': True,
'spt_view_panel': True},
'values': { 'Upload': 'LaSP_planos.spt',
'code': 'ramon_plugin_stypes_001',
'description': 'Genera los sTypes necesarios para un '
'proyecto de RAMON',
'manifest': '\n'
' \n'
' ramon_plugin_stypes_001\n'
' <title>Ramon_Plugin_Stypes_001</title>\n'
' Genera los sTypes '
'necesarios para un proyecto de '
'RAMON\n'
' \n'
'\n',
'title': 'Ramon_Plugin_Stypes_001',
'value': '',
'version': 'DEV'}})

SQL Query Count: 11
BVR Count: 83
Sending: 76.5810546875 KB
Num SObjects: 2
Duration: 0.032 seconds (request_id: 139714472437504 - #1)
Memory: 71476 KB
Increment: 12140 KB

Can't find ticket folder when trying to list it

Describe the bug

method: start ({'project': 'admin', 'ticket': 'aa339a4d52d6a2901f4', 'site': None, 'language': 'python'}, 'admin', 'Title', 'description', '')
Exception: [Errno 2] No such file or directory: '/opt/tactic/tactic_temp/temp/aa339a4d52d6a2901f4'

File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 676, in new
results = exec_meth(self, ticket, meth, args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 308, in exec_meth
results = meth(self, ticket, *args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 6776, in start
files = os.listdir(dir_path)

[Errno 2] No such file or directory: '/opt/tactic/tactic_temp/temp/aa339a4d52d6a2901f4'

Error: '<' not supported between instances of 'int' and 'NoneType' (TACTIC 4.8, python3)

When opening table.

File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5542, in get_widget
html = widget.get_buffer_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 488, in get_buffer_display
buffer = self.get_buffer(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 479, in get_buffer
self.explicit_display(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 446, in explicit_display
widget = child.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 446, in explicit_display
widget = child.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 446, in explicit_display
widget = child.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/pyasm/web/html_wdg.py", line 816, in get_display
super(HtmlElement,self).get_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 467, in get_display
widget.explicit_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/tactic/ui/app/search_limit_wdg.py", line 301, in get_display
elif self.search and self.count < self.search_limit:

Duplicated "project_view" for SideBarWdg widget config

Describe the bug
When i apply project plugin to empty project it is not replacing existing project_view config. Which cases issues when i gather config for different purposes.

To Reproduce
Steps to reproduce the behavior:

  1. Create Empty project
  2. Apply VFX project Plugin
  3. Go to config/widget_config table
  4. Search for SideBarWdg search_type column
  5. See old "project_view" is not replaced

Expected behavior
Only one "project_view" in config.

Search and Sql unittest issues

Describe the bug
On 4.8, search_test.py and sql_test.py are failing.

To Reproduce
run
python3 src/test/search_test.py
python3 src/test/sql_test.py

For example, sql_test.py produces the following error:

E/usr/lib64/python3.7/unittest/case.py:660: ResourceWarning: unclosed file <_io.TextIOWrapper name='/opt/tactic/tactic/src/plugins/TACTIC/internal/unittest/unittest_car.spt' mode='r' encoding='UTF-8'>
outcome.errors.clear()
ResourceWarning: Enable tracemalloc to get the object allocation traceback

======================================================================
ERROR: test_all (pyasm.search.sql_test.SqlTest)

Traceback (most recent call last):
File "/opt/tactic/tactic/src/pyasm/search/sql.py", line 841, in do_update
self.cursor.execute(query)
psycopg2.ProgrammingError: missing FROM-clause entry for table "sports_car_data"
LINE 1: ...ports_car" AS SELECT "unittest"."public"."car".*, "unittest"...
^

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/tactic/tactic/src/pyasm/search/sql_test.py", line 38, in setUp
self.test_env.create()
File "/opt/tactic/tactic/src/pyasm/unittest/environment.py", line 44, in create
installer.execute()
File "/opt/tactic/tactic/src/tactic/command/plugin.py", line 933, in execute
self.import_manifest(nodes)
File "/opt/tactic/tactic/src/tactic/command/plugin.py", line 988, in import_manifest
jobs = tools.import_data(path, commit=True)
File "/opt/tactic/tactic/src/tactic/command/plugin.py", line 1855, in import_data
table.commit()
File "/opt/tactic/tactic/src/pyasm/search/sql.py", line 3946, in commit
sql.do_update(statement)
File "/opt/tactic/tactic/src/pyasm/search/sql.py", line 878, in do_update
raise SqlException(str(e))
pyasm.search.sql.SqlException: missing FROM-clause entry for table "sports_car_data"
LINE 1: ...ports_car" AS SELECT "unittest"."public"."car".*, "unittest"...
^


Ran 1 test in 1.697s

Expected behavior
Executes without issue as it had on 4.7

Unittest checkin_test.py fails on _test_strict_checkin()

Describe the bug
The test _test_strict_checkin fails because default naming seems create a conflict:

To Reproduce
Steps to reproduce the behavior:
1.Simply run unittest script: python checkin_test.py

Expected behavior
Test executes without error

Error

Traceback (most recent call last):
  File "checkin_test.py", line 61, in test_all
    self.execute()
  File "checkin_test.py", line 90, in execute
    self._test_strict_checkin()
  File "checkin_test.py", line 618, in _test_strict_checkin
    checkin.execute()
  File "/opt/tactic/tactic/src/pyasm/checkin/checkin.py", line 98, in execute
    self._execute()
  File "/opt/tactic/tactic/src/pyasm/checkin/checkin.py", line 142, in _execute
    self.handle_system_commands(self.files, self.file_objects)
  File "/opt/tactic/tactic/src/pyasm/checkin/file_checkin.py", line 556, in handle_system_commands
    repo.handle_system_commands(self.snapshot, files, file_objects, self.mode, self.md5s, self.source_paths)
  File "/opt/tactic/tactic/src/pyasm/checkin/repo.py", line 92, in handle_system_commands
    raise CheckinException('This path [%s] already exists'%to_path)
pyasm.checkin.checkin.CheckinException: This path [/home/tactic/assets/unittest/person/PERSON00002/strict/filename_strict_v001.jpg] already exists

Display Definition for Simple edit mode in Manage Sidebar missing

Describe the bug
When trying to edit sidebar in Simple mode, all of the available options is missing.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Sidebar Edit mode
  2. Select any link item
  3. Go to Simple Edit Mode
  4. See there is no options

Expected behavior
All Available options will displayed

Self to self relationship

Getting SQL errors:
do_query error: SELECT count(*) FROM "aquariki"."public"."asset" LEFT OUTER JOIN "aquariki"."public"."asset_in_asset" ON "asset"."code" = "asset_in_asset"."parent_asset_code" LEFT OUTER JOIN "aquariki"."public"."asset" ON "asset_in_asset"."parent_asset_code" = "asset"."code" WHERE ("asset"."s_status" != 'retired' or "asset"."s_status" is NULL) AND ("asset"."s_status" != 'retired' or "asset"."s_status" is NULL)

Note here i am not making any query for asset_in_asset, my TEL looks like this @sobject(tvs/asset_in_episode['episode_code', 'EPISODE00002'].tvs/asset)
Project named "aquarki"
Adding this to schema - breaks any relationship query in TACTIC, causing wrong results.

Error: No module named 'spt'

File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 583, in new
cmd.execute_cmd(cmd)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 194, in execute_cmd
cmd.execute()
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 171, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 306, in exec_meth
results = meth(self, ticket, *new_args, **kwargs)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5592, in get_widget
widget = ExceptionWdg(e)
File "/home/apache/tactic/src/pyasm/widget/web_wdg.py", line 3527, in init
super(ExceptionWdg, self).init(self)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 128, in init
self.init()
File "/home/apache/tactic/src/pyasm/widget/web_wdg.py", line 3593, in init
from spt.modules.workflow import Workflow

Error: No module named 'spt'

Bug when trying to save column definition with HiddenRowElementWdg widget:


File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 583, in new
cmd.execute_cmd(cmd)
File "/home/apache/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5802, in execute_cmd
Command.execute_cmd(cmd)
File "/home/apache/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/home/apache/tactic/src/tactic/ui/manager/element_definition_wdg.py", line 3107, in execute
self.save(self.search_type, view, self.element_name, widget_key, display_class)
File "/home/apache/tactic/src/tactic/ui/manager/element_definition_wdg.py", line 3209, in save
options = self.get_options("option")
File "/home/apache/tactic/src/tactic/ui/manager/element_definition_wdg.py", line 3349, in get_options
hidden_class = web.get_form_values("xxx_%s|display_class" % prefix)[1]

Error: list index out of range

method "ERRORMETHOD" is not supported

Describe the bug
While running my server from startup_dev, I am constantly getting this error through spt.alert:

method "ERRORMETHOD" is not supported

In the dev output, two lines appear to be associated;

ERROR: no element found: line 1, column 0
b''

To Reproduce

  1. Any action that calls the API can cause this error. Calling the same action again does not cause the error and the request succeeds.

Expected behavior
No errors

"Cannot read property '0' of undefined" when saving projects security

Describe the bug
tactic.ui.common.SimpleTableElementWdg checkbox isn't visually working, but seems to be changing its state.
When i try to save Projects Security i got message "Cannot read property '0' of undefined"

To Reproduce
Steps to reproduce the behavior:

  1. Go to Projects security
  2. Click on any item checkbox
  3. Click save
  4. See error

VFX Templating does not capture search types

There seems to be missing all the custom stypes ... for VFX, this means the project has to be named vfx in order to capture the vfx search types ... that means a template project has to be named that which matches the namespace of the custom entities.

If I create a vfx2 and make it a plugins, the definition of the vfx search types do not get created. Not sure if this is an known old problem, but is should understand somehow that the vfx search types are part of the new template.

When trying to open help:

Error processing document: 'str' object has no attribute 'decode'
Source: book/doc/doc_tactic-end-user/html/ar01s06.html#_creating_tasks

Reported Error: "type object 'IconWdg' has no attribute 'FAS_PHOTO_VIDEO'"

Describe the bug
MIssing icon for Link Security widget.
Error: type object 'IconWdg' has no attribute 'FAS_PHOTO_VIDEO'

File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5544, in get_widget
html = widget.get_buffer_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 488, in get_buffer_display
buffer = self.get_buffer(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 479, in get_buffer
self.explicit_display(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/tactic/ui/startup/security_wdg.py", line 1535, in get_display
sobjects = self.get_sobjects(group_names)
File "/home/apache/tactic/src/tactic/ui/startup/security_wdg.py", line 1962, in get_sobjects
self.get_info(config, names, links, titles, descriptions, icons, level)
File "/home/apache/tactic/src/tactic/ui/startup/security_wdg.py", line 1927, in get_info
icon.add( IconWdg("Link", eval("IconWdg.%s" % attrs.get('icon').upper()) ) )
File "", line 1, in

To Reproduce
Steps to reproduce the behavior:

  1. Go to Manage Security
  2. Click on Link Security
  3. See error

Preview File Checkin Bug

Describe the bug
When i do checkin "icon" process with context menu (Change Preview Image) everything is as expected.
But If i create New SObject, and choose file as a preview with tactic.ui.widget.upload_wdg.SimpleUploadWdg it messes up with preview and icon files.
_icon file becomes big, and _preview is small

To Reproduce
Steps to reproduce the behavior:

  1. Click on Create New SObject in form
  2. Upload file to Preview chooser
  3. Save new SObject
  4. See error uploaded files are messed up

Expected behavior
Same behavior as in "Change Preview Image"

Error: module 'string' has no attribute 'lower'

Describe the bug
Error: module 'string' has no attribute 'lower'

File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/opt/tactic/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5802, in execute_cmd
Command.execute_cmd(cmd)
File "/opt/tactic/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/opt/tactic/tactic/src/tactic/ui/app/plugin_wdg.py", line 2681, in execute
basename = File.get_filesystem_name(basename)
File "/opt/tactic/tactic/src/pyasm/biz/file.py", line 388, in get_filesystem_name
ext = string.lower(ext)

Load Balancing Test is Broken

Describe the bug
Trying to test load balancing failing with some js errors:
client_api.js?ver=4.8.0.a01:2019 Uncaught TypeError: Cannot read property 'length' of undefined
at TacticServerStub._delegate (client_api.js?ver=4.8.0.a01:2019)
at TacticServerStub.get_connection_info (client_api.js?ver=4.8.0.a01:355)
at run_bvr (eval at spt.behavior.run_cbjs (behavior.js?ver=4.8.0.a01:254), :6:19)
at Object.spt.behavior.run_cbjs (behavior.js?ver=4.8.0.a01:259)
at Object.spt.behavior.run_preaction_action_postaction (behavior.js?ver=4.8.0.a01:347)
at Object.spt.mouse._click_core_action (mouse.js?ver=4.8.0.a01:174)
at HTMLButtonElement.spt.mouse._CB_click_up_action (mouse.js?ver=4.8.0.a01:213)
at HTMLButtonElement.e (mootools-core-1.4.1-full-nocompat-yc.js?ver=4.8.0.a01:323)
TacticServerStub._delegate @ client_api.js?ver=4.8.0.a01:2019
TacticServerStub.get_connection_info @ client_api.js?ver=4.8.0.a01:355
run_bvr @ VM2959:6
spt.behavior.run_cbjs @ behavior.js?ver=4.8.0.a01:259
spt.behavior.run_preaction_action_postaction @ behavior.js?ver=4.8.0.a01:347
spt.mouse._click_core_action @ mouse.js?ver=4.8.0.a01:174
spt.mouse._CB_click_up_action @ mouse.js?ver=4.8.0.a01:213
e @ mootools-core-1.4.1-full-nocompat-yc.js?ver=4.8.0.a01:323

To Reproduce
Steps to reproduce the behavior:

  1. Go to Configuration > System Info
  2. Click on Load Balancing: TEST
  3. See nothing is happening

Expected behavior
Show the ports that used for Load Blancing

get_preallocated_path is returning 'Value for [file_name] is None'

Describe the bug
Api and also FileCheckin class returning None when trying to get file name with method "get_file_name"

To Reproduce
Steps to reproduce the behavior:

  1. Run serverside or remote api script:
    get_preallocated_path('SNAPSHOT00006367')
  2. See error

Expected behavior
Something like "/home/apache/assets/dolly3d/episodes/Ep98/versions/SHOT00304"

When adding new separator on sidebar editor


File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 583, in new
cmd.execute_cmd(cmd)
File "/home/apache/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 274, in execute
self2.results = exec_meth(self, ticket, meth, args)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 304, in exec_meth
results = meth(self, ticket, *new_args)
File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 6374, in add_config_element
raise UserException('This view name [%s] is reserved for internal use.'%name)

Error: This view name [separator] is reserved for internal use.

Check-in widget

It would be great to have the Check-in widget, including the "Choose File" button.

When trying to undo Transaction: No module named 'sql' (TACTIC 4.8, python3)

File "/home/apache/tactic/src/pyasm/command/command.py", line 267, in execute_cmd
ret_val = cmd.execute()
File "/home/apache/tactic/src/pyasm/command/undo_cmd.py", line 87, in execute
self.transaction_log.undo(ignore_files=self.ignore_files)
File "/home/apache/tactic/src/pyasm/search/transaction_log.py", line 55, in undo
TableUndo.undo(node)
File "/home/apache/tactic/src/pyasm/search/transaction.py", line 1149, in undo
from sql import SqlException

Javascript connecting to the Java applet (upload.GeneralApplet)

We've been having intermittent issues using the full checkin widget. It seems that the Java applet does not load correctly, or fails to connect to the javascript. Primarly, this happens on our Macs (10.7.5) running Firefox and Safari (latest). Apple recently blocked Java 1.6 in the browser, so we run 1.7. I have no idea what the problem is, but it hurts our productivity. I put together a simple test page to help debug the issues. Perhaps other developers can try this and report? Firefox under Windows 7 seems to be most reliable, with IE10 exhibiting the same problems. Mainly, it seems that the Java applet loads correctly, but Javascript can't talk to it.

Put the linked file in tactic/src/context/test/and point your browser at http://localhost/context/test/applet.html. Or pull my repo and checkout djb/applet_test

https://github.com/dblezek/TACTIC/blob/djb/applet_test/src/context/test/applet.html

Thanks,
-dan

Update versionless gets called twice on check-in

Describe the bug
Update versionless is getting called twice during the check-in process (one each for current and latest). Should investigate whether this is really necessary (probably not).

To Reproduce
Steps to reproduce the behavior:

  1. Check-in a file in debug mode
  2. Trace Snapshot.update_versionless (which will be called twice for each mode)

Expected behavior
Should be optimized to be only called once.

Text on Workflow Manager, process info box is too dark on VFX module

Describe the bug
The text on the info box on the workflow manager is too dark. Specifically, the text is the title for the form elements. I think it has to do with Bootstrap Material design overriding the colors and the titles for form elements haven't been set correctly for a dark background, so the text remains black.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Workflow Manager on a VFX project
  2. Click on a node
  3. Text on info box that appears has dark titles.

Check-in History showing all possible snapshots

Describe the bug
In the SObject info widget Checkin history tab showing all snapshots for every SObjects

To Reproduce
Steps to reproduce the behavior:

  1. Click on preview of SObject
  2. Go to Check-in History tab
  3. Click Reload tab
  4. See there some shapshots not related to particular SObject

Expected behavior
Only Related Snapshots

Server Error: Command key not valid (Worflow Editor 4.8)

Describe the bug
On the VFX Plugin, when i select any node in Workflow Editor i got the message in title.
Console output:
Error
at Object.spt.alert (utility.js?ver=4.8.0.b01:1362)
at wdg_kwargs.on_error (panel.js?ver=4.8.0.b01:174)
at err_callback (client_api.js?ver=4.8.0.b01:1914)
at TacticServerStub.async_callback (client_api.js?ver=4.8.0.b01:2124)
at client_api.js?ver=4.8.0.b01:2070
at XMLHttpRequest.self.xmlHttpRequest.onreadystatechange (xmlrpc.js?ver=4.8.0.b01:110)

To Reproduce
Steps to reproduce the behavior:

  1. Go to Workflow Editor of VFX Plugin
  2. Select Shot or Asset pipeline
  3. Save the pipeline
  4. Click on any Node or i button.

Expected behavior
Config toolbar will apear. Without any warning.

Search.add_relationship_filters should use joins when instance refers to itself

Describe the bug
Search.add_relationship_filters uses logic to do a select and then pass all of the search_codes to another query. This could all be done in a single query using joins and currently works correctly unless the instance refers to itself (ie: asset_in_asset). This produces an incorrect SQL statement which should look something like this:

SELECT
        "workflow"."public"."asset"."code"

FROM "workflow"."public"."asset"

LEFT OUTER JOIN "workflow"."public"."asset_in_asset"
        ON "asset"."code" = "asset_in_asset"."search_code"

LEFT OUTER JOIN "workflow"."public"."asset" AS "asset2"
        ON "asset_in_asset"."parent_code" = "asset2"."code"

Unittest test_checkin.py warns when cleaning up symlinks

Describe the bug
When the tests finish executing, errors are dumped out when trying to clean up symlinks. They are harmless, however output should be clean

To Reproduce

  1. Run: python test_checkin.py

Expected behavior
Script runs without error if all tests pass

Screenshots

[Errno 2] No such file or directory: '../../../../tmp/tactic/alias2/alias2/text.txt' -> '/home/tactic/assets/alias2/text.txt'
Failed to undo symlink /home/tactic/assets/../alias2/alias2/text.txt
[Errno 2] No such file or directory: '../../../../tmp/tactic/alias2/alias2/text.txt' -> '/home/tactic/assets/alias2/text.txt'
Failed to undo symlink /home/tactic/assets/../alias2/alias2/text.txt
Error:  b"Destination path '/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6/filename_process_v001.jpg' already exists"
Error moving [/home/tactic/assets/unittest/person/PERSON00002/process/versions/subdir/filename_process_v001.jpg] to cache directory in [/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6] failed. Removed repository files
Error:  b"Destination path '/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6/filename_process_v001.jpg' already exists"
Error moving [/home/tactic/assets/unittest/person/PERSON00002/process/versions/filename_process_v001.jpg] to cache directory in [/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6] failed. Removed repository files
Error:  b"Destination path '/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6/TESTfilename_v001.jpg' already exists"
Error moving [/home/tactic/assets/unittest/person/PERSON00002/naming/TESTfilename_v001.jpg] to cache directory in [/home/tactic/tactic_temp/cache/dd28d2cafb6e4fa32b6] failed. Removed repository files

Adding new trigger to process "'ActionButtonWdg' object has no attribute 'add_styles'"

Describe the bug
Trying to select Run Python Trigger when setting up trigger for process.

Error: 'ActionButtonWdg' object has no attribute 'add_styles'

File "/home/apache/tactic/src/pyasm/prod/service/api_xmlrpc.py", line 5544, in get_widget
html = widget.get_buffer_display()
File "/home/apache/tactic/src/pyasm/web/widget.py", line 488, in get_buffer_display
buffer = self.get_buffer(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 479, in get_buffer
self.explicit_display(cls)
File "/home/apache/tactic/src/pyasm/web/widget.py", line 437, in explicit_display
child = self.get_display()
File "/home/apache/tactic/src/tactic/ui/tools/trigger_wdg.py", line 2439, in get_display
test_button.add_styles("display: inline-block; margin: 5px")

To Reproduce
Steps to reproduce the behavior:

  1. Go Workflow editor
  2. Add new trigger on process
  3. Change action to Rut Python trigger or JS
  4. See error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.