def test_if_validation_succeeds_it_shows_a_flash_message( self, form_validating_to, pyramid_request): form.handle_form_submission(pyramid_request, form_validating_to('anything'), mock_callable(), mock.sentinel.on_failure) assert pyramid_request.session.peek_flash('success')
def test_if_validation_succeeds_it_passes_on_success_result_to_to_xhr_response( self, form_validating_to, matchers, pyramid_request, to_xhr_response): """ A result from on_success() is passed to to_xhr_response(). If on_success() returns something other than None, it passes that something to to_xhr_response(). """ form_ = form_validating_to('anything') form.handle_form_submission(pyramid_request, form_, mock_callable( return_value=mock.sentinel.result), mock.sentinel.on_failure) to_xhr_response.assert_called_once_with( pyramid_request, mock.sentinel.result, form_)
def test_it_calls_validate(self, pyramid_request): form_ = mock.Mock(spec_set=['validate']) form.handle_form_submission(pyramid_request, form_, mock_callable(), mock.sentinel.on_failure) form_.validate.assert_called_once_with(pyramid_request.POST.items())
def test_if_validation_fails_it_sets_response_status_to_400( self, invalid_form, pyramid_request, to_xhr_response ): form.handle_form_submission( pyramid_request, invalid_form(), mock.sentinel.on_success, mock_callable() ) assert to_xhr_response.call_args[0][0].response.status_int == 400
def test_if_validation_fails_it_calls_on_failure(self, pyramid_request, invalid_form): on_failure = mock_callable() form.handle_form_submission(pyramid_request, invalid_form(), mock.sentinel.on_success, on_failure) on_failure.assert_called_once_with()
def test_it_calls_validate(self, pyramid_request, matchers): form_ = mock.Mock(spec_set=["validate"]) form.handle_form_submission(pyramid_request, form_, mock_callable(), mock.sentinel.on_failure) post_items = matchers.IterableWith(list(pyramid_request.POST.items())) form_.validate.assert_called_once_with(post_items)
def test_if_validation_succeeds_it_calls_on_success( self, form_validating_to, pyramid_request): form_ = form_validating_to(mock.sentinel.appstruct) on_success = mock_callable() form.handle_form_submission(pyramid_request, form_, on_success, mock.sentinel.on_failure) on_success.assert_called_once_with(mock.sentinel.appstruct)
def test_it_calls_validate(self, pyramid_request, matchers): form_ = mock.Mock(spec_set=["validate"]) form.handle_form_submission( pyramid_request, form_, mock_callable(), mock.sentinel.on_failure ) post_items = matchers.IterableWith(list(pyramid_request.POST.items())) form_.validate.assert_called_once_with(post_items)
def test_if_validation_succeeds_it_shows_a_flash_message(self, form_validating_to, pyramid_request): form.handle_form_submission(pyramid_request, form_validating_to('anything'), mock_callable(), mock.sentinel.on_failure) assert pyramid_request.session.peek_flash('success')
def test_it_calls_validate(self, pyramid_request): form_ = mock.Mock(spec_set=["validate"]) form.handle_form_submission(pyramid_request, form_, mock_callable(), mock.sentinel.on_failure) post_items = Any.iterable.containing(list( pyramid_request.POST.items())).only() form_.validate.assert_called_once_with(post_items)
def test_if_validation_fails_it_calls_on_failure( self, pyramid_request, invalid_form ): on_failure = mock_callable() form.handle_form_submission( pyramid_request, invalid_form(), mock.sentinel.on_success, on_failure ) on_failure.assert_called_once_with()
def test_if_validation_fails_it_calls_to_xhr_response( self, invalid_form, pyramid_request, to_xhr_response): on_failure = mock_callable() form_ = invalid_form() form.handle_form_submission(pyramid_request, form_, mock.sentinel.on_success, on_failure) to_xhr_response.assert_called_once_with(pyramid_request, on_failure.return_value, form_)
def test_if_validation_succeeds_it_calls_on_success( self, form_validating_to, pyramid_request ): form_ = form_validating_to(mock.sentinel.appstruct) on_success = mock_callable() form.handle_form_submission( pyramid_request, form_, on_success, mock.sentinel.on_failure ) on_success.assert_called_once_with(mock.sentinel.appstruct)
def test_if_validation_succeeds_it_calls_to_xhr_response( self, form_validating_to, matchers, pyramid_request, to_xhr_response): form_ = form_validating_to('anything') form.handle_form_submission(pyramid_request, form_, mock_callable(return_value=None), mock.sentinel.on_failure) to_xhr_response.assert_called_once_with( pyramid_request, matchers.redirect_302_to(pyramid_request.url), form_)
def test_if_validation_fails_it_calls_to_xhr_response( self, invalid_form, pyramid_request, to_xhr_response ): on_failure = mock_callable() form_ = invalid_form() form.handle_form_submission( pyramid_request, form_, mock.sentinel.on_success, on_failure ) to_xhr_response.assert_called_once_with( pyramid_request, on_failure.return_value, form_ )
def test_if_validation_succeeds_it_calls_to_xhr_response( self, form_validating_to, matchers, pyramid_request, to_xhr_response ): form_ = form_validating_to("anything") form.handle_form_submission( pyramid_request, form_, mock_callable(return_value=None), mock.sentinel.on_failure, ) to_xhr_response.assert_called_once_with( pyramid_request, matchers.Redirect302To(pyramid_request.url), form_ )
def test_if_validation_fails_it_returns_to_xhr_response( self, invalid_form, pyramid_request, to_xhr_response): result = form.handle_form_submission(pyramid_request, invalid_form(), mock.sentinel.on_success, mock_callable()) assert result == to_xhr_response.return_value
def post(self): """Process notifications POST data.""" return form.handle_form_submission( self.request, self.form, on_success=self._update_notifications, on_failure=self._template_data)
def update(self): group = self.group def on_success(appstruct): user_svc = self.request.find_service(name='user') group_svc = self.request.find_service(name='group') group.creator = user_svc.fetch(appstruct['creator'], group.authority) group.description = appstruct['description'] group.name = appstruct['name'] group.scopes = [GroupScope(origin=o) for o in appstruct['origins']] group.organization = self.organizations[appstruct['organization']] memberids = [ _userid(username, group.authority) for username in appstruct['members'] ] group_svc.update_members(group, memberids) self.form = _create_form(self.request, self.schema, (_('Save'), )) self._update_appstruct() return self._template_context() return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): return form.handle_form_submission( self.request, self.form, on_success=self._update_user, on_failure=self._template_data, )
def post_password_form(self): """Called by Pyramid when the change password form is submitted.""" return form.handle_form_submission( self.request, self.forms['password'], on_success=self.update_password, on_failure=self._template_data)
def post_email_form(self): """Called by Pyramid when the change email form is submitted.""" return form.handle_form_submission( self.request, self.forms['email'], on_success=self.update_email_address, on_failure=self._template_data)
def post(self): return form.handle_form_submission( self.request, self.form, on_success=self._update_group, on_failure=self._template_data, )
def post(self): def on_success(appstruct): authority = appstruct["authority"] logo = appstruct["logo"] name = appstruct["name"] organization = Organization(authority=authority, name=name, logo=logo) self.request.db.add(organization) self.request.session.flash( # pylint:disable=consider-using-f-string Markup(_("Created new organization {}".format(name))), "success", ) return HTTPFound( location=self.request.route_url("admin.organizations")) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def post(self): def on_success(appstruct): grant_type = appstruct['grant_type'] if grant_type in [GrantType.jwt_bearer, GrantType.client_credentials]: secret = self.secret_gen() else: secret = None client = AuthClient(name=appstruct['name'], authority=appstruct['authority'], grant_type=appstruct['grant_type'], response_type=_response_type_for_grant_type(grant_type), secret=secret, trusted=appstruct['trusted'], redirect_uri=appstruct['redirect_url']) self.request.db.add(client) self.request.db.flush() read_url = self.request.route_url('admin_oauthclients_edit', id=client.id) return HTTPFound(location=read_url) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): def on_success(appstruct): grant_type = appstruct["grant_type"] if grant_type in [ GrantType.jwt_bearer, GrantType.client_credentials ]: secret = self.secret_gen() else: secret = None client = AuthClient( name=appstruct["name"], authority=appstruct["authority"], grant_type=appstruct["grant_type"], response_type=_response_type_for_grant_type(grant_type), secret=secret, trusted=appstruct["trusted"], redirect_uri=appstruct["redirect_url"], ) self.request.db.add(client) self.request.db.flush() read_url = self.request.route_url("admin.oauthclients_edit", id=client.id) return HTTPFound(location=read_url) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def test_if_validation_fails_it_returns_to_xhr_response( self, invalid_form, pyramid_request, to_xhr_response ): result = form.handle_form_submission( pyramid_request, invalid_form(), mock.sentinel.on_success, mock_callable() ) assert result == to_xhr_response.return_value
def test_if_validation_succeeds_it_returns_to_xhr_response( self, form_validating_to, pyramid_request, to_xhr_response): result = form.handle_form_submission(pyramid_request, form_validating_to('anything'), mock_callable(), mock.sentinel.on_failure) assert result == to_xhr_response.return_value
def post(self): def on_success(appstruct): group_create_svc = self.request.find_service(name='group_create') group_members_svc = self.request.find_service(name='group_members') # Create the new group. creator = appstruct['creator'] description = appstruct['description'] name = appstruct['name'] organization = self.organizations[appstruct["organization"]] origins = appstruct['origins'] type_ = appstruct['group_type'] userid = _userid(creator, organization.authority) if type_ == 'open': group = group_create_svc.create_open_group( name=name, userid=userid, origins=origins, description=description, organization=organization) elif type_ == 'restricted': group = group_create_svc.create_restricted_group( name=name, userid=userid, origins=origins, description=description, organization=organization) else: raise Exception('Unsupported group type {}'.format(type_)) # Add members to the group member_userids = [ _userid(username, organization.authority) for username in appstruct['members'] ] group_members_svc.add_members(group, member_userids) # Flush changes to allocate group a pubid self.request.db.flush(objects=[group]) group_url = self.request.route_url('group_read', pubid=group.pubid, slug=group.slug) self.request.session.flash(Markup( 'Created new group <a href="{url}">{name}</a>'.format( name=name, url=group_url)), queue='success') # Direct the user back to the admin page. return HTTPFound(location=self.request.route_url('admin.groups')) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def test_if_validation_succeeds_it_passes_on_success_result_to_to_xhr_response( self, form_validating_to, matchers, pyramid_request, to_xhr_response): """ A result from on_success() is passed to to_xhr_response(). If on_success() returns something other than None, it passes that something to to_xhr_response(). """ form_ = form_validating_to('anything') form.handle_form_submission( pyramid_request, form_, mock_callable(return_value=mock.sentinel.result), mock.sentinel.on_failure) to_xhr_response.assert_called_once_with(pyramid_request, mock.sentinel.result, form_)
def test_if_validation_succeeds_it_returns_to_xhr_response(self, form_validating_to, pyramid_request, to_xhr_response): result = form.handle_form_submission(pyramid_request, form_validating_to('anything'), mock_callable(), mock.sentinel.on_failure) assert result == to_xhr_response.return_value
def post(self): def on_success(appstruct): """Create a group on successful validation of POSTed form data""" organization = self.organizations[appstruct["organization"]] # We know this user exists because it is checked during schema validation creator_userid = self.user_svc.fetch( appstruct["creator"], organization.authority ).userid create_fns = { "open": self.group_create_svc.create_open_group, "restricted": self.group_create_svc.create_restricted_group, } type_ = appstruct["group_type"] if type_ not in ["open", "restricted"]: raise Exception("Unsupported group type {}".format(type_)) group = create_fns[type_]( name=appstruct["name"], userid=creator_userid, scopes=appstruct["scopes"], description=appstruct["description"], organization=organization, enforce_scope=appstruct["enforce_scope"], ) # Add members to the group. We know that these users exist # because that check is part of form schema validation. member_userids = [] for username in appstruct["members"]: member_userids.append( self.user_svc.fetch(username, organization.authority).userid ) self.group_members_svc.add_members(group, member_userids) self.request.session.flash( Markup('Created new group "{name}"'.format(name=group.name)), queue="success", ) # Direct the user back to the admin page. return HTTPFound(location=self.request.route_url("admin.groups")) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def post(self): def on_success(appstruct): """Create a group on successful validation of POSTed form data""" organization = self.organizations[appstruct["organization"]] # We know this user exists because it is checked during schema validation creator_userid = self.user_svc.fetch( appstruct["creator"], organization.authority ).userid create_fns = { "open": self.group_create_svc.create_open_group, "restricted": self.group_create_svc.create_restricted_group, } type_ = appstruct["group_type"] if type_ not in ["open", "restricted"]: raise Exception("Unsupported group type {}".format(type_)) group = create_fns[type_]( name=appstruct["name"], userid=creator_userid, origins=appstruct["origins"], description=appstruct["description"], organization=organization, enforce_scope=appstruct["enforce_scope"], ) # Add members to the group. We know that these users exist # because that check is part of form schema validation. member_userids = [] for username in appstruct["members"]: member_userids.append( self.user_svc.fetch(username, organization.authority).userid ) self.group_members_svc.add_members(group, member_userids) self.request.session.flash( Markup('Created new group "{name}"'.format(name=group.name)), queue="success", ) # Direct the user back to the admin page. return HTTPFound(location=self.request.route_url("admin.groups")) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def update(self): org = self.org def on_success(appstruct): org.name = appstruct['name'] org.logo = appstruct['logo'] self._update_appstruct() return self._template_context() return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): def on_success(appstruct): authority = appstruct['authority'] logo = appstruct['logo'] name = appstruct['name'] org = Organization(authority=authority, name=name, logo=logo) self.request.db.add(org) self.request.session.flash( Markup(_('Created new organization {}'.format(name))), 'success') return HTTPFound(location=self.request.route_url('admin.organizations')) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): def on_success(appstruct): read_url = self.request.route_url('admin_groups') self.request.session.flash('TODO: I will add a {gtype} group called "{name}"' ' for authority {authority}, created by {creator}'.format( gtype=appstruct['group_type'], name=appstruct['name'], authority=appstruct['authority'], creator=appstruct['creator'] ), queue='success') response = HTTPFound(location=read_url) return response return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): def on_success(appstruct): authority = appstruct['authority'] logo = appstruct['logo'] name = appstruct['name'] org = Organization(authority=authority, name=name, logo=logo) self.request.db.add(org) self.request.session.flash( Markup(_('Created new organization {}'.format(name))), 'success') return HTTPFound(location=self.request.route_url('admin_organizations')) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): """Respond to a submission of the create group form.""" def on_success(appstruct): groups_service = self.request.find_service(name='group') group = groups_service.create_private_group( name=appstruct['name'], description=appstruct.get('description'), userid=self.request.authenticated_userid) url = self.request.route_path('group_read', pubid=group.pubid, slug=group.slug) return httpexceptions.HTTPSeeOther(url) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_data)
def update(self): group = self.group def on_success(appstruct): user_svc = self.request.find_service(name='user') group.creator = user_svc.fetch(appstruct['creator'], group.authority) group.description = appstruct['description'] group.name = appstruct['name'] group.scopes = [GroupScope(origin=o) for o in appstruct['origins']] self._update_appstruct() return self._template_context() return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): """Respond to a submission of the create group form.""" def on_success(appstruct): groups_service = self.request.find_service(name='groups') group = groups_service.create( name=appstruct['name'], description=appstruct.get('description'), userid=self.request.authenticated_userid) url = self.request.route_path('group_read', pubid=group.pubid, slug=group.slug) return HTTPSeeOther(url) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_data)
def post(self): def on_success(appstruct): authority = appstruct["authority"] logo = appstruct["logo"] name = appstruct["name"] org = Organization(authority=authority, name=name, logo=logo) self.request.db.add(org) self.request.session.flash( Markup(_("Created new organization {}".format(name))), "success" ) return HTTPFound(location=self.request.route_url("admin.organizations")) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def update(self): client = self.client def on_success(appstruct): grant_type = appstruct['grant_type'] client.authority = appstruct['authority'] client.grant_type = grant_type client.name = appstruct['name'] client.redirect_uri = appstruct['redirect_url'] client.response_type = _response_type_for_grant_type(grant_type) client.trusted = appstruct['trusted'] self._update_appstruct() return self._template_context() return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def post(self): """Respond to a submission of the create group form.""" def on_success(appstruct): group_create_service = self.request.find_service(name="group_create") group = group_create_service.create_private_group( name=appstruct["name"], description=appstruct.get("description"), userid=self.request.authenticated_userid, ) url = self.request.route_path( "group_read", pubid=group.pubid, slug=group.slug ) return httpexceptions.HTTPSeeOther(url) return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_data, )
def update(self): group = self.group def on_success(appstruct): """Update the group resource on successful form validation""" organization = self.organizations[appstruct["organization"]] scopes = [GroupScope(scope=o) for o in appstruct["scopes"]] self.group_update_svc.update( group, organization=organization, creator=self.user_svc.fetch(appstruct["creator"], group.authority), description=appstruct["description"], name=appstruct["name"], scopes=scopes, enforce_scope=appstruct["enforce_scope"], ) memberids = [] for username in appstruct["members"]: memberids.append( self.user_svc.fetch(username, group.authority).userid) self.group_members_svc.update_members(group, memberids) self.form = _create_form(self.request, self.schema, (_("Save"), )) self._update_appstruct() return self._template_context() return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )
def post(self): def on_success(appstruct): svc = self.request.find_service(name='group') # Create the new group. creator = appstruct['creator'] authority = appstruct['authority'] description = appstruct['description'] name = appstruct['name'] origins = appstruct['origins'] type_ = appstruct['group_type'] userid = models.User(username=creator, authority=authority).userid if type_ == 'open': group = svc.create_open_group(name=name, userid=userid, origins=origins, description=description) elif type_ == 'restricted': group = svc.create_restricted_group(name=name, userid=userid, origins=origins, description=description) else: raise Exception('Unsupported group type {}'.format(type_)) # Flush changes to allocate group a pubid self.request.db.flush(objects=[group]) group_url = self.request.route_url('group_read', pubid=group.pubid, slug=group.slug) self.request.session.flash(Markup('Created new group <a href="{url}">{name}</a>'.format( name=name, url=group_url)), queue='success') # Direct the user back to the admin page. return HTTPFound(location=self.request.route_url('admin_groups')) return form.handle_form_submission(self.request, self.form, on_success=on_success, on_failure=self._template_context)
def update(self): group = self.group def on_success(appstruct): """Update the group resource on successful form validation""" organization = self.organizations[appstruct["organization"]] scopes = [GroupScope(scope=o) for o in appstruct["scopes"]] self.group_update_svc.update( group, organization=organization, creator=self.user_svc.fetch(appstruct["creator"], group.authority), description=appstruct["description"], name=appstruct["name"], scopes=scopes, enforce_scope=appstruct["enforce_scope"], ) memberids = [] for username in appstruct["members"]: memberids.append(self.user_svc.fetch(username, group.authority).userid) self.group_members_svc.update_members(group, memberids) self.form = _create_form(self.request, self.schema, (_("Save"),)) self._update_appstruct() return self._template_context() return form.handle_form_submission( self.request, self.form, on_success=on_success, on_failure=self._template_context, )