Ejemplo n.º 1
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 './'
Ejemplo n.º 2
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials["repoze.what.userid"]
        usuario = Usuario.by_user_name(nombre_usuario)

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

        for r in usuario.roles:
            for p in r.permisos:
                if p.nombre_permiso.find(u"miembro") >= 0:
                    if self.id_proyecto:
                        if r.tipo == "Proyecto" and \
                           r.id_proyecto == self.id_proyecto:
                            return
                    elif self.id_fase:
                        if r.tipo == "Fase" and \
                           r.id_fase == self.id_fase:
                            return
                    else:
                        if r.tipo.find("Tipo") >= 0:
                            ti = TipoItem.por_id(self.id_tipo_item)
                            if ti and ti.es_o_es_hijo(r.id_tipo_item):
                                return
                        #if (r.tipo.find("Tipo") >= 0 and \
                        #    self.id_tipo_item.es_o_es_hijo(r.id_tipo_item)):
                        #    r.id_tipo_item == self.id_tipo_item:
                        #    return
        self.unmet(self.message)
Ejemplo n.º 3
0
 def evaluate(self, environ, credentials):
     if is_anonymous().is_met(environ): 
         self.unmet()
     nombre_usuario = credentials["repoze.what.userid"]
     usuario = Usuario.by_user_name(nombre_usuario)
     
     if self.id_usuario:
         usuario = Usuario.por_id(self.id_usuario)
     
     for r in usuario.roles:
         for p in r.permisos:
             if p.nombre_permiso.find(u"miembro") >= 0:
                 if self.id_proyecto:
                     if r.tipo == "Proyecto" and \
                        r.id_proyecto == self.id_proyecto:
                         return
                 elif self.id_fase:
                     if r.tipo == "Fase" and \
                        r.id_fase == self.id_fase:
                         return
                 else:
                     if r.tipo.find("Tipo") >= 0:
                         ti = TipoItem.por_id(self.id_tipo_item)
                         if ti and ti.es_o_es_hijo(r.id_tipo_item):
                             return
                     #if (r.tipo.find("Tipo") >= 0 and \
                     #    self.id_tipo_item.es_o_es_hijo(r.id_tipo_item)):
                     #    r.id_tipo_item == self.id_tipo_item:
                     #    return
     self.unmet(self.message)
Ejemplo n.º 4
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 './'
Ejemplo n.º 5
0
    def put(self, *args, **kw):
        if "sprox_id" in kw:
            del kw["sprox_id"]
        if "repita_nuevo_password" in kw:
            del kw["repita_nuevo_password"]
        if kw["nro_documento"]:
            kw["nro_documento"] = int(kw["nro_documento"])

        username = request.identity['repoze.who.userid']
        usuario = Usuario.by_user_name(username)
        id_usuario = UrlParser.parse_id(request.url, "usuarios")
        
        if (usuario.id_usuario != id_usuario):        
            pp = PoseePermiso('modificar usuario')
            if not pp.is_met(request.environ):
                flash(pp.message % pp.nombre_permiso, 'warning')
                redirect(self.action)

        usuario = Usuario.por_id(args[0])
        usuario.nombre = kw["nombre"]
        usuario.apellido = kw["apellido"]
        usuario.email = kw["email"]
        usuario.telefono = kw["telefono"]
        usuario.nro_documento = kw["nro_documento"]
        if kw["nuevo_password"] != None and kw.has_key('cambiar_pass'):
            usuario.password = kw["nuevo_password"]

        redirect("../") 
Ejemplo n.º 6
0
    def perfil(self, *args, **kw):
        """ Despliega una pagina para modificar el perfil del usuario que 
        inició sesión """
        user = request.identity['repoze.who.userid']
        usuario = Usuario.by_user_name(user)

        url = "/usuarios/%d/edit" % usuario.id_usuario
        redirect(url)
Ejemplo n.º 7
0
 def post_delete(self, id_item):
     """Elimina un item"""
     item = Item.por_id(int(id_item))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar(user)
         flash(u"Ítem Eliminado")
     except EliminarItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 8
