예제 #1
0
파일: fase.py 프로젝트: jorgeramirez/LPM
    def _my_update_params(self, d, nullable=False):
        
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
        
        if id_proyecto:
            proy = Proyecto.por_id(id_proyecto)
            
        options = []
        id_fase = UrlParser.parse_id(request.url, "fases")

        if id_fase:
            fase = Fase.por_id(id_fase)
            proy = Proyecto.por_id(fase.id_proyecto)
            
        if self.accion == "edit":
                options.append((fase.posicion, str(fase.posicion)))
                if (proy.estado != u"Iniciado"):
                    pos = range(1, proy.numero_fases + 1)
                    pos.pop(fase.posicion - 1)
                    options.extend(pos)
                    
        elif self.accion == "new":
            if (not id_proyecto):
                return d
            
            np = proy.numero_fases + 1
            options.append((np, str(np)))
            options.extend(range(1, np))
        d['options'] = options
        return d
예제 #2
0
 def post_buscar(self, *args, **kw):
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_fase = UrlParser.parse_id(request.url, "fases")
     atras = "../"
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         if not id_proyecto:
             id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
             id_fase = UrlParser.parse_id(request.url, "fases_ti")
         atras = "../../../"
     
     proy = Proyecto.por_id(id_proyecto)
     puede_crear = puede_crear = PoseePermiso("crear tipo item",
                                              id_fase=id_fase).is_met(request.environ)
     if proy.estado != "Iniciado":
         puede_crear = False
     fase = Fase.por_id(id_fase)
     titulo = self.title % fase.nombre
     tmpl_context.widget = self.table
     buscar_table_filler = self.table_filler.__class__(DBSession)
     buscar_table_filler.filtros = kw
     tipos_items = buscar_table_filler.get_value(id_fase=id_fase)
     
     return  dict(lista_elementos=tipos_items, 
                  page=titulo, 
                  titulo=titulo,
                  modelo=self.model.__name__, 
                  columnas=self.columnas,
                  opciones=self.opciones, 
                  url_action="../",
                  puede_crear=puede_crear,
                  atras=atras
                  )
예제 #3
0
    def post_buscar(self, *args, **kw):
        id_fase = UrlParser.parse_id(request.url, "fases")
        id_usuario = UrlParser.parse_id(request.url, "miembrosfase")
        usuario = Usuario.por_id(id_usuario)
        fase = Fase.por_id(id_fase)

        puede_asignar = PoseePermiso("asignar-desasignar rol",
                                     id_fase=id_fase).is_met(request.environ)
        titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario
        tmpl_context.widget = self.table
        buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        roles = buscar_table_filler.get_value(usuario=usuario,
                                              asignados=False,
                                              id_fase=id_fase,
                                              **kw)

        atras = "../../"
        return dict(lista_elementos=roles,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    comboboxes=self.comboboxes,
                    url_action="../",
                    atras=atras,
                    puede_asignar=puede_asignar)
예제 #4
0
    def __init__(self, nombre_permiso, **kw):
        """
        Método inicializador.
        
        @param nombre_permiso: el nombre del permiso a evaluar
        @type nombre_permiso: C{unicode}
        """
        self.nombre_permiso = unicode(nombre_permiso)
        self.id_proyecto = 0
        self.id_fase = 0
        self.id_tipo_item = 0
        self.id_usuario = 0
        
        if not kw.has_key('id_proyecto'):
            if kw.has_key('id_fase'):
                self.id_fase = int(kw['id_fase'])
                self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto
                del kw['id_fase']
            if kw.has_key('id_tipo_item'):
                self.id_tipo_item = int(kw['id_tipo_item'])
                ti = TipoItem.por_id(self.id_tipo_item)
                self.id_fase = ti.id_fase
                self.id_proyecto = ti.id_proyecto
                del kw['id_tipo_item']
        else:
            self.id_proyecto = int(kw['id_proyecto'])
            del kw['id_proyecto']        

        if kw.has_key("id_usuario"):
            self.id_usuario = int(kw["id_usuario"])
            del kw["id_usuario"]
        
        super(PoseePermiso, self).__init__(**kw)
