Skip to content

astips/tk-astips-toy-cabinet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Toy Cabinet

Asset Library Manager for Animation & VFX Studio.

https://github.com/astips/tk-astips-toy-cabinet

platform python build license size

FEATURE

  • Database based (PostgreSQL, MySQL, SQLite)
  • Tag filter
  • Dominant color filter
  • User permissions manage-able
  • Extendable by client
  • Support Windows & Linux
  • Support Chinese (Sorting & Filtering)

DEPENDENCY

INSTALLATION

  1. Download the latest release and unzip the folder where you want to live.
  2. Copy folder "toycabinet" into any dir where already set to the PYTHONPATH env var.

USAGE

1. Setup Database Server

  • 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) or toycabinet > 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!
    

2. Startup ToyCabinet

  • 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
    

3. Client Options make opts to fit your pipeline

  • 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

SHORTCUTS

  • 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

ATTENTION!

  • [ 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.

RELEASE

RELEASE INFO

ISSUES?

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.

About

Assetlib manager for animation & vfx studio.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages