Exemple #1
0
 def post(self, **kw):
     """ Registra el nuevo proyecto creado. """
     p = Proyecto()
     p.descripcion = kw['descripcion']
     p.nombre = kw['nombre']
     p.estado = 'Nuevo'
     p.nro_fases = int(kw['nro_fases'])
     ids_proyectos = DBSession.query(Proyecto.id).all()
     if ids_proyectos:
         proximo_id_proyecto = proximo_id(ids_proyectos)
     else:
         proximo_id_proyecto = "PR1"
     p.id = proximo_id_proyecto
     if kw['lider']:
         objeto_usuario = DBSession.query(Usuario).filter(Usuario.id == \
                         kw['lider']).one()
         p.lider = objeto_usuario
         ids_fichas = DBSession.query(Ficha.id).filter(Ficha.id_usuario == \
                     kw['lider']).all()
         r = DBSession.query(Rol).filter(Rol.id == u'RL2').one()
         ficha = Ficha()
         ficha.usuario = objeto_usuario
         ficha.rol = r
         ficha.proyecto = p
         if ids_fichas:
             proximo_id_ficha = proximo_id(ids_fichas)
         else:
             proximo_id_ficha = "FI1-" + kw["lider"]
         ficha.id = proximo_id_ficha
         DBSession.add(p)
         DBSession.add(ficha)            
     else:
         DBSession.add(p)
     raise redirect('./')
Exemple #2
0
 def post(self, **kw):
     """ Registra el nuevo proyecto creado. """
     p = Proyecto()
     p.descripcion = kw['descripcion']
     p.nombre = kw['nombre']
     p.estado = 'Nuevo'
     p.nro_fases = int(kw['nro_fases'])
     ids_proyectos = DBSession.query(Proyecto.id).all()
     if ids_proyectos:
         proximo_id_proyecto = proximo_id(ids_proyectos)
     else:
         proximo_id_proyecto = "PR1"
     p.id = proximo_id_proyecto
     if kw['lider']:
         objeto_usuario = DBSession.query(Usuario).filter(Usuario.id == \
                         kw['lider']).one()
         p.lider = objeto_usuario
         ids_fichas = DBSession.query(Ficha.id).filter(Ficha.id_usuario == \
                     kw['lider']).all()
         r = DBSession.query(Rol).filter(Rol.id == u'RL2').one()
         ficha = Ficha()
         ficha.usuario = objeto_usuario
         ficha.rol = r
         ficha.proyecto = p
         if ids_fichas:
             proximo_id_ficha = proximo_id(ids_fichas)
         else:
             proximo_id_ficha = "FI1-" + kw["lider"]
         ficha.id = proximo_id_ficha
         DBSession.add(p)
         DBSession.add(ficha)
     else:
         DBSession.add(p)
     raise redirect('./')
Exemple #3
0
    def post(self, **kw):
        """ Registra la nueva línea base creada."""
        lista_ids_item = list()
        l = LineaBase()
        l.descripcion = kw['descripcion']
        ids_lineas_base = DBSession.query(LineaBase.id) \
                          .filter(LineaBase.id_fase == self.id_fase).all()
        if ids_lineas_base:
            proximo_id_linea_base = proximo_id(ids_lineas_base)
        else:
            proximo_id_linea_base = "LB1-" + self.id_fase
        l.id = proximo_id_linea_base
        l.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
        l.cerrado = True
        l.consistente = True
        for item in kw['items']:
            lista_ids_item.append((item.split("/")[0], item.split("/")[-1]))
        for i in lista_ids_item:
            items = DBSession.query(Item).filter(Item.id == i[0]).all()
            for item in items:
                l.items.append(item)

        DBSession.add(l)
        flash(u"Creación realizada de forma exitosa")
        raise redirect('./')
Exemple #4
0
 def post(self, **kw):
     """Registra la nueva ficha creada"""
     if not DBSession.query(Ficha).filter(Ficha.id_usuario == \
             kw['usuario']).filter(Ficha.id_rol == kw['rol']) \
             .filter(Ficha.id_fase == self.id_fase).count():
         f = Ficha()
         ids_fichas = DBSession.query(Ficha.id).filter(Ficha.id_usuario == \
                 kw['usuario']).all()
         if ids_fichas:        
             proximo_id_ficha = proximo_id(ids_fichas)
         else:
             proximo_id_ficha = "FI1-" + kw['usuario']
         f.id = proximo_id_ficha
         usuario = DBSession.query(Usuario).filter(Usuario.id == \
             kw['usuario']).one()
         rol = DBSession.query(Rol).filter(Rol.id ==  kw['rol']).one()
         fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
         proyecto = fase.proyecto
         f.usuario = usuario
         f.rol = rol
         f.proyecto = proyecto   
         f.fase = fase        
         DBSession.add(f)
     else:
         flash(u"La ficha ya existe", u"error")
     raise redirect('./')
