class ListUpdateSchema(PaginatedSchema, SearchableSchema, Cosmetics): """An API schema for bodhi.server.services.updates.query_updates().""" alias = Builds( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) approved_since = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) approved_before = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) bugs = Bugs( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) builds = Builds( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) critpath = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), location="querystring", missing=None, ) locked = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), location="querystring", missing=None, ) modified_since = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) modified_before = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) packages = Packages( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) pushed = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), location="querystring", missing=None, ) pushed_since = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) pushed_before = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) releases = Releases( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) # This singular version of the plural "releases" is purely for bodhi1 # backwards compat (mostly for RSS feeds) - threebean release = colander.SchemaNode( colander.String(), location="querystring", missing=None, ) request = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(UpdateRequest.values())), ) severity = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(UpdateSeverity.values())), ) status = Status( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) submitted_since = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) submitted_before = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, ) suggest = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(UpdateSuggestion.values())), ) type = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(UpdateType.values())), ) content_type = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(ContentType.values())), ) user = Users( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) updateid = Builds( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) gating = colander.SchemaNode( colander.String(), location="querystring", missing=None, validator=colander.OneOf(list(TestGatingStatus.values())), )
class SaveUpdateSchema(CSRFProtectedSchema, colander.MappingSchema): """An API schema for bodhi.server.services.updates.new_update().""" builds = Builds(colander.Sequence(accept_scalar=True), preparer=[util.splitter]) from_tag = colander.SchemaNode( colander.String(), missing=None, ) bugs = Bugs(colander.Sequence(accept_scalar=True), missing=None, preparer=[util.splitter]) display_name = colander.SchemaNode( colander.String(), missing='', ) close_bugs = colander.SchemaNode( colander.Boolean(), missing=True, ) type = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(UpdateType.values())), ) request = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(UpdateRequest.values())), missing='testing', ) severity = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(UpdateSeverity.values())), missing='unspecified', ) notes = colander.SchemaNode( colander.String(), validator=colander.Length(min=2), missing_msg='A description is required for the update.' ) autokarma = colander.SchemaNode( colander.Boolean(), missing=True, ) stable_karma = colander.SchemaNode( colander.Integer(), validator=colander.Range(min=1), missing=3, ) unstable_karma = colander.SchemaNode( colander.Integer(), validator=colander.Range(max=-1), missing=-3, ) suggest = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(UpdateSuggestion.values())), missing='unspecified', ) edited = colander.SchemaNode( colander.String(), missing='', ) requirements = colander.SchemaNode( colander.String(), missing=None, ) require_bugs = colander.SchemaNode( colander.Boolean(), missing=True, ) require_testcases = colander.SchemaNode( colander.Boolean(), missing=True, ) autotime = colander.SchemaNode( colander.Boolean(), missing=True, ) stable_days = colander.SchemaNode( colander.Integer(), validator=colander.Range(min=0), missing=0, )