def _do_get_provider_count_and_objs(self, buscado = "", **kw):
        """
        Se utiliza para listar solo los proyectos que cumplan ciertas
        condiciones y de acuerdo a ciertos permisos.
        """
        if TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item"):
            proyectos = DBSession.query(Proyecto).filter(Proyecto.estado != \
                u"Nuevo").order_by(Proyecto.id).all()

            for proyecto in reversed(proyectos):
                buscado = self.buscado in str(proyecto.nro_fases) or \
                          self.buscado in str(proyecto.fecha_inicio) or \
                          self.buscado in str(proyecto.fecha_fin) or \
                          self.buscado in proyecto.lider.nombre_usuario or \
                          self.buscado in proyecto.nombre or \
                          self.buscado in proyecto.descripcion or \
                          self.buscado in proyecto.estado
                if not buscado: proyectos.remove(proyecto)

            for proyecto in reversed(proyectos):
                if not TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item", \
                                        id_proyecto = proyecto.id) \
                                        .is_met(request.environ):
                    proyectos.remove(proyecto)
        else: proyectos = list()       
        return len(proyectos), proyectos 
    def _do_get_provider_count_and_objs(self, buscado="", **kw):
        """ Se utiliza para listar las fases que cumplan ciertas condiciones y
            ciertos permisos.
        """
        id_proyecto = unicode(request.url.split("/")[-3])
        if TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item", id_proyecto = \
                            id_proyecto):
            fases = DBSession.query(Fase).filter(Fase.id_proyecto == \
                    id_proyecto).order_by(Fase.orden).all()

            for fase in reversed(fases):
                buscado = self.buscado in fase.nombre or \
                          self.buscado in fase.descripcion or \
                          self.buscado in str(fase.orden) or \
                          self.buscado in str(fase.fecha_inicio) or \
                          self.buscado in str(fase.fecha_fin) or \
                          self.buscado in fase.estado

                if not buscado: fases.remove(fase)
            for fase in reversed(fases):
                if not TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item", \
                                    id_fase = fase.id).is_met(request.environ):
                    fases.remove(fase)
                elif fase.orden > 1:
                    fase_prev = DBSession.query(Fase).filter(Fase.id_proyecto \
                            == id_proyecto).filter(Fase.orden == \
                            fase.orden - 1).one()
                    if not fase_prev.lineas_base: fases.remove(fase)
        else: fases = list()
        return len(fases), fases
示例#3
0
    def __actions__(self, obj):
        """
        Define las acciones posibles para cada proyecto.
        """
        primary_fields = self.__provider__.get_primary_fields(self.__entity__)
        pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
        value = '<div>'
        if TienePermiso("modificar proyecto").is_met(request.environ):
            value = value + '<div><a class="edit_link" href="'+pklist+ \
                '/edit" style="text-decoration:none" TITLE= "Modificar"></a>'\
                '</div>'
        pp = TieneAlgunPermiso(tipo = u"Proyecto", recurso = u"Fase", \
                id_proyecto = pklist).is_met(request.environ)
        pf = TieneAlgunPermiso(tipo = u"Fase", recurso = u"Tipo de Item", \
                id_proyecto = pklist).is_met(request.environ)
        pfp = TienePermiso(u"asignar rol cualquier fase", \
              id_proyecto = pklist).is_met(request.environ)
        pfi = TieneAlgunPermiso(tipo = "Fase", recurso = u"Ficha", \
              id_proyecto = pklist).is_met(request.environ)
        if pp or pf or pfp or pfi:
            value = value + '<div><a class="fase_link" href="'+pklist+ \
                    '/fases" style="text-decoration:none" TITLE= "Fases"></a>'\
                    '</div>'
        if TienePermiso("asignar rol proyecto", id_proyecto = pklist).is_met( \
                        request.environ):
            value = value + '<div><a class="responsable_link" href="'+pklist+ \
                    '/responsables" style="text-decoration:none" '\
                    'TITLE= "Responsables"></a>'\
                    '</div>'
        if TienePermiso("eliminar proyecto").is_met(request.environ):
            value = value + '<div><form method="POST" action="'+pklist+ \
                    '" class="button-to" TITLE= "Eliminar">'\
                    '<input type="hidden" name="_method" value="DELETE" />'\
                    '<input class="delete-button" onclick="return confirm' \
                    '(\'¿Está seguro?\');" value="delete" type="submit" '\
                    'style="background-color: transparent; float:left; '\
                    'border:0; color: #286571; display: inline; margin: 0; '\
                    'padding: 0;"/>'\
                    '</form></div>'
        pr = DBSession.query(Proyecto).get(pklist)
        estado_proyecto(pr)
        cant_fases = DBSession.query(Fase).filter(Fase.id_proyecto == pklist) \
                    .count()
        if cant_fases == pr.nro_fases and pr.estado == u"Nuevo" and \
            TienePermiso("setear estado proyecto en desarrollo"). \
            is_met(request.environ):
            value = value + '<div><a class="inicio_link" href="iniciar/' \
                    +pklist+'" style="text-decoration:none">Inicia proyecto' \
                    '</a></div>'

        value = value + '</div>'
        return value