예제 #5
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """

        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(id_fase)
        titulo = "Lista de Usuarios"

        puede_incorporar = PoseePermiso("asignar-desasignar rol", 
                                        id_fase=id_fase).is_met(request.environ)

        if request.response_type == 'application/json':
            return self.table_filler.get_value(id_fase=id_fase,**kw)
        if not getattr(self.table.__class__, '__retrieves_own_value__', False):
            nomiembros = self.table_filler.get_value(id_fase=id_fase,**kw)
        else:
            nomiembros = []
            
        tmpl_context.widget = self.table
        atras = "../"
        return dict(lista_elementos=nomiembros, 
                    page=titulo, 
                    titulo=titulo, 
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.action, 
                    atras=atras,
                    puede_incorporar=puede_incorporar)
예제 #6
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(id_fase)

        #titulo = "Miembros de la Fase: %s" % fase.nombre
        titulo = "Lista de Usuarios"
        puede_remover = PoseePermiso("asignar-desasignar rol",
                                     id_fase=id_fase).is_met(request.environ)

        if request.response_type == 'application/json':
            return self.table_filler.get_value(id_fase=id_fase, **kw)
        if not getattr(self.table.__class__, '__retrieves_own_value__', False):
            miembros = self.table_filler.get_value(id_fase=id_fase, **kw)
        else:
            miembros = []

        tmpl_context.widget = self.table

        #atras = "/proyectos/%d/" % id_proyecto
        atras = "../"
        return dict(lista_elementos=miembros,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.action,
                    atras=atras,
                    puede_remover=puede_remover)
예제 #7
0
 def _my_update_params(self, d, nullable=False):
     options = []
     
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_fase = UrlParser.parse_id(request.url, "fases")
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         if not id_proyecto:
             id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
             id_fase = UrlParser.parse_id(request.url, "fases_ti")
         
     if (self.accion == "new"):
         if id_fase:
             tipos = Fase.por_id(id_fase).tipos_de_item
             
         #elif (id_proyecto):
         #    tipos = Proyecto.por_id(id_proyecto).tipos_de_item
             
         for ti in tipos:
             options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, 
                                                           ti.codigo)))
     if (self.accion == "edit"):
         id_tipo = UrlParser.parse_id(request.url, "tipositems")
         ti = TipoItem.por_id(id_tipo)
         padre = TipoItem.por_id(ti.id_padre)
         if padre:
             options.append((ti.id_padre, '%s (%s)' % (padre.nombre, 
                                                       padre.codigo)))
         else:
             options.append((ti.id_padre, 'Tipo base'))
     d['options'] = options
     return d
예제 #8
0
파일: fase.py 프로젝트: jorgeramirez/LPM
 def post_delete(self, id):
     """Elimina una fase de la bd si el proyecto no está iniciado"""
     fase = Fase.por_id(id)
     proy = Proyecto.por_id(fase.id_proyecto)
     proy.eliminar_fase(id)
     flash("Fase eliminada")
     redirect("../")
예제 #9
0
파일: fase.py 프로젝트: jorgeramirez/LPM
    def _do_get_provider_count_and_objs(self,
                                        id_proyecto=None,
                                        id_fase=None,
                                        **kw):
        """
        Retorna las fases del proyecto en cuestión
        """
        if id_fase:
            fase = Fase.por_id(id_fase)
            return 1, [fase]

        count, lista = super(FaseTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []
        if id_proyecto:
            id_proyecto = int(id_proyecto)
            #ap = AlgunPermiso(tipo='Fase', id_proyecto=id_proyecto).is_met(request.environ)

            for f in lista:
                if f.id_proyecto == id_proyecto:
                    if AlgunPermiso(tipo='Fase',
                                    id_fase=f.id_fase).is_met(request.environ):
                        filtrados.append(f)

        return len(filtrados), filtrados
예제 #10
0
 def get_one(self, *args, **kw):
     id_tipo = int(args[0])
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_fase = UrlParser.parse_id(request.url, "fases")
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         if not id_proyecto:
             id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
             id_fase = UrlParser.parse_id(request.url, "fases_ti")
     
     proy = Proyecto.por_id(id_proyecto)
     puede_crear = puede_crear = PoseePermiso("crear tipo item",
                                              id_fase=id_fase).is_met(request.environ)
     if proy.estado != "Iniciado":
         puede_crear = False
         
     ti = self.table_filler.get_value(id_tipo=id_tipo, **kw)
         
     tmpl_context.widget = self.table
     fase = Fase.por_id(id_fase)
     titulo = self.title % fase.nombre
     atras = '../'
     return dict(lista_elementos=ti, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.action,
                 puede_crear=puede_crear,
                 atras=atras
                 )
예제 #11
0
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """
        puede_crear = False
        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(id_fase)
        if puede_crear:
            puede_crear = fase.puede_crear_lb()
        titulo = u"Líneas Base de Fase: %s" % fase.nombre

        tmpl_context.widget = self.table
        buscar_table_filler = LineaBaseTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        items = buscar_table_filler.get_value(id_fase=id_fase)
        return dict(lista_elementos=items, 
                    page=titulo, 
                    titulo=titulo, 
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    url_action='../',
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    opciones=self.opciones,
                    atras='../'
                    )
예제 #12
0
 def get_one(self, *args, **kw):
     """ 
     Retorna la linea base con la que se esta
     trabajando actualmente
     """
     puede_crear = False
     id_fase = UrlParser.parse_id(request.url, "fases")
     id_lb = int(args[0])
     fase = Fase.por_id(id_fase)
     if puede_crear:
         puede_crear = fase.puede_crear_lb()
     titulo = u"Líneas Base de Fase: %s" % fase.nombre
     lb = self.table_filler.get_value(id_fase=id_fase, id_lb=id_lb,
                                      **kw)
     tmpl_context.widget = self.table
     return dict(lista_elementos=lb, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 puede_crear=puede_crear,
                 comboboxes=self.comboboxes
                 )
예제 #13
0
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     puede_crear = False
     id_fase = UrlParser.parse_id(request.url, "fases")
     puede_crear = PoseePermiso("crear lb", id_fase=id_fase).is_met(request.environ)
     fase = Fase.por_id(id_fase)
     if puede_crear:
         puede_crear = fase.puede_crear_lb()
     titulo = u"Líneas Base de Fase: %s" % fase.nombre
     lbs = self.table_filler.get_value(id_fase=id_fase, **kw)
     tmpl_context.widget = self.table
     atras = "../../"
     return dict(lista_elementos=lbs, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 puede_crear=puede_crear,
                 comboboxes=self.comboboxes,
                 atras=atras
                 )
