Project Manager #2 – Adding New Assets

The above video demonstrates the procedure for adding new assets to an existing project directory tree created using MADAM. All the assets of the selected project can be accessed from the Assets tab in the Project Manager module.

The asset tab provides different options for managing the asset files of the project.The asset section has been categorized in to three types: Character, Bg, and Props. The category selection can be changed using the CATEGORY combo box. This will list all the asset names under the selected category. Each asset folder will contain the different file types Model, Texture, Rig and Render scene files.

New Assets can be created using the Add New Asset Dialog which can be accessed by clicking the Add button at the bottom left corner of the Assets tab

The Add New Asset dialog has a text field for entering the asset name and also a radio button group for specifying the asset category. Clicking Apply adds the asset in the specified category folder. Once the asset folder is created files can be added using the Manage button in the Assets tab. The Manage button provides the option for adding, updating, deleting and locking files.

Adding an asset file to the particular asset folder imports the specified file in to the repository. The File Info button in the Assets tab lists the revisions of the selected file. Clicking the File Info button brings up the MADAM Revision Log as shown below.

The selected file version can be checked out using the Checkout button in the Revision Log. This will open up a file browse dialog box where the user can select the path where the Work Copy should be saved.

Project Manager #1 – Adding New Projects

The above video demonstrates the procedure for setting up a new project using the Project Manager Module in MADAM. The procedure involves choosing a network location for setting up the project directory tree. After choosing the location new project can be created using the Create New button in the Project Manager Dialog.

This brings up a dialog as shown below, where the user can specify the various attributes of the project including the Project Name, Number of Sequences, Sequence Name Padding. After specifying the attributes the Directory Tree can be created using the Create Project Directory button.

Below Screenshot shows the Project Directory Tree

The next step is to create an SVN repository for file revision control. The repository can be created using the Create Repository button in the Project Directory Creator dialog.This brings up the SVN MANAGER dialog as shown below.

The Server IP field is for specifying the machine IP in which the Subversion Server is running. The Check button can be used to know the status of the Server, whether its running or not. Once the server status is confirmed, the Browse button can be used to browse to the Project Directory. Select the project name from the combo box to get confirmation dialog asking whether Repository should be selected for the selected project or not. Select OK to create project repository.

MADAM Login dialog using PyQT

loginUI

One more addition to power up MADAM.But this time in the form of a GUI.Ok, I am not claiming this as a considerable achievement.But this being my first dialog in PyQT, I thought I should post it here just in case someone who is new to PyQT might find it useful. After collecting inputs from my colleagues regarding MADAM, everyone had the same opinion that they don’t want to type in to a console at any cost.They needed a neat and tidy interface that would be comfortable working on. So started off with a dialog, with just a QLabel, QlineEdit and two QPushButtons to get the job done.The next step was to set the echoMode for the QLineEdit to prevent the keyboard entry being echoed in the field. I couldn’t get it working in the initial try since I was trying to pass a string to the setEchoMode method while on the other hand it was supposed to enum.This is the format for setting the echo mode.

passwdTxField = QLineEdit()
passwdTxField.setEchoMode(QLineEdit.EchoMode(2))

Finally a QHBoxLayout for the two QPushButtons and a QVBoxLayout for the main dialog, the loginUI was ready to use.

Managing user accounts inside MADAM

This was the first task I thought that should be done in building an application that is being accessed by multiple users from different departments.Even though  setting up the database and creating user accounts with MySQL administrator was not a difficult task, I didn’t wanted to overload the system with too many user accounts.Instead, I designed a table with a unique user Id and a Password entry.The next step was to create a dummy user who will have SELECT,INSERT and UPDATE rights.The basic idea was to compare the entered password against the existing entry and it it turns out positive, use the dummy user to enter data in to the database.

madam_login

The next step was to store the password in an encrypted format.Thanks to the wide variety of encryption and compression functions offered my MySQL. Decided to go with the Advanced Encryption Standard which can be accessed through two simple functions AES_ENCRYPT and AES_DECRYPT.With encoding support of 128-bit key length this one is the most robust algorithms available today.The syntax for the command is as follows:

AES_ENCRYPT(myPassword,key_string)

AES_DECRYPT(string,key_string)

The next step was to provide the functionality of changing the password by the user.Since I was still relying on the console for the password entry, it was too inconvenient to have the password being typed displayed on the screen.The problem was I was still using the raw_input function to get the user input which was not advisable especially when it comes to passwords.So had to seek out another means to get the user input and here I was crawling through the python manuals to get the job done.Fortunately, I came across the in-built getpass module.This allowed to get the user input without showing on the screen what the user was typing.The syntax is as follows:

myPassword =getpass.getpass(‘entered password’).

The interesting thing about the user account section was that I found myself drifting towards encryption standards and algorithms used in practice.Having read Digital Fortress by Dan Brown recently, I found topics related to encryption so fascinating that my I found it hard to close the google search pages.So now its time to get back to MADAM and proceed to the next phase.

MADAM development kickstarted…

MADAM…that’s the name I chose for my new assignment.Although it may sound confusing at the very first place what sort of an assignment that could be, its nothing more than a handy(or the way I expect that to be) application for asset management.You guessed it right, MADAM stands for nothing other that Modular Animation Digital Asset Management.This one stands out from whatever I have attempted in my entire career in terms of the scale of the project. I havn’t set a deadline for the proposed finishing of the project since I am not sure about the free time I will be getting from my work schedule.Another reason is I am still through the learning phase of application development.But that doesn’t mean that this will be in a work-in-progress stage for years to come.

Here is a list of the tasks which I am planning to handover to MADAM:

1.Job Tracker for assigning and keeping track of the tasks.

2.Daily Publisher for publishing the work for daily review.

3.Integrated messaging system for easy communication.

4.Customizable home page to favor easy access to frequently accessed data.

5.Message board for sharing useful resources.

6.Project wide report generation at any stage

These are some of the tasks which I have planned to implement as of now.Gotta see how far I can go in to implementing these features.

Coming to the technical aspects,The core of the application will be powered with  python2.5 for the programming part along with pyQt4 for the interface design.The database will be MySQL ofcourse I had to choose this one among its opensource counterparts(had planned for PostGreSQL in the beginning, but switched over to MySQL since there was limited documentation available for the PyGreSQL module.).Thats it for the time being.Hope that will help me carry out most of the tasks which I have planned so far.