|
a/Allura/allura/lib/validators.py |
|
b/Allura/allura/lib/validators.py |
1 |
import json
|
1 |
import json
|
2 |
from bson import ObjectId
|
2 |
from bson import ObjectId
|
3 |
import formencode as fe
|
3 |
import formencode as fe
|
4 |
from formencode import validators as fev
|
4 |
from formencode import validators as fev
|
5 |
from . import helpers as h
|
5 |
from . import helpers as h
|
|
|
6 |
import pysvn
|
6 |
|
7 |
|
7 |
class Ming(fev.FancyValidator):
|
8 |
class Ming(fev.FancyValidator):
|
8 |
|
9 |
|
9 |
def __init__(self, cls, **kw):
|
10 |
def __init__(self, cls, **kw):
|
10 |
self.cls = cls
|
11 |
self.cls = cls
|
|
... |
|
... |
59 |
try:
|
60 |
try:
|
60 |
json.loads(value)
|
61 |
json.loads(value)
|
61 |
except ValueError, e:
|
62 |
except ValueError, e:
|
62 |
raise fe.Invalid('Invalid JSON: ' + str(e), value, state)
|
63 |
raise fe.Invalid('Invalid JSON: ' + str(e), value, state)
|
63 |
return value
|
64 |
return value
|
|
|
65 |
|
|
|
66 |
|
|
|
67 |
class CheckoutUrlValidator(fev.FancyValidator):
|
|
|
68 |
def _to_python(self, value, state):
|
|
|
69 |
svn = pysvn.Client()
|
|
|
70 |
try:
|
|
|
71 |
svn.info2(value)
|
|
|
72 |
except pysvn.ClientError, e:
|
|
|
73 |
raise fe.Invalid(str(e), value, state)
|
|
|
74 |
return value
|