|
a/Allura/allura/lib/helpers.py |
|
b/Allura/allura/lib/helpers.py |
|
... |
|
... |
10 |
from hashlib import sha1
|
10 |
from hashlib import sha1
|
11 |
from datetime import datetime
|
11 |
from datetime import datetime
|
12 |
|
12 |
|
13 |
import tg
|
13 |
import tg
|
14 |
import genshi.template
|
14 |
import genshi.template
|
|
|
15 |
import chardet
|
15 |
from formencode.validators import FancyValidator
|
16 |
from formencode.validators import FancyValidator
|
16 |
from dateutil.parser import parse
|
17 |
from dateutil.parser import parse
|
17 |
from pymongo.bson import ObjectId
|
18 |
from pymongo.bson import ObjectId
|
18 |
from pymongo.errors import InvalidId
|
19 |
from pymongo.errors import InvalidId
|
19 |
from contextlib import contextmanager
|
20 |
from contextlib import contextmanager
|
|
... |
|
... |
25 |
from webhelpers import date, feedgenerator, html, number, misc, text
|
26 |
from webhelpers import date, feedgenerator, html, number, misc, text
|
26 |
|
27 |
|
27 |
from pymongo import bson
|
28 |
from pymongo import bson
|
28 |
|
29 |
|
29 |
re_path_portion = re.compile(r'^[a-z][-a-z0-9]{2,}$')
|
30 |
re_path_portion = re.compile(r'^[a-z][-a-z0-9]{2,}$')
|
|
|
31 |
|
|
|
32 |
def really_unicode(s):
|
|
|
33 |
try:
|
|
|
34 |
return unicode(s)
|
|
|
35 |
except UnicodeDecodeError:
|
|
|
36 |
pass
|
|
|
37 |
encoding = chardet.detect(s[:1024])['encoding']
|
|
|
38 |
try:
|
|
|
39 |
return unicode(s, encoding)
|
|
|
40 |
except UnicodeDecodeError:
|
|
|
41 |
pass
|
|
|
42 |
encoding = chardet.detect(s)['encoding']
|
|
|
43 |
try:
|
|
|
44 |
return unicode(s, encoding)
|
|
|
45 |
except UnicodeDecodeError:
|
|
|
46 |
pass
|
|
|
47 |
return unicode(repr(str(s)))[1:-1]
|
30 |
|
48 |
|
31 |
def find_project(url_path):
|
49 |
def find_project(url_path):
|
32 |
from allura import model as M
|
50 |
from allura import model as M
|
33 |
for n in M.Neighborhood.query.find():
|
51 |
for n in M.Neighborhood.query.find():
|
34 |
if url_path.strip("/").startswith(n.url_prefix.strip("/")):
|
52 |
if url_path.strip("/").startswith(n.url_prefix.strip("/")):
|