예제 #14
0
    def _do_get_provider_count_and_objs(self, id_fase=None, id_lb=None,
                                        **kw):
        """
        Recupera las lineas bases de una fase, o aquellas para las 
        que tenemos algún permiso.
        """
        if id_lb:
            lb = LB.por_id(id_lb)
            return 1, [lb]
        
        
        count, lista = super(LineaBaseTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []                    
        if id_fase:
            id_fase = int(id_fase)
            ap = AlgunPermiso(tipo='Fase', id_fase=id_fase).is_met(request.environ)
            if ap:
                lbs = Fase.por_id(id_fase).lineas_bases()
                return len(lbs), lbs
        
        for lb in lista:

            if AlgunPermiso(tipo=u'Fase').is_met(request.environ):
                filtrados.append(lb)
        
        return len(filtrados), filtrados
예제 #15
0
파일: fase.py 프로젝트: jorgeramirez/LPM
    def _my_update_params(self, d, nullable=False):

        id_proyecto = UrlParser.parse_id(request.url, "proyectos")

        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")

        if id_proyecto:
            proy = Proyecto.por_id(id_proyecto)

        options = []
        id_fase = UrlParser.parse_id(request.url, "fases")

        if id_fase:
            fase = Fase.por_id(id_fase)
            proy = Proyecto.por_id(fase.id_proyecto)

        if self.accion == "edit":
            options.append((fase.posicion, str(fase.posicion)))
            if (proy.estado != u"Iniciado"):
                pos = range(1, proy.numero_fases + 1)
                pos.pop(fase.posicion - 1)
                options.extend(pos)

        elif self.accion == "new":
            if (not id_proyecto):
                return d

            np = proy.numero_fases + 1
            options.append((np, str(np)))
            options.extend(range(1, np))
        d['options'] = options
        return d
예제 #16
0
    def __init__(self, **kw):
        """
        Método inicializador
        
        @param kw: Parametros para inicializar
        @keyword tipo: El tipo de permiso (Rol, Usuario, Proyecto, Fase, Tipo Ítem).
        """
        self.id_proyecto = 0
        self.id_fase = 0
        self.id_tipo_item = 0
        self.id_usuario = 0

        self.tipo = unicode(kw["tipo"])
        del kw["tipo"]

        if (not kw.has_key('id_proyecto')):
            if (kw.has_key('id_fase')):
                self.id_fase = int(kw['id_fase'])
                self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto
                del kw['id_fase']
            if (kw.has_key('id_tipo_item')):
                self.id_tipo_item = int(kw['id_tipo_item'])
                ti = TipoItem.por_id(self.id_tipo_item)
                self.id_fase = ti.id_fase
                self.id_proyecto = ti.id_proyecto
                del kw['id_tipo_item']
        else:
            self.id_proyecto = int(kw['id_proyecto'])
            del kw['id_proyecto']

        if kw.has_key("id_usuario"):
            self.id_usuario = int(kw["id_usuario"])
            del kw["id_usuario"]

        super(AlgunPermiso, self).__init__(**kw)
예제 #17
0
파일: fase.py 프로젝트: jorgeramirez/LPM
 def post_delete(self, id):
     """Elimina una fase de la bd si el proyecto no está iniciado"""
     fase = Fase.por_id(id)
     proy = Proyecto.por_id(fase.id_proyecto)
     proy.eliminar_fase(id)
     flash("Fase eliminada")
     redirect("../")
예제 #18
0
    def __init__(self, nombre_permiso, **kw):
        """
        Método inicializador.
        
        @param nombre_permiso: el nombre del permiso a evaluar
        @type nombre_permiso: C{unicode}
        """
        self.nombre_permiso = unicode(nombre_permiso)
        self.id_proyecto = 0
        self.id_fase = 0
        self.id_tipo_item = 0
        self.id_usuario = 0

        if not kw.has_key('id_proyecto'):
            if kw.has_key('id_fase'):
                self.id_fase = int(kw['id_fase'])
                self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto
                del kw['id_fase']
            if kw.has_key('id_tipo_item'):
                self.id_tipo_item = int(kw['id_tipo_item'])
                ti = TipoItem.por_id(self.id_tipo_item)
                self.id_fase = ti.id_fase
                self.id_proyecto = ti.id_proyecto
                del kw['id_tipo_item']
        else:
            self.id_proyecto = int(kw['id_proyecto'])
            del kw['id_proyecto']

        if kw.has_key("id_usuario"):
            self.id_usuario = int(kw["id_usuario"])
            del kw["id_usuario"]

        super(PoseePermiso, self).__init__(**kw)
예제 #19
0
 def post_buscar(self, *args, **kw):
     id_fase = UrlParser.parse_id(request.url, "fases")
     id_usuario = UrlParser.parse_id(request.url, "nomiembrosfase")
     usuario = Usuario.por_id(id_usuario)
     fase = Fase.por_id(id_fase)
     
     puede_asignar = PoseePermiso("asignar-desasignar rol", 
                                     id_fase=id_fase).is_met(request.environ)
     titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario
     tmpl_context.widget = self.table
     buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession)
     buscar_table_filler.filtros = kw
     roles = buscar_table_filler.get_value(usuario=usuario, asignados=False,
                                            id_fase=id_fase, **kw)
     
     atras = "../../"
     return dict(lista_elementos=roles, 
                 page=titulo, 
                 titulo=titulo, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 comboboxes=self.comboboxes,
                 url_action="../", 
                 atras=atras,
                 puede_asignar=puede_asignar)
예제 #20
0
파일: item.py 프로젝트: jorgeramirez/LPM
 def post(self, *args, **kw):
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     id_tipo = int(kw["id_tipo_item"])
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     del kw["id_tipo_item"]
     if id_fase:
         fase = Fase.por_id(id_fase)
         fase.crear_item(id_tipo, user, **kw)
     redirect("./")