0
 def post(self, archivo=None, **kw):
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     contenido = archivo.value #archivo.file.read()
     try:
         item.adjuntar_archivo(archivo.filename, contenido, user)
     except AdjuntarArchivoError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 9
0
 def post_delete(self, id_item):
     """Elimina un item"""
     item = Item.por_id(int(id_item))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar(user)
         flash(u"Ítem Eliminado")
     except EliminarItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 10
0
 def post_delete(self, id_archivo):
     """Elimina un archivo externo"""
     
     id_item = UrlParser.parse_id(request.url, "items")
     item = Item.por_id(id_item)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.eliminar_archivo_adjunto(int(id_archivo), user)
     except EliminarArchivoAdjuntoError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 11
0
 def revivir(self, *args, **kw):
     """
     Revive un ítem que se encuentra en estado eliminado.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.revivir(user)
         flash(u"Ítem Revivido")
     except RevivirItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 12
0
 def aprobar(self, *args, **kw):
     """
     Aprueba un ítem.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.aprobar(user)
         flash(u"Ítem Aprobado")
     except CondicionAprobarError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 13
0
 def _do_get_provider_count_and_objs(self, **kw):
     """
     Se muestra la lista de usuario si se tiene un permiso 
     necesario. Caso contrario se muestra solo su usuario
     """
     if AlgunPermiso(tipo="Usuario").is_met(request.environ):
         return super(UsuarioTableFiller,
                      self)._do_get_provider_count_and_objs(**kw)
     username = request.credentials['repoze.what.userid']
     user = Usuario.by_user_name(username)
     return 1, [user]
Ejemplo n.º 14
0
 def post(self, *args, **kw):
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     id_tipo = int(kw["id_tipo_item"])
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     del kw["id_tipo_item"]
     if id_fase:
         fase = Fase.por_id(id_fase)
         fase.crear_item(id_tipo, user, **kw)
     redirect("./")
Ejemplo n.º 15
0
 def revivir(self, *args, **kw):
     """
     Revive un ítem que se encuentra en estado eliminado.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.revivir(user)
         flash(u"Ítem Revivido")
     except RevivirItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 16
0
 def desaprobar(self, *args, **kw):
     """
     Desaprueba un ítem.
     """
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item = Item.por_id(int(args[0]))
     try:
         item.desaprobar(user)
         flash(u"Ítem Desaprobado")
     except DesAprobarItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 17
0
 def aprobar(self, *args, **kw):
     """
     Aprueba un ítem.
     """
     item = Item.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     try:
         item.aprobar(user)
         flash(u"Ítem Aprobado")
     except CondicionAprobarError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 18
0
 def desaprobar(self, *args, **kw):
     """
     Desaprueba un ítem.
     """
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item = Item.por_id(int(args[0]))
     try:
         item.desaprobar(user)
         flash(u"Ítem Desaprobado")
     except DesAprobarItemError, err:
         flash(unicode(err), 'warning')
Ejemplo n.º 19
0
 def post(self, *args, **kw):
     if "sprox_id" in kw:
         del kw["sprox_id"]
     id_fase = UrlParser.parse_id(request.url, "fases_desarrollo")
     id_tipo = int(kw["id_tipo_item"])
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     del kw["id_tipo_item"]
     if id_fase:
         fase = Fase.por_id(id_fase)
         fase.crear_item(id_tipo, user, **kw)
     redirect("./")
Ejemplo n.º 20
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
Ejemplo n.º 21
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials['repoze.what.userid']
        usuario = Usuario.by_user_name(nombre_usuario)

        if self.id_usuario:
            usuario = Usuario.por_id(self.id_usuario)
        
            
        if (self.id_tipo_item):
            #recuperar id  de fase y proyecto
            ti = TipoItem.por_id(self.id_tipo_item)
            if (not self.id_fase):
                self.id_fase = ti.id_fase
            if (not self.id_proyecto):
                self.id_proyecto = ti.id_proyecto
        
        elif (self.id_fase):
            fase = Fase.por_id(self.id_fase)
            if (not self.id_proyecto):
                self.id_proyecto = fase.id_proyecto
                    
                             
        for r in usuario.roles:
            tiene = False
            for p in r.permisos:
                if p.nombre_permiso == self.nombre_permiso:
                    tiene = True
                    
            if not tiene: 
                continue
            
            if r.es_rol_sistema():
                return
            
            if self.id_proyecto == r.id_proyecto:
                if r.tipo == u"Proyecto":
                    return
            
            if self.id_fase == r.id_fase:
                if r.tipo == u"Fase":
                    return
                
            ti = TipoItem.por_id(self.id_tipo_item)
            if ti and ti.es_o_es_hijo(r.id_tipo_item):
                return
        
        self.unmet(self.message % self.nombre_permiso)
Ejemplo n.º 22
0
 def revertir(self, *args, **kw):
     """
     Revierte el ítem en cuestion a la version indicada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = int(args[0])
     if not id_item:
         redirect("../")
     item = Item.por_id(id_item)
     pp = PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item)
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("../")
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item.revertir(id_version, user)
     redirect("../")
