def setUp(self): super(TestAdminView, self).setUp() from ez2pay.models.user import UserModel from ez2pay.models.group import GroupModel from ez2pay.models.permission import PermissionModel user_model = UserModel(self.testapp.session) group_model = GroupModel(self.testapp.session) permission_model = PermissionModel(self.testapp.session) with transaction.manager: user_model.create( user_name='tester', display_name='tester', password='******', email='*****@*****.**' ) admin_id = user_model.create( user_name='admin', display_name='admin', password='******', email='*****@*****.**' ) group_id = group_model.create( group_name='admin', display_name='admin', ) permission_id = permission_model.create( permission_name='admin', description='admin' ) group_model.update_permissions(group_id, [permission_id]) user_model.update_groups(admin_id, [group_id])
def setUp(self): super(TestAccountView, self).setUp() from ez2pay.models.user import UserModel model = UserModel(self.testapp.session) with transaction.manager: model.create( user_name='tester', display_name='tester', password='******', email='*****@*****.**' )
def user_create(request): _ = get_localizer(request) user_model = UserModel(request.db_session) group_model = GroupModel(request.db_session) factory = FormFactory(_) UserCreateForm = factory.make_user_create_form() form = UserCreateForm(request.params) groups = group_model.get_list() form.groups.choices = [ (str(g.group_id), '%s - %s' % (g.group_name, g.display_name)) for g in groups ] if request.method == 'POST': check_csrf_token(request) validate_result = form.validate() user_name = request.params['user_name'] display_name = request.params['display_name'] password = request.params['password'] email = request.params['email'] groups = request.params.getall('groups') by_name = user_model.get_by_name(user_name) if by_name is not None: msg = _(u'Username %s already exists') % user_name form.user_name.errors.append(msg) validate_result = False by_email = user_model.get_by_email(email) if by_email is not None: msg = _(u'Email %s already exists') % email form.email.errors.append(msg) validate_result = False if validate_result: with transaction.manager: user_id = user_model.create( user_name=user_name, display_name=display_name, password=password, email=email, ) user_model.update_groups(user_id, map(int, groups)) msg = _(u"User ${user_name} has been created", mapping=dict(user_name=user_name)) request.add_flash(msg, 'success') return HTTPFound(location=request.route_url('admin.user_list')) return dict(form=form)
def register(request): _ = get_localizer(request) settings = request.registry.settings user_model = UserModel(request.db_session) factory = FormFactory(_) RegisterForm = factory.make_register_form() form = RegisterForm(request.params) if request.method == 'POST': check_csrf_token(request) validate_result = form.validate() user_name = request.params['user_name'] password = request.params['password'] email = request.params['email'] black_domain = set(settings.get('email_black_domain_list', [])) domain = email.split('@')[-1].lower() if domain in black_domain: msg = _(u'Invalid email address') form.email.errors.append(msg) validate_result = False by_name = user_model.get_by_name(user_name) if by_name is not None: msg = _(u'Username %s already exists') % user_name form.user_name.errors.append(msg) validate_result = False by_email = user_model.get_by_email(email) if by_email is not None: msg = _(u'Email %s already exists') % email form.email.errors.append(msg) validate_result = False if validate_result: with transaction.manager: user_id = user_model.create( user_name=user_name, display_name=user_name, password=password, email=email, ) auth_secret_key = settings['auth_secret_key'] code = user_model.get_verification_code( user_id=user_id, verify_type='create_user', secret=auth_secret_key ) link = request.route_url( 'account.activate', user_name=user_name, code=code ) params = dict(link=link, user_name=user_name) html = render_mail( request, 'ez2pay:templates/mails/register_link.genshi', params ) subject = _('ez2pay account activation') send_mail( request=request, subject=subject, to_addresses=[email], format='html', body=html ) msg = _(u"User ${user_name} has been registered", mapping=dict(user_name=user_name)) request.add_flash(msg, 'success') return HTTPFound(location=request.route_url('account.check_mailbox')) return dict(form=form)