def eliminar_usuario_proyecto(self, id_proyecto, id_usuario, **kw): """Metodo que elimina un usuario al proyecto seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) if usuario.proyectos.count(proyecto) >= 1: usuario.proyectos.remove(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha desasignado dicho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha desasignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se ha desasignado decho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) else: flash(_("Usuario desasignado!"), 'ok') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto)
def update(self, **kw): """Metodo que actualiza la fase en la base de datos""" try: fase = DBSession.query(Fase).get(kw['id_fase']) fase.nombre = kw['nombre'] fase.numero_fase = kw['numero_fase'] fase.descripcion = kw['descripcion'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: fase = Fase() fase.id_estado_fase = kw['id_estado_fase'] fase.id_proyecto = kw['id_proyecto'] fase.nombre = kw['nombre'] fase.descripcion = kw['descripcion'] fase.numero_fase = kw['numero_fase'] DBSession.add(fase) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Fase creada!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def eliminar_usuario_proyecto(self, id_proyecto, id_usuario, **kw): """Metodo que elimina un usuario al proyecto seleccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) if usuario.proyectos.count(proyecto) >= 1: usuario.proyectos.remove(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha desasignado dicho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha desasignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se ha desasignado decho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto) else: flash(_("Usuario desasignado!"), 'ok') redirect("/admin/proyecto/usuarios", id_proyecto=id_proyecto)
def iniciar(self, id_proyecto, **kw): """Metodo que da inicio a un proyecto""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) fases = proyecto.fases id_proyecto = proyecto.id_proyecto maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() if maxnumerofase[0]==None: flash(_("El Proyecto se encuentra sin fases! No puede iniciar..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: proyecto.iniciado = True for fase in fases: if fase.numero_fase == 1: fase.id_estado_fase = '2' DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha realizado la inicializacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except SQLAlchemyError: flash(_("No se ha realizado la inicializacion! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except (AttributeError, NameError): flash(_("No se ha realizado la inicializacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: flash(_("Proyecto iniciado!"), 'ok') redirect("/admin/proyecto/listaProyectos_a_iniciar")
def eliminar_rol_permiso(self, id_rol, id_permiso, **kw): """Metodo que elimina un permiso al rol seleccionado""" try: permiso = DBSession.query(Permiso).get(id_permiso) rol = DBSession.query(Rol).get(id_rol) if permiso.roles.count(rol) >= 1: permiso.roles.remove(rol) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo desasignar el Permiso! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except SQLAlchemyError: flash(_("No se pudo desasignar el Permiso! SQLAlchemyError..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except (AttributeError, NameError): flash(_("No se pudo desasignar el Permiso! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/permisos", id_rol=id_rol) except (ValueError): redirect("/admin/rol/permisos", id_rol=id_rol) else: flash(_("Permiso desasignado!"), 'ok') redirect("/admin/rol/permisos", id_rol=id_rol)
def delete(self, id_proyecto, **kw): """Metodo que elimina un registro de la base de datos""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) fases = proyecto.fases for fase in fases: id_fase = fase.id_fase tipo_items = DBSession.query(TipoItem).filter_by(id_fase=id_fase).all() for tipo_item in tipo_items: id_tipo_item = tipo_item.id_tipo_item atributos = DBSession.query(Atributo).filter_by(id_tipo_item=id_tipo_item).all() for atributo in atributos: DBSession.delete(DBSession.query(Atributo).get(atributo.id_atributo)) DBSession.delete(DBSession.query(TipoItem).get(id_tipo_item)) DBSession.delete(DBSession.query(Fase).get(id_fase)) DBSession.delete(DBSession.query(Proyecto).get(id_proyecto)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se pudo eliminar! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto eliminado!"), 'ok') redirect("/admin/proyecto/listado")
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: fase = Fase() fase.id_estado_fase=kw['id_estado_fase'] fase.id_proyecto = kw['id_proyecto'] fase.nombre = kw['nombre'] fase.descripcion = kw['descripcion'] fase.numero_fase = kw['numero_fase'] DBSession.add(fase) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Fase creada!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: permiso = Permiso() permiso.nombre_permiso = kw['nombre_permiso'] permiso.descripcion = kw['descripcion'] DBSession.add(permiso) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/permiso/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/permiso/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/permiso/listado") else: flash(_("Permiso creado!"), 'ok') redirect("/admin/permiso/listado")
def agregarRolUser(self, id_usuario, id_rol, id_proyecto): """Metodo que realiza la agregacion de un rol al usuario selecccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) rol.usuarios.append(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Asignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except (AttributeError, NameError): flash( _("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) else: flash(_("Rol asignado!"), 'ok') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: proyecto = Proyecto() proyecto.id_usuario = kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.iniciado = kw['iniciado'] DBSession.add(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto creado!"), 'ok') redirect("/admin/proyecto/listado")
def delete(self, id_proyecto, id_fase, id_tipo_item, **kw): """Metodo que elimina un registro de la base de datos""" try: atributos = DBSession.query(Atributo).filter_by(id_tipo_item=id_tipo_item).all() for atributo in atributos: DBSession.delete(DBSession.query(Atributo).get(atributo.id_atributo)) DBSession.delete(DBSession.query(TipoItem).get(id_tipo_item)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Tipo de Item eliminado!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item']) tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] tipo_item.id_fase = kw['id_fase'] DBSession.flush() transaction.commit() fase = DBSession.query(Fase).get(kw['id_fase']) id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: tipo_item = TipoItem() tipo_item.id_fase = kw['id_fase'] tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] DBSession.add(tipo_item) DBSession.flush() transaction.commit() fase = DBSession.query(Fase).get(kw['id_fase']) id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Tipo de Item creado!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: proyecto = DBSession.query(Proyecto).get(kw['id_proyecto']) proyecto.id_usuario = kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.inciado = kw['iniciado'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/proyecto/listado")
def update(self, **kw): """Metodo que actualiza la base de datos""" try: usuario = DBSession.query(Usuario).get(kw['id_usuario']) usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.direccion =kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/usuario/listado")
def eliminar_rol_usuario(self, id_usuario, id_rol, **kw): """Metodo que elimina un rol al usuario seleccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) if rol.usuarios.count(usuario) >= 1: rol.usuarios.remove(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo Desasignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Desasignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) except (AttributeError, NameError): flash(_("No se pudo Desasignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/roles", id_usuario=id_usuario) else: flash(_("Rol desasignado!"), 'ok') redirect("/admin/usuario/roles", id_usuario=id_usuario)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: usuario = DBSession.query(Usuario).get(kw['id_usuario']) usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.direccion = kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/usuario/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/usuario/listado")
def update(self, **kw): """Metodo que actualiza la base de datos""" try: proyecto = DBSession.query(Proyecto).get(kw['id_proyecto']) proyecto.id_usuario = kw['id_usuario'] proyecto.nombre=kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.inciado =kw['iniciado'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/proyecto/listado")
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: usuario = Usuario() usuario.nombre = kw['nombre'] usuario.apellido = kw['apellido'] usuario.nombre_usuario = kw['nombre_usuario'] usuario.password = kw['password'] usuario.direccion = kw['direccion'] usuario.telefono = kw['telefono'] usuario.email = kw['email'] DBSession.add(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") else: flash(_("Usuario creado!"), 'ok') redirect("/admin/usuario/listado")
def agregarUsuario(self, id_proyecto, id_usuario): """Metodo que realiza la agregacion de un usuario al proyecto selecccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) usuario.proyectos.append(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha asignado dicho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha asignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash( _("No se ha asignado decho Usuario! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) else: flash(_("Usuario asignado!"), 'ok') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: proyecto = Proyecto() proyecto.id_usuario=kw['id_usuario'] proyecto.nombre = kw['nombre'] proyecto.descripcion = kw['descripcion'] proyecto.fecha = kw['fecha'] proyecto.iniciado = kw['iniciado'] DBSession.add(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto creado!"), 'ok') redirect("/admin/proyecto/listado")
def eliminar_rol_usuario(self, id_usuario, id_rol, id_proyecto, **kw): """Metodo que elimina un rol al usuario seleccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) if rol.usuarios.count(usuario) >= 1: rol.usuarios.remove(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se pudo Desasignar Rol! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Desasignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) except (AttributeError, NameError): flash( _("No se pudo Desasignar Rol! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario) else: flash(_("Rol desasignado!"), 'ok') redirect("/admin/proyecto/rolesProyectoUsuario", id_proyecto=id_proyecto, id_usuario=id_usuario)
def addHijo(self, **kw): self.insertarHijo(kw) DBSession.flush() redirect('listado', id_item=kw['id_item1'], id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'], id_tipo_item=kw['id_tipo_item'])
def addAncestro(self, **kw): """Metodo para agregar un registro a la base de datos """ self.insertarAncestro(kw) DBSession.flush() redirect('listado', id_item=kw['id_item2'], id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'], id_tipo_item=kw['id_tipo_item'])
def importar(self, **kw): #id_proyecto, id_fase, id_tipo_item, nombre, descripcion, codigo): """Metodo que realiza la importacion del Tipo de Item con todos sus Atributos""" try: tipo_item = TipoItem() tipo_item.id_fase = kw['id_fase'] tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] DBSession.add(tipo_item) DBSession.flush() listaAtributos = DBSession.query(Atributo).filter_by( id_tipo_item=kw['id_tipo_item']).all() for unAtributo in listaAtributos: print unAtributo.nombre atributo = Atributo() atributo.id_tipo_item = tipo_item.id_tipo_item atributo.nombre = unAtributo.nombre atributo.descripcion = unAtributo.descripcion atributo.tipo = unAtributo.tipo DBSession.add(atributo) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha realizado la importacion! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) except SQLAlchemyError: flash(_("No se ha realizado la importacion! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) except (AttributeError, NameError): flash( _("No se ha realizado la importacion! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) else: flash(_("Se ha importado correctamente!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
def setUp(self): """Prepare model test fixture.""" try: new_attrs = {} new_attrs.update(self.attrs) new_attrs.update(self.do_get_dependencies()) self.obj = self.klass(**new_attrs) DBSession.add(self.obj) DBSession.flush() return self.obj except: DBSession.rollback() raise
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ linea_base = LineaBase() linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] linea_base.estado = kw['id_estado'] linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] DBSession.add(linea_base) DBSession.flush() id_fase = kw['id_fase'] flash("Linea Base Generada") id_proyecto=DBSession.query(Fase.id_proyecto).filter_by(id_fase=id_fase).first() redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)
def update(self, **kw): """Metodo que actualiza la base de datos""" linea_base = DBSession.query(LineaBase).get(kw['id_linea_base']) linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] auxiliar = kw['estado'] if auxiliar=='Revision': auxiliar='Desarrollo' linea_base.estado = auxiliar linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] id_fase = kw['id_fase'] DBSession.flush() id_proyecto=DBSession.query(Fase.id_proyecto).filter_by(id_fase=id_fase).first() flash("Linea Base Editada") redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ linea_base = LineaBase() linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] linea_base.estado = kw['id_estado'] linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] DBSession.add(linea_base) DBSession.flush() id_fase = kw['id_fase'] flash("Linea Base Generada") id_proyecto = DBSession.query( Fase.id_proyecto).filter_by(id_fase=id_fase).first() redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)
def update(self, **kw): """Metodo que actualiza la base de datos""" try: atributo = DBSession.query(Atributo).get(kw['id_atributo']) atributo.id_tipo_item = kw['id_tipo_item'] atributo.nombre = kw['nombre'] atributo.descripcion = kw['descripcion'] atributo.tipo = kw['tipo'] DBSession.flush() transaction.commit() tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item']) id_tipo_item = tipo_item.id_tipo_item fase = tipo_item.relacion_fase id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=fase.id_fase, id_tipo_item=id_tipo_item)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: atributo = Atributo() atributo.id_tipo_item = kw['id_tipo_item'] atributo.nombre = kw['nombre'] atributo.descripcion = kw['descripcion'] atributo.tipo = kw['tipo'] DBSession.add(atributo) DBSession.flush() transaction.commit() tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item']) id_tipo_item = tipo_item.id_tipo_item fase = tipo_item.relacion_fase id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) else: flash(_("Atributo creado!"), 'ok') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item)
def update(self, **kw): """Metodo que actualiza la base de datos""" linea_base = DBSession.query(LineaBase).get(kw['id_linea_base']) linea_base.nombre = kw['nombre'] linea_base.descripcion = kw['descripcion'] auxiliar = kw['estado'] if auxiliar == 'Revision': auxiliar = 'Desarrollo' linea_base.estado = auxiliar linea_base.id_fase = kw['id_fase'] linea_base.version = kw['version'] id_fase = kw['id_fase'] DBSession.flush() id_proyecto = DBSession.query( Fase.id_proyecto).filter_by(id_fase=id_fase).first() flash("Linea Base Editada") redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)
def iniciar(self, id_proyecto, **kw): """Metodo que da inicio a un proyecto""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) fases = proyecto.fases id_proyecto = proyecto.id_proyecto maxnumerofase = DBSession.query(func.max( Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() if maxnumerofase[0] == None: flash( _("El Proyecto se encuentra sin fases! No puede iniciar..." ), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: proyecto.iniciado = True for fase in fases: if fase.numero_fase == 1: fase.id_estado_fase = '2' DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash( _("No se ha realizado la inicializacion! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except SQLAlchemyError: flash( _("No se ha realizado la inicializacion! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") except (AttributeError, NameError): flash( _("No se ha realizado la inicializacion! Hay Problemas con el servidor..." ), 'error') redirect("/admin/proyecto/listaProyectos_a_iniciar") else: flash(_("Proyecto iniciado!"), 'ok') redirect("/admin/proyecto/listaProyectos_a_iniciar")
def delete(self, id_rol, **kw): """Metodo que elimina un registro de la base de datos""" try: DBSession.delete(DBSession.query(Rol).get(id_rol)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/rol/listado") except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") else: flash(_("Rol eliminado!"), 'ok') redirect("/admin/rol/listado")
def delete(self, id_usuario, **kw): """Metodo que elimina un registro de la base de datos""" try: DBSession.delete(DBSession.query(Usuario).get(id_usuario)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/usuario/listado") except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/listado") else: flash(_("Usuario eliminado!"), 'ok') redirect("/admin/usuario/listado")
def agregarPermiso(self, id_rol, id_permiso): """Metodo que realiza la agregacion de un permiso al rol selecccionado""" try: permiso = DBSession.query(Permiso).get(id_permiso) rol = DBSession.query(Rol).get(id_rol) permiso.roles.append(rol) DBSession.flush() transaction.commit() except IntegrityError: redirect("/admin/rol/rolPermiso",id_rol=id_rol) except SQLAlchemyError: flash(_("No se pudo asignar el Permiso! SQLAlchemyError..."), 'error') redirect("/admin/rol/rolPermiso",id_rol=id_rol) except (AttributeError, NameError): flash(_("No se pudo asignar el Permiso! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/rolPermiso",id_rol=id_rol) else: flash(_("Permiso asignado!"), 'ok') redirect("/admin/rol/rolPermiso",id_rol=id_rol)
def delete(self, id_proyecto, **kw): """Metodo que elimina un registro de la base de datos""" try: proyecto = DBSession.query(Proyecto).get(id_proyecto) fases = proyecto.fases for fase in fases: id_fase = fase.id_fase tipo_items = DBSession.query(TipoItem).filter_by( id_fase=id_fase).all() for tipo_item in tipo_items: id_tipo_item = tipo_item.id_tipo_item atributos = DBSession.query(Atributo).filter_by( id_tipo_item=id_tipo_item).all() for atributo in atributos: DBSession.delete( DBSession.query(Atributo).get( atributo.id_atributo)) DBSession.delete( DBSession.query(TipoItem).get(id_tipo_item)) DBSession.delete(DBSession.query(Fase).get(id_fase)) DBSession.delete(DBSession.query(Proyecto).get(id_proyecto)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") except SQLAlchemyError: flash(_("No se pudo eliminar! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/listado") except (AttributeError, NameError): flash(_("No se pudo eliminar! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/listado") else: flash(_("Proyecto eliminado!"), 'ok') redirect("/admin/proyecto/listado")
def update(self, **kw): """Metodo que actualiza la base de datos""" try: tipo_item = DBSession.query(TipoItem).get(kw['id_tipo_item']) tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] tipo_item.id_fase = kw['id_fase'] DBSession.flush() transaction.commit() fase = DBSession.query(Fase).get(kw['id_fase']) id_fase = fase.id_fase id_proyecto = fase.id_proyecto except IntegrityError: transaction.abort() flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash( _("No se han guardado los cambios! Hay Problemas con el servidor..." ), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def agregarRol(self, id_proyecto, id_rol): """Metodo que realiza la agregacion de un rol al proyecto selecccionado""" try: rol = DBSession.query(Rol).get(id_rol) proyecto = DBSession.query(Proyecto).get(id_proyecto) rol.proyectos.append(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha asignado dicho Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha asignado dicho Rol! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se ha asignado decho Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto) else: flash(_("Rol asignado!"), 'ok') redirect("/admin/proyecto/rolProyecto",id_proyecto=id_proyecto)
def agregarUsuario(self, id_proyecto, id_usuario): """Metodo que realiza la agregacion de un usuario al proyecto selecccionado""" try: usuario = DBSession.query(Usuario).get(id_usuario) proyecto = DBSession.query(Proyecto).get(id_proyecto) usuario.proyectos.append(proyecto) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha asignado dicho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except SQLAlchemyError: flash(_("No se ha asignado dicho Usuario! SQLAlchemyError..."), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) except (AttributeError, NameError): flash(_("No se ha asignado decho Usuario! Hay Problemas con el servidor..."), 'error') redirect("/admin/proyecto/usuarioProyecto", id_proyecto=id_proyecto) else: flash(_("Usuario asignado!"), 'ok') redirect("/admin/proyecto/usuarioProyecto",id_proyecto=id_proyecto)
def importar(self, **kw): #id_proyecto, id_fase, id_tipo_item, nombre, descripcion, codigo): """Metodo que realiza la importacion del Tipo de Item con todos sus Atributos""" try: tipo_item = TipoItem() tipo_item.id_fase = kw['id_fase'] tipo_item.nombre = kw['nombre'] tipo_item.codigo = kw['codigo'] tipo_item.descripcion = kw['descripcion'] DBSession.add(tipo_item) DBSession.flush() listaAtributos = DBSession.query(Atributo).filter_by(id_tipo_item=kw['id_tipo_item']).all() for unAtributo in listaAtributos: print unAtributo.nombre atributo = Atributo() atributo.id_tipo_item = tipo_item.id_tipo_item atributo.nombre = unAtributo.nombre atributo.descripcion = unAtributo.descripcion atributo.tipo = unAtributo.tipo DBSession.add(atributo) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha realizado la importacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) except SQLAlchemyError: flash(_("No se ha realizado la importacion! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) except (AttributeError, NameError): flash(_("No se ha realizado la importacion! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase']) else: flash(_("Se ha importado correctamente!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=kw['id_proyecto'], id_fase=kw['id_fase'])
def agregarRol(self, id_usuario, id_rol): """Metodo que realiza la agregacion de un rol al usuario selecccionado""" try: rol = DBSession.query(Rol).get(id_rol) usuario = DBSession.query(Usuario).get(id_usuario) rol.usuarios.append(usuario) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/rolUsuario", id_usuario=id_usuario) except SQLAlchemyError: flash(_("No se pudo Asignar Rol! SQLAlchemyError..."), 'error') redirect("/admin/usuario/rolUsuario", id_usuario=id_usuario) except (AttributeError, NameError): flash(_("No se pudo Asignar Rol! Hay Problemas con el servidor..."), 'error') redirect("/admin/usuario/rolUsuario", id_usuario=id_usuario) else: flash(_("Rol asignado!"), 'ok') redirect("/admin/usuario/rolUsuario",id_usuario=id_usuario)
def update(self, **kw): """Metodo que actualiza la fase en la base de datos""" try: fase = DBSession.query(Fase).get(kw['id_fase']) fase.nombre=kw['nombre'] fase.numero_fase=kw['numero_fase'] fase.descripcion = kw['descripcion'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto']) else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/fase/listadoFasesPorProyecto", id_proyecto=kw['id_proyecto'])
def update(self, **kw): """Metodo que actualizar la base de datos""" try: rol = DBSession.query(Rol).get(kw['id_rol']) rol.tipo=kw['tipo'] rol.nombre_rol=kw['nombre_rol'] rol.descripcion = kw['descripcion'] DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") except SQLAlchemyError: flash(_("No se han guardado los cambios! SQLAlchemyError..."), 'error') redirect("/admin/rol/listado") except (AttributeError, NameError): flash(_("No se han guardado los cambios! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") else: flash(_("Se han guardado los cambios!"), 'ok') redirect("/admin/rol/listado")
def delete(self, id_proyecto, id_fase, id_tipo_item, **kw): """Metodo que elimina un registro de la base de datos""" try: atributos = DBSession.query(Atributo).filter_by( id_tipo_item=id_tipo_item).all() for atributo in atributos: DBSession.delete( DBSession.query(Atributo).get(atributo.id_atributo)) DBSession.delete(DBSession.query(TipoItem).get(id_tipo_item)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase) else: flash(_("Tipo de Item eliminado!"), 'ok') redirect("/admin/tipo_item/listadoTipoItemPorFase", id_proyecto=id_proyecto, id_fase=id_fase)
def delete(self, id_proyecto, id_fase, id_tipo_item, id_atributo, **kw): """ Metodo que elimina el registro de un atributo Parametros: - id_atributo: Para identificar el atributo a eliminar - id_tipo_item: Para redireccionar al listado de atributos correspondientes al tipo de item """ try: DBSession.delete(DBSession.query(Atributo).get(id_atributo)) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except SQLAlchemyError: flash(_("No se ha eliminado! SQLAlchemyError..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) except (AttributeError, NameError): flash(_("No se ha eliminado! Hay Problemas con el servidor..."), 'error') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) else: flash(_("Atributo eliminado!"), 'ok') redirect("/admin/atributo/listadoAtributosPorTipoItem", id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item)
def add(self, **kw): """Metodo para agregar un registro a la base de datos """ try: rol = Rol() rol.tipo = kw['tipo'] rol.nombre_rol = kw['nombre_rol'] rol.descripcion = kw['descripcion'] DBSession.add(rol) DBSession.flush() transaction.commit() except IntegrityError: transaction.abort() flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") except SQLAlchemyError: flash(_("No se ha guardado! SQLAlchemyError..."), 'error') redirect("/admin/rol/listado") except (AttributeError, NameError): flash(_("No se ha guardado! Hay Problemas con el servidor..."), 'error') redirect("/admin/rol/listado") else: flash(_("Rol creado!"), 'ok') redirect("/admin/rol/listado")
def aprobar(self, id_proyecto, id_fase, id_linea_base, **kw): """Metodo que aprueba la linea base""" linea_base = DBSession.query(LineaBase).get(id_linea_base) #Se realiza comprobaciones si la linea base se encuentra en estado de Revision if linea_base.estado=='Revision': sw=0 items=linea_base.items for item in items: if item.estado=='Revision': sw=1 if sw==1: flash(_("No puede aprobar la Linea Base, contiene items en revision"), 'error') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase) if linea_base.estado=='Aprobado': flash(_("La Linea Base ya se encuentra aprobada"), 'warning') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase) items = linea_base.items #Se verifica antes de aprobar que la linea base tenga por lo menos un item if items == []: flash(_("No puede aprobar una Linea Base sin items"), 'error') redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase) #Aqui se aprueba la linea base linea_base.estado = 'Aprobado' DBSession.flush() ################################### Modificacion de Estado de Fases ############################### linea_bases=DBSession.query(LineaBase).filter_by(id_fase=id_fase).filter_by(estado='Aprobado') itemsenLineaBase = [] for linea_base in linea_bases: itemsLineaBase = linea_base.items for itemLineaBase in itemsLineaBase: itemsenLineaBase.append(itemLineaBase) contador_items_en_linea_base = 0 for item in itemsenLineaBase: contador_items_en_linea_base = contador_items_en_linea_base + 1 #Se almacena la cantidad de items que se encuentran en una linea base aprobada dentro de la fase actual en: contador_items_en_linea_base tipo_items=DBSession.query(TipoItem).filter_by(id_fase=id_fase) itemsDeFaseActual = [] for tipo_item in tipo_items: itemsTipoItem = DBSession.query(Item).filter_by(id_tipo_item=tipo_item.id_tipo_item).filter_by(vivo=True).filter_by(estado='Aprobado') for itemTipoItem in itemsTipoItem: itemsDeFaseActual.append(itemTipoItem) contador_items_en_fase_actual = 0 for item in itemsDeFaseActual: contador_items_en_fase_actual = contador_items_en_fase_actual + 1 #Se almacena la cantidad de items que se encuentran en la fase actual en: contador_items_en_fase_actual fase=DBSession.query(Fase).get(id_fase) #Aqui se verifica si todos los items de la fase actual se encuentran en una linea base if contador_items_en_linea_base == contador_items_en_fase_actual: #En caso positivo el estado de la fase actual pasa al estado Con Lineas Bases(Id=4) fase.id_estado_fase = '4' if contador_items_en_linea_base < contador_items_en_fase_actual: #En este caso, el estado de la fase actual pasa al estado Con Lineas Bases Parciales(Id=3) fase.id_estado_fase = '3' DBSession.flush() maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() #A continuación se verifica que: si existe una fase posterior, dicha fase cambia a estado de Desarrollo(Id=2) if fase.numero_fase < maxnumerofase: numero_fase_siguiente = fase.numero_fase+1 fase_siguiente=DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).filter_by(numero_fase=numero_fase_siguiente).first() if fase_siguiente != None: fase_siguiente.id_estado_fase = '2' DBSession.flush() #Aqui comprobamos si todos los items de la fase actual tienen sucesores, en ese caso #el estado de la fase cambiamos a Finalizado fase=DBSession.query(Fase).get(id_fase) items_sin_sucesores = 0 if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases': tipo_items=DBSession.query(TipoItem).filter_by(id_fase=id_fase) #itemsDeFaseActual = [] for tipo_item in tipo_items: itemsTipoItem = DBSession.query(Item).filter_by(id_tipo_item=tipo_item.id_tipo_item).filter_by(vivo=True).filter_by(estado='Aprobado') for itemTipoItem in itemsTipoItem: succs = DBSession.query(RelacionItem).filter_by(id_item1=itemTipoItem.id_item) sw=0 for suc in succs: sw=1 if sw==0: items_sin_sucesores = items_sin_sucesores + 1 if contador_items_en_fase_actual == contador_items_en_fase_actual - items_sin_sucesores: fase.id_estado_fase = '5' DBSession.flush() #La condicion para que la ultima fase ya pase a Finalizado una vez que está Con Lineas Bases, debido #a que no tendrá sucesores if fase.numero_fase == maxnumerofase and fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases': fase.id_estado_fase = '5' DBSession.flush() flash("Linea Base Aprobada") redirect("/admin/linea_base/listado_linea_bases",id_proyecto=id_proyecto, id_fase=id_fase)
def delete(self, id_relacion, idItemActual, id_proyecto, id_fase, id_tipo_item): """Metodo que elimina un registro de la base de datos""" item = DBSession.query(Item).get(idItemActual) id_item = item.id_item version_anterior = item.version version_nueva = int(item.version) + 1 linea_bases_item = item.linea_bases #Comprobamos que no se encuentre en una Linea Base if linea_bases_item != []: for linea_base_item in linea_bases_item: flash(_("No puede Eliminar la relacion del Item! Se encuentra en una Linea Base..."), 'error') redirect('/relacion/listado', id_item=idItemActual, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item) #El Item cambia de version al eliminar la relacion itemHistorial = ItemHistorial() itemHistorial.id_item = item.id_item itemHistorial.id_tipo_item = item.id_tipo_item itemHistorial.codigo = item.codigo itemHistorial.descripcion = item.descripcion itemHistorial.complejidad = item.complejidad itemHistorial.prioridad = item.prioridad itemHistorial.estado = "Desarrollo" itemHistorial.version = version_anterior itemHistorial.observacion = item.observacion itemHistorial.fecha_modificacion = item.fecha_modificacion item.version = version_nueva item.estado = "Desarrollo" DBSession.add(itemHistorial) DBSession.flush() #Consultamos los detalles que tiene el Item a ser editado y tambien #los atributos actuales de su Tipo de Item correspondiente detalles = DBSession.query(ItemDetalle).filter_by(id_item=id_item) atributos = DBSession.query(Atributo).filter_by(id_tipo_item=id_tipo_item) lista_id_atributo = [] if atributos != None: for atributo in atributos: lista_id_atributo.append(atributo.id_atributo) #Enviamos al historial los detalles del Item a ser editado if detalles != None: for detalle in detalles: if lista_id_atributo.count(detalle.id_atributo) >= 1: lista_id_atributo.remove(detalle.id_atributo) itemDetalleHistorial = ItemDetalleHistorial() itemDetalleHistorial.id_item = id_item itemDetalleHistorial.id_item_detalle = detalle.id_item_detalle itemDetalleHistorial.id_atributo = detalle.id_atributo itemDetalleHistorial.nombre_atributo = detalle.nombre_atributo itemDetalleHistorial.valor = detalle.valor itemDetalleHistorial.version = version_anterior DBSession.add(itemDetalleHistorial) DBSession.flush() #Cargamos a vacio los atributos que no contemplaban los detalles actuales if lista_id_atributo != None: for id_atributo in lista_id_atributo: atributo = DBSession.query(Atributo).get(id_atributo) itemDetalle = ItemDetalle() itemDetalle.id_item = id_item itemDetalle.id_atributo = atributo.id_atributo itemDetalle.nombre_atributo = atributo.nombre itemDetalle.valor = "" DBSession.add(itemDetalle) DBSession.flush() #Enviamos sus relaciones actuales al historial de relaciones hijos = DBSession.query(RelacionItem).filter_by(id_item1=id_item) antecesores = DBSession.query(RelacionItem).filter_by(id_item2=id_item) if hijos != None: for hijo in hijos: relacion_historial = RelacionHistorial() relacion_historial.tipo = hijo.tipo relacion_historial.id_item1 = hijo.id_item1 relacion_historial.id_item2 = hijo.id_item2 relacion_historial.version_modif = version_anterior DBSession.add(relacion_historial) DBSession.flush() if antecesores != None: for antecesor in antecesores: relacion_historial = RelacionHistorial() relacion_historial.tipo = antecesor.tipo relacion_historial.id_item1 = antecesor.id_item1 relacion_historial.id_item2 = antecesor.id_item2 relacion_historial.version_modif = version_anterior DBSession.add(relacion_historial) DBSession.flush() #Ponemos a revision todos los items afectados por el item editado #Tambien colocamos a "Revision" las Lineas Bases correspondientes global itemsAfectados global listaRelaciones itemsAfectados = [] listaRelaciones = [] itemsAfectados.append(id_item) for item_afectado in itemsAfectados: self.buscarRelaciones(item_afectado) for item_afectado in itemsAfectados: item_cambio = DBSession.query(Item).get(item_afectado) item_cambio.estado = "Revision" linea_bases_item = item_cambio.linea_bases if linea_bases_item != None: for linea_base_item in linea_bases_item: if linea_base_item.estado == "Aprobado": id_linea_base = linea_base_item.id_linea_base linea_base = DBSession.query(LineaBase).get(id_linea_base) linea_base.estado = "Revision" fase = DBSession.query(Fase).get(linea_base.id_fase) if fase.relacion_estado_fase.nombre == "Finalizado": fase.id_estado_fase = '4' DBSession.flush() DBSession.flush() #Los archivos adjuntos del Item a ser editado se copian #para tener el registro de estos archivos con esa version de item archivos_item_editado = DBSession.query(ItemArchivo).filter_by(id_item=id_item).filter_by(version_item=version_anterior) if archivos_item_editado != None: for archivo in archivos_item_editado: nuevo_archivo = ItemArchivo() nuevo_archivo.id_item = archivo.id_item nuevo_archivo.version_item = version_anterior nuevo_archivo.nombre_archivo = archivo.nombre_archivo nuevo_archivo.contenido_archivo = archivo.contenido_archivo archivo.version_item = version_nueva DBSession.add(nuevo_archivo) DBSession.flush() DBSession.delete(DBSession.query(RelacionItem).get(id_relacion)) DBSession.flush() transaction.commit() flash(_("Relacion eliminada!"), 'ok') redirect('/relacion/listado', id_item=idItemActual, id_proyecto=id_proyecto, id_fase=id_fase, id_tipo_item=id_tipo_item)
def romper(self, id_proyecto, id_fase, id_linea_base, **kw): """Metodo que rompe la linea base""" fase=DBSession.query(Fase).get(id_fase) linea_bases=DBSession.query(LineaBase).filter_by(id_fase=id_fase).filter_by(estado='Aprobado') itemsenLineaBase = [] for linea_base in linea_bases: itemsLineaBase = linea_base.items for itemLineaBase in itemsLineaBase: itemsenLineaBase.append(itemLineaBase) contador_items_en_linea_base = 0 for item in itemsenLineaBase: contador_items_en_linea_base = contador_items_en_linea_base + 1 #Se almacena la cantidad de items que se encuentran en una linea base aprobada dentro de la fase actual en: contador_items_en_linea_base if contador_items_en_linea_base==1: if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases' or fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases Parciales': fase.id_estado_fase='2' maxnumerofase = DBSession.query(func.max(Fase.numero_fase)).filter_by(id_proyecto=id_proyecto).first() #A continuación se verifica que: si existe una fase posterior, y si no tiene items, tendrá que tener el estado de su fase inicial if fase.numero_fase < maxnumerofase: numero_fase_siguiente = fase.numero_fase+1 fase_siguiente=DBSession.query(Fase).filter_by(id_proyecto=id_proyecto).filter_by(numero_fase=numero_fase_siguiente).first() tipo_items=DBSession.query(TipoItem).filter_by(id_fase=fase_siguiente.id_fase) itemsDeFaseActual = [] for tipo_item in tipo_items: itemsTipoItem = DBSession.query(Item).filter_by(id_tipo_item=tipo_item.id_tipo_item).filter_by(vivo=True) for itemTipoItem in itemsTipoItem: itemsDeFaseActual.append(itemTipoItem) contador_items_en_fase_siguiente = 0 for item in itemsDeFaseActual: contador_items_en_fase_siguiente = contador_items_en_fase_siguiente + 1 if contador_items_en_fase_siguiente == 0: fase_siguiente.id_estado_fase='1' #Comprueba si la fase se encuentra en el estado Con Linas Bases, cambia al estado Con Lineas Bases Parciales, # si es que existe más de un item en una linea base if contador_items_en_linea_base>1: if fase.relacion_estado_fase.nombre_estado=='Con Lineas Bases': fase.id_estado_fase='3' DBSession.flush() linea_base = DBSession.query(LineaBase).get(id_linea_base) #Cambia el estado de la linea base de Aprobado a Desarrollo linea_base.estado = 'Desarrollo' DBSession.flush() #Guarda en el historial la última linea base aprobada linea_baseHistorial = LineaBaseHistorial() linea_baseHistorial.id_linea_base = linea_base.id_linea_base linea_baseHistorial.nombre = linea_base.nombre linea_baseHistorial.descripcion = linea_base.descripcion linea_baseHistorial.estado = linea_base.estado linea_baseHistorial.id_fase = linea_base.id_fase linea_baseHistorial.version = linea_base.version DBSession.add(linea_baseHistorial) DBSession.flush() linea_baseHistorial=DBSession.query(LineaBaseHistorial).filter_by(id_linea_base=linea_base.id_linea_base).filter_by(version=linea_base.version).first() items = linea_base.items #Aqui se van agregando registros a la tabla Linea_Base_Item_Historial para que el #sistema guarde automáticamente el historial de los items que contiene la linea base for item in items: #item.linea_bases_historial.append(linea_baseHistorial) linea_base_item_historial=LineaBaseItemHistorial() linea_base_item_historial.relacion=linea_baseHistorial linea_base_item_historial.id_item=item.id_item linea_base_item_historial.id_historial_linea_base=linea_baseHistorial.id_historial_linea_base linea_base_item_historial.version=item.version item.linea_bases_historial.append(linea_base_item_historial) DBSession.add(linea_base_item_historial) DBSession.flush() version_aux = int(linea_base.version)+1 linea_base.version = str(version_aux) DBSession.flush() flash("Linea Base Rota") redirect("/admin/linea_base/listado_linea_bases", id_proyecto=id_proyecto, id_fase=id_fase)