Ejemplo n.º 23
0
 def revertir(self, *args, **kw):
     """
     Revierte el ítem en cuestion a la version indicada.
     """
     id_item = UrlParser.parse_id(request.url, "items")
     id_version = int(args[0])
     if not id_item:
         redirect("../")
     item = Item.por_id(id_item)
     pp = PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item)
     if not pp.is_met(request.environ):
         flash(pp.message % pp.nombre_permiso, 'warning')
         redirect("../")
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     item.revertir(id_version, user)
     redirect("../")
Ejemplo n.º 24
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials['repoze.what.userid']
        usuario = Usuario.by_user_name(nombre_usuario)

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

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

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

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

            if not tiene:
                continue

            if r.es_rol_sistema():
                return

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

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

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

        self.unmet(self.message % self.nombre_permiso)
Ejemplo n.º 25
0
 def put(self, *args, **kw):
     """
     Actualiza un item. Específicamente su prioridad, complejidad, 
     observaciones o descripcion.
     """
     if "sprox_id" in kw:
         del kw["sprox_id"]
     kw["complejidad"] = int(kw["complejidad"])
     kw["prioridad"] = int(kw["prioridad"])
     atras = "./"
     id_item = UrlParser.parse_id(request.url, "items")
     #if UrlParser.parse_nombre(request.url, "fases"):
     #    atras = "../../edit"
     item = Item.por_id(id_item)
     user_name = request.credentials["repoze.what.userid"]
     user = Usuario.by_user_name(user_name)
     try:
         item.modificar(user, **kw)
     except ModificarItemError, err:
         flash(unicode(err), "warning")
Ejemplo n.º 26
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')
Ejemplo n.º 27
0
 def enviar_pass(self, **kw):
     """Recupera el pass enviado por mail uno nuevo."""
     usernamegiven = kw["loginusernamegiven"]
     user = Usuario.by_user_name(usernamegiven)
     if user != None:
         smtp_gmail = Gmail()
         mail = user.email  #DEBUG:  u"*****@*****.**"
         hash = hashlib.new('ripemd160')
         hash.update(user.email + unicode(random.random()))
         new_pass = hash.hexdigest()[0:15]
         user._set_password(new_pass)
         DBSession.add(user)
         text = _(u"Tu nueva contraseña es : %s") % new_pass
         smtp_gmail.enviar_mail(mail, text)
         smtp_gmail.quit()
         flash(_(u'Nueva contraseña enviada a %s') % mail)
         redirect(url('/login'))
     else:
         flash(_(u'No existe Usuario'))
         redirect(url('/recuperar_pass'))