Exemple #5
0
    def importar_caracteristica(self, id_tipo_item_viejo, id_tipo_item_nuevo):
        """ Realiza la importación de características de un tipo de ítem a otro.
            @param id_tipo_item_viejo: id del tipo de ítem a ser importado.
            @param id_tipo_item_nuevo: id del tipo de ítem que será creado en
                base al importado.
            @type id_tipo_item_viejo: unicode
            @type id_tipo_item_nuevo: unicode
        """
        caracteristicas = DBSession.query(Caracteristica) \
            .filter(Caracteristica.id_tipo_item == id_tipo_item_viejo).all()
        for caracteristica in caracteristicas:
            c = Caracteristica()
            c.nombre = caracteristica.nombre
            c.tipo = caracteristica.tipo
            c.descripcion = caracteristica.descripcion
            ids_caracteristicas = DBSession.query(Caracteristica.id) \
               .filter(Caracteristica.id_tipo_item == id_tipo_item_nuevo).all()
            if ids_caracteristicas:        
                proximo_id_caracteristica = proximo_id(ids_caracteristicas)
            else:
                proximo_id_caracteristica = "CA1-" + id_tipo_item_nuevo
            c.id = proximo_id_caracteristica

            c.tipo_item = DBSession.query(TipoItem).filter(TipoItem.id == \
                        id_tipo_item_nuevo).one()
            DBSession.add(c)
Exemple #6
0
 def importar_fase(self, *args, **kw):
     """ Realiza la importación de una fase de un proyecto a otro.
     """
     id_proyecto = unicode(request.url.split("/")[-8])
     f = Fase()
     id_fase = unicode(request.url.split("/")[-2])
     fase_a_importar = DBSession.query(Fase).filter(Fase.id == id_fase) \
             .one()
     existe_nombre = DBSession.query(Fase).filter(Fase.id_proyecto == \
          id_proyecto).filter(Fase.nombre == fase_a_importar.nombre).count()    
     f.nombre = fase_a_importar.nombre
     if existe_nombre:  
         f.nombre = f.nombre + "'"   
     f.orden = self.obtener_orden(id_proyecto)
     fecha_inicio = datetime.datetime.now()
     f.fecha_inicio = datetime.date(int(fecha_inicio.year), \
                 int(fecha_inicio.month),int(fecha_inicio.day))
     
     f.descripcion = fase_a_importar.descripcion
     f.estado = u'Inicial'
     ids_fases = DBSession.query(Fase.id).filter(Fase.id_proyecto == \
                 id_proyecto).all()
     if ids_fases:        
         proximo_id_fase = proximo_id(ids_fases)
     else:
         proximo_id_fase = "FA1-" + id_proyecto
     f.id = proximo_id_fase
     f.proyecto = DBSession.query(Proyecto).filter(Proyecto.id == \
             id_proyecto).one()        
     DBSession.add(f)
     self.importar_tipo_item(id_fase, f.id)
     flash(u"Se importó de forma exitosa")
     raise redirect('./../../../../..')
