Esempio n. 1
0
    def post(self, *args, **kw):
        """ Crea un nuevo rol plantilla o con contexto"""
        pp = None
        ctx = ""
        if kw["id_proyecto"]:
            ctx = "id_proyecto"
            pp = PoseePermiso('crear rol', id_proyecto=int(kw["id_proyecto"]))
        elif kw["id_fase"]:
            ctx = "id_fase"
            pp = PoseePermiso('crear rol', id_fase=int(kw["id_fase"]))
        elif kw["id_tipo_item"]:
            ctx = "id_tipo_item"
            pp = PoseePermiso('crear rol',
                              id_tipo_item=int(kw["id_tipo_item"]))
        else:
            pp = PoseePermiso('crear rol')

        if not pp.is_met(request.environ):
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect(self.action)

        #en caso de exito
        ok_url = u""
        #url que redirige al new y rellena los parametros que ya ingreso
        error_url = u"/rolesplantilla/new/"

        if ctx == "id_proyecto":
            ok_url = "/proyectos/%s/edit" % kw[ctx]
            error_url += "proyecto?{ctx}={val}".format(ctx=ctx, val=kw[ctx])
        elif ctx == "id_fase":
            ok_url = "/fases/%s/edit" % kw[ctx]
            error_url += "fase?{ctx}={val}".format(ctx=ctx, val=kw[ctx])
        elif ctx == "id_tipo_item":
            ok_url = "/tipositems/%s/edit" % kw[ctx]
            error_url += "ti?{ctx}={val}".format(ctx=ctx, val=kw[ctx])
        else:
            tipo = unicode(kw["tipo"].lower())
            ok_url = "/rolesplantilla/"
            if tipo.find(u"proyecto") >= 0:
                error_url += "proyecto?"
            elif tipo.find(u"fase") >= 0:
                error_url += "fase?"
            else:
                error_url += "ti?"

        #agregamos los parametros que ya ingreso el usuario.
        nombre = kw.get("nombre_rol", None).encode("utf-8")
        nombre_q = urllib.quote(nombre)
        desc = kw.get("descripcion", None).encode("utf-8")
        desc_q = urllib.quote(desc)
        params = "&nombre_rol=" + nombre_q + "&descripcion=" + desc_q
        error_url += params

        if not (kw.has_key("permisos") and kw["permisos"]):
            flash("Debe seleccionar al menos un permiso", 'warning')
            redirect(error_url)
        else:
            Rol.crear_rol(**kw)
            flash(u"El Rol se ha creado correctamente")
            redirect(ok_url)
Esempio n. 2
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions'
        contexto = ""
        perm_mod = PoseePermiso('modificar rol')
        perm_del = PoseePermiso('eliminar rol')
        url_cont = "/rolesplantilla/"
        tipo = obj.tipo.lower()
        if (tipo.find(u"proyecto") >= 0):
            contexto = "proyecto"
        elif (tipo.find(u"fase") >= 0):
            contexto = "fase"
        else:
            contexto = "ti"

        if perm_mod.is_met(request.environ):
            value += '<div>' + \
                        '<a href="' +  url_cont + str(obj.id_rol) + "/edit?contexto="+  \
                        contexto + '" class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

        if perm_del.is_met(request.environ):
            value += '<div><form method="POST" action="./' + str(obj.id_rol) + '" 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;" class="' + clase + '"/>'+\
                     '</form></div><br />'
        value += '</div>'
        return value