示例#4
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     """
     Se utiliza para listar solo los roles que cumplan ciertas
     condiciones y de acuerdo a ciertos permisos.
     """
     if TieneAlgunPermiso(tipo = "Sistema", recurso = "Rol") \
                         .is_met(request.environ):
         roles = DBSession.query(Rol).filter(Rol.nombre.contains( \
                 self.buscado)).all()
     else:
         roles = list()
     return len(roles), roles
示例#5
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     """ Se utiliza para listar las fichas que cumplan ciertas condiciones y
         ciertos permisos.
     """
     if self.id_usuario == "":
         fichas = DBSession.query(Ficha).all()
     elif TieneAlgunPermiso(tipo=u"Sistema", recurso=u"Usuario"):
         fichas = DBSession.query(Ficha).filter(Ficha.id_usuario == \
             self.id_usuario).all()
         for ficha in reversed(fichas):
             if not (self.buscado in ficha.usuario.nombre_usuario or \
                     self.buscado in ficha.rol.nombre or self.buscado in \
                     ficha.id):
                 fichas.remove(ficha)
     return len(fichas), fichas
示例#6
0
    def _do_get_provider_count_and_objs(self, **kw):
        """ Se utiliza para listar las fases que cumplan ciertas condiciones y
            ciertos permisos.
        """
        if self.id_proyecto == "":
            fases = DBSession.query(Fase).order_by(Fase.orden).all()
                    
        else:
            fases = DBSession.query(Fase).filter(Fase.id_proyecto == \
                    self.id_proyecto).order_by(Fase.orden).all()
                    
        for fase in reversed(fases):
            buscado = self.buscado in fase.nombre or \
                      self.buscado in fase.descripcion or \
                      self.buscado in str(fase.orden) or \
                      self.buscado in str(fase.fecha_inicio) or \
                      self.buscado in str(fase.fecha_fin) or \
                      self.buscado in fase.estado

            if not buscado: fases.remove(fase)   
                        
        pp = TieneAlgunPermiso(tipo = u"Proyecto", recurso = u"Fase", \
                        id_proyecto = self.id_proyecto).is_met(request.environ)
            
        if not pp:
            for fase in reversed(fases):
                pfp = TienePermiso(u"asignar rol cualquier fase", \
                      id_proyecto = fase.id_proyecto).is_met(request.environ)
                pfi = TieneAlgunPermiso(tipo = "Fase", recurso = u"Ficha", \
                       id_proyecto = fase.id_proyecto).is_met(request.environ)
                pf = TieneAlgunPermiso(tipo = u"Fase", recurso = \
                    u"Tipo de Item", id_fase = fase.id). \
                    is_met(request.environ)
                if not (pf or pfp or pfi): 
                    fases.remove(fase)
        return len(fases), fases 