예제 #21
0
 def post(self, *args, **kw):
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     id_tipo = int(kw["id_tipo_item"])
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     del kw["id_tipo_item"]
     if id_fase:
         fase = Fase.por_id(id_fase)
         fase.crear_item(id_tipo, user, **kw)
     redirect("./")
예제 #22
0
파일: item.py 프로젝트: jorgeramirez/LPM
 def _my_update_params(self, d, nullable=False):
     options = []
     id_fase = UrlParser.parse_id(request.url, "fases")
     if not id_fase:
         id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     if id_fase:
         fase = Fase.por_id(id_fase)
         for ti in fase.tipos_de_item:
             options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, 
                                                           ti.codigo)))
     d["options"] = options
     return d
예제 #23
0
 def _my_update_params(self, d, nullable=False):
     options = []
     id_fase = UrlParser.parse_id(request.url, "fases")
     if not id_fase:
         id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     if id_fase:
         fase = Fase.por_id(id_fase)
         for ti in fase.tipos_de_item:
             options.append(
                 (ti.id_tipo_item, '%s (%s)' % (ti.nombre, ti.codigo)))
     d["options"] = options
     return d
예제 #24
0
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = UrlParser.parse_id(request.url, "versiones")
     titulo = self.title
     relaciones = []
     tabla = self.table
     puede_relacionar = False
     puede_nueva = False
     atras = "../../"    
       
     if id_version:
         #desde controller de versiones
         p_item = PropiedadItem.por_id(id_version)
         titulo = u"Relaciones de Version: %d" % p_item.version
         relaciones = self.table_filler. \
                     get_value(id_version=id_version, **kw)
     elif id_item:
         #desde controller de items.
         item = Item.por_id(id_item)
         titulo = u"Relaciones de Ítem: %s" % item.codigo
         atras = "../"
         
         relaciones = relacion_item_table_filler. \
                     get_value(id_version=item.id_propiedad_item, **kw)
         tabla = relacion_item_table
         
         puede_relacionar = PoseePermiso('modificar item', \
                             id_tipo_item=item.id_tipo_item).is_met(request.environ)
         fase = Fase.por_id(item.id_fase)
         if (UrlParser.parse_nombre(request.url, "relaciones_as")):
             if (fase.posicion > 1):
                 puede_nueva = True
         else:
             puede_nueva = True
             
     tmpl_context.widget = tabla
     return dict(lista_elementos=relaciones, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 #columnas=self.columnas,
                 #opciones=self.opciones,
                 #comboboxes=self.comboboxes,
                 url_action=self.tmp_action,
                 puede_relacionar=puede_relacionar,
                 atras=atras,
                 puede_nueva=puede_nueva
                 )
예제 #25
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        id_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        titulo = self.title
        relaciones = []
        tabla = self.table
        puede_relacionar = False
        puede_nueva = False
        atras = "../../"

        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Relaciones de Version: %d" % p_item.version
            relaciones = self.table_filler. \
                        get_value(id_version=id_version, **kw)
        elif id_item:
            #desde controller de items.
            item = Item.por_id(id_item)
            titulo = u"Relaciones de Ítem: %s" % item.codigo
            atras = "../"

            relaciones = relacion_item_table_filler. \
                        get_value(id_version=item.id_propiedad_item, **kw)
            tabla = relacion_item_table

            puede_relacionar = PoseePermiso('modificar item', \
                                id_tipo_item=item.id_tipo_item).is_met(request.environ)
            fase = Fase.por_id(item.id_fase)
            if (UrlParser.parse_nombre(request.url, "relaciones_as")):
                if (fase.posicion > 1):
                    puede_nueva = True
            else:
                puede_nueva = True

        tmpl_context.widget = tabla
        return dict(
            lista_elementos=relaciones,
            page=titulo,
            titulo=titulo,
            modelo=self.model.__name__,
            #columnas=self.columnas,
            #opciones=self.opciones,
            #comboboxes=self.comboboxes,
            url_action=self.tmp_action,
            puede_relacionar=puede_relacionar,
            atras=atras,
            puede_nueva=puede_nueva)
예제 #26
0
    def remover_seleccionados(self, *args, **kw):
        """ 
        Desasigna miembros de la fase.
        """
        id_fase = UrlParser.parse_id(request.url, "fases")
        
        if kw:
            pks = []
            for k, pk in kw.items():
                if not k.isalnum():
                    continue
                pks.append(int(pk))

            transaction.begin()
            usuarios = DBSession.query(Usuario) \
                                .filter(Usuario.id_usuario.in_(pks)).all()

            fase = Fase.por_id(id_fase)
            nr = u"Lider de Proyecto"
            rlp = DBSession.query(Rol) \
                          .filter(and_(Rol.tipo == u"Proyecto",
                                       Rol.id_proyecto == fase.id_proyecto,
                                       Rol.nombre_rol == nr)).first()

            warning = False

            for u in usuarios:
            
                if rlp in u.roles and len(rlp.usuarios) == 1:
                    msg = "No puedes eliminar al usuario {nu} porque "
                    msg += "es el {nr}"
                    flash(msg.format(nu=u.nombre_usuario, 
                                     nr=nr), "warning")
                    warning = True
                    continue
                    
                c = 0
                while c < len(u.roles):
                    if u.roles[c].id_fase == id_fase and \
                       u.roles[c].tipo == u"Fase":
                        del u.roles[c]
                    else:
                        c += 1

            transaction.commit()
            if not warning:
                flash("Usuarios removidos correctamente")
        else:
            flash("Seleccione por lo menos un usuario", "warning")
        return "../"
