{{""" Despliege genérico para la muestra de contenido de la forma, el contenido puede ser: - La forma de captura en el bloque formcontent - Se utiliza la variable global hasCustomForm para determinar si se utiliza BEAUTIFY o el bloque - La variable global 'form' debe estar definida - Los resultados de una búsqueda - La variable global 'rowSearchResults_dbRows' debe estar definida - - Sección para uso de ventanas de tipo modal en el bloque modalBuscar Parámetros de entrada: form: contiene los elementos de captura de una forma rowSearchResults_dbRows: contiene los elementos de muestra para los resultados de una búsqueda title: contiene el titulo a mostrar en los resultados de búsqueda D_tabOptions.s_tabId_grid: id único utilizado para el grid de resultados Las variables globales requeridas por esta forma son: > s_actionRequested: Define la acción requerida, si esta es None, entonces utiliza la form002, de lo contrario solo actualiza el contenido del form o searchResults > O_form: objeto que define la forma a desplegar > s_title: título de la ventana > b_hasCustomForm: true indica que la forma biene en forma de bloque formcontent, de lo contrario usa BEAUTIFY > L_dataHidden: lista de campos que existen en dbRow para ser agregados a la forma como hidden elements > dbRow: registro de que contiene los campos en L_dataHidden cuyos datos serán agregados a la forma > rowSearchResults_dbRows: resultado de consulta en base de datos, los campos serán desplegados en forma de tabla > D_tabOptions.s_tabId_grid: id del grid con los resultados > D_gridActions: Opcionalmente se pueden especificar acciones adicionales en el grid 'plus': Agrega un símbolo de + en una columna del registro, que al precionarlo agrega un row abajo del row actual y actualiza su contenido con el URL especificado > s_url: url que regresará el contenido a mostrar, al url se agregara el id o ids del registro seleccionado 'checkbox': Agrega una columna con check box > s_title: titulo de la columna del checkbox > fn_evaluate: función lambda que es llamada para evaluar si el registro debe contener el checkbox o no > jsfn_evaluate: función en javascript que se llamará al dar click en el check box para evaluar la selección > L_gridMethods: Opcionalmente se pueden agregar columnas después de las mostrables en los resultados, lista de diccionarios con: > fn_data: función lambda que regresa el valor a mostrar por renglón > s_title: título usado en la columna """}} {{ # Extención aplicable solamente en caso de que no exista actionRequested, esto es en caso de que se este definiendo la forma }} {{extend os.path.join(D_stvFwkCfg.s_dirFwkView, 'stv_tab.html') if (globals().get('s_actionRequested', current.request.stv_fwk_permissions.btn_none.code) in D_useView.L_actionsCreateView) else None}} {{ # Flag utilizada para saber si se esta definiendo la forma, de lo contrario se esta actualizando solamente su contenido _b_createRowsTab = False b_layoutRequired = (globals().get('s_actionRequested', None) == None) _L_columns = [] # Tal ves requerido en el content.js _L_columnsHidden = [] # Tal ves requerido en el content.js }} {{block blockRowContent_form}} {{ # Si existe el elemento form, se crea el header genérico de la forma if rowContent_form and (D_useView.s_htmlClass != 'stv_en_refreshResults'): }}
{{ # Si existen errores relacionados con el campo id de la form, se despliegan de forma global en el encabezado del form if rowContent_form.errors and rowContent_form.errors.id: }}

{{=rowContent_form.errors.id}}

{{ pass if D_rowContent.D_properties.s_message: }}

{{=D_rowContent.D_properties.s_message}}

{{ pass if D_rowContent.D_properties.s_error: }}

{{=D_rowContent.D_properties.s_error}}

{{ pass # Se utiliza el formato global de definición de la forma para el dbForm }}
{{ # Si se configura el uso de la forma custom if b_customRowContent_form:}} {{block blockCustomRowContent_form}}{{end}} {{ if rowContent_form.readonly and rowContent_form.attributes['hidden']: for _attribute in rowContent_form.attributes['hidden']: response.write(XML(INPUT(_type='hidden', _name=_attribute, _value=rowContent_form.attributes['hidden'][_attribute])), escape=False) pass pass if (L_fieldsToHide and dbRecord): for _dbField in L_fieldsToHide: _O_input = INPUT(_type='hidden', _field=str(_dbField), _name=_dbField.name, _id=str(_dbField).replace(".", "_"), _value=dbRecord[_dbField], _represent=xmlescape(_dbField.represent(dbRecord[_dbField], dbRecord))) _O_input['_data-value'] = dbRecord[_dbField] response.write(XML(_O_input), escape=False) #response.write( INPUT(_type='hidden', _name=_dbField.name, _value=xmlescape(_dbField.represent(dbRecord[_dbField], dbRecord)), _rawvalue=dbRecord[_dbField]).xml(), escape=False) pass pass else: }} {{=BEAUTIFY(rowContent_form)}} {{ pass }}
{{ pass }} {{end}} {{block blockRowSearchResults_grid}} {{ # Definiciones globales _L_columns = [] _L_columnsHidden = [] }} {{ # Si se configura el uso del grid custom if b_customRowSearchResults_grid:}} {{block blockCustomRowSearchResults_grid}}{{end}} {{ else: }} {{ if (rowSearchResults_dbRows is not None) and (D_useView.s_htmlClass != 'stv_en_refreshResults'): }}
{{ if not(D_useView.b_cleanGrid): }} {{ pass }} {{ if D_rowSearchResults.D_properties.s_message: }}

{{=D_rowSearchResults.D_properties.s_message}}

{{ pass if D_rowSearchResults.D_properties.s_error: }}

{{=D_rowSearchResults.D_properties.s_error}}

{{ pass }} {{ if D_rowSearchResults.D_properties.s_type == STV_FWK_FORM.ROWSEARCHRESULTS.PROPERTIES.TYPE.S_GRID: }} {{include os.path.join(D_stvFwkCfg.s_dirFwkView, 'stv_tab_content_searchresults_grid.html')}} {{ elif D_rowSearchResults.D_properties.s_type == STV_FWK_FORM.ROWSEARCHRESULTS.PROPERTIES.TYPE.S_TREE: }} {{include os.path.join(D_stvFwkCfg.s_dirFwkView, 'stv_tab_content_searchresults_tree.html')}} {{ else: }} {{ pass }} {{ pass }} {{ pass }} {{end}} {{block blockRowAdditional}} {{block blockCustomRowAdditional}}{{end}} {{end}} {{block blockJsBefore}} {{block blockCustomJsBefore}}{{end}} {{end}} {{block blockJsAfter}} {{block blockCustomJsAfter}}{{end}} {{end}}