2 changed files with 56 additions and 0 deletions
@ -0,0 +1,52 @@ |
|||
from couchpotato.core.helpers.encoding import toUnicode |
|||
from couchpotato.core.helpers.variable import natcmp |
|||
from urllib import unquote |
|||
import re |
|||
|
|||
|
|||
def getParams(params): |
|||
|
|||
reg = re.compile('^[a-z0-9_\.]+$') |
|||
|
|||
current = temp = {} |
|||
for param, value in sorted(params.iteritems()): |
|||
|
|||
nest = re.split("([\[\]]+)", param) |
|||
if len(nest) > 1: |
|||
nested = [] |
|||
for key in nest: |
|||
if reg.match(key): |
|||
nested.append(key) |
|||
|
|||
current = temp |
|||
|
|||
for item in nested: |
|||
if item is nested[-1]: |
|||
current[item] = toUnicode(unquote(value)) |
|||
else: |
|||
try: |
|||
current[item] |
|||
except: |
|||
current[item] = {} |
|||
|
|||
current = current[item] |
|||
else: |
|||
temp[param] = toUnicode(unquote(value)) |
|||
|
|||
return dictToList(temp) |
|||
|
|||
def dictToList(params): |
|||
|
|||
if type(params) is dict: |
|||
new = {} |
|||
for x, value in params.iteritems(): |
|||
try: |
|||
new_value = [dictToList(value[k]) for k in sorted(value.iterkeys(), cmp = natcmp)] |
|||
except: |
|||
new_value = value |
|||
|
|||
new[x] = new_value |
|||
else: |
|||
new = params |
|||
|
|||
return new |
Loading…
Reference in new issue