| author | Sandro Knauß <bugs@sandroknauss.de> |
| Tue, 15 Apr 2025 01:22:19 +0200 | |
| changeset 316 | 63c681b8e92c |
| parent 294 | 0e75bd39767d |
| permissions | -rw-r--r-- |
|
294
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
1 |
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net> |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
2 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
3 |
# This file is part of Iro. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
4 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
5 |
# Permission is hereby granted, free of charge, to any person obtaining a copy of |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
6 |
# this software and associated documentation files (the "Software"), to deal in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
7 |
# the Software without restriction, including without limitation the rights to use, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
8 |
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
9 |
# #Software, and to permit persons to whom the Software is furnished to do so, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
10 |
# subject to the following conditions: |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
11 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
12 |
# The above copyright notice and this permission notice shall be included in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
13 |
# all copies or substantial portions of the Software. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
14 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
15 |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
16 |
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
17 |
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
18 |
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
19 |
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
20 |
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
21 |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
22 |
"""All decorators, that are created by this package. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
23 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
24 |
Imports: |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
25 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
26 |
- :func:`.user.vUser` -- a validator for apikeys. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
27 |
- :func:`.pool.runInDBPool` -- runs a actual function in dbpool. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
28 |
""" |
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
29 |
import types |
| 115 | 30 |
|
31 |
from .user import vUser |
|
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
32 |
from .schema import Offer |
| 117 | 33 |
from .dbdefer import dbdefer |
34 |
from .pool import runInDBPool |
|
35 |
||
36 |
from ..error import ValidateException |
|
| 115 | 37 |
|
| 210 | 38 |
@dbdefer |
39 |
def vRoute(session, value, field, typ, allowString=True, allowList=True): |
|
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
40 |
""" a validator to test a valid route. use with :func:`iro.validate.validate`. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
41 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
42 |
:param session: a valid session object (is created by decorator :func:`iro.model.dbdefer.dbdefer`) |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
43 |
:param value: the value to test |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
44 |
:param string field: the field that is tested (only used to get a propper error message). |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
45 |
:param string typ: a typ to test the route in |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
46 |
:param boolean allowString: a single route is allowd. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
47 |
:param boolean allowList: a list of routes is allowed. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
48 |
:return: *value*, if value is a valid route for a given typ. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
49 |
:raises: :exc:`iro.error.ValidateException` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
50 |
""" |
| 210 | 51 |
str_ = False |
52 |
ret = [] |
|
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
53 |
|
| 210 | 54 |
if type(value) is types.StringType: |
55 |
if not allowString: |
|
56 |
raise ValidateException(field=field,msg='%s must be a list of routes.'%field) |
|
57 |
str_=True |
|
58 |
value=[value] |
|
59 |
elif not allowList: |
|
60 |
raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field) |
|
|
205
02ae72e8bab9
implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents:
122
diff
changeset
|
61 |
|
|
212
39e4c09e1b60
adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents:
210
diff
changeset
|
62 |
routes = [o.name for o in Offer.routes(session,typ)] |
|
39e4c09e1b60
adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents:
210
diff
changeset
|
63 |
providers = [o.provider for o in Offer.providers(session,typ)] |
| 210 | 64 |
for v in value: |
|
212
39e4c09e1b60
adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents:
210
diff
changeset
|
65 |
if v not in routes and v not in providers and v != "default": |
| 210 | 66 |
raise ValidateException(field=field,msg='Route %s is not valid.'%v) |
67 |
if v not in ret: |
|
68 |
ret.append(v) |
|
69 |
if str_: |
|
70 |
return ret[0] |
|
71 |
return ret |
|
| 117 | 72 |
|
|
118
e16c0250c974
validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
73 |
@dbdefer |
|
e16c0250c974
validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
74 |
def vTyp(value,field, session): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
75 |
""" a validator to test a valid typ. use with :func:`iro.validate.validate`. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
76 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
77 |
:param session: a valid session object (is created by decorator :func:`iro.model.dbdefer.dbdefer`) |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
78 |
:param value: the value to test |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
79 |
:param string field: the field that is tested (only used to get a propper error message). |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
80 |
:return: *value*, if value is a valid typ. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
81 |
:raises: :exc:`iro.error.ValidateException` |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
82 |
""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
212
diff
changeset
|
83 |
|
|
208
5da0f00ef872
session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents:
205
diff
changeset
|
84 |
for typ in Offer.typs(session): |
|
118
e16c0250c974
validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
85 |
if value == typ[0]: |
|
e16c0250c974
validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
86 |
break |
|
e16c0250c974
validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents:
117
diff
changeset
|
87 |
else: |
|
209
7a0f8fbdf7b8
adding tests for vTyp
Sandro Knauß <knauss@netzguerilla.net>
parents:
208
diff
changeset
|
88 |
raise ValidateException(field=field,msg='Typ %s is not valid.'%value) |
| 117 | 89 |
return value |