Asset Library Manager for Animation & VFX Studio.
https://github.com/astips/tk-astips-toy-cabinet
- Database based (PostgreSQL, MySQL, SQLite)
- Tag filter
- Dominant color filter
- User permissions manage-able
- Extendable by client
- Support Windows & Linux
- Support Chinese (Sorting & Filtering)
- Download the latest release and unzip the folder where you want to live.
- Copy folder "toycabinet" into any dir where already set to the PYTHONPATH env var.
-
It is strongly recommended to use PostgreSQL
-
Fill the db-information into
toycabinet > presets.json
file{ "db_type": "postgres", "db_info": { "database": "toycabinet", "host": "127.0.0.1", "port": "5432", "user": "postgres", "password": "postgres" }, "email": "[email protected]" }
db_type: postgres/mysql/sqlite
-
Init toolkit's db by running
toycabinet > bin > sptc-initdb
(linux) ortoycabinet > bin > sptc-initdb.bat
(windows). If messages display as below means init toolkit's database success.DB-CONNECT: SUCCESS DB-CONNECTION: <connection object at 0x7f14e1393050; dsn: 'user=postgres host=127.0.0.1 password=xxx port=5432 dbname=toycabinet', closed: 0> DB-CREATE-TABLES: SUCCESS DB-TABLES: authentication cabinets markets tag_groups tag_tag_group_connections tag_toy_connections tags toys users DB-CREATE-ADMIN-USER: SUCCESS DB-USER-ADMIN: Name: admin Password: 123456 DB-INIT: DONE!
-
Set the QT_SIDE_BINDING env-var before running.
import os os.environ['QT_SIDE_BINDING'] = 'pyside' # or pyside2
-
Startup as Standalone
from toycabinet.main import startup if __name__ == '__main__': startup()
-
Startup in DCC
from toycabinet.main import startup startup(context='maya') # maya / houdini / nuke / ...
-
Default Admin Account
you can change the password whenever you want
Name: admin Password: 123456
-
Folder option
toycabinet > opt > folder.py
def before_folder_option(location): """location: folder full path""" # do something, return True or False pass def after_folder_option(location): """location: folder full path""" # do something, return True or False pass def retire_folder(location, new_name): """ location: folder full path new_name: new folder name (not path, just a name string) """ # do something, return True or False pass
example:
import os from my_office import rpc # my_office is a fake module ~ ~ def before_folder_option(location): if not os.path.exists(location): rpc.create_folder(location) rpc.chmod(location, '777', recursive=True) # change mode by rpc return True def after_folder_option(location): rpc.chown(location, 'ple:ple', recursive=True) # change owner by rpc rpc.chmod(location, '755', recursive=True) # change mode by rpc return True def retire_folder(location, new_name): parent_folder = os.path.dirname(location) rpc.rename_folder(location, os.path.join(parent_folder, new_name)) return True
-
Data option
toycabinet > opt > data.py
def archive_database(): """Archive Database""" # do something return True
example:
import os from my_office import rpc # my_office is a fake module ~ ~ def archive_database(): rpc.toy_cabinet_db_archive() return True
- Alt + Q
Hide/Show Left Sidebar
- Alt + W
Hide/Show Right Sidebar
- Alt + E
Show/Hide Inner Tag Filter
- Alt + R
Hide/Show Hue Filter
- Alt + T
Show/Hide Creator
- Alt + F
Query from Database
- Alt + D
Show Toy-Item Detail Information
- Alt + (1,2,3,4,5,6)
Auto Fit Size of Toy-Items
- Alt/Ctrl + LMB(Click)
Show Toy-Item Detail Information
- Ctrl + MMW(Wheel)
Dynamic Resize Toy-Items
- Ctrl + (+,-)
Dynamic Resize Toy-Items
- Ctrl + A
Switch Aspect-Ratio of Toy-Items
- `
Hide/Show Toy-Item Label
- Space
Play Sequence
-
[ PyQt4 Invalid ] You will always get Segmentation Fault if you set QtSide's QT_SIDE_BINDING env-var to pyqt4, please use pyside or pyside2 instead.
-
[ COMMUNITY vs ENTERPRISE ] One Year Trial Community License has full features but quantitative restrictions, such as can only create
2 markets
100 toys
. There's to be no limitation for Enterprise License, Cool. Email to get the Enterprise License.
Please send an email with the error message and a detailed step by step process of how you got the error. Comments, suggestions and bug reports are welcome.