Hello, This is a question about recommended practice for doing the following:
I want to create a web interface for creating a setup for new games. For example, the web interface will let me specify name of the game, number of teams etc. Based on this information I want to create new database tables for the game. Should the table definitions be given in a controller function, such as in the example below? Is that the recommended way to do this, or is there another way that you would recommend. Thank you. ***Controller function for creating tables*** def createtables(): if request.post_vars: experimentname = request.post_vars.experimentname numteams = int(float(request.post_vars.numteams)) teams_tablename = "{0}_teams".format(experimentname) offers_tablename = "{0}_offers".format(experimentname) ardecisions_tablename = "{0}_ardecisions".format(experimentname) migrate_teamstablename = "{0}.table".format(teams_tablename) migrate_offerstablename = "{0}.table".format(offers_tablename) migrate_ardecisionstablename = "{0}.table".format( ardecisions_tablename) db.define_table(teams_tablename, Field('teamname', 'string', length=40, required=True, unique=True, notnull=True), Field('passwd', 'password'), Field('role', 'string', length=20, required=True, default='NA'), format = '%(teamname)s', migrate=migrate_teamstablename) # Table showing the ask amount of the first mover referencestring = 'reference {0}'.format(teams_tablename) db.define_table(offers_tablename, Field('round', 'integer'), Field('askamount', 'integer'), Field('payoff', 'integer'), Field('teamname_id', referencestring), migrate = migrate_offerstablename) # Table accept-reject decisions db.define_table(ardecisions_tablename, Field('round', 'integer'), Field('acceptorreject', 'string', length=2), Field('payoff', 'integer'), Field('teamname_id', referencestring), Field('offerer_id', referencestring), migrate = migrate_ardecisionstablename) teamnames = maketeamnames(numteams) for tname in teamnames: db[teams_tablename].update_or_insert(teamname=tname) db.experimentlist.insert(experimentname=experimentname) return dict() --