コード例 #1
0
    def calcular_impacto(self, *args, **kw):
        """Calcula el impacto"""
        id = args[0]
        id_item = int(id)
        item = Item.por_id(id_item)
        page = "Calculo de impacto de item: %s" % item.codigo

        atras = "../%s" % id

        #if UrlParser.parse_nombre(request.url, "fases"):
        #    atras = "../%s/edit" % id

        item = Item.por_id(id_item)
        sumatoria, grafo = item.calcular_impacto()
        id_proyecto = UrlParser.parse_id(request.url, "proyectos_desarrollo")

        #fase = Fase.por_id(item.id_fase)
        proy = Proyecto.por_id(id_proyecto)
        impacto = (float(sumatoria) / float(proy.complejidad_total)) * 100

        return dict(atras=atras,
                    impacto=str(impacto),
                    page=page,
                    ct=str(proy.complejidad_total),
                    suma=str(sumatoria),
                    grafo=grafo)
コード例 #2
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
    def calcular_impacto(self, *args, **kw):
        """Calcula el impacto"""
        id = args[0]
        id_item = int(id)
        item = Item.por_id(id_item)
        page = "Calculo de impacto de item: %s" % item.codigo
        
        atras = "../%s" % id


        #if UrlParser.parse_nombre(request.url, "fases"):
        #    atras = "../%s/edit" % id
            
        item = Item.por_id(id_item)
        sumatoria, grafo = item.calcular_impacto()
        id_proyecto = UrlParser.parse_id(request.url, "proyectos_desarrollo")
        
        #fase = Fase.por_id(item.id_fase)
        proy = Proyecto.por_id(id_proyecto)
        impacto = (float(sumatoria)/float(proy.complejidad_total)) * 100

        return dict(atras=atras,
                    impacto=str(impacto),
                    page=page,
                    ct=str(proy.complejidad_total),
                    suma=str(sumatoria),
                    grafo=grafo
                    )
コード例 #3
0
    def edit(self, *args, **kw):
        """Despliega una pagina para realizar modificaciones"""

        #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_modificar = PoseePermiso(
            'modificar item', id_fase=item.id_fase).is_met(request.environ)
        if not puede_modificar:
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect("./")
        tmpl_context.widget = self.edit_form
        #tmpl_context.tabla_atributos = self.atributos.table
        #atributos = self.atributos.table_filler \
        #                .get_value(id_version=item.id_propiedad_item)

        #tmpl_context.tabla_relaciones = RelacionItemTable(DBSession)
        #rel_table_filler = RelacionItemTableFiller(DBSession)
        #relaciones = rel_table_filler.get_value(id_version=item.id_propiedad_item)
        value = self.edit_filler.get_value(values={'id_item': id_item})
        page = u"Modificar Ítem: %s" % value["codigo"]

        return dict(
            value=value,
            page=page,
            #id=str(id_item),
            #puede_relacionar=puede_modificar,
            #atributos=atributos,
            #relaciones=relaciones,
            atras=atras)
コード例 #4
0
ファイル: atributoitem.py プロジェクト: jorgeramirez/LPM
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        if UrlParser.parse_nombre(request.url, "versiones"):
            #no se hace nada desde el controlador de versiones.
            return '<div></div>'

        value = '<div>'
        clase = 'actions_fase'
        id = str(obj.id_atributos_por_item)
        controller = "./atributos/" + id
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)
        
        if UrlParser.parse_nombre(request.url, "atributos"):
            controller = id

        #if PoseePermiso('modificar item', 
        #                id_fase=item.id_fase).is_met(request.environ):
        if PoseePermiso('modificar item', 
                        id_tipo_item=item.id_tipo_item).is_met(request.environ):
            value += '<div>' + \
                        '<a href="./'+ controller +'/edit" ' + \
                        'class="' + clase + '">Modificar</a>' + \
                     '</div><br />'
        
        value += '</div>'
        return value