Ejemplo n.º 28
0
 def put(self, *args, **kw):
     """
     Actualiza un item. Específicamente su prioridad, complejidad, 
     observaciones o descripcion.
     """
     if "sprox_id" in kw:
         del kw["sprox_id"]
     kw["complejidad"] = int(kw["complejidad"])
     kw["prioridad"] = int(kw["prioridad"])
     atras = "./"
     id_item = UrlParser.parse_id(request.url, "items")
     #if UrlParser.parse_nombre(request.url, "fases"):
     #    atras = "../../edit"
     item = Item.por_id(id_item)
     user_name = request.credentials["repoze.what.userid"]
     user = Usuario.by_user_name(user_name)
     try:
         item.modificar(user, **kw)
     except ModificarItemError, err:
         flash(unicode(err), "warning")
Ejemplo n.º 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')
Ejemplo n.º 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
Ejemplo n.º 31
0
 def post(self, *args, **kw):
     """
     Generamos la línea base.
     """
     #transaction.begin()
     id_fase = UrlParser.parse_id(request.url, "fases")
     pks = []
     for k, v in kw.items():
         if v.isalnum():
             pks.append(int(v))
     fase = Fase.por_id(id_fase)
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     fase.generar_lb(pks, user)
     if pks:
         flash(u"Se ha generado la línea base")
     else:
         flash(u"No se seleccionaron elementos", "warning")
     transaction.commit()
     #redirect("/fases/%d/edit" % id_fase)
     #url = '/fases/%d/edit' % id_fase
     url = './'
     return url
Ejemplo n.º 32
0
 def abrir(self, *args, **kw):
     """
     Abre una LB
     """
     lb = LB.por_id(int(args[0]))
     user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
     op = u"Desbloqueo"
     for iplb in lb.items:
         p_item = iplb.propiedad_item
         if p_item.estado == u"Bloqueado":
             p_item.estado = u"Aprobado"
         elif p_item.estado == u"Revisión-Bloq":
             p_item.estado = u"Revisión-Desbloq"
         HistorialItems.registrar(user, p_item, op)
         
     HistorialLB.registrar(user, lb, 0)# u"Apertura"
     id_fase = UrlParser.parse_id(request.url, "fases")
     url = '../'
     fase = Fase.por_id(id_fase)
     lb.estado = u"Abierta"
     fase.cambiar_estado()
     flash("Se ha abierto la LB")
     redirect(url)
Ejemplo n.º 33
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 './'
Ejemplo n.º 34
0
    def edit(self, *args, **kw):
        """Despliega una pagina para modificar usuario"""
        username = request.identity['repoze.who.userid']
        usuario = Usuario.by_user_name(username)
        
        if usuario.id_usuario != int(args[0]):
            pp = PoseePermiso('modificar usuario')
            if not pp.is_met(request.environ):
                flash(pp.message % pp.nombre_permiso, 'warning')
                redirect("/usuarios")
        
        tmpl_context.widget = self.edit_form

        user = Usuario.por_id(args[0])
        page = "Usuario {nombre}".format(nombre=user.nombre_usuario)
        atras = "/usuarios/"
        value = self.edit_filler.get_value(values={'id_usuario': args[0]})
        value['_method'] = 'PUT'
        return dict(value=value,
                    page=page,
                    id=args[0], 
                    atras=atras
                    )
Ejemplo n.º 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 './'
Ejemplo n.º 36
0
 def _to_python(self, value, state):
     usernames = Usuario.by_user_name(value)
     if usernames != None:
         raise Invalid('El usuario ya existe en sistema', value, state)
     return value
