def generateKey():
    #from Crypto.Random import random
    import random
    from datetime import datetime
    from hashlib import sha256, md5
    return md5(
        sha256(str(random.getrandbits(256))).digest() +
        str(datetime.now().isoformat())).hexdigest()


########################################
db.define_table('balise',
                Field('name',
                      type='string',
                      notnull=True,
                      required=True,
                      label=T('Name')),
                auth.signature,
                format='%(name)s',
                migrate=False)

db.define_table(
    'balise_archive', db.balise,
    Field('current_record', 'reference balise', readable=False,
          writable=False))

########################################
db.define_table('error_type',
                Field('name',
                      type='string',
                      notnull=True,
    from re import T
    from gluon import settings
    from gluon.validators import IS_LENGTH, IS_NOT_EMPTY, IS_UPLOAD_FILENAME
    from db import auth

def generateKey():
    #from Crypto.Random import random
    import random
    from datetime import datetime
    from hashlib import sha256, md5
    return md5(sha256(str(random.getrandbits(256))).digest()+str(datetime.now().isoformat())).hexdigest()

########################################
db.define_table('balise',
    Field('name', type='string', notnull=True, required=True,
          label=T('Name')),
    auth.signature,
    format='%(name)s',
    migrate=False)

db.define_table('balise_archive',db.balise,Field('current_record','reference balise',readable=False,writable=False))

########################################
db.define_table('error_type',
    Field('name', type='string', notnull=True, required=True,
          label=T('Name')),
    auth.signature,
    format='%(name)s',
    migrate=False)

db.define_table('error_type_archive',db.error_type,Field('current_record','reference error_type',readable=False,writable=False))