コード例 #5
0
    def _do_get_provider_count_and_objs(self,
                                        id_fase=None,
                                        id_item=None,
                                        **kw):
        """
        Recupera los ítems para los cuales tenemos algún permiso.
        Si el usuario se encuentra en una fase, retorna solo
        los ítems que pertenecen a dicha fase.
        """
        if id_item:
            item = Item.por_id(id_item)
            return 1, [item]

        count, lista = super(ItemTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []
        '''                   
        if id_fase:
            id_fase = int(id_fase)
        '''
        for it in lista:
            if (it.id_fase == id_fase and \
                AlgunPermiso(tipo= "Tipo", id_tipo_item=it.id_tipo_item).is_met(request.environ)):
                filtrados.append(it)

        return len(filtrados), filtrados
        '''
コード例 #6
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
        atributos = {}
        atras = "../../"

        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Atributos de Version: %d" % p_item.version
            atributos = 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"Atributos de Ítem: %s" % item.codigo
            atras = "../"
            atributos = self.table_filler. \
                        get_value(id_version=item.id_propiedad_item, **kw)

        tmpl_context.widget = self.table
        return dict(
            lista_elementos=atributos,
            page=titulo,
            titulo=titulo,
            modelo=self.model.__name__,
            #                    columnas=self.columnas,
            #                    opciones=self.opciones,
            url_action=self.tmp_action,
            atras=atras)
コード例 #7
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        value = '<div>'
        clase = 'actions_fase'
        item = Item.por_id(obj.id_item_actual)
        p_item = PropiedadItem.por_id(item.id_propiedad_item)
        id = obj.id_propiedad_item

        controller = "./" + str(obj.id_propiedad_item)
        controller2 = "./"
        if (UrlParser.parse_nombre(request.url, "post_buscar")):#desde post_buscar
            controller = "../" + str(obj.id_propiedad_item)
            controller2 = "../"

            
        
        value += '<div>' + \
                    '<a href="' + controller + '/edit" ' +  \
                    'class="' + clase + '">Detalles</a>' + \
                 '</div><br />'
                 
        value += '<div>' + \
                    '<a href="' + controller + '/atributos" ' +  \
                    'class="' + clase + '">Atributos</a>' + \
                 '</div><br />'


        if PoseePermiso('modificar item',
                        id_tipo_item=item.id_tipo_item).is_met(request.environ):
                
            if p_item.estado not in [u"Bloqueado", u"Eliminado", u"Revisión-Bloq"] and\
                id != p_item.id_propiedad_item:
                value += '<div>' + \
                            '<a href="' + controller2 + 'revertir/'+ str(id) + '" ' + \
                            'class="' + clase + '">Volver a versión</a>' + \
                         '</div><br />'
                     
        value += '<div>' + \
            '<a href="' + controller +'/adjuntos" ' + \
            'class="' + clase + '">Adjuntos</a>' + \
            '</div><br />'
            
        value += '<div>' + \
            '<a href="' + controller +'/relaciones_ph" ' + \
            'class="' + clase + '">Relaciones P-H</a>' + \
            '</div><br />'
            
        value += '<div>' + \
            '<a href="' + controller +'/relaciones_as" ' + \
            'class="' + clase + '">Relaciones A-S</a>' + \
            '</div><br />'
        
        value += '<div>' + \
            '<a href="' + controller +'/historial" ' + \
            'class="' + clase + '">Historial</a>' + \
            '</div><br />'
                    
        value += '</div>'
        return value
コード例 #8
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
 def post_delete(self, *args, **kw):
     #se lo llama desde la pagina de edit, al marcar las relaciones
     #y luego seleccionar Eliminar. Ajax.
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     
     p_item = PropiedadItem.por_id(item.id_propiedad_item)
     
     ids = []
     id = None
     if kw:
         for k, pk in kw.items():
             if not k.isalnum():
                 continue
             ids.append(int(pk))
     else:    
         try:
             id = int(args[0])
             if (id > 0):
                 ids.append(id)
         except:
             id = 0
             flash(u"Argumento invalido", "warning")
     
     p_item.eliminar_relaciones(ids)    
    
     usuario = Usuario.by_user_name(request.identity['repoze.who.userid'])
     item.guardar_historial(u"eliminar-relaciones", usuario)
     
     if (id):
         redirect("../")
     else:
         transaction.commit()   
         #return "/items/%d/edit" % id_item
         return './'
コード例 #9
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        if UrlParser.parse_nombre(request.url, "versiones"):
            #no se hace nada desde el controlador de versiones.
            return '<div></div>'

        value = '<div>'
        clase = 'actions_fase'
        id = str(obj.id_atributos_por_item)
        controller = "./atributos/" + id
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)

        if UrlParser.parse_nombre(request.url, "atributos"):
            controller = id

        #if PoseePermiso('modificar item',
        #                id_fase=item.id_fase).is_met(request.environ):
        if PoseePermiso('modificar item',
                        id_tipo_item=item.id_tipo_item).is_met(
                            request.environ):
            value += '<div>' + \
                        '<a href="./'+ controller +'/edit" ' + \
                        'class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

        value += '</div>'
        return value
コード例 #10
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
    def edit(self, *args, **kw):
        """Despliega una pagina para realizar modificaciones"""
        
        #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_modificar = PoseePermiso('modificar item', 
                                       id_fase=item.id_fase).is_met(request.environ)
        if not puede_modificar:
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect("./")
        tmpl_context.widget = self.edit_form
        #tmpl_context.tabla_atributos = self.atributos.table
        #atributos = self.atributos.table_filler \
        #                .get_value(id_version=item.id_propiedad_item)
        
        #tmpl_context.tabla_relaciones = RelacionItemTable(DBSession)
        #rel_table_filler = RelacionItemTableFiller(DBSession)
        #relaciones = rel_table_filler.get_value(id_version=item.id_propiedad_item)
        value = self.edit_filler.get_value(values={'id_item': id_item})
        page = u"Modificar Ítem: %s" % value["codigo"]

        return dict(value=value,
                    page=page,
                    #id=str(id_item),
                    #puede_relacionar=puede_modificar,
                    #atributos=atributos,
                    #relaciones=relaciones,
                    atras=atras
                    )
コード例 #11
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        if UrlParser.parse_nombre(request.url, "versiones"):
            #no se hace nada desde el controlador de versiones.
            return '<div></div>'

        value = '<div>'
        clase = 'actions_fase'
        id = str(obj.id_relacion)
        controller = "./" + id
        id_item = UrlParser.parse_id(request.url, "items")
        
        if id_item:
            item = Item.por_id(id_item)
            p_item = PropiedadItem.por_id(item.id_propiedad_item)

            otro = obj.obtener_otro_item(id_item)
            p_otro = PropiedadItem.por_id(otro.id_propiedad_item)
        
            if (p_item.estado not in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] and\
                    obj.id_anterior != id_item or p_otro.estado == u"Eliminado"):
                    
                if (PoseePermiso('modificar item', 
                                id_fase=item.id_fase).is_met(request.environ) ):
                    value += '<div><form method="POST" action="' + controller + '" class="button-to">'+\
                             '<input type="hidden" name="_method" value="DELETE" />' +\
                             '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\
                             'style="background-color: transparent; float:left; border:0; color: #286571; display: inline;'+\
                             'margin: 0; padding: 0;' + clase + '"/>'+\
                             '</form></div><br />'
        
        value += '</div>'
        return value
コード例 #12
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
 def _do_get_provider_count_and_objs(self, id_version=None, **kw):
     """
     Recupera las relaciones de la versión del ítem indicado.
     """
     count, lista = super(RelacionTableFiller, self).\
                         _do_get_provider_count_and_objs(**kw)
     
     tipo = "a-s"
     if (UrlParser.parse_nombre(request.url, "relaciones_ph")):
         tipo = "p-h"
     
     filtrados = []                    
     if id_version:
         p_item = PropiedadItem.por_id(id_version)
         item = Item.por_id(p_item.id_item_actual)
         #ver este permiso
         ap = AlgunPermiso(tipo='Fase',
                           id_fase=item.id_fase).is_met(request.environ)
         if ap:
             
             for rpi in p_item.relaciones:
                 if (rpi.relacion in lista) and \
                     rpi.relacion.tipo == Relacion.tipo_relaciones[tipo]:
                     filtrados.append(rpi.relacion)
     
     return len(filtrados), filtrados
コード例 #13
0
ファイル: atributoitem.py プロジェクト: jorgeramirez/LPM
    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
        atributos = {}
        atras="../../"
        
        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Atributos de Version: %d" % p_item.version
            atributos = 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"Atributos de Ítem: %s" % item.codigo
            atras="../"
            atributos = self.table_filler. \
                        get_value(id_version=item.id_propiedad_item, **kw)
        
        tmpl_context.widget = self.table
        return dict(lista_elementos=atributos, 
                    page=titulo,
                    titulo=titulo, 
                    modelo=self.model.__name__, 
#                    columnas=self.columnas,
#                    opciones=self.opciones,
                    url_action=self.tmp_action,
                    atras=atras
                    )
コード例 #14
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def estado(self, obj, **kw):
        id_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        if not id_version:
            item = Item.por_id(id_item)
            rti = DBSession.query(RelacionPorItem).\
                                filter(and_(RelacionPorItem.id_propiedad_item\
                                == item.id_propiedad_item,\
                                RelacionPorItem.id_relacion == obj.id_relacion))\
                                .first()
        else:
            p_item = PropiedadItem.por_id(id_version)
            rti = DBSession.query(RelacionPorItem).\
                                filter(and_(RelacionPorItem.id_propiedad_item\
                                == p_item.id_propiedad_item,\
                                RelacionPorItem.id_relacion == obj.id_relacion))\
                                .first()

        color = u"inherit;"
        estado = u"No"

        if (rti.revisar):
            color = u"#ff0000;"
            estado = u'Sí'

        value = '<div style="color:' + color + '">' + estado + '</div>'

        return value
コード例 #15
0
ファイル: adjunto.py プロジェクト: jorgeramirez/LPM
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        value = '<div>'
        clase = 'actions_fase'
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)
        p_item = PropiedadItem.por_id(item.id_propiedad_item)
        id = str(obj.id_archivo_externo)
        #if PoseePermiso('modificar item', 
        #                id_fase=item.id_fase).is_met(request.environ):
        if PoseePermiso('modificar item', 
                        id_tipo_item=item.id_tipo_item).is_met(request.environ):
            value += '<div>' + \
                        '<a href="./descargar/' + id + '" ' +  \
                        'class="' + clase + '">Descargar</a>' + \
                     '</div><br />'
            if not UrlParser.parse_nombre(request.url, "versiones") and \
                   p_item.estado not in [u"Eliminado", u"Bloqueado", 
                                       u"Revisión-Bloq"]:
                #No se puede eliminar desde el controlador de versiones.
                value += '<div><form method="POST" action="' + id + '" class="button-to">'+\
                         '<input type="hidden" name="_method" value="DELETE" />' +\
                         '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\
                         'style="background-color: transparent; float:left; border:0; color: #286571; display: inline;'+\
                         'margin: 0; padding: 0;' + clase + '"/>'+\
                         '</form></div><br />'

        value += '</div>'
        return value
コード例 #16
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def post_delete(self, *args, **kw):
        #se lo llama desde la pagina de edit, al marcar las relaciones
        #y luego seleccionar Eliminar. Ajax.
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)

        p_item = PropiedadItem.por_id(item.id_propiedad_item)

        ids = []
        id = None
        if kw:
            for k, pk in kw.items():
                if not k.isalnum():
                    continue
                ids.append(int(pk))
        else:
            try:
                id = int(args[0])
                if (id > 0):
                    ids.append(id)
            except:
                id = 0
                flash(u"Argumento invalido", "warning")

        p_item.eliminar_relaciones(ids)

        usuario = Usuario.by_user_name(request.identity['repoze.who.userid'])
        item.guardar_historial(u"eliminar-relaciones", usuario)

        if (id):
            redirect("../")
        else:
            transaction.commit()
            #return "/items/%d/edit" % id_item
            return './'
コード例 #17
0
ファイル: items_relacion.py プロジェクト: jorgeramirez/LPM
    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")
        item = Item.por_id(id_item)

        controller = "relacionar_as"
        tipo = "A-S"
        if (UrlParser.parse_nombre(request.url, "relaciones_ph")):
            controller = "relacionar_ph"
            tipo = "P-H"

        #TODO ACENTO EN RELACION
        page = u"Relacion {tipo} con ítem: {codigo}".format(tipo=tipo,
                                                            codigo=item.codigo)
        tmpl_context.tabla_items = item_relacion_table
        items = item_relacion_table_filler.get_value(id_item=id_item,\
                                                          tipo=tipo, **kw)

        atras = "../"

        return dict(items=items,
                    page=page,
                    title=self.title,
                    controlador=controller,
                    atras=atras)
コード例 #18
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def _do_get_provider_count_and_objs(self, id_version=None, **kw):
        """
        Recupera las relaciones de la versión del ítem indicado.
        """
        count, lista = super(RelacionTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)

        tipo = "a-s"
        if (UrlParser.parse_nombre(request.url, "relaciones_ph")):
            tipo = "p-h"

        filtrados = []
        if id_version:
            p_item = PropiedadItem.por_id(id_version)
            item = Item.por_id(p_item.id_item_actual)
            #ver este permiso
            ap = AlgunPermiso(tipo='Fase',
                              id_fase=item.id_fase).is_met(request.environ)
            if ap:

                for rpi in p_item.relaciones:
                    if (rpi.relacion in lista) and \
                        rpi.relacion.tipo == Relacion.tipo_relaciones[tipo]:
                        filtrados.append(rpi.relacion)

        return len(filtrados), filtrados
コード例 #19
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        if UrlParser.parse_nombre(request.url, "versiones"):
            #no se hace nada desde el controlador de versiones.
            return '<div></div>'

        value = '<div>'
        clase = 'actions_fase'
        id = str(obj.id_relacion)
        controller = "./" + id
        id_item = UrlParser.parse_id(request.url, "items")

        if id_item:
            item = Item.por_id(id_item)
            p_item = PropiedadItem.por_id(item.id_propiedad_item)

            otro = obj.obtener_otro_item(id_item)
            p_otro = PropiedadItem.por_id(otro.id_propiedad_item)

            if (p_item.estado not in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] and\
                    obj.id_anterior != id_item or p_otro.estado == u"Eliminado"):

                if (PoseePermiso('modificar item',
                                 id_fase=item.id_fase).is_met(
                                     request.environ)):
                    value += '<div><form method="POST" action="' + controller + '" class="button-to">'+\
                             '<input type="hidden" name="_method" value="DELETE" />' +\
                             '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\
                             'style="background-color: transparent; float:left; border:0; color: #286571; display: inline;'+\
                             'margin: 0; padding: 0;' + clase + '"/>'+\
                             '</form></div><br />'

        value += '</div>'
        return value
コード例 #20
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
 def estado(self, obj, **kw):
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = UrlParser.parse_id(request.url, "versiones")
     if not id_version:
         item = Item.por_id(id_item)
         rti = DBSession.query(RelacionPorItem).\
                             filter(and_(RelacionPorItem.id_propiedad_item\
                             == item.id_propiedad_item,\
                             RelacionPorItem.id_relacion == obj.id_relacion))\
                             .first()
     else:
         p_item = PropiedadItem.por_id(id_version)
         rti = DBSession.query(RelacionPorItem).\
                             filter(and_(RelacionPorItem.id_propiedad_item\
                             == p_item.id_propiedad_item,\
                             RelacionPorItem.id_relacion == obj.id_relacion))\
                             .first()
         
     color = u"inherit;"
     estado = u"No"
     
     if(rti.revisar):
         color = u"#ff0000;"
         estado = u'Sí'
         
     value = '<div style="color:' + color + '">' + estado + '</div>'
     
     return value
コード例 #21
0
 def post_delete(self, id_item):
     """Elimina un item"""
     item = Item.por_id(int(id_item))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar(user)
         flash(u"Ítem Eliminado")
     except EliminarItemError, err:
         flash(unicode(err), 'warning')
コード例 #22
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
 def post_delete(self, id_item):
     """Elimina un item"""
     item = Item.por_id(int(id_item))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar(user)
         flash(u"Ítem Eliminado")
     except EliminarItemError, err:
         flash(unicode(err), 'warning')
コード例 #23
0
ファイル: adjunto.py プロジェクト: jorgeramirez/LPM
 def post(self, archivo=None, **kw):
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     contenido = archivo.value #archivo.file.read()
     try:
         item.adjuntar_archivo(archivo.filename, contenido, user)
     except AdjuntarArchivoError, err:
         flash(unicode(err), 'warning')
コード例 #24
0
ファイル: adjunto.py プロジェクト: jorgeramirez/LPM
 def post_delete(self, id_archivo):
     """Elimina un archivo externo"""
     
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar_archivo_adjunto(int(id_archivo), user)
     except EliminarArchivoAdjuntoError, err:
         flash(unicode(err), 'warning')
コード例 #25
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
 def aprobar(self, *args, **kw):
     """
     Aprueba un ítem.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.aprobar(user)
         flash(u"Ítem Aprobado")
     except CondicionAprobarError, err:
         flash(unicode(err), 'warning')
コード例 #26
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
 def revivir(self, *args, **kw):
     """
     Revive un ítem que se encuentra en estado eliminado.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.revivir(user)
         flash(u"Ítem Revivido")
     except RevivirItemError, err:
         flash(unicode(err), 'warning')
コード例 #27
0
 def revivir(self, *args, **kw):
     """
     Revive un ítem que se encuentra en estado eliminado.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.revivir(user)
         flash(u"Ítem Revivido")
     except RevivirItemError, err:
         flash(unicode(err), 'warning')
コード例 #28
0
 def desaprobar(self, *args, **kw):
     """
     Desaprueba un ítem.
     """
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item = Item.por_id(int(args[0]))
     try:
         item.desaprobar(user)
         flash(u"Ítem Desaprobado")
     except DesAprobarItemError, err:
         flash(unicode(err), 'warning')
コード例 #29
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
 def desaprobar(self, *args, **kw):
     """
     Desaprueba un ítem.
     """
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item = Item.por_id(int(args[0]))
     try:
         item.desaprobar(user)
         flash(u"Ítem Desaprobado")
     except DesAprobarItemError, err:
         flash(unicode(err), 'warning')
コード例 #30
0
 def aprobar(self, *args, **kw):
     """
     Aprueba un ítem.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.aprobar(user)
         flash(u"Ítem Aprobado")
     except CondicionAprobarError, err:
         flash(unicode(err), 'warning')
コード例 #31
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    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)
コード例 #32
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
 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
                 )
コード例 #33
0
ファイル: items_relacion.py プロジェクト: jorgeramirez/LPM
    def relacionar_ph(self, *args, **kw):
        #recibe los elementos seleccionados en relacionar_item
        #relaciona, y retorna. Ajax
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)

        p_item = PropiedadItem.por_id(item.id_propiedad_item)

        ids = []
        id = None
        if kw:
            for k, pk in kw.items():
                if not k.isalnum():
                    continue
                ids.append(int(pk))
        else:
            try:
                id = int(args[0])
                if (id > 0):
                    ids.append(id)
            except:
                id = 0
                flash(u"Argumento inválido", "warning")

        retorno, creado = p_item.agregar_relaciones(ids, 'p-h')

        if (creado
            ):  #si por lo menos se pudo crear una relacion se guarda en el
            #historial
            usuario = Usuario.by_user_name(
                request.identity['repoze.who.userid'])
            item.guardar_historial(u"relacionar-PH", usuario)

        mensaje = ""
        if (retorno == u"" and not creado):
            mensaje = u"No se crearon relaciones"
        elif (retorno != u""):
            mensaje = u"No se pudo crear la relación con %s" % retorno

        #no sé como pasar strings como parámetro, fea solución

        indice = session.get('indice_mensaje', 0)
        session['indice_mensaje'] = indice + 1
        session[str(indice)] = mensaje

        if (id):
            redirect('../mensajes/%d' % indice)
        else:
            transaction.commit()
            #return "/items/%d/edit" % id_item
            return './mensajes/%d' % indice
コード例 #34
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def _do_get_provider_count_and_objs(self, id_item=None, **kw):
     """
     Recupera las versiones del ítem en cuestión.
     """
     count, lista = super(VersionTableFiller, self).\
                         _do_get_provider_count_and_objs(**kw)
     filtrados = []
     if id_item:
         id_item = int(id_item)
         item = Item.por_id(id_item)
         for p_item in reversed(item.propiedad_item_versiones):
             if p_item in lista:
                 filtrados.append(p_item)
     return len(filtrados), filtrados
コード例 #35
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def _do_get_provider_count_and_objs(self, id_item=None, **kw):
     """
     Recupera las versiones del ítem en cuestión.
     """
     count, lista = super(VersionTableFiller, self).\
                         _do_get_provider_count_and_objs(**kw)
     filtrados = []                    
     if id_item:
         id_item = int(id_item)
         item = Item.por_id(id_item)
         for p_item in reversed(item.propiedad_item_versiones):
             if p_item in lista:
                 filtrados.append(p_item)
     return len(filtrados), filtrados
コード例 #36
0
ファイル: adjunto.py プロジェクト: jorgeramirez/LPM
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """
        id_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        titulo = self.title
        archivos = {}
        puede_crear = False
        buscar_table_filler = AdjuntoTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        atras="../../../"
        
        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Archivos Adjuntos de Versión: %d" % p_item.version
            archivos = buscar_table_filler. \
                        get_value(id_version=id_version)
        elif id_item:
            #desde controller de items.
            item = Item.por_id(id_item)

            puede_crear = PoseePermiso("modificar item", 
                                id_tipo_item=item.id_tipo_item).is_met(request.environ)

            if puede_crear:
                p_item = PropiedadItem.por_id(item.id_propiedad_item)
                if p_item.estado in [u"Bloqueado", u"Revisión-Bloq", 
                                         u"Eliminado"]:
                    puede_crear = False

            titulo = u"Archivos Adjuntos de Ítem: %s" % item.codigo
            atras="../../"
            archivos = buscar_table_filler. \
                        get_value(id_version=item.id_propiedad_item)
        
        tmpl_context.widget = self.table
        return dict(lista_elementos=archivos, 
                    page=titulo, 
                    titulo=titulo, 
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    url_action='../',
                    puede_crear=puede_crear,
                    opciones=self.opciones,
                    atras=atras
                    )
コード例 #37
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def revertir(self, *args, **kw):
     """
     Revierte el ítem en cuestion a la version indicada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = int(args[0])
     if not id_item:
         redirect("../")
     item = Item.por_id(id_item)
     pp = PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item)
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("../")
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item.revertir(id_version, user)
     redirect("../")
コード例 #38
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def revertir(self, *args, **kw):
     """
     Revierte el ítem en cuestion a la version indicada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = int(args[0])
     if not id_item:
         redirect("../")
     item = Item.por_id(id_item)
     pp = PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item)
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("../")
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item.revertir(id_version, user)
     redirect("../")
コード例 #39
0
ファイル: adjunto.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_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        titulo = self.title
        archivos = {}
        atras="../../"
        
        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Archivos Adjuntos de Versión: %d" % p_item.version
            archivos = self.table_filler. \
                        get_value(id_version=id_version, **kw)
        elif id_item:
            #desde controller de items
            item = Item.por_id(id_item)

            puede_crear = PoseePermiso("modificar item", 
                                id_tipo_item=item.id_tipo_item).is_met(request.environ)
            
            if puede_crear:
                p_item = PropiedadItem.por_id(item.id_propiedad_item)
                if p_item.estado in [u"Bloqueado", u"Revisión-Bloq", 
                                         u"Eliminado"]:
                    puede_crear = False
            
            titulo = u"Archivos Adjuntos de Ítem: %s" % item.codigo
            atras="../"
            archivos = self.table_filler. \
                        get_value(id_version=item.id_propiedad_item, **kw)
        
        tmpl_context.widget = self.table
        return dict(lista_elementos=archivos, 
                    page=titulo,
                    titulo=titulo, 
                    modelo=self.model.__name__, 
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.tmp_action,
                    puede_crear=puede_crear,
                    atras=atras
                    )
コード例 #40
0
ファイル: atributoitem.py プロジェクト: jorgeramirez/LPM
    def _do_get_provider_count_and_objs(self, id_version=None, **kw):
        """
        Recupera los  atributos de la versión del ítem indicado.
        """
        count, lista = super(AtributoItemTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []                    
        if id_version:
            p_item = PropiedadItem.por_id(id_version)
            item = Item.por_id(p_item.id_item_actual)
            ap = AlgunPermiso(tipo='Fase',
                              id_fase=item.id_fase).is_met(request.environ)
            if ap:
                for attr_por_item in p_item.atributos:
                    if attr_por_item in lista:
                        filtrados.append(attr_por_item)

        return len(filtrados), filtrados
コード例 #41
0
    def _do_get_provider_count_and_objs(self, id_version=None, **kw):
        """
        Recupera los  atributos de la versión del ítem indicado.
        """
        count, lista = super(AtributoItemTableFiller, self).\
                            _do_get_provider_count_and_objs(**kw)
        filtrados = []
        if id_version:
            p_item = PropiedadItem.por_id(id_version)
            item = Item.por_id(p_item.id_item_actual)
            ap = AlgunPermiso(tipo='Fase',
                              id_fase=item.id_fase).is_met(request.environ)
            if ap:
                for attr_por_item in p_item.atributos:
                    if attr_por_item in lista:
                        filtrados.append(attr_por_item)

        return len(filtrados), filtrados
コード例 #42
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def check(self, obj, **kw):
        bloq = ' '
        id_item = UrlParser.parse_id(request.url, "items")
        if id_item:
            item = Item.por_id(id_item)
            p_item = PropiedadItem.por_id(item.id_propiedad_item)
            otro = obj.obtener_otro_item(id_item)
            p_otro = PropiedadItem.por_id(otro.id_propiedad_item)
            
            if (p_item.estado in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] or\
                obj.id_anterior == id_item and p_otro.estado != u"Eliminado"):
                bloq = ' disabled="" '
            #se permite eliminar desde el item anterior las relaciones colgadas    

           
        checkbox = '<input type="checkbox" class="checkbox_tabla"' + bloq + 'id="' + str(obj.id_relacion) + '"/>'
        
        return checkbox
コード例 #43
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def check(self, obj, **kw):
        bloq = ' '
        id_item = UrlParser.parse_id(request.url, "items")
        if id_item:
            item = Item.por_id(id_item)
            p_item = PropiedadItem.por_id(item.id_propiedad_item)
            otro = obj.obtener_otro_item(id_item)
            p_otro = PropiedadItem.por_id(otro.id_propiedad_item)

            if (p_item.estado in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] or\
                obj.id_anterior == id_item and p_otro.estado != u"Eliminado"):
                bloq = ' disabled="" '
            #se permite eliminar desde el item anterior las relaciones colgadas

        checkbox = '<input type="checkbox" class="checkbox_tabla"' + bloq + 'id="' + str(
            obj.id_relacion) + '"/>'

        return checkbox
コード例 #44
0
 def put(self, *args, **kw):
     """update"""
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_item = UrlParser.parse_id(request.url, "items")
     if UrlParser.parse_nombre(request.url, "versiones"):
         #No debe poder modificarse, solo visualizar. TODO
         redirect('../')
     if id_item:
         #desde controller de items.
         id = int(args[0])  #identificador del atributo
         item = Item.por_id(id_item)
         p_item = PropiedadItem.por_id(item.id_propiedad_item)
         valor = kw["valor"]
         user_name = request.credentials["repoze.what.userid"]
         user = Usuario.by_user_name(user_name)
         try:
             p_item.modificar_atributo(user, id, valor)
         except ModificarItemError, err:
             flash(unicode(err), 'warning')
コード例 #45
0
ファイル: item.py プロジェクト: jorgeramirez/LPM
 def put(self, *args, **kw):
     """
     Actualiza un item. Específicamente su prioridad, complejidad, 
     observaciones o descripcion.
     """
     if "sprox_id" in kw:
         del kw["sprox_id"]
     kw["complejidad"] = int(kw["complejidad"])
     kw["prioridad"] = int(kw["prioridad"])
     atras = "./"
     id_item = UrlParser.parse_id(request.url, "items")
     #if UrlParser.parse_nombre(request.url, "fases"):
     #    atras = "../../edit"
     item = Item.por_id(id_item)
     user_name = request.credentials["repoze.what.userid"]
     user = Usuario.by_user_name(user_name)
     try:
         item.modificar(user, **kw)
     except ModificarItemError, err:
         flash(unicode(err), "warning")
コード例 #46
0
    def edit(self, *args, **kw):
        """Despliega una pagina para realizar modificaciones"""
        id_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        id = int(args[0])  #identificador del atributo
        titulo = self.title

        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Atributo de Versión: %d" % p_item.version
        elif id_item:
            #desde controller de items.
            item = Item.por_id(id_item)
            titulo = u"Atributo de Ítem: %s" % item.codigo

        value = self.edit_filler.get_value(
            values={'id_atributos_por_item': id})
        tmpl_context.widget = self.edit_form
        return dict(value=value, page=titulo, atras="../")
コード例 #47
0
 def put(self, *args, **kw):
     """
     Actualiza un item. Específicamente su prioridad, complejidad, 
     observaciones o descripcion.
     """
     if "sprox_id" in kw:
         del kw["sprox_id"]
     kw["complejidad"] = int(kw["complejidad"])
     kw["prioridad"] = int(kw["prioridad"])
     atras = "./"
     id_item = UrlParser.parse_id(request.url, "items")
     #if UrlParser.parse_nombre(request.url, "fases"):
     #    atras = "../../edit"
     item = Item.por_id(id_item)
     user_name = request.credentials["repoze.what.userid"]
     user = Usuario.by_user_name(user_name)
     try:
         item.modificar(user, **kw)
     except ModificarItemError, err:
         flash(unicode(err), "warning")
コード例 #48
0
ファイル: atributoitem.py プロジェクト: jorgeramirez/LPM
 def put(self, *args, **kw):
     """update"""
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_item = UrlParser.parse_id(request.url, "items")
     if UrlParser.parse_nombre(request.url, "versiones"):
         #No debe poder modificarse, solo visualizar. TODO
         redirect('../')
     if id_item:
         #desde controller de items.
         id = int(args[0]) #identificador del atributo
         item = Item.por_id(id_item)
         p_item = PropiedadItem.por_id(item.id_propiedad_item)
         valor = kw["valor"]
         user_name = request.credentials["repoze.what.userid"]
         user = Usuario.by_user_name(user_name)
         try:
             p_item.modificar_atributo(user, id, valor)
         except ModificarItemError, err:
             flash(unicode(err), 'warning')
コード例 #49
0
ファイル: items_relacion.py プロジェクト: jorgeramirez/LPM
    def relacionar_as(self, *args, **kw):
        #recibe los elementos seleccionados en relacionar_item
        #relaciona, y retorna. Ajax
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)
        p_item = PropiedadItem.por_id(item.id_propiedad_item)

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

        else:
            try:
                id = int(args[0])
                if (id > 0):
                    ids.append(id)
            except:
                id = 0
                flash(u"Argumento inválido", "warning")

        p_item.agregar_relaciones(ids, 'a-s')

        usuario = Usuario.by_user_name(request.identity['repoze.who.userid'])
        item.guardar_historial(u"relacionar-AS", usuario)

        mensaje = ""

        indice = session.get('indice_mensaje', 0)
        session['indice_mensaje'] = indice + 1
        session[str(indice)] = mensaje

        if (id):
            redirect('../mensajes/%d' % indice)
        else:
            transaction.commit()
            #return "/items/%d/edit" % id_item
            return './mensajes/%d' % indice
コード例 #50
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
                 )
     
     '''
コード例 #51
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     titulo = self.title
     id_item = UrlParser.parse_id(request.url, "items")
     if id_item:
         item = Item.por_id(id_item)
         titulo = u"Versiones del Ítem: %s" % item.codigo
     tmpl_context.widget = self.table
     versiones = self.table_filler.get_value(id_item=id_item, **kw)
     return dict(lista_elementos=versiones,
                 page=titulo,
                 titulo=self.title,
                 modelo=self.model.__name__,
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 comboboxes=self.comboboxes,
                 atras="../")
コード例 #52
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)
        '''
コード例 #53
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def edit(self, *args, **kw):
     """ Despliega una pagina donde se puede ver el estado del ítem
         para la versión dada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id = int(args[0])
     value = self.edit_filler.get_value(values={'id_propiedad_item': id})
     item = Item.por_id(id_item)
     page = u"Versión %d del Ítem: %s" % (value["version"], item.codigo)
     tmpl_context.widget = self.edit_form
     #tmpl_context.tabla_atributos = self.atributos.table
     #atributos = self.atributos.table_filler.get_value(id_version=id)        
     #tmpl_context.tabla_relaciones = self.relaciones.table
     #relaciones = self.relaciones.table_filler.get_value(id_version=id)
     atras = "../"
     return dict(value=value,
                 page=page,
                 id=str(id_item),
                 #atributos=atributos,
                 #relaciones=relaciones,
                 atras=atras
                 )
コード例 #54
0
ファイル: atributoitem.py プロジェクト: jorgeramirez/LPM
    def edit(self, *args, **kw):
        """Despliega una pagina para realizar modificaciones"""
        id_item = UrlParser.parse_id(request.url, "items")
        id_version = UrlParser.parse_id(request.url, "versiones")
        id = int(args[0]) #identificador del atributo
        titulo = self.title

        if id_version:
            #desde controller de versiones
            p_item = PropiedadItem.por_id(id_version)
            titulo = u"Atributo de Versión: %d" % p_item.version
        elif id_item:
            #desde controller de items.
            item = Item.por_id(id_item)
            titulo = u"Atributo de Ítem: %s" % item.codigo

        value = self.edit_filler.get_value(values={'id_atributos_por_item': id})                                
        tmpl_context.widget = self.edit_form
        return dict(value=value,
                    page=titulo,
                    atras="../"
                    )
コード例 #55
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     titulo = self.title
     id_item = UrlParser.parse_id(request.url, "items")
     if id_item:
        item = Item.por_id(id_item)
        titulo = u"Versiones del Ítem: %s" % item.codigo 
     tmpl_context.widget = self.table
     versiones = self.table_filler.get_value(id_item=id_item, **kw)
     return dict(lista_elementos=versiones, 
                 page=titulo,
                 titulo=self.title, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 comboboxes=self.comboboxes,
                 atras="../"
                 )
コード例 #56
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def edit(self, *args, **kw):
     """ Despliega una pagina donde se puede ver el estado del ítem
         para la versión dada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id = int(args[0])
     value = self.edit_filler.get_value(values={'id_propiedad_item': id})
     item = Item.por_id(id_item)
     page = u"Versión %d del Ítem: %s" % (value["version"], item.codigo)
     tmpl_context.widget = self.edit_form
     #tmpl_context.tabla_atributos = self.atributos.table
     #atributos = self.atributos.table_filler.get_value(id_version=id)
     #tmpl_context.tabla_relaciones = self.relaciones.table
     #relaciones = self.relaciones.table_filler.get_value(id_version=id)
     atras = "../"
     return dict(
         value=value,
         page=page,
         id=str(id_item),
         #atributos=atributos,
         #relaciones=relaciones,
         atras=atras)
コード例 #57
0
ファイル: items_relacion.py プロジェクト: jorgeramirez/LPM
    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
コード例 #58
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
    def eliminar_relaciones(self, *args, **kw):
        #se lo llama desde la pagina de edit, al marcar las relaciones
        #y luego seleccionar Eliminar. Ajax.
        id_item = UrlParser.parse_id(request.url, "items")
        item = Item.por_id(id_item)

        p_item = PropiedadItem.por_id(item.id_propiedad_item)

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

        p_item.eliminar_relaciones(ids)

        usuario = Usuario.by_user_name(request.identity['repoze.who.userid'])
        item.guardar_historial(u"eliminar-relaciones", usuario)

        transaction.commit()
        #return "/items/%d/edit" % id_item
        return './'
コード例 #59
0
ファイル: relacion.py プロジェクト: jorgeramirez/LPM
 def eliminar_relaciones(self, *args, **kw):
     #se lo llama desde la pagina de edit, al marcar las relaciones
     #y luego seleccionar Eliminar. Ajax.
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     
     p_item = PropiedadItem.por_id(item.id_propiedad_item)
     
     ids = []
     if kw:
         for k, pk in kw.items():
             if not k.isalnum():
                 continue
             ids.append(int(pk))
     
     p_item.eliminar_relaciones(ids)    
    
     usuario = Usuario.by_user_name(request.identity['repoze.who.userid'])
     item.guardar_historial(u"eliminar-relaciones", usuario)
     
     transaction.commit()   
     #return "/items/%d/edit" % id_item
     return './'
コード例 #60
0
ファイル: version.py プロジェクト: jorgeramirez/LPM
 def post_buscar(self, *args, **kw):
     """
     Controlador que recibe los parámetros de búsqueda para 
     devolver el resultado esperado.
     """
     titulo = self.title
     id_item = UrlParser.parse_id(request.url, "items")
     if id_item:
         item = Item.por_id(id_item)
         titulo = u"Versiones del Ítem: %s" % item.codigo
     tmpl_context.widget = self.table
     buscar_table_filler = VersionTableFiller(DBSession)
     buscar_table_filler.filtros = kw
     versiones = buscar_table_filler.get_value(id_item=id_item)
     return dict(lista_elementos=versiones,
                 page=self.title,
                 titulo=self.title,
                 modelo=self.model.__name__,
                 columnas=self.columnas,
                 url_action='../',
                 comboboxes=self.comboboxes,
                 opciones=self.opciones,
                 atras='../../')