示例#7
0
 def __actions__(self, obj):
     """ Define las acciones posibles para cada fase en administración.
     """
     primary_fields = self.__provider__.get_primary_fields(self.__entity__)
     pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields))
     fase = DBSession.query(Fase).filter(Fase.id == pklist).one()
     estado_fase(fase)
     value = '<div>'
     if TienePermiso("modificar fase", id_proyecto = fase.id_proyecto). \
                     is_met(request.environ):
         value = value + '<div><a class="edit_link" href="'+pklist+ \
             '/edit" style="text-decoration:none" TITLE= "Modificar"></a>'\
             '</div>'
     permiso_tipo_item = TieneAlgunPermiso(tipo = u"Fase", recurso = \
                         u"Tipo de Item", id_fase = pklist). \
                         is_met(request.environ)
     permiso_asignar_rol_cualquier_fase = TienePermiso \
                         ("asignar rol cualquier fase", id_proyecto = \
                         self.id_proyecto).is_met(request.environ)
     permiso_asignar_rol_fase = TienePermiso("asignar rol fase", id_fase = \
                                 pklist).is_met(request.environ)
     if permiso_tipo_item:
         value = value + '<div><a class="tipo_item_link" href="'+pklist+ \
                 '/tipo_item" style="text-decoration:none" TITLE=' \
                 '"Tipos de item"></a></div>'
     if permiso_asignar_rol_fase or permiso_asignar_rol_cualquier_fase:
         value = value + '<div><a class="responsable_link" href="'+pklist+ \
                 '/responsables" style="text-decoration:none" TITLE=' \
                 '"Responsables"></a></div>'
     if TienePermiso("eliminar fase", id_proyecto = fase.id_proyecto). \
                     is_met(request.environ):
         value = value + '<div>'\
             '<form method="POST" action="'+pklist+ \
             '" class="button-to" TITLE= "Eliminar">'\
             '<input type="hidden" name="_method" value="DELETE" />'\
             '<input class="delete-button" onclick="return confirm' \
             '(\'¿Está seguro?\');" value="delete" type="submit" '\
             'style="background-color: transparent; float:left; border:0;' \
             ' color: #286571; display: inline; margin: 0; padding: 0;"/>'\
             '</form>'\
             '</div>'
     value = value + '</div>'
     return value
示例#8
0
 def index(self):
     """Muestra la página del módulo de administración."""
     p_proy = TieneAlgunPermiso(tipo = u"Sistema", recurso = u"Proyecto") \
             .is_met(request.environ)
     p_d_p = TieneAlgunPermiso(tipo = u"Proyecto").is_met(request.environ)
     p_fic = TieneAlgunPermiso(tipo = u"Fase", recurso = u"Ficha") \
             .is_met(request.environ)
     p_t_it = TieneAlgunPermiso(tipo = u"Fase", recurso = u"Tipo de Item") \
             .is_met(request.environ)
     d = dict(direccion_anterior = "../", page='index admin')
     d["permiso_proyectos"] = p_proy or p_fic or p_t_it or p_d_p
     d["permiso_responsables"] = TieneAlgunPermiso(tipo = u"Sistema", \
                                 recurso = u"Ficha").is_met(request.environ)
     d["permiso_roles"] = TieneAlgunPermiso(tipo = u"Sistema", \
                          recurso = u"Rol").is_met(request.environ)
     d["permiso_usuarios"] = TieneAlgunPermiso(tipo = u"Sistema", \
                             recurso = u"Usuario").is_met(request.environ)
     return d
示例#9
0
 def _do_get_provider_count_and_objs(self, buscado="", **kw):
     """
     Se utiliza para listar solo los tipos de ítem que cumplan ciertas
     condiciones y de acuerdo a ciertos permisos.
     """
     if self.id_fase == "":
         tiposItem = DBSession.query(TipoItem).filter(or_(TipoItem.nombre \
                 .contains(self.buscado), TipoItem.descripcion.contains( \
                 self.buscado), TipoItem.codigo.contains(self.buscado))) \
                 .all()
     else:
         pf = TieneAlgunPermiso(tipo = u"Fase", recurso = u"Tipo de Item", \
             id_fase = self.id_fase).is_met(request.environ)
         if pf:
             tiposItem = DBSession.query(TipoItem).filter( \
             TipoItem.id_fase == self.id_fase).filter(or_(TipoItem.nombre. \
             contains(self.buscado), TipoItem.descripcion.contains( \
             self.buscado), TipoItem.codigo.contains(self.buscado))).all()
         else:
             tiposItem = list()
     return len(tiposItem), tiposItem
