Sunday, January 25, 2015

Python Enum

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len( sequential))), **named)
    reverse = dict((value, key) for key, value in enums.iteritems())
    keys = dict((key, value) for key, value in enums.iteritems())
    enums[ 'values' ] = reverse
    enums[ 'keys' ] = keys
    return type('Enum', (), enums)

ut = enum( M=1, S=2, T=4, V=8 )

ut.keys[ 'M' ] => 1

 ut.values[ 4 ] => 'T'

Thursday, January 1, 2015

Manage Update/Remove of hasMany field

class ManagedTeam {
    String name
    static hasMany = [ users: ManagedUser ]
}

update method in controller:

//clear all users
managedTeamInstance.users = []
//add the selected ones back
params.users.each() {
    def ManagedUser user = ManagedUser.get( it )
    managedTeamInstance.users.add( user )
    log.debug( "in associateUser: added " + user )
};

//try to save the changes
if( !managedTeamInstance.save( flush: true ) )
{
    return error()
}
else{
    flash.message = "Successfully associated users"
}