Ejemplo n.º 37
0
    def post_cerrar(self, *args, **kw):
        """
        Cierra una LB. En caso de no poder cerrar, despliega la página
        de cerrar.
        """
        id = int(args[0])
        lb = LB.por_id(id)
        
        habilitados = []
        inhabilitados = []
        for ilb in lb.items:
            p_item = ilb.propiedad_item
            item = Item.por_id(p_item.id_item_actual)
            if (item.id_propiedad_item == p_item.id_propiedad_item and
                p_item.estado == u"Aprobado"):#no cambio o se aprobo
                habilitados.append(p_item)
            else:
                inhabilitados.append(p_item)
                
        user = Usuario.by_user_name(request.credentials["repoze.what.userid"])
        if (inhabilitados == []):
            lb.estado = u"Cerrada"

            #registrar en el historial
            for p_item in habilitados:
                p_item.estado = u"Bloqueado"
                HistorialItems.registrar(user, p_item, u"Bloqueo")
            HistorialLB.registrar(user, lb, 1)# u"Cierre"
            id_fase = UrlParser.parse_id(request.url, "fases")
            fase = Fase.por_id(id_fase)
            fase.cambiar_estado()

            flash("Linea base cerrada correctamente")
            redirect('../')
        
        #Romper la LB.
        lb.estado = u"Rota"
        HistorialLB.registrar(user, lb, 2)# u"Ruptura"
        
        page = u"Generar LB parcial a partir de : {codigo}".format(codigo=lb.codigo)
        tmpl_context.tabla_items_habilitados = ItemGenerarTable(DBSession)
        tmpl_context.tabla_items = ItemInhabilitadosTable(DBSession)
        inhabilitados = ItemInhabilitadosTableFiller(DBSession).get_value(items=inhabilitados)
        
        lista = []
        for i in habilitados:
            lista.append(Item.por_id(i.id_item_actual))
        habilitados = item_generar_table_filler.get_value(items=lista, **kw)
        
        atras = "../"
        
        existen_habilitados = False
        if habilitados:
            existen_habilitados = True
        
        return dict(page=page, 
                    id=id, 
                    atras=atras,
                    habilitados=habilitados,
                    inhabilitados=inhabilitados,
                    existen_habilitados=existen_habilitados
                    )
Ejemplo n.º 38
0
 def _to_python(self, value, state):
     usernames = Usuario.by_user_name(value)
     if usernames != None:
         raise Invalid('El usuario ya existe en sistema',
                                     value, state)
     return value
Ejemplo n.º 39
0
 def evaluate(self, environ, credentials):
     if is_anonymous().is_met(environ): 
         self.unmet()
     nombre_usuario = credentials["repoze.what.userid"]
     usuario = Usuario.by_user_name(nombre_usuario)
     
     if self.id_usuario:
         usuario = Usuario.por_id(self.id_usuario)
     
     if (self.id_tipo_item):
         #recuperar id  de fase y proyecto
         ti = TipoItem.por_id(self.id_tipo_item)
         if (not self.id_fase):
             self.id_fase = ti.id_fase
         if (not self.id_proyecto):
             self.id_proyecto = ti.id_proyecto
     
     elif (self.id_fase):
         fase = Fase.por_id(self.id_fase)
         if (not self.id_proyecto):
             self.id_proyecto = fase.id_proyecto
                 
     for r in usuario.roles:
         
         if (r.tipo.find(u"Sistema") == 0):
             
             for p in r.permisos:
                 if (p.tipo.find(self.tipo) >= 0):
                     return
                 
         if (r.tipo.find(u"Proyecto") == 0):
             if (self.tipo == "Proyecto" and self.id_proyecto == r.id_proyecto):
                 return
             
             elif (self.tipo == "Fase" or self.tipo == "Tipo"):
                 algun = False
                 for p in r.permisos:
                     if (p.tipo.find(self.tipo) >= 0):
                         algun = True
                         break
                     
                 if (algun and self.id_proyecto == r.id_proyecto):
                     return
                 
                 elif (algun and (self.id_fase + self.id_proyecto +\
                                   self.id_tipo_item == 0)):
                     return
                  
         elif (r.tipo.find(u"Fase") == 0):
             if (self.tipo == "Fase"):
                 if (self.id_fase == r.id_fase):
                     return
                 
                 elif (not self.id_fase):
                     fase = Fase.por_id(r.id_fase)
                     if (self.id_proyecto == fase.id_proyecto):
                         return
                 
             elif (self.tipo == "Tipo"):
                 algun = False
                 for p in r.permisos:
                     if (p.tipo.find(self.tipo) >= 0):
                         algun = True
                         break
                     
                 if (algun and self.id_fase == r.id_fase):
                     return
                 
                 elif (algun and (self.id_fase + self.id_proyecto +\
                                   self.id_tipo_item == 0)):
                     return
                   
         elif (r.tipo.find(u"Tipo") == 0):
             if (self.tipo == "Tipo"):
                 if (self.id_tipo_item and ti.es_o_es_hijo(r.id_tipo_item)):
                     return
                 
                 ti = TipoItem.por_id(r.id_tipo_item)
                         
                 if (ti.id_fase == self.id_fase or ti.id_proyecto == self.id_proyecto):
                     return
         '''
         algun = False
         for p in r.permisos:
             if p.nombre_permiso.find(u"consultar") < 0 and \
                p.tipo.find(self.tipo) >= 0 and \
                p.nombre_permiso != "miembro":
                 algun = True
                 break
         if not algun:
             continue
         
         if (self.id_fase + self.id_proyecto + self.id_tipo_item == 0):
             return
         
         if (r.es_rol_sistema()):
             return
         
         if (self.id_proyecto == r.id_proyecto):
             if (r.tipo == u"Proyecto"):
                 return
             
         if (self.id_fase == r.id_fase):
             if (r.tipo == u"Fase"):
                 return
             
         ti = TipoItem.por_id(self.id_tipo_item)
         if (ti and ti.es_o_es_hijo(r.id_tipo_item)):
             return
         '''
     self.unmet(self.message)