Exemple #7
0
 def importar_tipo_item(self, id_fase_vieja, id_fase_nueva):
     """ Realiza la importación de un tipo de ítem de una fase a otra.
         @param id_fase_vieja: id de la fase a ser importada.
         @param id_fase_nueva: id de la fase que será creada en
             base a la importada.
         @type id_fase_vieja: unicode
         @type id_fase_nueva: unicode
     """
     
     tipos_item = DBSession.query(TipoItem).filter(TipoItem.id_fase == \
                 id_fase_vieja).all()
     for tipo_item in tipos_item:
         t = TipoItem()
         t.codigo = tipo_item.codigo
         t.nombre = tipo_item.nombre
         t.descripcion = tipo_item.descripcion
         ids_tipos_item = DBSession.query(TipoItem.id) \
                 .filter(TipoItem.id_fase == id_fase_nueva).all()
         if ids_tipos_item:        
             proximo_id_tipo_item = proximo_id(ids_tipos_item)
         else:
             proximo_id_tipo_item = "TI1-" + id_fase_nueva
         t.id = proximo_id_tipo_item
         t.fase = DBSession.query(Fase).filter(Fase.id == id_fase_nueva) \
                 .one()
         DBSession.add(t)
         cont = DBSession.query(Caracteristica) \
                 .filter(Caracteristica.id_tipo_item == t.id).count()
         self.importar_caracteristica(tipo_item.id, t.id)
 def importar_caracteristica(self, id_tipo_item_viejo, id_tipo_item_nuevo):
     """
     Importa las características correspondientes al tipo de ítem a 
     importar.
     @param id_tipo_item_viejo: Id del tipo de item a importar.
     @type id_tipo_item_viejo: Unicode. 
     @param id_tipo_item_nuevo: Id del tipo de item nuevo o importado.
     @type id_tipo_item_nuevo: Unicode
     """
     caracteristicas = DBSession.query(Caracteristica) \
            .filter(Caracteristica.id_tipo_item == id_tipo_item_viejo).all()
     for caracteristica in caracteristicas:
         c = Caracteristica()
         c.nombre = caracteristica.nombre
         c.tipo = caracteristica.tipo
         c.descripcion = caracteristica.descripcion
         ids_caracteristicas = DBSession.query(Caracteristica.id) \
            .filter(Caracteristica.id_tipo_item == id_tipo_item_nuevo).all()
         if ids_caracteristicas:        
             proximo_id_caracteristica = proximo_id(ids_caracteristicas)
         else:
             proximo_id_caracteristica = "CA1-" + id_tipo_item_nuevo
         c.id = proximo_id_caracteristica
         c.tipo_item = DBSession.query(TipoItem).filter(TipoItem.id == \
             id_tipo_item_nuevo).one()
         DBSession.add(c)
Exemple #9
0
    def importar_fase(self, *args, **kw):
        """ Realiza la importación de una fase de un proyecto a otro.
        """
        id_proyecto = unicode(request.url.split("/")[-8])
        f = Fase()
        id_fase = unicode(request.url.split("/")[-2])
        fase_a_importar = DBSession.query(Fase).filter(Fase.id == id_fase) \
                .one()
        existe_nombre = DBSession.query(Fase).filter(Fase.id_proyecto == \
             id_proyecto).filter(Fase.nombre == fase_a_importar.nombre).count()
        f.nombre = fase_a_importar.nombre
        if existe_nombre:
            f.nombre = f.nombre + "'"
        f.orden = self.obtener_orden(id_proyecto)
        fecha_inicio = datetime.datetime.now()
        f.fecha_inicio = datetime.date(int(fecha_inicio.year), \
                    int(fecha_inicio.month),int(fecha_inicio.day))

        f.descripcion = fase_a_importar.descripcion
        f.estado = u'Inicial'
        ids_fases = DBSession.query(Fase.id).filter(Fase.id_proyecto == \
                    id_proyecto).all()
        if ids_fases:
            proximo_id_fase = proximo_id(ids_fases)
        else:
            proximo_id_fase = "FA1-" + id_proyecto
        f.id = proximo_id_fase
        f.proyecto = DBSession.query(Proyecto).filter(Proyecto.id == \
                id_proyecto).one()
        DBSession.add(f)
        self.importar_tipo_item(id_fase, f.id)
        flash(u"Se importó de forma exitosa")
        raise redirect('./../../../../..')
Exemple #10
0
    def importar_tipo_item(self, id_fase_vieja, id_fase_nueva):
        """ Realiza la importación de un tipo de ítem de una fase a otra.
            @param id_fase_vieja: id de la fase a ser importada.
            @param id_fase_nueva: id de la fase que será creada en
                base a la importada.
            @type id_fase_vieja: unicode
            @type id_fase_nueva: unicode
        """

        tipos_item = DBSession.query(TipoItem).filter(TipoItem.id_fase == \
                    id_fase_vieja).all()
        for tipo_item in tipos_item:
            t = TipoItem()
            t.codigo = tipo_item.codigo
            t.nombre = tipo_item.nombre
            t.descripcion = tipo_item.descripcion
            ids_tipos_item = DBSession.query(TipoItem.id) \
                    .filter(TipoItem.id_fase == id_fase_nueva).all()
            if ids_tipos_item:
                proximo_id_tipo_item = proximo_id(ids_tipos_item)
            else:
                proximo_id_tipo_item = "TI1-" + id_fase_nueva
            t.id = proximo_id_tipo_item
            t.fase = DBSession.query(Fase).filter(Fase.id == id_fase_nueva) \
                    .one()
            DBSession.add(t)
            cont = DBSession.query(Caracteristica) \
                    .filter(Caracteristica.id_tipo_item == t.id).count()
            self.importar_caracteristica(tipo_item.id, t.id)