Esempio n. 3
0
    def put(self, *args, **kw):
        """actualiza un rol"""
        pp = None
        atras = "/roles/"
        msg = u"El Rol se ha actualizado con éxito"
        if kw["id_proyecto"]:
            pp = PoseePermiso('modificar rol',
                              id_proyecto=int(kw["id_proyecto"]))
        elif kw["id_fase"]:
            pp = PoseePermiso('modificar rol', id_fase=int(kw["id_fase"]))
        elif kw["id_tipo_item"]:
            pp = PoseePermiso('modificar rol',
                              id_tipo_item=int(kw["id_tipo_item"]))
        else:
            pp = PoseePermiso('modificar rol')
            atras = "/rolesplantilla/"
            msg = u"El de Plantilla se ha actualizado con éxito"

        if not pp.is_met(request.environ):
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect(atras)

        if not (kw.has_key("permisos") and kw["permisos"]):
            flash("Debe seleccionar al menos un permiso", 'warning')
            redirect("./edit?contexto=%s" % kw["contexto"])

        Rol.actualizar_rol(**kw)
        flash(msg)
        redirect(atras)
Esempio n. 4
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions'
        id = str(obj.id_atributos_por_tipo_item)
        id_tipo = UrlParser.parse_id(request.url, "tipositems")

        if PoseePermiso('redefinir tipo item',
                        id_tipo_item=obj.id_tipo_item).is_met(request.environ):
            value += '<div>' + \
                        '<a href="./' + id + '/edit" ' + \
                        'class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

        if obj.puede_eliminarse():
            if PoseePermiso('redefinir tipo item',
                            id_tipo_item=obj.id_tipo_item).is_met(
                                request.environ):
                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; margin-left:-3px;" class="' + clase + '"/>'+\
                         '</form></div><br />'
        value += '</div>'
        return value