예제 #27
0
    def remover_seleccionados(self, *args, **kw):
        """ 
        Desasigna miembros de la fase.
        """
        id_fase = UrlParser.parse_id(request.url, "fases")

        if kw:
            pks = []
            for k, pk in kw.items():
                if not k.isalnum():
                    continue
                pks.append(int(pk))

            transaction.begin()
            usuarios = DBSession.query(Usuario) \
                                .filter(Usuario.id_usuario.in_(pks)).all()

            fase = Fase.por_id(id_fase)
            nr = u"Lider de Proyecto"
            rlp = DBSession.query(Rol) \
                          .filter(and_(Rol.tipo == u"Proyecto",
                                       Rol.id_proyecto == fase.id_proyecto,
                                       Rol.nombre_rol == nr)).first()

            warning = False

            for u in usuarios:

                if rlp in u.roles and len(rlp.usuarios) == 1:
                    msg = "No puedes eliminar al usuario {nu} porque "
                    msg += "es el {nr}"
                    flash(msg.format(nu=u.nombre_usuario, nr=nr), "warning")
                    warning = True
                    continue

                c = 0
                while c < len(u.roles):
                    if u.roles[c].id_fase == id_fase and \
                       u.roles[c].tipo == u"Fase":
                        del u.roles[c]
                    else:
                        c += 1

            transaction.commit()
            if not warning:
                flash("Usuarios removidos correctamente")
        else:
            flash("Seleccione por lo menos un usuario", "warning")
        return "../"
예제 #28
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials['repoze.what.userid']
        usuario = Usuario.by_user_name(nombre_usuario)

        if self.id_usuario:
            usuario = Usuario.por_id(self.id_usuario)
        
            
        if (self.id_tipo_item):
            #recuperar id  de fase y proyecto
            ti = TipoItem.por_id(self.id_tipo_item)
            if (not self.id_fase):
                self.id_fase = ti.id_fase
            if (not self.id_proyecto):
                self.id_proyecto = ti.id_proyecto
        
        elif (self.id_fase):
            fase = Fase.por_id(self.id_fase)
            if (not self.id_proyecto):
                self.id_proyecto = fase.id_proyecto
                    
                             
        for r in usuario.roles:
            tiene = False
            for p in r.permisos:
                if p.nombre_permiso == self.nombre_permiso:
                    tiene = True
                    
            if not tiene: 
                continue
            
            if r.es_rol_sistema():
                return
            
            if self.id_proyecto == r.id_proyecto:
                if r.tipo == u"Proyecto":
                    return
            
            if self.id_fase == r.id_fase:
                if r.tipo == u"Fase":
                    return
                
            ti = TipoItem.por_id(self.id_tipo_item)
            if ti and ti.es_o_es_hijo(r.id_tipo_item):
                return
        
        self.unmet(self.message % self.nombre_permiso)
예제 #29
0
    def _my_update_params(self, d, nullable=False):
        options = []
        options.append((None, '-----------------'))

        #Solo tipos de otros proyectos
        
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        id_fase = UrlParser.parse_id(request.url, "fases")
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            if not id_proyecto:
                id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
                id_fase = UrlParser.parse_id(request.url, "fases_ti")
                
        if (self.accion == "new"):
            #de otros proyectos.
            if id_proyecto:
                tipos_items = DBSession.query(TipoItem) \
                                       .filter(TipoItem.id_proyecto != id_proyecto) \
                                       .all()
            
            for ti in tipos_items:
                options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, 
                                                              ti.codigo)))
            
            #importa de otras fases tambien
            if id_fase:
                fase = Fase.por_id(id_fase)
                id_proyecto = fase.id_proyecto
                tipos_items_fase = DBSession.query(TipoItem) \
                            .filter(and_(TipoItem.id_proyecto == id_proyecto,
                                         TipoItem.id_fase != id_fase)) \
                                         .all()
                '''
                tipos_items_fase = DBSession.query(TipoItem) \
                            .filter(or_(TipoItem.id_proyecto != id_proyecto,
                            and_(TipoItem.id_proyecto == id_proyecto,
                            TipoItem.id_fase != id_fase))) \
                                       .all()
                '''

                for ti in tipos_items_fase:
                    #solo si posee algun permiso sobre el tipo de item
                    #if (AlgunPermiso(tipo="Tipo", id_tipo_item=ti.id_tipo_item)):
                    options.append((ti.id_tipo_item, '%s (%s)' % (ti.nombre, 
                                                                  ti.codigo)))

        d['options'] = options
        return d
예제 #30
0
    def _do_get_provider_count_and_objs(self, id_fase=None, **kw):
        """
        Se muestran a los usuarios que no tienen por lo menos un rol de
        tipo fase para la fase en cuestión.
        """
        count, lista = super(NoMiembrosFaseTableFiller,
                             self)._do_get_provider_count_and_objs(**kw)

        filtrados = []
        fase = Fase.por_id(id_fase)
        apf = AlgunPermiso(tipo="Fase", id_fase=fase.id_fase)
        for u in lista:
            apf.id_usuario = u.id_usuario
            if not apf.is_met(request.environ):
                filtrados.append(u)
        return len(filtrados), filtrados
예제 #31
0
 def _do_get_provider_count_and_objs(self, id_fase=None, **kw):
     """
     Se muestran a los usuarios que no tienen por lo menos un rol de
     tipo fase para la fase en cuestión.
     """
     count, lista = super(NoMiembrosFaseTableFiller,
                      self)._do_get_provider_count_and_objs(**kw)
     
     filtrados = []
     fase = Fase.por_id(id_fase)
     apf = AlgunPermiso(tipo="Fase", id_fase=fase.id_fase)
     for u in lista:
         apf.id_usuario = u.id_usuario
         if not apf.is_met(request.environ):
             filtrados.append(u)
     return len(filtrados), filtrados