Exemple #11
0
    def importar_caracteristica(self, id_tipo_item_viejo, id_tipo_item_nuevo):
        """ Realiza la importación de características de un tipo de ítem a otro.
            @param id_tipo_item_viejo: id del tipo de ítem a ser importado.
            @param id_tipo_item_nuevo: id del tipo de ítem que será creado en
                base al importado.
            @type id_tipo_item_viejo: unicode
            @type id_tipo_item_nuevo: unicode
        """
        caracteristicas = DBSession.query(Caracteristica) \
            .filter(Caracteristica.id_tipo_item == id_tipo_item_viejo).all()
        for caracteristica in caracteristicas:
            c = Caracteristica()
            c.nombre = caracteristica.nombre
            c.tipo = caracteristica.tipo
            c.descripcion = caracteristica.descripcion
            ids_caracteristicas = DBSession.query(Caracteristica.id) \
               .filter(Caracteristica.id_tipo_item == id_tipo_item_nuevo).all()
            if ids_caracteristicas:
                proximo_id_caracteristica = proximo_id(ids_caracteristicas)
            else:
                proximo_id_caracteristica = "CA1-" + id_tipo_item_nuevo
            c.id = proximo_id_caracteristica

            c.tipo_item = DBSession.query(TipoItem).filter(TipoItem.id == \
                        id_tipo_item_nuevo).one()
            DBSession.add(c)
 def importar_tipo_item(self, *args, **kw):
     """
     Importa un tipo de ítem a una fase determinada.
     """
     id_fase = unicode(request.url.split("/")[-10])
     t = TipoItem()
     id_tipo_item = unicode(request.url.split("/")[-2])
     tipo_item_a_importar = DBSession.query(TipoItem) \
             .filter(TipoItem.id == id_tipo_item).one()
     existe_nombre = DBSession.query(TipoItem).filter(TipoItem.id_fase == \
             id_fase).filter(TipoItem.nombre == \
             tipo_item_a_importar.nombre).count()
     existe_codigo = DBSession.query(TipoItem).filter(TipoItem.id_fase == \
             id_fase).filter(TipoItem.codigo == \
             tipo_item_a_importar.codigo).count()    
     t.nombre = tipo_item_a_importar.nombre
     t.codigo = tipo_item_a_importar.codigo
     if existe_nombre:  
         t.nombre = t.nombre + "'"
     if existe_codigo:  
         t.codigo = t.codigo + "'"
     t.descripcion = tipo_item_a_importar.descripcion
     ids_tipos_item = DBSession.query(TipoItem.id) \
             .filter(TipoItem.id_fase == id_fase).all()
     if ids_tipos_item:        
         proximo_id_tipo_item = proximo_id(ids_tipos_item)
     else:
         proximo_id_tipo_item = "TI1-" + id_fase
     t.id = proximo_id_tipo_item
     t.fase = DBSession.query(Fase).filter(Fase.id == id_fase).one()        
     DBSession.add(t)
     self.importar_caracteristica(id_tipo_item, t.id)
     flash("Se importo de forma exitosa")
     raise redirect('./../../../../../../..')
