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