Ejemplo n.º 40
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(environ):
            self.unmet()
        nombre_usuario = credentials["repoze.what.userid"]
        usuario = Usuario.by_user_name(nombre_usuario)

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

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

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

        for r in usuario.roles:

            if (r.tipo.find(u"Sistema") == 0):

                for p in r.permisos:
                    if (p.tipo.find(self.tipo) >= 0):
                        return

            if (r.tipo.find(u"Proyecto") == 0):
                if (self.tipo == "Proyecto"
                        and self.id_proyecto == r.id_proyecto):
                    return

                elif (self.tipo == "Fase" or self.tipo == "Tipo"):
                    algun = False
                    for p in r.permisos:
                        if (p.tipo.find(self.tipo) >= 0):
                            algun = True
                            break

                    if (algun and self.id_proyecto == r.id_proyecto):
                        return

                    elif (algun and (self.id_fase + self.id_proyecto +\
                                      self.id_tipo_item == 0)):
                        return

            elif (r.tipo.find(u"Fase") == 0):
                if (self.tipo == "Fase"):
                    if (self.id_fase == r.id_fase):
                        return

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

                elif (self.tipo == "Tipo"):
                    algun = False
                    for p in r.permisos:
                        if (p.tipo.find(self.tipo) >= 0):
                            algun = True
                            break

                    if (algun and self.id_fase == r.id_fase):
                        return

                    elif (algun and (self.id_fase + self.id_proyecto +\
                                      self.id_tipo_item == 0)):
                        return

            elif (r.tipo.find(u"Tipo") == 0):
                if (self.tipo == "Tipo"):
                    if (self.id_tipo_item and ti.es_o_es_hijo(r.id_tipo_item)):
                        return

                    ti = TipoItem.por_id(r.id_tipo_item)

                    if (ti.id_fase == self.id_fase
                            or ti.id_proyecto == self.id_proyecto):
                        return
            '''
            algun = False
            for p in r.permisos:
                if p.nombre_permiso.find(u"consultar") < 0 and \
                   p.tipo.find(self.tipo) >= 0 and \
                   p.nombre_permiso != "miembro":
                    algun = True
                    break
            if not algun:
                continue
            
            if (self.id_fase + self.id_proyecto + self.id_tipo_item == 0):
                return
            
            if (r.es_rol_sistema()):
                return
            
            if (self.id_proyecto == r.id_proyecto):
                if (r.tipo == u"Proyecto"):
                    return
                
            if (self.id_fase == r.id_fase):
                if (r.tipo == u"Fase"):
                    return
                
            ti = TipoItem.por_id(self.id_tipo_item)
            if (ti and ti.es_o_es_hijo(r.id_tipo_item)):
                return
            '''
        self.unmet(self.message)