Esempio n. 5
0
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """

        puede_crear = PoseePermiso("crear proyecto").is_met(request.environ)
        pp = PoseePermiso('consultar proyecto')
        if not pp.is_met(request.environ):
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect("/proyectos/")

        tmpl_context.widget = self.table
        buscar_table_filler = ProyectoTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        proyectos = buscar_table_filler.get_value()

        atras = '/proyectos/'

        return dict(lista_elementos=proyectos,
                    page=self.title,
                    titulo=self.title,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    url_action="/proyectos/",
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    opciones=self.opciones,
                    atras=atras)
Esempio n. 6
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions'

        perm_mod = PoseePermiso('modificar rol', id_tipo_item=obj.id_tipo_item)
        perm_del = PoseePermiso('eliminar rol', id_tipo_item=obj.id_tipo_item)

        url = "./"
        if UrlParser.parse_nombre(request.url, "post_buscar"):
            url = "../"

        if perm_mod.is_met(request.environ):
            value += '<div>' + \
                        '<a href="' + url + str(obj.id_rol) + "/edit"+  \
                        '" class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

        if perm_del.is_met(request.environ):
            value += '<div><form method="POST" action="' + url + str(obj.id_rol) + '" 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;" class="' + clase + '"/>'+\
                     '</form></div><br />'
        value += '</div>'
        return value
Esempio n. 7
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions'

        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        if id_proyecto:
            url_cont = "/proyectos/%d/" % id_proyecto
        else:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            url_cont = "/proyectos_fase/%d/" % id_proyecto

        id_fase = UrlParser.parse_id(request.url, "fases")
        url_cont += "fases/%d/rolesfase/"
        url_cont %= id_fase

        perm_mod = PoseePermiso('modificar rol', id_fase=id_fase)
        perm_del = PoseePermiso('eliminar rol', id_fase=id_fase)

        if perm_mod.is_met(request.environ):
            value += '<div>' + \
                        '<a href="' +  url_cont + str(obj.id_rol) + "/edit"+  \
                        '" class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

        if perm_del.is_met(request.environ):
            value += '<div><form method="POST" action="./' + str(obj.id_rol) + '" 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;" class="' + clase + '"/>'+\
                     '</form></div><br />'
        value += '</div>'
        return value
Esempio n. 8
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions_fase'
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        url_proy = "/proyectos/"
        if not id_proyecto:
            #desde el submenu fase.
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            url_proy = "/proyectos_fase/"

        url_cont = url_proy + "%d/fases/"
        url_cont %= id_proyecto

        if PoseePermiso('modificar fase',
                        id_fase=obj.id_fase).is_met(request.environ):
            value += '<div>' + \
                        '<a href="'+ url_cont + str(obj.id_fase) + '/edit" ' + \
                        'class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

            value += '<div>' + \
                        '<a href="'+ url_cont + str(obj.id_fase) + '/rolesfase" ' + \
                        'class="' + clase + '">Roles de Fase</a>' + \
                     '</div><br />'


            value += '<div>' + \
                        '<a href="'+ url_cont + str(obj.id_fase) + '/tipositems" ' + \
                        'class="' + clase + '">Tipos de Ítem</a>' + \
                     '</div><br />'


            value += '<div>' + \
                        '<a href="'+ url_cont + str(obj.id_fase) + '/miembrosfase" ' + \
                        'class="' + clase + '">Usuarios</a>' + \
                     '</div><br />'
            '''
            value += '<div>' + \
                        '<a href="'+ url_cont + str(obj.id_fase) + '/nomiembrosfase" ' + \
                        'class="' + clase + '">No miembros</a>' + \
                     '</div><br />'
            '''

        proy = Proyecto.por_id(obj.id_proyecto)
        if proy.estado != "Iniciado" and \
            PoseePermiso('eliminar fase',
                         id_fase=obj.id_fase).is_met(request.environ):

            value += '<div><form method="POST" action="' + str(obj.id_fase) + '" 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; margin-top: -3px;' + clase + '"/>'+\
                     '</form></div><br />'

        value += '</div>'
        return value
Esempio n. 9
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        value = '<div>'
        clase = 'actions'

        if PoseePermiso('modificar proyecto',
                        id_proyecto=obj.id_proyecto).is_met(request.environ):
            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/edit" ' + \
                        'class="' + clase + '">Modificar</a>' + \
                     '</div><br />'

            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/fases" ' + \
                        'class="' + clase + '">Fases</a>' + \
                     '</div><br />'

            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/tipositems" ' + \
                        'class="' + clase + '">Tipos de Ítem</a>' + \
                     '</div><br />'

            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/rolesproyecto" ' + \
                        'class="' + clase + '">Roles de Proyecto</a>' + \
                     '</div><br />'

            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/miembros" ' + \
                        'class="' + clase + '">Usuarios</a>' + \
                     '</div><br />'
            '''
            value += '<div>' + \
                        '<a href="/proyectos/'+ str(obj.id_proyecto) + '/nomiembros" ' + \
                        'class="' + clase + '">No miembros</a>' + \
                     '</div><br />'
            '''

        if obj.estado == u"No Iniciado":
            if (PoseePermiso('iniciar proyecto',
                        id_proyecto=obj.id_proyecto).is_met(request.environ) and\
                        obj.numero_fases > 0):
                value += '<div>' + \
                            '<a href="/proyectos/iniciar/' + str(obj.id_proyecto) + '" ' +\
                            'class="' + clase + '">Iniciar</a>' + \
                         '</div><br />'

        if PoseePermiso('eliminar proyecto',
                        id_proyecto=obj.id_proyecto).is_met(request.environ):
            url = "/proyectos/post_delete/%d" % obj.id_proyecto
            value += '<div><form method="POST" action="' + url + '" class="button-to">'+\
                     '<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;" class="' + clase + '"/>'+\
                     '</form></div><br />'

        value += '</div>'
        return value
Esempio n. 10
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        puede_crear = PoseePermiso("crear proyecto").is_met(request.environ)
        if pylons.request.response_type == 'application/json':
            return dict(lista=self.table_filler.get_value(**kw))
        if not getattr(self.table.__class__, ' ', False):
            proyectos = self.table_filler.get_value(**kw)
        else:
            proyectos = []

        tmpl_context.widget = self.table
        atras = '/'
        return dict(lista_elementos=proyectos,
                    page=self.title,
                    titulo=self.title,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action="/proyectos/",
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    atras=atras)
Esempio n. 11
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
Esempio n. 12
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """

        id_tipo_item = UrlParser.parse_id(request.url, "tipositems")
        tipo = TipoItem.por_id(id_tipo_item)
        titulo = "Lista de Usuarios"

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

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

        tmpl_context.widget = self.table
        atras = "../"
        return dict(lista_elementos=nomiembros,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.action,
                    atras=atras,
                    puede_incorporar=puede_incorporar)
