def cargar_valores(request, id_proyecto, id_fase, id_item): proyecto = Proyectos.objects.get(id=id_proyecto) fase = Fases.objects.get(id=id_fase) itemactual = Items.objects.get(id=id_item) if fase.estado == 'FD' or proyecto.estado=='Inactivo' or itemactual.estado=='En Revision' or itemactual.estado=='Bloqueado' or itemactual.estado=='Validado': mensaje = 'No se pueden modificar atributos. Dirijase a consultar item.' ctx = {'mensaje':mensaje, 'id_proyecto': id_proyecto} template_name = './items/itemalerta.html' return render_to_response(template_name, ctx, context_instance=RequestContext(request)) if request.method=='POST': idtipoitem = itemactual.tipo_item_id versionitem = itemactual.version + 1 lista_atributos = ordenar_mantener(idtipoitem) i = 1 posicion = 1 for listaatributo in lista_atributos: nombreatributo = listaatributo.nombre idatributo = listaatributo.id_atributo iditematributo = listaatributo.id_tipoitem tipoatributoobjetos = TipoAtributo.objects.filter(id=listaatributo.id_atributo) valoritems = ValorItem() for tipoatributoobjeto in tipoatributoobjetos: tipodatoatributo= tipoatributoobjeto.tipo if tipodatoatributo=='Archivo Externo': archivo = ArchivoExterno() archivo.valor = request.FILE[str(i)] archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_archivoexterno' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo=='Texto': archivo = Texto() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo for tipoatributoobjeto in tipoatributoobjetos: archivo.longitud = tipoatributoobjeto.longitud archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_texto' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo=='Numerico': archivo = Numerico() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo for tipoatributoobjeto in tipoatributoobjetos: archivo.longitud = tipoatributoobjeto.longitud archivo.precision = tipoatributoobjeto.precision archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_numerico' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo=='Fecha': archivo = Fecha() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_fecha' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo=='Logico': archivo = Logico() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_logico' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() i = i+1 posicion = posicion+1 itemactual.version = versionitem itemactual.save() mensaje = 'Atributos modificados con extito.' template_name='./items/itemalerta.html' ctx = {'mensaje': mensaje, 'id_proyecto':id_proyecto, 'id_fase': id_fase,} return render_to_response(template_name, ctx, context_instance=RequestContext(request)) idtipo = itemactual.tipo_item_id lista_atributos = ordenar_mantener(idtipo) lista_valores = [] orden = 0 atributositem = ValorItem.objects.filter(proyecto_id=id_proyecto, fase_id=id_fase, item_id=id_item, version=itemactual.version).order_by('orden') if atributositem: for i in atributositem: valorfuturo = ListaValores() valorfuturo.nombre_atributo = i.nombre_atributo valorfuturo.tipo_dato = i.tipo_dato valorfuturo.orden = i.orden if i.tipo_dato=='Texto': textos = Texto.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_texto = texto.valor else: valorfuturo.valor_texto = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato=='Numerico': textos = Numerico.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_numerico = texto.valor else: valorfuturo.valor_numerico = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato=='Fecha': textos = Fecha.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_fecha = texto.valor else: valorfuturo.valor_fecha = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato=='Archivo Externo': textos = Texto.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_archivoexterno = texto.valor else: valorfuturo.valor_archivoexterno = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato=='Logico': textos = Logico.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_logico = texto.valor else: valorfuturo.valor_logico = "" valorfuturo.save() lista_valores.append(valorfuturo) else: for atributo in lista_atributos: orden = orden+1 valorfuturo = ListaValores() valorfuturo.nombre_atributo = atributo.nombre atributoobjeto = TipoAtributo.objects.get(id=atributo.id_atributo) valorfuturo.tipo_dato = atributoobjeto.tipo valorfuturo.orden = orden valorfuturo.valor_archivoexterno = "" valorfuturo.valor_texto = "" valorfuturo.valor_numerico = "" valorfuturo.valor_fecha = "" lista_valores.append(valorfuturo) template_name='./items/cargaratributos.html' return render(request, template_name, {'id_proyecto':id_proyecto, 'id_fase': id_fase, 'id_tipoitem': idtipo, 'lista_valores': lista_valores, 'id_item': id_item})
def importar (request, id_proyecto): """ Recibe un request y el id del proyecto a ser importado, se verifica si el usuario tiene permisos para importar un proyecto existente, luego se lo redirige a la pagina para completar los datos del formulario de nuevo proyecto importado, una vez completado correctamente el formulario el sistema crea un nuevo proyecto con las caracteristicas del proyecto importado. @type request: django.http.HttpRequest. @param request: Contiene informacion sobre la solicitud web actual que llamo a esta vista importar. @type id_usuario : string. @param id_usuario : Contiene el id del proyecto a ser importado. @rtype: django.shortcuts.render_to_response. @return: crearproyectoimportado.html, donde se redirige al usuario para completar los datos del nuevo proyecto importado o a proyectoalerta.html donde se notifica que el proyecto fue importado correctamente. @author: Juana Maldonado. """ proyectoImportado = Proyectos.objects.get(id=id_proyecto) if request.method == 'POST': form = ProyectoNuevoForm(request.POST) if form.is_valid(): form.clean() nombre = form.cleaned_data['Nombre_del_Proyecto'] fecha_inicio = form.cleaned_data['Fecha_de_Inicio'] duracion = form.cleaned_data['Duracion'] proyecto = Proyectos() proyecto.nombre=nombre proyecto.lider=None proyecto.fecha_inicio=fecha_inicio proyecto.duracion=duracion proyecto.is_active='True' proyecto.save() fasesImportadas = Fases.objects.filter(proyecto=id_proyecto, is_active=True) for faseImport in fasesImportadas: fase = Fases() fase.nombre = faseImport.nombre fase.estado = 'DF' fase.proyecto = proyecto fase.save() tipoitems=TipoItem.objects.filter(id_proyecto=id_proyecto, is_active=True) for tipoitem in tipoitems: TI= TipoItem() TI.nombre=tipoitem.nombre TI.descripcion=tipoitem.descripcion TI.id_proyecto=proyecto.id TI.is_active='True' TI.save() elementos_existentes = ordenar_mantener(tipoitem.id) for elemento in elementos_existentes: lista_atributo = ListaAtributo() lista_atributo.id_atributo = elemento.id lista_atributo.id_tipoitem = TI.id lista_atributo.nombre = elemento.nombre lista_atributo.is_active = True elementos = ordenar_mantener(TI.id) if elementos: lista_atributo.orden = len(elementos_existentes) + 1 else: lista_atributo.orden = 1 lista_atributo.save() TI.listaAtributo.add(lista_atributo) mensaje="Proyecto importado exitosamente" ctx = {'mensaje':mensaje} return render_to_response('proyectos/proyectoalerta.html',ctx, context_instance=RequestContext(request)) else: form = ProyectoNuevoForm() ctx ={'form': form, 'proyecto':proyectoImportado} template_name='proyectos/crearproyectoimportado.html' return render_to_response(template_name, ctx, context_instance=RequestContext(request))
def cargar_valores(request, id_proyecto, id_fase, id_item): proyecto = Proyectos.objects.get(id=id_proyecto) fase = Fases.objects.get(id=id_fase) itemactual = Items.objects.get(id=id_item) if fase.estado == 'FD' or proyecto.estado == 'Inactivo' or itemactual.estado == 'En Revision' or itemactual.estado == 'Bloqueado' or itemactual.estado == 'Validado': mensaje = 'No se pueden modificar atributos. Dirijase a consultar item.' ctx = {'mensaje': mensaje, 'id_proyecto': id_proyecto} template_name = './items/itemalerta.html' return render_to_response(template_name, ctx, context_instance=RequestContext(request)) if request.method == 'POST': idtipoitem = itemactual.tipo_item_id versionitem = itemactual.version + 1 lista_atributos = ordenar_mantener(idtipoitem) i = 1 posicion = 1 for listaatributo in lista_atributos: nombreatributo = listaatributo.nombre idatributo = listaatributo.id_atributo iditematributo = listaatributo.id_tipoitem tipoatributoobjetos = TipoAtributo.objects.filter( id=listaatributo.id_atributo) valoritems = ValorItem() for tipoatributoobjeto in tipoatributoobjetos: tipodatoatributo = tipoatributoobjeto.tipo if tipodatoatributo == 'Archivo Externo': archivo = ArchivoExterno() archivo.valor = request.FILE[str(i)] archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_archivoexterno' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo == 'Texto': archivo = Texto() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo for tipoatributoobjeto in tipoatributoobjetos: archivo.longitud = tipoatributoobjeto.longitud archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_texto' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo == 'Numerico': archivo = Numerico() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo for tipoatributoobjeto in tipoatributoobjetos: archivo.longitud = tipoatributoobjeto.longitud archivo.precision = tipoatributoobjeto.precision archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_numerico' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo == 'Fecha': archivo = Fecha() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_fecha' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() elif tipodatoatributo == 'Logico': archivo = Logico() archivo.valor = request.POST.get(str(i), '') archivo.id_item = id_item archivo.nombre_atributo = nombreatributo archivo.save() valoritems.item_id = id_item valoritems.valor_id = archivo.id valoritems.tabla_valor_nombre = 'tipoatributo_logico' valoritems.nombre_atributo = nombreatributo valoritems.tipo_dato = tipodatoatributo valoritems.version = versionitem valoritems.orden = posicion valoritems.proyecto_id = id_proyecto valoritems.fase_id = id_fase valoritems.save() i = i + 1 posicion = posicion + 1 itemactual.version = versionitem itemactual.save() mensaje = 'Atributos modificados con extito.' template_name = './items/itemalerta.html' ctx = { 'mensaje': mensaje, 'id_proyecto': id_proyecto, 'id_fase': id_fase, } return render_to_response(template_name, ctx, context_instance=RequestContext(request)) idtipo = itemactual.tipo_item_id lista_atributos = ordenar_mantener(idtipo) lista_valores = [] orden = 0 atributositem = ValorItem.objects.filter( proyecto_id=id_proyecto, fase_id=id_fase, item_id=id_item, version=itemactual.version).order_by('orden') if atributositem: for i in atributositem: valorfuturo = ListaValores() valorfuturo.nombre_atributo = i.nombre_atributo valorfuturo.tipo_dato = i.tipo_dato valorfuturo.orden = i.orden if i.tipo_dato == 'Texto': textos = Texto.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_texto = texto.valor else: valorfuturo.valor_texto = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato == 'Numerico': textos = Numerico.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_numerico = texto.valor else: valorfuturo.valor_numerico = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato == 'Fecha': textos = Fecha.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_fecha = texto.valor else: valorfuturo.valor_fecha = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato == 'Archivo Externo': textos = Texto.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_archivoexterno = texto.valor else: valorfuturo.valor_archivoexterno = "" valorfuturo.save() lista_valores.append(valorfuturo) if i.tipo_dato == 'Logico': textos = Logico.objects.filter(id=i.valor_id) if textos: for texto in textos: valorfuturo.valor_logico = texto.valor else: valorfuturo.valor_logico = "" valorfuturo.save() lista_valores.append(valorfuturo) else: for atributo in lista_atributos: orden = orden + 1 valorfuturo = ListaValores() valorfuturo.nombre_atributo = atributo.nombre atributoobjeto = TipoAtributo.objects.get(id=atributo.id_atributo) valorfuturo.tipo_dato = atributoobjeto.tipo valorfuturo.orden = orden valorfuturo.valor_archivoexterno = "" valorfuturo.valor_texto = "" valorfuturo.valor_numerico = "" valorfuturo.valor_fecha = "" lista_valores.append(valorfuturo) template_name = './items/cargaratributos.html' return render( request, template_name, { 'id_proyecto': id_proyecto, 'id_fase': id_fase, 'id_tipoitem': idtipo, 'lista_valores': lista_valores, 'id_item': id_item })
def importar(request, id_proyecto): """ Recibe un request y el id del proyecto a ser importado, se verifica si el usuario tiene permisos para importar un proyecto existente, luego se lo redirige a la pagina para completar los datos del formulario de nuevo proyecto importado, una vez completado correctamente el formulario el sistema crea un nuevo proyecto con las caracteristicas del proyecto importado. @type request: django.http.HttpRequest. @param request: Contiene informacion sobre la solicitud web actual que llamo a esta vista importar. @type id_usuario : string. @param id_usuario : Contiene el id del proyecto a ser importado. @rtype: django.shortcuts.render_to_response. @return: crearproyectoimportado.html, donde se redirige al usuario para completar los datos del nuevo proyecto importado o a proyectoalerta.html donde se notifica que el proyecto fue importado correctamente. @author: Juana Maldonado. """ proyectoImportado = Proyectos.objects.get(id=id_proyecto) if request.method == 'POST': form = ProyectoNuevoForm(request.POST) if form.is_valid(): form.clean() nombre = form.cleaned_data['Nombre_del_Proyecto'] fecha_inicio = form.cleaned_data['Fecha_de_Inicio'] duracion = form.cleaned_data['Duracion'] proyecto = Proyectos() proyecto.nombre = nombre proyecto.lider = None proyecto.fecha_inicio = fecha_inicio proyecto.duracion = duracion proyecto.is_active = 'True' proyecto.save() fasesImportadas = Fases.objects.filter(proyecto=id_proyecto, is_active=True) for faseImport in fasesImportadas: fase = Fases() fase.nombre = faseImport.nombre fase.estado = 'DF' fase.proyecto = proyecto fase.save() tipoitems = TipoItem.objects.filter(id_proyecto=id_proyecto, is_active=True) for tipoitem in tipoitems: TI = TipoItem() TI.nombre = tipoitem.nombre TI.descripcion = tipoitem.descripcion TI.id_proyecto = proyecto.id TI.is_active = 'True' TI.save() elementos_existentes = ordenar_mantener(tipoitem.id) for elemento in elementos_existentes: lista_atributo = ListaAtributo() lista_atributo.id_atributo = elemento.id lista_atributo.id_tipoitem = TI.id lista_atributo.nombre = elemento.nombre lista_atributo.is_active = True elementos = ordenar_mantener(TI.id) if elementos: lista_atributo.orden = len(elementos_existentes) + 1 else: lista_atributo.orden = 1 lista_atributo.save() TI.listaAtributo.add(lista_atributo) mensaje = "Proyecto importado exitosamente" ctx = {'mensaje': mensaje} return render_to_response('proyectos/proyectoalerta.html', ctx, context_instance=RequestContext(request)) else: form = ProyectoNuevoForm() ctx = {'form': form, 'proyecto': proyectoImportado} template_name = 'proyectos/crearproyectoimportado.html' return render_to_response(template_name, ctx, context_instance=RequestContext(request))