Package: invisibleroads-scaffolds
The Pyramid scaffolds in this package provide user account management based oninvisibleroads.com.Pyramidis a web application framework that is the successor toPylonsandrepoze.bfg.  Thanks to Chris McDonough, Mike Bayer, Mike Orr, Ben Bangert and the other developers of Pyramid, Pylons and Python.Installation# Prepare isolated environment
PYRAMID_ENV=$HOME/Projects/pyramid-env
virtualenv $PYRAMID_ENV
# Activate isolated environment
source $PYRAMID_ENV/bin/activate
# Install packages
pip install --upgrade ipython ipdb nose coverage distribute invisibleroads-scaffoldsUsage# Activate isolated environment
source $PYRAMID_ENV/bin/activate
# Enter workspace
PROJECTS=$HOME/Projects
cd $PROJECTS
# List available scaffolds
pcreate --list-templates
# Create an application
pcreate -t ir_core example1.8.0Added openID supportAdded SMSAddress registration confirmationAdded UploadsCached validatorAdded utilities/update.shChanged signature for cellToggle(tdSelector, options)Changed signature for $.fn.prepareTableOverlayForm($table, trSelector)Fixed IE compatibility issuesUsed jquery.tokenInput.min.js instead of jquery.autoComplete.min.js1.7.9Added alternate server utilities/serve.py using geventAdded autoCompleteProxy() to replace select controls that have many optionsAdded User.unpack_properties to replace unpack_user_propertiesAdded parameter SITE_DOMAINAdded users.mail_users()Fixed timezoneOffset initialization to handle negative offsetsFixed clickToggle() so that flag matches size and color of parentMoved robots.txt into static folderUpdated validatorsUsed request.static_path() instead of request.static_url() to support https1.7.8Incorporated enhancements from Pyramid 1.2Updated forms to use vertical formatReorganized sensitive configuration file formatPlaced common form validators in validators.pyAdded email notification to leaders when a new account requires activationAdded email notification to user when account is activated or promotedAdded support for form tabs and tooltipsAdded support for formTips by className as well as nameAdded port-locking to command-line scripts to ensure singleton instancesAdded tests for 100% code coverage for PostgreSQLRewrote testing framework1.7.7Added AJAX style file uploadsRewrote javascript for form enhancementsRewrote javascript for table enhancementsUpdated SMS address management interface in users/change.makoFixed evaluation of settings[‘debug_templates’]1.7.6Increased test coverage to 100% given SMS IMAP configurationEnforced model-side case-insensitive evaluation of encrypted email addressesFixed user account administrative interface in users/index.makoAdded User.is_member and User.is_leader hybrid properties for flexibilityUpdated code to be compatible with Pyramid 1.1a41.7.5Restructured user roles and permissionsUsed User.role instead of User.is_super and User.is_activeUsed argparse instead of optparse in utilities/script_process.pyAdded users.unpack_properties() for more flexible property retrievalAdded row-based interface example1.7.4Added robots.txt with default exclusion from search engine crawlersAdded get_remote_ip()Added $.ajaxSetup for general error handlingUsed prop(‘disabled’, true) instead of attr(‘disabled’, ‘disabled’)Used e.which instead of e.keyCodeUpgraded to jQuery 1.6.11.7.3Changed to cryptacular.bcrypt() for password hashChanged to urandom() for authtkt.secret and session.secretAdded server-side check for user.is_active, user.is_superLet superuser activate or deactivate other usersAdded mechanism for user to invalidate other sessionsMoved imapIO to a separate package in PyPIReverted SMS address registration so that users register by sending an SMSIncreased test coverage to 96%1.7.2Added test for unicode usernames, passwords, nicknames, emailsFixed username, password, nickname, email to be unicode-friendlyFixed tools.hash, tools.encrypt, tools.decrypt to be unicode-friendlyCreated SQLAlchemy types Encrypted, LowercaseEncryptedEncrypted the storage of email addressesLet superusers promote or demote other usersAdded redirect to login page if AJAX request does not return JSONSet poolclass to sqlalchemy.NullPool for SQLite file-based databases1.7.1Moved whenIO to a separate package in PyPI1.7.0Migrated from Pylons to PyramidChanged authentication from Beaker sessions to AuthTkt cookiesChanged authorization from manual enforcement to ACLAuthorizationPolicyRestored ability to set sensitive information in dotted configuration filesUpdated javascript event binding to use jQuery’s live()Changed SMS address registration so that user enters SMS address manuallyAdded timezone offset display functionality to whenIOAdded DataTables jQuery plugin to user list page