Changeset 322ec56 in sicp
- Timestamp:
- Aug 10, 2015, 2:39:06 PM (9 years ago)
- Branches:
- master
- Children:
- 61637e1
- Parents:
- 3c16ccb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/simulacion/ajax.py
r86b243a r322ec56 24 24 from django.contrib.auth.decorators import login_required 25 25 from django.utils.translation import ugettext_lazy as _ 26 from xml.etree.ElementTree import parse 26 27 from datetime import date 27 28 … … 35 36 import os 36 37 37 logger = logging.getLogger( __name__)38 logger = logging.getLogger("simulacion") 38 39 39 40 @login_required() … … 59 60 })) 60 61 62 #logger.info(_(u"Solicitud de simulación por el usuario [%s]") % str(request.username)) 63 61 64 usr = str(request.user) + "sim" 62 65 cadena = render_cadena( … … 107 110 108 111 except Exception, e: 112 #logger.error(_(u"Error al procesar la solicitud de simulación. Detalles: %s") % e) 109 113 return HttpResponse(json.dumps({'resultado': False, 'error': e})) 110 114 … … 112 116 @login_required() 113 117 def modificar_cadena(request): 118 """! 119 Función que modifica la estructura de la cadena productiva y la almacena en Base de Datos 120 121 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 122 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 123 @date 06-08-2015 124 @param[in] request Objeto que contiene la petición 125 @return Devuelve verdardero si el proceso de modificación de la estructura se llevó a cabo sin problemas, en caso 126 contrario devuelve falso y el correspondiente mensaje de error 127 """ 114 128 try: 115 129 if not request.is_ajax(): … … 127 141 })) 128 142 143 #logger.info(_(u"Petición de modificación de cadena productiva por el usuario [%s]") % str(request.username)) 144 129 145 archivo_xml = os.path.join(settings.BASE_DIR, "tmp/%s.xml" % str(request.user)) 130 146 … … 145 161 cp.save() 146 162 147 163 #logger.info(_(u"Se registro una nueva modificación para la cadena [%s] con el ID [%s]") % (producto_id, cp.pk)) 148 164 149 165 #remover nodos y arcos de la cadena modificada … … 154 170 155 171 except Exception, e: 172 """pr_id = request.GET.get('producto_id', None) 173 if pr_id: 174 logger.error(_(u"Error al modificar la cadena de producción del producto [%s]. Detalles: %s") 175 % (pr_id, e))""" 156 176 return HttpResponse(json.dumps({'resultado': False, 'error': e})) 177 178 179 @login_required() 180 def listar_cadenas_modificadas(request): 181 """! 182 Función que obtiene los datos a ser mostrados en el listado de cadenas modificadas 183 184 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 185 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 186 @date 07-08-2015 187 @param[in] request Objeto que contiene la petición 188 @return Devuelve verdadero si existen los datos de las cadenas modificadas, así como también dichos datos, 189 en caso contrario devuelve falso y su correspondiente mensaje de error 190 """ 191 try: 192 if not request.is_ajax(): 193 return HttpResponse(json.dumps({'resultado': False, 'error': MSG_NOT_AJAX})) 194 195 196 producto = request.GET.get('ciiu', None) 197 dataSet = {} 198 199 for cadena in Cadena.objects.filter(producto_id=producto): 200 cp = [ 201 '<input type=\'radio\' id=\'sel_cad\' name=\'sel_cad\' value=\'%s\'>' % cadena.id, 202 cadena.nombre, 203 cadena.autor.get_full_name(), 204 cadena.fecha.strftime("%d-%m-%Y %H:%M:%S") 205 ] 206 dataSet[cadena.id] = cp 207 208 #logger.info(_(u"Petición solicitada por el usuario [%s] para mostrar el listado de cadenas modificadas") % str(request.username)) 209 210 return HttpResponse(json.dumps({'resultado': True, 'dataSet': dataSet})) 211 212 except Exception, e: 213 #logger.error(_(u"Error al procesar la petición de mostrar listado de cadenas modificadas. Detalles: %s") % e) 214 return HttpResponse(json.dumps({'resultado': False, 'error': e})) 215 216 @login_required() 217 def show_tree_compare_cadenas(request): 218 """! 219 Función que permite obtener los datos de las cadenas a mostrar para su correspondiente comparación 220 221 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 222 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 223 @date 07-08-2015 224 @param[in] request Objeto que contiene la petición 225 @return Devuelve los datos de las cadenas a comparar, si ocurre un error devuelve falso y el correspondiente mensaje 226 """ 227 try: 228 if not request.is_ajax(): 229 return HttpResponse(json.dumps({'resultado': False, 'error': MSG_NOT_AJAX})) 230 231 cadena_id = request.GET.get("cadena_id", None) 232 233 if not cadena_id: 234 return HttpResponse(json.dumps({ 235 'resultado': False, 'error': _(u"Debe seleccionar una cadena a comparar.") 236 })) 237 238 #logger.info(_(u"Generando la cadena con ID %s") % str(cadena_id)) 239 240 listNodes, listArcs = [], [] 241 archivo_xml = os.path.join(settings.BASE_DIR, "tmp/%s_modificado.xml" % str(request.user)) 242 243 cad = Cadena.objects.get(pk=cadena_id) 244 f = open(archivo_xml, 'w') 245 f.write(cad.descifrar_cadena()) 246 f.close() 247 248 tree = parse(archivo_xml) 249 root = tree.getroot() 250 graph = root.find("graph") 251 nodes = graph.find("nodes") 252 arcs = graph.find("arcs") 253 node = nodes.findall("node") 254 arc = arcs.findall("arc") 255 256 ## Funcion lambda que permite obtener los nodos de la cadena de produccion aguas arriba 257 subNodeUp = lambda x: [ 258 { 259 "text": n.attrib['company_rif'] + " " + n.attrib['company_name'] + " - " + n.attrib['product_name'], 260 "selectable": False, 261 "tags": [x], 262 "nodes": subNodeUp(n.attrib['position']) 263 } for n in node if n.attrib['position'] in [a.attrib['src'] for a in arc if a.attrib['tgt'] == x] 264 ] 265 266 ## Funcion lambda que permite obtener los nodos de la cadena de produccion aguas abajo 267 subNodeDown = lambda x: [ 268 { 269 "text": n.attrib['company_rif'] + " " + n.attrib['company_name'] + " - " + n.attrib['product_name'], 270 "selectable": False, 271 "tags": [x], 272 "nodes": subNodeUp(n.attrib['position']) 273 } for n in node if n.attrib['position'] in [a.attrib['tgt'] for a in arc if a.attrib['src'] == x] 274 ] 275 276 ## Listado de nodos aguas arriba 277 listNodes.append({ 278 "text": "%s %s - %s (%s)" % ( 279 node[0].attrib['company_rif'], node[0].attrib['company_name'], 280 node[0].attrib['product_name'], _(u"Atrás") 281 ), 282 "selectable": False, 283 "tags": ['0'], 284 "nodes": subNodeUp('0') 285 }) 286 287 ## Listado de nodos aguas abajo 288 listNodes.append({ 289 "text": "%s %s - %s (%s)" % ( 290 node[0].attrib['company_rif'], node[0].attrib['company_name'], 291 node[0].attrib['product_name'], _(u"Adelante") 292 ), 293 "selectable": False, 294 "tags": ['0'], 295 "nodes": subNodeDown('0') 296 }) 297 298 #logger.info(_(u"Se genero la cadena a comparar con el ID %s") % str(cadena_id)) 299 300 return HttpResponse(json.dumps({ 301 'resultado': True, 'node': listNodes, 'cadena_nombre': cad.nombre 302 })) 303 304 except Exception, e: 305 #logger.error(_(u"Error al procesar los datos para la comparación de la cadena. Detalles: %s" % e)) 306 return HttpResponse(json.dumps({'resultado': False, 'error': e}))
Note: See TracChangeset
for help on using the changeset viewer.