def createTestingAccounts( session, count, name_pattern='test%s', email_pattern='*****@*****.**', password='******', ): """Creating many testing accounts """ from nowin_core.models.user import UserModel user_model = UserModel(session) users = [] for i in xrange(count): name = name_pattern % i email = email_pattern % i user = user_model.get_user_by_name(name) if user is not None: print 'user %s already exist, skip' continue user_id = user_model.create_user(user_name=name, email=email, display_name=name, password=password) user_model.activate_user(user_id, name, 'TW') users.append(user_id) session.flush() print 'create user', name session.commit() return users
def run(self): engine = setup_db(uri=self.uri, echo=True) from nowin_core.database.tables import DeclarativeBase DeclarativeBase.metadata.create_all(bind=engine) import getpass import transaction from ..database import tables from ..models.user import UserModel from ..models.group import GroupModel from ..models.permission import PermissionModel session = tables.DBSession from zope.sqlalchemy import ZopeTransactionExtension session.configure(extension=ZopeTransactionExtension()) user_model = UserModel(session) group_model = GroupModel(session) permission_model = PermissionModel(session) with transaction.manager: admin = user_model.get_user_by_name('admin') if admin is None: print 'Create admin account' email = raw_input('Email:') password = getpass.getpass('Password:'******'Confirm:') if password != confirm: print 'Password not match' return user_id = user_model.create_user( user_name='admin', display_name='Administrator', email=email, password=password ) user_model.activate_user(user_id, '', 'TW') admin = user_model.get_user_by_id(user_id) session.flush() print 'Created admin, user_id=%s' % admin.user_id permission = permission_model.get_permission_by_name('admin') if permission is None: print 'Create admin permission ...' permission_model.create_permission( permission_name='admin', description='Administrate', ) permission = permission_model.get_permission_by_name('admin') group = group_model.get_group_by_name('admin') if group is None: print 'Create admin group ...' group_model.create_group( group_name='admin', display_name='Administrators', ) group = group_model.get_group_by_name('admin') print 'Add admin permission to admin group' group_model.update_permissions( group.group_id, [permission.permission_id]) session.flush() print 'Add admin to admin group' user_model.update_groups(admin.user_id, [group.group_id]) session.flush() print 'Done.'