示例#10
0
    def _do_get_provider_count_and_objs(self, **kw):
        """ Se utiliza para listar las fases que cumplan ciertas condiciones y
            ciertos permisos, en el módulo de gestión.
        """
        if TieneAlgunPermiso(tipo = u"Fase", recurso = u"Linea Base", \
            id_proyecto = self.id_proyecto):
            fases = DBSession.query(Fase).filter(Fase.id_proyecto \
                  == self.id_proyecto).order_by(Fase.orden).all()

            for fase in reversed(fases):
                buscado = self.buscado in fase.nombre or \
                          self.buscado in fase.descripcion or \
                          self.buscado in str(fase.orden) or \
                          self.buscado in str(fase.fecha_inicio) or \
                          self.buscado in str(fase.fecha_fin) or \
                          self.buscado in fase.estado

                if not buscado: fases.remove(fase)

            aux = list()
            for fase in fases:
                band = False
                if fase.lineas_base:
                    band = True
                else:
                    t_items = [t for t in fase.tipos_item]
                    items = list()
                    for t in t_items:
                        items = items + [i for i in t.items]
                    for item in items:
                        if item.estado == u"Aprobado" and not item.revisiones:
                            band = True
                            break
                if not band:
                    aux.append(fase)
            fasesaux = [f for f in fases if f not in aux]
            fases = fasesaux
        else:
            fases = list()
        return len(fases), fases
示例#11
0
    def _do_get_provider_count_and_objs(self, **kw):
        """
        Se utiliza para listar solo los ítems que cumplan ciertas
        condiciones y de acuerdo a ciertos permisos.
        """
        if TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item", id_fase = \
                            self.id_fase).is_met(request.environ):
            items = DBSession.query(Item)\
                .filter(Item.id_tipo_item.contains(self.id_fase)) \
                .order_by(Item.id).all()

            for item in reversed(items):
                buscado = self.buscado in item.id or \
                          self.buscado in item.nombre or \
                          self.buscado in str(item.version) or \
                          self.buscado in item.descripcion or \
                          self.buscado in item.estado or \
                          self.buscado in item.observaciones or \
                          self.buscado in str(item.complejidad) or \
                          self.buscado in str(item.prioridad) or \
                          self.buscado in item.tipo_item.nombre
                if item.linea_base:
                    buscado = buscado or self.buscado in item.linea_base.id

                if not buscado: items.remove(item)

            aux = []
            for item in items:
                for item_2 in items:
                    if item.id == item_2.id:
                        if item.version > item_2.version and item_2 not in aux:
                            aux.append(item_2)
                        elif item.version < item_2.version and item not in aux:
                            aux.append(item)
            items = [i for i in items if i not in aux and i.borrado != True]
        else:
            items = list()
        return len(items), items
示例#12
0
 def listar_caracteristicas(self, **kw):
     """
     Despliega el valor de las características propias del tipo de ítem de
     un ítem dado, siempre que el ítem no sea del tipo 'Default'
     """
     self.id_fase = unicode(request.url.split("/")[-3])
     if TieneAlgunPermiso(tipo = u"Fase", recurso = u"Item", id_fase = \
                         self.id_fase).is_met(request.environ):
         pk = kw["pk_item"]
         pk_id = unicode(pk.split("-")[0] + "-" + pk.split("-")[1] + "-" + \
                 pk.split("-")[2] + "-" + pk.split("-")[3])
         pk_version = pk.split("-")[4]
         anexo = DBSession.query(Item.anexo).filter(Item.id == pk_id) \
                 .filter(Item.version == pk_version).one()
         anexo = json.loads(anexo.anexo)
         d = dict()
         d['anexo'] = anexo
         d["direccion_anterior"] = "./"
         return d
     else:
         flash(u"El usuario no cuenta con los permisos necesarios", \
             u"error")
         redirect('./')