Trees | Indices | Help |
---|
|
1 # coding: utf-8 2 3 from collections import Iterable 4 from marshmallow import Schema, fields, ValidationError, validate 5 from six import string_types 6 79 """ 10 :param fn_list: list of callable functions, each takes one param 11 :return: None if at least one validation function exists without exceptions 12 :raises ValidationError: otherwise 13 """ 14 def func(value): 15 errors = [] 16 for fn in fn_list: 17 try: 18 fn(value) 19 except ValidationError as err: 20 errors.append(str(err)) 21 else: 22 return 23 else: 24 errors.insert(0, u"At least one validator should accept given value:") 25 raise ValidationError(errors)26 27 return func 28 29 44 4547 """ stored in db as a string: 48 "python3-marshmallow 2.0.0b5\npython-marshmallow 2.0.0b5" 49 we would represent them as 50 { name: "pkg", version: "pkg version" } 51 we implement only the serialization, since field is read-only 52 """68 6971 method = fields.Str() 72 doc = fields.Str() 73 require_auth = fields.Bool() 74 params = fields.List(fields.Str())75 76 81 8284 id = fields.Int(dump_only=True) 85 name = fields.Str(dump_only=True) 86 87 owner = fields.Str(attribute="owner_name", dump_only=True) 88 is_a_group_project = fields.Bool(dump_only=True) 89 group = fields.Str(attribute="group_name", dump_only=True) 90 91 description = fields.Str(allow_none=True) 92 instructions = fields.Str(allow_none=True) 93 homepage = fields.Url(allow_none=True) 94 contact = fields.Str(validate=validate_any([ 95 validate.URL(), 96 validate.Email(), 97 validate.OneOf(["", None]), 98 ]), allow_none=True) 99 100 disable_createrepo = fields.Bool(allow_none=True) 101 build_enable_net = fields.Bool(allow_none=True) 102 last_modified = fields.DateTime(dump_only=True) 103 104 repos = SpaceSeparatedList(allow_none=True)105 106108 name = fields.Str( 109 required=True, 110 validate=[ 111 validate.Regexp( 112 r"^[a-zA-Z][\w.-]*$", 113 error="Name must contain only letters," 114 "digits, underscores, dashes and dots." 115 "And starts with letter"), 116 ]) 117 group = fields.Str(load_only=True, allow_none=True) 118 chroots = SpaceSeparatedList(load_only=True, default=list)119 120 121 # todo: rename to ProjectChrootSchema123 124 buildroot_pkgs = SpaceSeparatedList() 125 name = fields.Str(dump_only=True) 126 127 comps = fields.Str(allow_none=True) 128 comps_name = fields.Str(allow_none=True) 129 comps_len = fields.Int(dump_only=True)130 131 134 135137 # used only for presentation 138 state = fields.Str() 139 started_on = fields.Int(dump_only=True) 140 ended_on = fields.Int(dump_only=True) 141 git_hash = fields.Str(dump_only=True) 142 chroot_name = fields.Str(dump_only=True, attribute="name") 143 build_id = fields.Int(dump_only=True) 144 145 result_dir_url = fields.Str(dump_only=True)146 147149 150 id = fields.Int(dump_only=True) 151 state = fields.Str() 152 153 submitter = fields.Str(dump_only=True, attribute="user_name") 154 155 built_packages = BuiltPackages(dump_only=True) 156 package_version = fields.Str(dump_only=True, attribute="pkg_version") 157 package_name = fields.Str(dump_only=True) 158 159 repos = SpaceSeparatedList(dump_only=True) 160 161 submitted_on = fields.Int(dump_only=True) 162 163 # timeout = fields.Int(dump_only=True) # currently has no use 164 enable_net = fields.Bool(dump_only=True) 165 166 source_type = fields.Str(dump_only=True, attribute="source_type_text") 167 source_metadata = fields.Raw(dump_only=True)168 169171 project_id = fields.Int(required=True) 172 chroots = fields.List(fields.Str()) 173 enable_net = fields.Bool() 174 175 state = fields.Str(dump_only=True)176 177 180
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Mon Dec 5 22:37:25 2016 | http://epydoc.sourceforge.net |