Пример #1
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_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
Пример #2
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_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
Пример #3
0
    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
                    )
Пример #4
0
 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
Пример #5
0
 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
Пример #6
0
    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
Пример #7
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)
Пример #8
0
    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
Пример #9
0
    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 './'
Пример #10
0
    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
Пример #11
0
    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
Пример #12
0
 def post_buscar(self, *args, **kw):
     """
     Controlador que recibe los parámetros de búsqueda para 
     devolver el resultado esperado.
     """
     titulo = self.title
     id_p_item = UrlParser.parse_id(request.url, "versiones")
     
     if id_p_item:
        p_item = PropiedadItem.por_id(id_p_item)
        titulo = u"Cambios en versión: %d" % p_item.version
     tmpl_context.widget = self.table
     
     buscar_table_filler = HistorialItemTableFiller(DBSession)
     buscar_table_filler.filtros = kw
     items = buscar_table_filler.get_value(id_usuario=id_usuario, **kw)
     
     return dict(lista_elementos=items, 
                 page=titulo,
                 titulo=self.title, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 atras="../../../"
                 )
Пример #13
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
                    )
Пример #14
0
 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 './'
Пример #15
0
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """
        titulo = self.title
        id_p_item = UrlParser.parse_id(request.url, "versiones")

        if id_p_item:
            p_item = PropiedadItem.por_id(id_p_item)
            titulo = u"Cambios en versión: %d" % p_item.version
        tmpl_context.widget = self.table

        buscar_table_filler = HistorialItemTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        items = buscar_table_filler.get_value(id_usuario=id_usuario, **kw)

        return dict(lista_elementos=items,
                    page=titulo,
                    titulo=self.title,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.tmp_action,
                    atras="../../../")
Пример #16
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_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
                    )
Пример #17
0
 def item_relacionado_estado(self, obj, **kw):
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = UrlParser.parse_id(request.url, "versiones")
     if not id_item:
         id_item = id_version
     otro = obj.obtener_otro_item(id_item)
     p_otro = PropiedadItem.por_id(otro.id_propiedad_item)
     return p_otro.estado
Пример #18
0
 def item_relacionado_estado(self, obj, **kw):
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = UrlParser.parse_id(request.url, "versiones")
     if not id_item:
         id_item = id_version        
     otro = obj.obtener_otro_item(id_item)
     p_otro = PropiedadItem.por_id(otro.id_propiedad_item)
     return p_otro.estado
Пример #19
0
    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
Пример #20
0
    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
Пример #21
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)
Пример #22
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
                 )
Пример #23
0
    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
Пример #24
0
 def _do_get_provider_count_and_objs(self, id_version=None, **kw):
     """
     Recupera los archivos adjuntos de la versión de ítem en cuestión.
     """
     count, lista = super(AdjuntoTableFiller, self).\
                         _do_get_provider_count_and_objs(**kw)
     filtrados = []                    
     if id_version:
         p_item = PropiedadItem.por_id(id_version)
         #p_item.archivos contiene una lista de objetos ArchivosPorItem
         for api in p_item.archivos:
             if api.archivo in lista:
                 filtrados.append(api.archivo)
     return len(filtrados), filtrados
Пример #25
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
Пример #26
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
Пример #27
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')
Пример #28
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="../")
Пример #29
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')
Пример #30
0
    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
Пример #31
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        titulo = self.title
        id_p_item = UrlParser.parse_id(request.url, "versiones")

        if id_p_item:
            p_item = PropiedadItem.por_id(id_p_item)
            titulo = u"Cambios en versión: %d" % p_item.version
        tmpl_context.widget = self.table
        items = self.table_filler.get_value(id_p_item=id_p_item, **kw)
        return dict(lista_elementos=items,
                    page=titulo,
                    titulo=self.title,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.tmp_action,
                    atras="../../")
Пример #32
0
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     titulo = self.title
     id_p_item = UrlParser.parse_id(request.url, "versiones")
     
     if id_p_item:
        p_item = PropiedadItem.por_id(id_p_item)
        titulo = u"Cambios en versión: %d" % p_item.version
     tmpl_context.widget = self.table
     items = self.table_filler.get_value(id_p_item=id_p_item, **kw)
     return dict(lista_elementos=items, 
                 page=titulo,
                 titulo=self.title, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 atras="../../"
                 )
Пример #33
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="../"
                    )
Пример #34
0
 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 './'
Пример #35
0
    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 './'
Пример #36
0
 def observaciones(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.observaciones
Пример #37
0
    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
Пример #38
0
 def version_actual(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.version
Пример #39
0
 def observaciones(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.observaciones
Пример #40
0
 def prioridad(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.prioridad
Пример #41
0
 def complejidad(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.complejidad
Пример #42
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        value = '<div>'
        clase = 'actions_items'
        
        controller = "./" + str(obj.id_item)
        controller2 = "./"
        eliminar_cont = "./" + str(obj.id_item) 
        if (UrlParser.parse_id(request.url, "items") or\
            UrlParser.parse_nombre(request.url, "post_buscar")):#desde get_one o post_buscar
            controller = "../" + str(obj.id_item)
            controller2 = "../"
            eliminar_cont = "../" + str(obj.id_item) 

        p_item = PropiedadItem.por_id(obj.id_propiedad_item) #version actual.    
        
        if PoseePermiso('modificar item', 
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if p_item.estado not in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"]:
                value += '<div>' + \
                            '<a href="'+ controller +'/edit" ' + \
                            'class="' + clase + '">Modificar</a>' + \
                         '</div><br />'
                         
            #atributos es el controlador de atributos (por el tipo) del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/atributos" ' + \
                        'class="' + clase + '">Atributos</a>' + \
                     '</div><br />'
            
            #relaciones a-s del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/relaciones_as" ' + \
                        'class="' + clase + '">Relaciones A-S</a>' + \
                     '</div><br />'
                    
            #relaciones p-h del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/relaciones_ph" ' + \
                        'class="' + clase + '">Relaciones P-H</a>' + \
                     '</div><br />'
                     
            #adjuntos es el controlador de archivos adjuntos al item.
            value += '<div>' + \
                        '<a href="'+ controller +'/adjuntos" ' + \
                        'class="' + clase + '">Adjuntos</a>' + \
                     '</div><br />'         
            
            #versiones es el controlador de versiones del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/versiones" ' + \
                        'class="' + clase + '">Versiones</a>' + \
                     '</div><br />'
        
        eliminar = False
        revivir = False
        aprobar = False
        desaprobar = False
        st = p_item.estado
        if st == u"Desaprobado" or st == u"Revisión-Desbloq":
            eliminar = True
            aprobar = True
        elif st == u"Aprobado":
            eliminar = True
            desaprobar = True
        elif st == u"Eliminado":
            revivir = True
        
        #if PoseePermiso('eliminar-revivir item', 
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('eliminar-revivir item', 
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if revivir:
                value += '<div>' + \
                            '<a href="' + controller2 + '/revivir/' +str(obj.id_item) +'" ' + \
                            'class="' + clase + '">Revivir</a>' + \
                         '</div><br />'
        
        
        #if PoseePermiso('eliminar-revivir item',
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('eliminar-revivir item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if eliminar:
                value += '<div><form method="POST" action="' + eliminar_cont + '" 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; margin-left: -3px;' + clase + '"/>'+\
                         '</form></div><br />'

     
            
        #if PoseePermiso('aprobar-desaprobar item', 
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('aprobar-desaprobar item', 
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if aprobar:
                value += '<div>' + \
                            '<a href="' + controller2 + 'aprobar/' +str(obj.id_item) +'" ' + \
                            'style="margin-left: -46px;" class="' + clase + '">Aprobar</a>' + \
                         '</div><br />'
            elif desaprobar:
                value += '<div>' + \
                            '<a href="' + controller2 + 'desaprobar/' +str(obj.id_item) +'" ' + \
                            'class="' + clase + '">Desaprobar</a>' + \
                         '</div><br />'
                         
        #if PoseePermiso('calcular impacto', 
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('calcular impacto', 
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
                value += '<div>' + \
                            '<a href="' + controller2 + 'calcular_impacto/' + str(obj.id_item) +'" ' + \
                            'class="' + clase + '">Calcular Impacto</a>' + \
                         '</div><br />'
        
        value += '</div>'
        return value
Пример #43
0
 def estado(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.estado
Пример #44
0
 def version_actual(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.version
Пример #45
0
 def descripcion(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.descripcion
Пример #46
0
 def prioridad(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.prioridad
Пример #47
0
 def estado(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.estado
Пример #48
0
 def descripcion(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.descripcion
Пример #49
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""

        value = '<div>'
        clase = 'actions_items'

        controller = "./" + str(obj.id_item)
        controller2 = "./"
        eliminar_cont = "./" + str(obj.id_item)
        if (UrlParser.parse_id(request.url, "items") or\
            UrlParser.parse_nombre(request.url, "post_buscar")):#desde get_one o post_buscar
            controller = "../" + str(obj.id_item)
            controller2 = "../"
            eliminar_cont = "../" + str(obj.id_item)

        p_item = PropiedadItem.por_id(obj.id_propiedad_item)  #version actual.

        if PoseePermiso('modificar item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if p_item.estado not in [
                    u"Bloqueado", u"Revisión-Bloq", u"Eliminado"
            ]:
                value += '<div>' + \
                            '<a href="'+ controller +'/edit" ' + \
                            'class="' + clase + '">Modificar</a>' + \
                         '</div><br />'

            #atributos es el controlador de atributos (por el tipo) del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/atributos" ' + \
                        'class="' + clase + '">Atributos</a>' + \
                     '</div><br />'

            #relaciones a-s del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/relaciones_as" ' + \
                        'class="' + clase + '">Relaciones A-S</a>' + \
                     '</div><br />'

            #relaciones p-h del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/relaciones_ph" ' + \
                        'class="' + clase + '">Relaciones P-H</a>' + \
                     '</div><br />'

            #adjuntos es el controlador de archivos adjuntos al item.
            value += '<div>' + \
                        '<a href="'+ controller +'/adjuntos" ' + \
                        'class="' + clase + '">Adjuntos</a>' + \
                     '</div><br />'

            #versiones es el controlador de versiones del item.
            value += '<div>' + \
                        '<a href="'+ controller +'/versiones" ' + \
                        'class="' + clase + '">Versiones</a>' + \
                     '</div><br />'

        eliminar = False
        revivir = False
        aprobar = False
        desaprobar = False
        st = p_item.estado
        if st == u"Desaprobado" or st == u"Revisión-Desbloq":
            eliminar = True
            aprobar = True
        elif st == u"Aprobado":
            eliminar = True
            desaprobar = True
        elif st == u"Eliminado":
            revivir = True

        #if PoseePermiso('eliminar-revivir item',
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('eliminar-revivir item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if revivir:
                value += '<div>' + \
                            '<a href="' + controller2 + '/revivir/' +str(obj.id_item) +'" ' + \
                            'class="' + clase + '">Revivir</a>' + \
                         '</div><br />'

        #if PoseePermiso('eliminar-revivir item',
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('eliminar-revivir item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if eliminar:
                value += '<div><form method="POST" action="' + eliminar_cont + '" 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; margin-left: -3px;' + clase + '"/>'+\
                         '</form></div><br />'

        #if PoseePermiso('aprobar-desaprobar item',
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('aprobar-desaprobar item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            if aprobar:
                value += '<div>' + \
                            '<a href="' + controller2 + 'aprobar/' +str(obj.id_item) +'" ' + \
                            'style="margin-left: -46px;" class="' + clase + '">Aprobar</a>' + \
                         '</div><br />'
            elif desaprobar:
                value += '<div>' + \
                            '<a href="' + controller2 + 'desaprobar/' +str(obj.id_item) +'" ' + \
                            'class="' + clase + '">Desaprobar</a>' + \
                         '</div><br />'

        #if PoseePermiso('calcular impacto',
        #                id_fase=obj.id_fase).is_met(request.environ):
        if PoseePermiso('calcular impacto',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            value += '<div>' + \
                        '<a href="' + controller2 + 'calcular_impacto/' + str(obj.id_item) +'" ' + \
                        'class="' + clase + '">Calcular Impacto</a>' + \
                     '</div><br />'

        value += '</div>'
        return value
Пример #50
0
 def complejidad(self, obj, **kw):
     p_item = PropiedadItem.por_id(obj.id_propiedad_item)
     return p_item.complejidad