예제 #32
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials['repoze.what.userid']
        usuario = Usuario.by_user_name(nombre_usuario)

        if self.id_usuario:
            usuario = Usuario.por_id(self.id_usuario)

        if (self.id_tipo_item):
            #recuperar id  de fase y proyecto
            ti = TipoItem.por_id(self.id_tipo_item)
            if (not self.id_fase):
                self.id_fase = ti.id_fase
            if (not self.id_proyecto):
                self.id_proyecto = ti.id_proyecto

        elif (self.id_fase):
            fase = Fase.por_id(self.id_fase)
            if (not self.id_proyecto):
                self.id_proyecto = fase.id_proyecto

        for r in usuario.roles:
            tiene = False
            for p in r.permisos:
                if p.nombre_permiso == self.nombre_permiso:
                    tiene = True

            if not tiene:
                continue

            if r.es_rol_sistema():
                return

            if self.id_proyecto == r.id_proyecto:
                if r.tipo == u"Proyecto":
                    return

            if self.id_fase == r.id_fase:
                if r.tipo == u"Fase":
                    return

            ti = TipoItem.por_id(self.id_tipo_item)
            if ti and ti.es_o_es_hijo(r.id_tipo_item):
                return

        self.unmet(self.message % self.nombre_permiso)
예제 #33
0
 def new(self, *args, **kw):
     """Pagina para generar una nueva linea base"""
     id_fase = UrlParser.parse_id(request.url, "fases")
     pp = PoseePermiso("crear lb", id_fase=id_fase)
     if not id_fase:
         flash("Se Debe especificar una fase", "warning")
         redirect("../")
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("../")
     fase = Fase.por_id(id_fase)
     titulo = u"Generar LB para Fase: %s" % fase.nombre
     tmpl_context.tabla_items = item_generar_table
     items = item_generar_table_filler.get_value(id_fase=fase.id_fase)
     return dict(items=items,
                 page=titulo, 
                 atras='./')
예제 #34
0
파일: fase.py 프로젝트: jorgeramirez/LPM
    def edit(self, *args, **kw):
        """Despliega una pagina para realizar modificaciones"""
        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(int(id_fase))
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        atras = "./"
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")

        pp = PoseePermiso('modificar fase', id_fase=id_fase)
        if not pp.is_met(request.environ):
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect("./")

        tmpl_context.widget = FaseEditForm(DBSession)
        value = self.edit_filler.get_value(values={'id_fase': id_fase})
        page = u"Modificar Fase: %s" % value["nombre"]
        return dict(value=value, page=page, atras=atras)
예제 #35
0
    def post_buscar(self, *args, **kw):
        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(id_fase)
        titulo = "Lista de Usuarios"

        puede_incorporar = PoseePermiso("asignar-desasignar rol", 
                                        id_fase=id_fase).is_met(request.environ)
        tmpl_context.widget = no_miembros_fase_table
        buscar_table_filler = NoMiembrosFaseTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        usuarios = buscar_table_filler.get_value(id_fase=id_fase,**kw)
        atras = "../"
        return dict(lista_elementos=usuarios, 
                    page=titulo, titulo=titulo, 
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action="../", 
                    atras=atras,
                    puede_incorporar=puede_incorporar)
예제 #36
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        id_fase = UrlParser.parse_id(request.url, "fases")
        atras = "../"        
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            if not id_proyecto:
                id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
                id_fase = UrlParser.parse_id(request.url, "fases_ti")
            atras = "../../"
        
        proy = Proyecto.por_id(id_proyecto)
        puede_crear = puede_crear = PoseePermiso("crear tipo item",
                                                 id_fase=id_fase).is_met(request.environ)
        if proy.estado != "Iniciado":
            puede_crear = False
            
        fase = Fase.por_id(id_fase)
        titulo = self.title % fase.nombre
        tipo_items = self.table_filler.get_value(id_fase=id_fase, **kw)
        tmpl_context.widget = self.table
        url_action = self.action
        
        if UrlParser.parse_nombre(request.url, "post_buscar"):
            url_action = "../"

        
        return dict(lista_elementos=tipo_items,
                    page=titulo, 
                    titulo=titulo, 
                    modelo=self.model.__name__, 
                    columnas=self.columnas,
                    opciones=self.opciones, 
                    url_action=url_action,
                    puede_crear=puede_crear,
                    atras=atras
                    )
예제 #37
0
파일: fase.py 프로젝트: jorgeramirez/LPM
 def edit(self, *args, **kw):
     """Despliega una pagina para realizar modificaciones"""
     id_fase = UrlParser.parse_id(request.url, "fases")
     fase = Fase.por_id(int(id_fase))
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     atras = "./"
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         
     pp = PoseePermiso('modificar fase', id_fase=id_fase)
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("./")
         
     tmpl_context.widget = FaseEditForm(DBSession)
     value = self.edit_filler.get_value(values={'id_fase': id_fase})
     page = u"Modificar Fase: %s" % value["nombre"]
     return dict(value=value,
                 page=page,
                 atras=atras)