Esempio n. 13
0
    def post_buscar(self, *args, **kw):
        id_fase = UrlParser.parse_id(request.url, "fases")
        id_usuario = UrlParser.parse_id(request.url, "miembrosfase")
        usuario = Usuario.por_id(id_usuario)

        fase = Fase.por_id(id_fase)
        puede_desasignar = PoseePermiso("asignar-desasignar rol",
                                        id_fase=id_fase).is_met(
                                            request.environ)

        titulo = "Roles de: %s" % usuario.nombre_usuario
        tmpl_context.widget = self.table
        buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        usuarios = buscar_table_filler.get_value(usuario=usuario,
                                                 id_fase=id_fase,
                                                 **kw)

        atras = "../../"
        return dict(lista_elementos=usuarios,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    comboboxes=self.comboboxes,
                    url_action="../",
                    atras=atras,
                    puede_desasignar=puede_desasignar)
Esempio n. 14
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        clase = 'actions'
        value = "<div>"
        url_cont = "/proyectos/%d/" % id_proyecto
        value += '<div>' + \
                    '<a href="' + url_cont + "miembros/" + str(obj.id_usuario) + '" ' + \
                    'class="' + clase + '">Ver</a>' + \
                 '</div><br />'

        if PoseePermiso("asignar-desasignar rol",
                        id_proyecto=id_proyecto).is_met(request.environ):
            value += '<div>' + \
                        '<a href="'+ url_cont + "miembros/" + str(obj.id_usuario) + \
                        "/rolesasignados/" '" ' + \
                        'class="' + clase + '">Roles Asig.</a>' + \
                     '</div><br />'
            value += '<div>' + \
                        '<a href="'+ url_cont + "miembros/" + str(obj.id_usuario) + \
                        "/rolesdesasignados/" '" ' + \
                        'class="' + clase + '">Roles Desasig.</a>' + \
                     '</div><br />'
        value += '</div>'

        return value
Esempio n. 15
0
    def post_buscar(self, *args, **kw):
        """
        Controlador que recibe los parámetros de búsqueda para 
        devolver el resultado esperado.
        """
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        #action = self.tmp_action % id_proyecto
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            #action = self.tmp_action_fase % id_proyecto

        puede_crear = PoseePermiso(
            "crear fase", id_proyecto=id_proyecto).is_met(request.environ)

        proy = Proyecto.por_id(id_proyecto)
        if proy.estado == "Iniciado":
            puede_crear = False

        titulo = self.title % proy.nombre
        tmpl_context.widget = self.table
        buscar_table_filler = FaseTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        fases = buscar_table_filler.get_value(id_proyecto=id_proyecto)
        atras = '../'

        return dict(lista_elementos=fases,
                    page=titulo,
                    titulo=titulo,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    url_action="../",
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    opciones=self.opciones,
                    atras=atras)
