def create(self): # TODO Determine user timezone as default form = Form(self.request, schema=AccountCreateSchema) if form.validate(): new_user = form.bind(User()) DBSession.add(new_user) new_email = form.bind(EmailAddress()) new_email.user = new_user DBSession.add(new_email) new_collection = Collection() new_collection.name = 'Default' new_collection.owner = new_user.full_name owner_role = DBSession.query(Role).filter(Role.id == 'owner').one() new_user.collections[new_collection] = owner_role return HTTPFound(location=self.request.route_url( 'account_verify_email', _query=dict(email=form.data['email']))) return dict(form=FormRenderer(form))
def init_instances(): with transaction.manager: admins_group = Group(id=ADMINS_GROUP, description='Group of administrators') unlimited_limit = UserLimit(id='unlimited', collections_limit=1000000, samples_limit=1000000, templates_limit=1000000, storage_limit=50000 * 1000000) commercial_limit = UserLimit(id='commercial', collections_limit=1000, samples_limit=10000, templates_limit=10, storage_limit=10000 * 1000000) academic_limit = UserLimit(id='academic', collections_limit=10, samples_limit=250, templates_limit=5, storage_limit=100 * 1000000, email_pattern=r'.*\.(edu|ac\.[a-z][a-z])$') free_limit = UserLimit(id='free', collections_limit=3, samples_limit=50, templates_limit=2, storage_limit=1 * 1000000) admin_user = User(salutation='', given_name='Administrator', surname='', limits_id='unlimited') admin_email = EmailAddress(email='*****@*****.**', verified=datetime.utcnow()) admin_collection = Collection(name='Default', owner='Administrator') owner_role = Role( id=OWNER_ROLE, description='Owner and administrator of the collection') editor_role = Role( id=EDITOR_ROLE, description='Can add and remove samples from a collection, but ' 'cannot administer members of the collection') auditor_role = Role( id=AUDITOR_ROLE, description='Can audit samples within the collection but cannot ' 'manipulate the collection') viewer_role = Role( id=VIEWER_ROLE, description='Can view samples within the collection but cannot ' 'manipulate the collection') DBSession.add(admins_group) DBSession.add(unlimited_limit) DBSession.add(commercial_limit) DBSession.add(academic_limit) DBSession.add(free_limit) DBSession.add(admin_user) DBSession.add(admin_email) DBSession.add(admin_collection) DBSession.add(owner_role) DBSession.add(editor_role) DBSession.add(auditor_role) DBSession.add(viewer_role) admins_group.users.append(admin_user) admin_user.emails.append(admin_email) admin_user.password = '******' admin_user.collections[admin_collection] = owner_role