예제 #38
0
파일: item.py 프로젝트: jorgeramirez/LPM
 def get_one(self, *args, **kw):
     #id_fase = UrlParser.parse_id(request.url, "fases")
     id_item = UrlParser.parse_id(request.url, "items")
     atras = "../"
     #if UrlParser.parse_nombre(request.url, "fases"):
     #    atras = "../../edit"
     item = Item.por_id(id_item)
     
     puede_crear = False
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     nuevo = "./new"
     
     if (UrlParser.parse_id(request.url, "items")):
         nuevo = "../new"
         
     if id_fase: 
         # desde el controlador de fases
         puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ)
         #atras = "/fases/%d/edit/" % id_fase
         fase = Fase.por_id(id_fase)
         if puede_crear:
             puede_crear = fase.puede_crear_item()
         
     titulo = u"Ítem: %s" % item.codigo
         
     items = self.table_filler.get_value(id_item=item.id_item, **kw)
     tmpl_context.widget = self.table
     return dict(lista_elementos=items, 
                 page=titulo,
                 atras=atras,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action="../",
                 puede_crear=puede_crear,
                 comboboxes=self.comboboxes,
                 nuevo=nuevo
                 )
     
     '''
예제 #39
0
    def post_buscar(self, *args, **kw):
        id_fase = UrlParser.parse_id(request.url, "fases")
        fase = Fase.por_id(id_fase)
        titulo = "Lista de Usuarios"

        puede_incorporar = PoseePermiso("asignar-desasignar rol",
                                        id_fase=id_fase).is_met(
                                            request.environ)
        tmpl_context.widget = no_miembros_fase_table
        buscar_table_filler = NoMiembrosFaseTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        usuarios = buscar_table_filler.get_value(id_fase=id_fase, **kw)
        atras = "../"
        return dict(lista_elementos=usuarios,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action="../",
                    atras=atras,
                    puede_incorporar=puede_incorporar)
예제 #40
0
    def get_one(self, *args, **kw):
        #id_fase = UrlParser.parse_id(request.url, "fases")
        id_item = UrlParser.parse_id(request.url, "items")
        atras = "../"
        #if UrlParser.parse_nombre(request.url, "fases"):
        #    atras = "../../edit"
        item = Item.por_id(id_item)

        puede_crear = False
        id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
        nuevo = "./new"

        if (UrlParser.parse_id(request.url, "items")):
            nuevo = "../new"

        if id_fase:
            # desde el controlador de fases
            puede_crear = PoseePermiso("crear item",
                                       id_fase=id_fase).is_met(request.environ)
            #atras = "/fases/%d/edit/" % id_fase
            fase = Fase.por_id(id_fase)
            if puede_crear:
                puede_crear = fase.puede_crear_item()

        titulo = u"Ítem: %s" % item.codigo

        items = self.table_filler.get_value(id_item=item.id_item, **kw)
        tmpl_context.widget = self.table
        return dict(lista_elementos=items,
                    page=titulo,
                    atras=atras,
                    titulo=titulo,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action="../",
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    nuevo=nuevo)
        '''
예제 #41
0
 def post(self, *args, **kw):
     """
     Generamos la línea base.
     """
     #transaction.begin()
     id_fase = UrlParser.parse_id(request.url, "fases")
     pks = []
     for k, v in kw.items():
         if v.isalnum():
             pks.append(int(v))
     fase = Fase.por_id(id_fase)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     fase.generar_lb(pks, user)
     if pks:
         flash(u"Se ha generado la línea base")
     else:
         flash(u"No se seleccionaron elementos", "warning")
     transaction.commit()
     #redirect("/fases/%d/edit" % id_fase)
     #url = '/fases/%d/edit' % id_fase
     url = './'
     return url