Exemple #13
0
    def dividir(self, **kw):
        """ Permite formar una línea base a partir de dos o más líneas base
            existentes previamente.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("separar linea base",
                        id_proyecto=id_proyecto,
                        id_fase=self.id_fase).is_met(request.environ):
            if "pk_linea_base" in kw:
                self.id_primera_lb = kw["pk_linea_base"]
                items = DBSession.query(Item).filter(
                    Item.id_linea_base == self.id_primera_lb)
                items_a_mostrar = UnificarItem(items)

            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id) \
                                  .filter(LineaBase.id_fase == self.id_fase) \
                                  .all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase) \
                          .filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = True
                DBSession.add(lb)

                if type(kw["seleccionados"]).__name__ == "unicode":
                    item = DBSession.query(Item) \
                           .filter(Item.id == kw["seleccionados"]).all()
                    for aux in item:
                        aux.linea_base = DBSession.query(LineaBase) \
                                      .filter(LineaBase.id == lb.id).one()
                    consistencia_lb(lb)
                else:
                    for item_seleccionado in kw["seleccionados"]:
                        items = DBSession.query(Item) \
                                .filter(Item.id == item_seleccionado).all()
                        for item in items:
                            item.linea_base = DBSession.query(LineaBase) \
                                              .filter(LineaBase.id == lb.id) \
                                              .one()
                primera_lb = DBSession.query(LineaBase) \
                             .filter(LineaBase.id == self.id_primera_lb).one()
                consistencia_lb(primera_lb)
                redirect('./.')
            d = dict(items=items_a_mostrar, model="Lineas Base")
            d["accion"] = "dividir"
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios",
                  u"error")
            redirect('./')
Exemple #14
0
 def post(self, **kw):
     """ Registra el nuevo rol creado. """
     r = Rol()
     r.nombre = kw['nombre']
     r.descripcion = kw['descripcion']
     r.tipo = kw['tipo']
     ids_roles = DBSession.query(Rol.id).all()
     if ids_roles:
         proximo_id_rol = proximo_id(ids_roles)
     else:
         proximo_id_rol = "RL1"
     r.id = proximo_id_rol
     DBSession.add(r)
     raise redirect('./')
Exemple #15
0
 def post(self, **kw):
     """ Registra el nuevo rol creado. """
     r = Rol()
     r.nombre = kw['nombre']
     r.descripcion = kw['descripcion']
     r.tipo = kw['tipo']
     ids_roles = DBSession.query(Rol.id).all()
     if ids_roles:        
         proximo_id_rol = proximo_id(ids_roles)
     else:
         proximo_id_rol = "RL1"
     r.id = proximo_id_rol
     DBSession.add(r)
     raise redirect('./')
Exemple #16
0
 def post(self, **kw):
     """ Registra el nuevo tipo de ítem creado. """
     t = TipoItem()
     t.descripcion = kw['descripcion']
     t.nombre = kw['nombre']
     t.codigo = kw['codigo'].upper()
     ids_tipos_item = DBSession.query(TipoItem.id).filter(TipoItem.id_fase \
                     == self.id_fase).all()
     if ids_tipos_item:
         proximo_id_tipo_item = proximo_id(ids_tipos_item)
     else:
         proximo_id_tipo_item = "TI1-" + self.id_fase
     t.id = proximo_id_tipo_item
     t.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
     DBSession.add(t)
     raise redirect('./')
Exemple #17
0
 def post(self, **kw):
     """ Registra el nuevo tipo de ítem creado. """
     t = TipoItem()
     t.descripcion = kw['descripcion']
     t.nombre = kw['nombre']
     t.codigo = kw['codigo'].upper()
     ids_tipos_item = DBSession.query(TipoItem.id).filter(TipoItem.id_fase \
                     == self.id_fase).all()
     if ids_tipos_item:        
         proximo_id_tipo_item = proximo_id(ids_tipos_item)
     else:
         proximo_id_tipo_item = "TI1-" + self.id_fase
     t.id = proximo_id_tipo_item
     t.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()        
     DBSession.add(t)
     raise redirect('./')
Exemple #18
0
    def unir(self, **kw):
        """ Permite realizar la unión entre dos o más líneas base de manera
            que formen una sola.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("unir lineas base",
                        id_proyecto=id_proyecto,
                        id_fase=self.id_fase).is_met(request.environ):
            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id) \
                                  .filter(LineaBase.id_fase == self.id_fase) \
                                  .all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase) \
                          .filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = False
                DBSession.add(lb)
                consistente = True
                for lb_seleccionada in kw["seleccionados"]:
                    items = DBSession.query(Item).filter(
                        Item.id_linea_base == lb_seleccionada).all()
                    a_eliminar = DBSession.query(LineaBase) \
                                 .filter(LineaBase.id == lb_seleccionada).one()
                    DBSession.delete(a_eliminar)
                    for item in items:
                        item.linea_base = DBSession.query(LineaBase) \
                                          .filter(LineaBase.id == lb.id).one()
                consistencia_lb(lb)
                DBSession.add(lb)

                redirect('./')
            lineas_base = DBSession.query(LineaBase.id) \
                          .filter(LineaBase.id_fase == self.id_fase) \
                          .filter(LineaBase.cerrado == False).all()

            d = dict(model="Linea Base", accion="./")
            d["lineas_base"] = lineas_base
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios",
                  u"error")
            redirect('./')
 def post(self, **kw):
     c = Caracteristica()
     c.descripcion = kw['descripcion']
     c.nombre = kw['nombre']
     c.tipo = kw['tipo']
     ids_caracteristicas = DBSession.query(Caracteristica.id).filter( \
                 Caracteristica.id_tipo_item == self.id_tipo_item).all()
     if ids_caracteristicas:        
         proximo_id_caracteristica = proximo_id(ids_caracteristicas)
     else:
         proximo_id_caracteristica = "CA1-" + self.id_tipo_item
     c.id = proximo_id_caracteristica
     c.tipo_item = DBSession.query(TipoItem).filter(TipoItem.id == \
             self.id_tipo_item).one()        
     DBSession.add(c)
     self.set_null(c)
     raise redirect('./')