Esempio n. 16
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)
Esempio n. 17
0
    def post_buscar(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """

        id_tipo_item = UrlParser.parse_id(request.url, "tipositems")
        puede_crear = PoseePermiso('redefinir tipo item',
                                   id_tipo_item=id_tipo_item).is_met(
                                       request.environ)
        tipo = TipoItem.por_id(id_tipo_item)
        titulo = self.title % tipo.nombre
        filler = AtributosPorTipoItemTableFiller(DBSession)
        filler.filtros = kw
        atributos = filler.get_value(id_tipo_item=id_tipo_item, **kw)
        tmpl_context.widget = self.table
        url_action = self.action
        atras = "../"

        return dict(lista_elementos=atributos,
                    page=titulo,
                    titulo=titulo,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    comboboxes=self.comboboxes,
                    url_action="../",
                    puede_crear=puede_crear,
                    atras=atras)
Esempio n. 18
0
 def post_buscar(self, *args, **kw):
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_fase = UrlParser.parse_id(request.url, "fases")
     atras = "../"
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         if not id_proyecto:
             id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
             id_fase = UrlParser.parse_id(request.url, "fases_ti")
         atras = "../../../"
     
     proy = Proyecto.por_id(id_proyecto)
     puede_crear = puede_crear = PoseePermiso("crear tipo item",
                                              id_fase=id_fase).is_met(request.environ)
     if proy.estado != "Iniciado":
         puede_crear = False
     fase = Fase.por_id(id_fase)
     titulo = self.title % fase.nombre
     tmpl_context.widget = self.table
     buscar_table_filler = self.table_filler.__class__(DBSession)
     buscar_table_filler.filtros = kw
     tipos_items = buscar_table_filler.get_value(id_fase=id_fase)
     
     return  dict(lista_elementos=tipos_items, 
                  page=titulo, 
                  titulo=titulo,
                  modelo=self.model.__name__, 
                  columnas=self.columnas,
                  opciones=self.opciones, 
                  url_action="../",
                  puede_crear=puede_crear,
                  atras=atras
                  )
Esempio n. 19
0
 def get_one(self, *args, **kw):
     id_tipo = int(args[0])
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_fase = UrlParser.parse_id(request.url, "fases")
     if not id_proyecto:
         id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
         if not id_proyecto:
             id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti")
             id_fase = UrlParser.parse_id(request.url, "fases_ti")
     
     proy = Proyecto.por_id(id_proyecto)
     puede_crear = puede_crear = PoseePermiso("crear tipo item",
                                              id_fase=id_fase).is_met(request.environ)
     if proy.estado != "Iniciado":
         puede_crear = False
         
     ti = self.table_filler.get_value(id_tipo=id_tipo, **kw)
         
     tmpl_context.widget = self.table
     fase = Fase.por_id(id_fase)
     titulo = self.title % fase.nombre
     atras = '../'
     return dict(lista_elementos=ti, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.action,
                 puede_crear=puede_crear,
                 atras=atras
                 )
Esempio n. 20
0
    def post(self, *args, **kw):
        """ Crea un nuevo rol plantilla o con contexto"""
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        url_action = self.action % id_proyecto
        pp = PoseePermiso('crear rol', id_proyecto=id_proyecto)
        kw["id_proyecto"] = id_proyecto
        if not pp.is_met(request.environ):
            flash(pp.message % pp.nombre_permiso, 'warning')
            redirect(url_action)

        #url que redirige al new y rellena los parametros que ya ingreso
        error_url = url_action + "new"

        #agregamos los parametros que ya ingreso el usuario.
        nombre = kw.get("nombre_rol", None).encode("utf-8")
        nombre_q = urllib.quote(nombre)
        desc = kw.get("descripcion", None).encode("utf-8")
        desc_q = urllib.quote(desc)
        params = "?nombre_rol=" + nombre_q + "&descripcion=" + desc_q
        error_url += params

        if not (kw.has_key("permisos") and kw["permisos"]):
            flash("Debe seleccionar al menos un permiso", 'warning')
            redirect(error_url)
        else:
            Rol.crear_rol(**kw)
            flash(u"El Rol se ha creado correctamente")
            redirect(url_action)
Esempio n. 21
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        if id_proyecto:
            url_cont = "/proyectos/%d/" % id_proyecto
        else:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            url_cont = "/proyectos_fase/%d/" % id_proyecto

        id_fase = UrlParser.parse_id(request.url, "fases")
        url_cont += "fases/%d/"
        url_cont %= id_fase
        id = str(obj.id_usuario)
        clase = 'actions'
        value = "<div>"
        value += '<div>' + \
                    '<a href="' + url_cont + "nomiembrosfase/" + id + '" ' + \
                    'class="' + clase + '">Ver</a>' + \
                 '</div><br />'

        if PoseePermiso("asignar-desasignar rol",
                        id_fase=id_fase).is_met(request.environ):
            value += '<div>' + \
                        '<a href="'+ url_cont + "nomiembrosfase/" + id + \
                        '/rolesdesasignados/" ' + \
                        'class="' + clase + '">Asignar Rol</a>' + \
                     '</div><br />'

        value += '</div>'

        return value
Esempio n. 22
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
Esempio n. 23
0
 def post_buscar(self, *args, **kw):
     id_proyecto = UrlParser.parse_id(request.url, "proyectos")
     id_usuario = UrlParser.parse_id(request.url, "miembros")
     usuario = Usuario.por_id(id_usuario)
     proy = Proyecto.por_id(id_proyecto)
     puede_asignar = PoseePermiso("asignar-desasignar rol",
                                  id_proyecto=id_proyecto).is_met(
                                      request.environ)
     titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario
     tmpl_context.widget = self.table
     buscar_table_filler = MiembrosProyectoRolesTableFiller(DBSession)
     buscar_table_filler.filtros = kw
     roles = buscar_table_filler.get_value(usuario=usuario,
                                           asignados=False,
                                           id_proyecto=id_proyecto,
                                           **kw)
     atras = "/proyectos/%d/miembros/" % id_proyecto
     return dict(lista_elementos=roles,
                 page=titulo,
                 titulo=titulo,
                 columnas=self.columnas,
                 opciones=self.opciones,
                 comboboxes=self.comboboxes,
                 url_action="../",
                 atras=atras,
                 puede_asignar=puede_asignar)
Esempio n. 24
0
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     puede_crear = False
     id_fase = UrlParser.parse_id(request.url, "fases")
     puede_crear = PoseePermiso("crear lb", id_fase=id_fase).is_met(request.environ)
     fase = Fase.por_id(id_fase)
     if puede_crear:
         puede_crear = fase.puede_crear_lb()
     titulo = u"Líneas Base de Fase: %s" % fase.nombre
     lbs = self.table_filler.get_value(id_fase=id_fase, **kw)
     tmpl_context.widget = self.table
     atras = "../../"
     return dict(lista_elementos=lbs, 
                 page=titulo,
                 titulo=titulo, 
                 modelo=self.model.__name__, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.tmp_action,
                 puede_crear=puede_crear,
                 comboboxes=self.comboboxes,
                 atras=atras
                 )
Esempio n. 25
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """

        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        proy = Proyecto.por_id(id_proyecto)
        #titulo = "Miembros del Proyecto: %s" % proy.nombre
        titulo = "Lista de Usuarios"
        puede_remover = PoseePermiso("asignar-desasignar rol",
                                     id_proyecto=id_proyecto).is_met(
                                         request.environ)

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

        tmpl_context.widget = self.table
        atras = "/proyectos/%d/" % id_proyecto
        return dict(lista_elementos=miembros,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.action,
                    atras=atras,
                    puede_remover=puede_remover)
Esempio n. 26
0
    def post_buscar(self, *args, **kw):
        id_tipo_item = UrlParser.parse_id(request.url, "tipositems")
        tipo = TipoItem.por_id(id_tipo_item)

        #titulo = u"Miembros del Tipo de Ítem: %s" % tipo.nombre
        titulo = "Lista de Usuarios"
        puede_remover = PoseePermiso("asignar-desasignar rol",
                                     id_tipo_item=id_tipo_item).is_met(
                                         request.environ)
        tmpl_context.widget = miembros_tipo_table
        buscar_table_filler = MiembrosTipoTableFiller(DBSession)
        buscar_table_filler.filtros = kw
        usuarios = buscar_table_filler.get_value(id_tipo_item=id_tipo_item,
                                                 **kw)

        #atras = "/proyectos/%d/" % id_proyecto
        atras = "../"
        return dict(lista_elementos=usuarios,
                    page=titulo,
                    titulo=titulo,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action="../",
                    atras=atras,
                    puede_remover=puede_remover)
Esempio n. 27
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        id_proyecto = UrlParser.parse_id(request.url, "proyectos")
        atras = "../"
        if not id_proyecto:
            id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase")
            atras = "../../"

        puede_crear = PoseePermiso(
            "crear fase", id_proyecto=id_proyecto).is_met(request.environ)
        proy = Proyecto.por_id(id_proyecto)
        if proy.estado == "Iniciado":
            puede_crear = False

        titulo = self.title % proy.nombre
        fases = self.table_filler.get_value(id_proyecto=id_proyecto, **kw)
        tmpl_context.widget = self.table

        return dict(lista_elementos=fases,
                    page=titulo,
                    titulo=titulo,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=self.tmp_action,
                    puede_crear=puede_crear,
                    comboboxes=self.comboboxes,
                    atras=atras)
Esempio n. 28
0
    def __actions__(self, obj):
        """Links de acciones para un registro dado"""
        clase = 'actions'
        value = "<div>"
        url = "./"
        if UrlParser.parse_nombre(request.url, "post_buscar"):
            url = "../"

        value += '<div>' + \
                    '<a href="' + url + str(obj.id_usuario) + '/" ' + \
                    'class="' + clase + '">Ver</a>' + \
                 '</div><br />'

        id_tipo_item = UrlParser.parse_id(request.url, "tipositems")
        if PoseePermiso("asignar-desasignar rol",
                        id_tipo_item=id_tipo_item).is_met(request.environ):
            value += '<div>' + \
                        '<a href="./'+ str(obj.id_usuario) + \
                        "/rolesasignados/" '" ' + \
                        'class="' + clase + '">Roles Asig.</a>' + \
                     '</div><br />'
            value += '<div>' + \
                        '<a href="./' + str(obj.id_usuario) + \
                        "/rolesdesasignados/" '" ' + \
                        'class="' + clase + '">Roles Desasig.</a>' + \
                     '</div><br />'
        value += '</div>'

        return value
Esempio n. 29
0
 def get_all(self, *args, **kw):
     """ 
     Retorna todos los registros
     Retorna una página HTML si no se especifica JSON
     """
     id_usuario = UrlParser.parse_id(request.url, "usuarios")
     usuario = Usuario.por_id(id_usuario)
     puede_asignar = PoseePermiso("asignar-desasignar rol") \
                                     .is_met(request.environ)
     
     titulo = "Roles Desasignados de Sistema para: %s" % usuario.nombre_usuario
                                     
     if request.response_type == 'application/json':
         return self.table_filler.get_value(usuario=usuario, 
                                             asignados=False,
                                             **kw)
     if not getattr(self.table.__class__, '__retrieves_own_value__', False):
         roles = self.table_filler.get_value(usuario=usuario, 
                                             asignados=False,
                                             **kw)
     else:
         roles = []
         
     tmpl_context.widget = self.table
     atras = "/usuarios/"
     return dict(lista_elementos=roles, 
                 page=titulo, 
                 titulo=titulo, 
                 columnas=self.columnas,
                 opciones=self.opciones,
                 url_action=self.action, 
                 atras=atras,
                 puede_asignar=puede_asignar)
Esempio n. 30
0
    def get_all(self, *args, **kw):
        """ 
        Retorna todos los registros
        Retorna una página HTML si no se especifica JSON
        """
        id_tipo_item = UrlParser.parse_id(request.url, "tipositems")
        puede_crear = PoseePermiso(
            "crear rol", id_tipo_item=id_tipo_item).is_met(request.environ)

        if request.response_type == 'application/json':
            return self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw)
        if not getattr(self.table.__class__, '__retrieves_own_value__', False):
            roles = self.table_filler.get_value(id_tipo_item=id_tipo_item,
                                                **kw)
        else:
            roles = []
        tmpl_context.widget = self.table
        atras = "../"
        url_action = self.tmp_action
        return dict(lista_elementos=roles,
                    page=self.title,
                    titulo=self.title,
                    modelo=self.model.__name__,
                    columnas=self.columnas,
                    opciones=self.opciones,
                    url_action=url_action,
                    puede_crear=puede_crear,
                    atras=atras)