예제 #42
0
파일: fase.py 프로젝트: jorgeramirez/LPM
    def _do_get_provider_count_and_objs(self, id_proyecto=None, id_fase=None, **kw):
        """
        Retorna las fases del proyecto en cuestión
        """
        if id_fase:
            fase  = Fase.por_id(id_fase)
            return 1, [fase]

        count, lista = super(FaseTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []                    
        if id_proyecto:
            id_proyecto = int(id_proyecto)
            #ap = AlgunPermiso(tipo='Fase', id_proyecto=id_proyecto).is_met(request.environ)

            for f in lista:
                if f.id_proyecto == id_proyecto:
                    if AlgunPermiso(tipo='Fase', 
                                    id_fase=f.id_fase).is_met(request.environ):
                        filtrados.append(f)
                
        return len(filtrados), filtrados
예제 #43
0
파일: item.py 프로젝트: jorgeramirez/LPM
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """
        puede_crear = False
        id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
        titulo = self.title
        nuevo = "./new"
        
        if (UrlParser.parse_id(request.url, "items")):
            nuevo = "../new"
            
        if id_fase: 
            # desde el controlador de fases
            puede_crear = PoseePermiso("crear item", 
                                       id_fase=id_fase).is_met(request.environ)
            fase = Fase.por_id(id_fase)
            if puede_crear:
                puede_crear = fase.puede_crear_item()
            titulo = u"Ítems de Fase: %s" % fase.nombre

        tmpl_context.widget = self.table
        buscar_table_filler = ItemTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        items = buscar_table_filler.get_value(id_fase=id_fase)
        return dict(lista_elementos=items, 
                    page=titulo, 
                    titulo=titulo, 
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    url_action='../',
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    opciones=self.opciones,
                    atras='../../../',
                    nuevo=nuevo
                    )
예제 #44
0
    def _do_get_provider_count_and_objs(self, id_item=None, tipo=None, **kw):
        """
        Recupera los ítems para los cuales tenemos algún permiso. y está o no
        relacionado al campo relacionado.
        Si el usuario se encuentra en una fase, retorna solo
        los ítems que pertenecen a dicha fase.
        """
        #count, lista = super(ItemTableFiller, self).\
        #                   _do_get_provider_count_and_objs(**kw)
        filtrados = []
        if id_item:
            item = Item.por_id(int(id_item))

            if (tipo == 'P-H'):

                items_fase_actual = DBSession.query(Item)\
                .filter(and_(Item.id_propiedad_item == PropiedadItem.id_propiedad_item,\
                Item.id_item != item.id_item, Item.id_fase == item.id_fase,
                PropiedadItem.estado != u"Eliminado"))\
                .all()

                for it in items_fase_actual:
                    if (not it.esta_relacionado(id_item)):
                        filtrados.append(it)

            if (tipo == 'A-S'):
                fase = Fase.por_id(item.id_fase)
                items_fase_anterior = DBSession.query(Item)\
                .filter(and_(Item.id_propiedad_item == PropiedadItem.id_propiedad_item,\
                Item.id_fase == Fase.id_fase, Fase.id_proyecto == fase.id_proyecto, PropiedadItem.estado == u"Bloqueado", \
                    Fase.posicion == fase.posicion - 1, fase.posicion != 1))\
                .all()

                for it in items_fase_anterior:
                    if (not it.esta_relacionado(id_item)):
                        filtrados.append(it)

        return len(filtrados), filtrados
예제 #45
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        id_fase = UrlParser.parse_id(request.url, "fases")
        id_usuario = UrlParser.parse_id(request.url, "miembrosfase")
        usuario = Usuario.por_id(id_usuario)
        fase = Fase.por_id(id_fase)

        titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario
        puede_asignar = PoseePermiso("asignar-desasignar rol",
                                     id_fase=id_fase).is_met(request.environ)

        if request.response_type == 'application/json':
            return self.table_filler.get_value(usuario=usuario,
                                               asignados=False,
                                               id_fase=id_fase,
                                               **kw)
        if not getattr(self.table.__class__, '__retrieves_own_value__', False):
            roles = self.table_filler.get_value(usuario=usuario,
                                                asignados=False,
                                                id_fase=id_fase,
                                                **kw)
        else:
            roles = []

        tmpl_context.widget = self.table
        atras = "../../"
        return dict(lista_elementos=roles,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    comboboxes=self.comboboxes,
                    url_action=self.action,
                    atras=atras,
                    puede_asignar=puede_asignar)
예제 #46
0
 def abrir(self, *args, **kw):
     """
     Abre una LB
     """
     lb = LB.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     op = u"Desbloqueo"
     for iplb in lb.items:
         p_item = iplb.propiedad_item
         if p_item.estado == u"Bloqueado":
             p_item.estado = u"Aprobado"
         elif p_item.estado == u"Revisión-Bloq":
             p_item.estado = u"Revisión-Desbloq"
         HistorialItems.registrar(user, p_item, op)
         
     HistorialLB.registrar(user, lb, 0)# u"Apertura"
     id_fase = UrlParser.parse_id(request.url, "fases")
     url = '../'
     fase = Fase.por_id(id_fase)
     lb.estado = u"Abierta"
     fase.cambiar_estado()
     flash("Se ha abierto la LB")
     redirect(url)
예제 #47
0
파일: item.py 프로젝트: jorgeramirez/LPM
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     puede_crear = False
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     titulo = self.title
     atras = "../../"
     nuevo = "./new"
     
     if (UrlParser.parse_id(request.url, "items")):
         nuevo = "../new"
         
     if id_fase: 
         # desde el controlador de fases
         puede_crear = PoseePermiso("crear item", id_fase=id_fase).is_met(request.environ)
         #atras = "/fases/%d/edit/" % id_fase
         fase = Fase.por_id(id_fase)
         if puede_crear:
             puede_crear = fase.puede_crear_item()
         titulo = u"Ítems de Fase: %s" % fase.nombre
         
     items = self.table_filler.get_value(id_fase=id_fase, **kw)
     tmpl_context.widget = self.table
     return dict(lista_elementos=items, 
                 page=titulo,
                 atras=atras,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 puede_crear=puede_crear,
                 comboboxes=self.comboboxes,
                 nuevo=nuevo
                 )
예제 #48
0
 def __init__(self, **kw):
     """
     Método inicializador
     
     @param kw: Parametros para inicializar
     @keyword tipo: El tipo de permiso (Rol, Usuario, Proyecto, Fase, Tipo Ítem).
     """
     self.id_proyecto = 0
     self.id_fase = 0
     self.id_tipo_item = 0
     self.id_usuario = 0
     
     self.tipo = unicode(kw["tipo"])
     del kw["tipo"]
     
     if (not kw.has_key('id_proyecto')):
         if (kw.has_key('id_fase')):
             self.id_fase = int(kw['id_fase'])
             self.id_proyecto = Fase.por_id(self.id_fase).id_proyecto
             del kw['id_fase']
         if (kw.has_key('id_tipo_item')):
             self.id_tipo_item = int(kw['id_tipo_item'])
             ti = TipoItem.por_id(self.id_tipo_item)
             self.id_fase = ti.id_fase
             self.id_proyecto = ti.id_proyecto
             del kw['id_tipo_item']
     else:
         self.id_proyecto = int(kw['id_proyecto'])
         del kw['id_proyecto']
     
     if kw.has_key("id_usuario"):
         self.id_usuario = int(kw["id_usuario"])
         del kw["id_usuario"]
     
         
     super(AlgunPermiso, self).__init__(**kw)