Exemple #20
0
 def post(self, **kw):
     c = Caracteristica()
     c.descripcion = kw['descripcion']
     c.nombre = kw['nombre']
     c.tipo = kw['tipo']
     ids_caracteristicas = DBSession.query(Caracteristica.id).filter( \
                 Caracteristica.id_tipo_item == self.id_tipo_item).all()
     if ids_caracteristicas:
         proximo_id_caracteristica = proximo_id(ids_caracteristicas)
     else:
         proximo_id_caracteristica = "CA1-" + self.id_tipo_item
     c.id = proximo_id_caracteristica
     c.tipo_item = DBSession.query(TipoItem).filter(TipoItem.id == \
             self.id_tipo_item).one()
     DBSession.add(c)
     self.set_null(c)
     raise redirect('./')
    def dividir(self, **kw):
        """ Permite formar una línea base a partir de dos o más líneas base
            existentes previamente.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("separar linea base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(request.environ):
            if "pk_linea_base" in kw:
                self.id_primera_lb = kw["pk_linea_base"]
                items = DBSession.query(Item).filter(Item.id_linea_base == self.id_primera_lb)
                items_a_mostrar = UnificarItem(items)

            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id).filter(LineaBase.id_fase == self.id_fase).all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = True
                DBSession.add(lb)

                if type(kw["seleccionados"]).__name__ == "unicode":
                    item = DBSession.query(Item).filter(Item.id == kw["seleccionados"]).all()
                    for aux in item:
                        aux.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                    consistencia_lb(lb)
                else:
                    for item_seleccionado in kw["seleccionados"]:
                        items = DBSession.query(Item).filter(Item.id == item_seleccionado).all()
                        for item in items:
                            item.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                primera_lb = DBSession.query(LineaBase).filter(LineaBase.id == self.id_primera_lb).one()
                consistencia_lb(primera_lb)
                redirect("./.")
            d = dict(items=items_a_mostrar, model="Lineas Base")
            d["accion"] = "dividir"
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios", u"error")
            redirect("./")
Exemple #22
0
 def post(self, **kw):
     """Registra la nueva fase creada."""
     f = Fase()
     f.nombre = kw['nombre']   
     f.orden = kw['orden']
     f.descripcion = kw['descripcion']
     f.estado = 'Inicial'
     ids_fases = DBSession.query(Fase.id).filter(Fase.id_proyecto == \
                 self.id_proyecto).all()
     if ids_fases:        
         proximo_id_fase = proximo_id(ids_fases)
     else:
         proximo_id_fase = "FA1-" + self.id_proyecto
     f.id = proximo_id_fase
     proyecto = DBSession.query(Proyecto).filter(Proyecto.id == \
                 self.id_proyecto).one()
     f.proyecto = proyecto
     DBSession.add(f)
     self.crear_tipo_default(f.id)
     raise redirect('./')
    def unir(self, **kw):
        """ Permite realizar la unión entre dos o más líneas base de manera
            que formen una sola.
        """
        id_proyecto = self.id_fase.split("-")[1]
        if TienePermiso("unir lineas base", id_proyecto=id_proyecto, id_fase=self.id_fase).is_met(request.environ):
            if "seleccionados" in kw:
                lb = LineaBase()
                lb.descripcion = kw["descripcion"]
                ids_lineas_base = DBSession.query(LineaBase.id).filter(LineaBase.id_fase == self.id_fase).all()
                proximo_id_linea_base = proximo_id(ids_lineas_base)
                lb.id = proximo_id_linea_base
                lb.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
                lb.cerrado = False
                lb.consistente = False
                DBSession.add(lb)
                consistente = True
                for lb_seleccionada in kw["seleccionados"]:
                    items = DBSession.query(Item).filter(Item.id_linea_base == lb_seleccionada).all()
                    a_eliminar = DBSession.query(LineaBase).filter(LineaBase.id == lb_seleccionada).one()
                    DBSession.delete(a_eliminar)
                    for item in items:
                        item.linea_base = DBSession.query(LineaBase).filter(LineaBase.id == lb.id).one()
                consistencia_lb(lb)
                DBSession.add(lb)

                redirect("./")
            lineas_base = (
                DBSession.query(LineaBase.id)
                .filter(LineaBase.id_fase == self.id_fase)
                .filter(LineaBase.cerrado == False)
                .all()
            )

            d = dict(model="Linea Base", accion="./")
            d["lineas_base"] = lineas_base
            d["direccion_anterior"] = "./"
            return d
        else:
            flash(u"El usuario no cuenta con los permisos necesarios", u"error")
            redirect("./")
    def post(self, **kw):
        """ Registra la nueva línea base creada."""
        lista_ids_item = list()
        l = LineaBase()
        l.descripcion = kw["descripcion"]
        ids_lineas_base = DBSession.query(LineaBase.id).filter(LineaBase.id_fase == self.id_fase).all()
        if ids_lineas_base:
            proximo_id_linea_base = proximo_id(ids_lineas_base)
        else:
            proximo_id_linea_base = "LB1-" + self.id_fase
        l.id = proximo_id_linea_base
        l.fase = DBSession.query(Fase).filter(Fase.id == self.id_fase).one()
        l.cerrado = True
        l.consistente = True
        for item in kw["items"]:
            lista_ids_item.append((item.split("/")[0], item.split("/")[-1]))
        for i in lista_ids_item:
            items = DBSession.query(Item).filter(Item.id == i[0]).all()
            for item in items:
                l.items.append(item)

        DBSession.add(l)
        flash(u"Creación realizada de forma exitosa")
        raise redirect("./")
Exemple #25
0
    def put(self, *args, **kw):
        """ Registra los cambios realizados a un proyecto. """
        
        id_proyecto = args[0]
        proyecto_modificado = DBSession.query(Proyecto).filter(Proyecto.id == \
                            id_proyecto).one()
        
        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(args):
                kw[pk] = args[i]
        usuario = None
        if kw['lider']:
            id_lider = kw['lider']
            viejo_lider_proyecto_tupla = DBSession.query(Proyecto.id_lider). \
                                       filter(Proyecto.id == id_proyecto).one()
            if viejo_lider_proyecto_tupla:
                viejo_lider_proyecto_id = viejo_lider_proyecto_tupla.id_lider
                ficha = DBSession.query(Ficha).filter(Ficha.id_proyecto == \
                      id_proyecto).filter(Ficha.id_usuario == \
                      viejo_lider_proyecto_id).filter(Ficha.id_rol == u'RL2') \
                      .scalar()
                if ficha:
                    usuario = DBSession.query(Usuario).filter(Usuario.id == \
                            id_lider).one()
                    ids_fichas = DBSession.query(Ficha.id).filter(Ficha. \
                                id_usuario == id_lider).all()
                    if ids_fichas:
                        proximo_id_ficha = proximo_id(ids_fichas)
                    else:
                        proximo_id_ficha = "FI1-" + id_lider
                    ficha.id = proximo_id_ficha
                    ficha.usuario = usuario
                    DBSession.add(ficha)
                else:
                    ids_fichas = DBSession.query(Ficha.id).filter(Ficha.\
                                id_usuario == id_lider).all()
                    rol = DBSession.query(Rol).filter(Rol.id == u'RL2').one()
                    proyecto = DBSession.query(Proyecto).filter(Proyecto.id \
                             == id_proyecto).one()
                    usuario = DBSession.query(Usuario).filter(Usuario.id == \
                             id_lider).one()
                    fi = Ficha()
                    fi.usuario = usuario
                    fi.rol = rol
                    fi.proyecto = proyecto
                    if ids_fichas:
                        proximo_id_ficha = proximo_id(ids_fichas)
                    else:
                        proximo_id_ficha = "FI1-" + id_lider
                    fi.id = proximo_id_ficha                      
                    DBSession.add(fi)

        else:
            viejo_lider_proyecto_tupla = DBSession.query(Proyecto.id_lider). \
                                       filter(Proyecto.id == id_proyecto).one()
            if viejo_lider_proyecto_tupla:
                viejo_lider_proyecto_id = viejo_lider_proyecto_tupla.id_lider
                ficha_lider_a_eliminar = DBSession.query(Ficha).filter \
                                        (Ficha.id_proyecto == id_proyecto). \
                                        filter(Ficha.id_usuario == \
                                        viejo_lider_proyecto_id).filter \
                                        (Ficha.id_rol == u'RL2').scalar()
                DBSession.delete(ficha_lider_a_eliminar)
        proyecto_modificado.lider = usuario
        proyecto_modificado.nombre = kw["nombre"]
        proyecto_modificado.descripcion = kw["descripcion"]
        if "nro_fases" in kw:        
            proyecto_modificado.nro_fases = kw["nro_fases"]
        
        redirect('../')
Exemple #26
0
    def put(self, *args, **kw):
        """ Registra los cambios realizados a un proyecto. """

        id_proyecto = args[0]
        proyecto_modificado = DBSession.query(Proyecto).filter(Proyecto.id == \
                            id_proyecto).one()

        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(args):
                kw[pk] = args[i]
        usuario = None
        if kw['lider']:
            id_lider = kw['lider']
            viejo_lider_proyecto_tupla = DBSession.query(Proyecto.id_lider). \
                                       filter(Proyecto.id == id_proyecto).one()
            if viejo_lider_proyecto_tupla:
                viejo_lider_proyecto_id = viejo_lider_proyecto_tupla.id_lider
                ficha = DBSession.query(Ficha).filter(Ficha.id_proyecto == \
                      id_proyecto).filter(Ficha.id_usuario == \
                      viejo_lider_proyecto_id).filter(Ficha.id_rol == u'RL2') \
                      .scalar()
                if ficha:
                    usuario = DBSession.query(Usuario).filter(Usuario.id == \
                            id_lider).one()
                    ids_fichas = DBSession.query(Ficha.id).filter(Ficha. \
                                id_usuario == id_lider).all()
                    if ids_fichas:
                        proximo_id_ficha = proximo_id(ids_fichas)
                    else:
                        proximo_id_ficha = "FI1-" + id_lider
                    ficha.id = proximo_id_ficha
                    ficha.usuario = usuario
                    DBSession.add(ficha)
                else:
                    ids_fichas = DBSession.query(Ficha.id).filter(Ficha.\
                                id_usuario == id_lider).all()
                    rol = DBSession.query(Rol).filter(Rol.id == u'RL2').one()
                    proyecto = DBSession.query(Proyecto).filter(Proyecto.id \
                             == id_proyecto).one()
                    usuario = DBSession.query(Usuario).filter(Usuario.id == \
                             id_lider).one()
                    fi = Ficha()
                    fi.usuario = usuario
                    fi.rol = rol
                    fi.proyecto = proyecto
                    if ids_fichas:
                        proximo_id_ficha = proximo_id(ids_fichas)
                    else:
                        proximo_id_ficha = "FI1-" + id_lider
                    fi.id = proximo_id_ficha
                    DBSession.add(fi)

        else:
            viejo_lider_proyecto_tupla = DBSession.query(Proyecto.id_lider). \
                                       filter(Proyecto.id == id_proyecto).one()
            if viejo_lider_proyecto_tupla:
                viejo_lider_proyecto_id = viejo_lider_proyecto_tupla.id_lider
                ficha_lider_a_eliminar = DBSession.query(Ficha).filter \
                                        (Ficha.id_proyecto == id_proyecto). \
                                        filter(Ficha.id_usuario == \
                                        viejo_lider_proyecto_id).filter \
                                        (Ficha.id_rol == u'RL2').scalar()
                DBSession.delete(ficha_lider_a_eliminar)
        proyecto_modificado.lider = usuario
        proyecto_modificado.nombre = kw["nombre"]
        proyecto_modificado.descripcion = kw["descripcion"]
        if "nro_fases" in kw:
            proyecto_modificado.nro_fases = kw["nro_fases"]

        redirect('../')