Explorar el Código

Added human readable pretty print and pretty eval

version-14
Pratik Vyas hace 14 años
padre
commit
71488ee293
Se han modificado 2 ficheros con 57 adiciones y 0 borrados
  1. +6
    -0
      cgi-bin/webnotes/modules/export_module.py
  2. +51
    -0
      cgi-bin/webnotes/utils/__init__.py

+ 6
- 0
cgi-bin/webnotes/modules/export_module.py Ver fichero

@@ -105,3 +105,9 @@ def clear_code_fields(doclist, folder, code_type):
if doclist[0].get(code_field[0]):

doclist[0][code_field[0]] = None

def to_sandbox(record_list=[], record_module='Sandbox'):
"""
Export record_list to Sandbox. record_list is a list of lists ([doctype],[docname] ) ,
"""
pass

+ 51
- 0
cgi-bin/webnotes/utils/__init__.py Ver fichero

@@ -556,3 +556,54 @@ def pprint_dict(d, level=1, no_blanks=True):
return indent + '{\n' \
+ indent + ',\n\t'.join(lines) \
+ '\n' + indent + '}'

def get_common(d1,d2):
"""
returns (list of keys) the common part of two dicts
"""
return [p for p in d1 if p in d2 and d1[p]==d2[p]]

def min_lod(listt):
"""
minimized a list of dictionaries using '_from_prev'
"""
import copy
l = copy.deepcopy(listt)
prev = {}
for dic in l:
common = get_common(prev,dic)
prev = dic
for i in common : del dic[i]
if not common==[] : dic['_from_prev']= ','.join(str(p) for p in common)
return l

def max_lod(listt):
"""
maximizes a list of dictionaries using '_from_prev'
"""
import copy
l = copy.deepcopy(listt)
prev = {}
for dic in l:
if '_from_prev' in dic:
prevs = dic['_from_prev'].split(',')
for p in prevs : dic[p] = prev[p]
del dic['_from_prev']
prev = dic
return l

def pprint_lod(l, level=1, no_blanks=True):
"""
returns pretty print string for list of dictionaries
"""
l = min_lod(l)
dictlist = [pprint_dict(d) for d in l]
return '[\n' + ',\n'.join(dictlist) + '\n]'

def peval_lod(string):
"""
pretty eval a pretty printed list of dictionaries (using )
"""
strdict = eval(string)
strdict = max_lod(strdict)
return strdict

Cargando…
Cancelar
Guardar