Ejemplo n.º 1
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.º 2
0
 def evaluate(self, environ, credentials):
     if is_anonymous().is_met(request.environ): self.unmet()
     usuario = DBSession.query(Usuario).filter_by(
         nombre=credentials.get('repoze.what.userid')).first()
     roles_de_usuario = DBSession.query(RolUsuario).filter(
         RolUsuario.id_usuario == usuario.id_usuario)
     id_roles_usuario = []
     for iterador in roles_de_usuario:
         id_roles_usuario.append(iterador.id_rol_usuario)
     denegar = 1
     for ids in id_roles_usuario:
         permisos_recursos = DBSession.query(PermisoRecurso).filter(
             PermisoRecurso.rol_usuario == ids)
         for permiso_recurso in permisos_recursos:
             if permiso_recurso.id_permiso == self.id_permiso:
                 if self.id_fase:
                     fase = DBSession.query(Recurso).filter(
                         Recurso.id_fase == self.id_fase)
                     if fase.count() > 0:
                         denegar = 0
                 if self.id_proyecto:
                     proyecto = DBSession.query(Recurso).filter(
                         Recurso.id_proyecto == self.id_proyecto)
                     if proyecto.count() > 0:
                         denegar = 0
     if denegar == 1:
         self.unmet()
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 new(self):
     if is_met(has_permission("add_user")):
         return render_form(self.menu_items, action="create", add_number_of_emails=1)
     if is_met(is_anonymous()):
         c.menu_items = h.top_menu(self.menu_items, _("Customers"))
         c.came_from = str(request.GET.get("came_from", "")) or url(controller="home", action="index")
         if request.GET.get("came_from", None):
             h.flash(_("After filling the from you will be sent back to your shopping cart"))
         return render("/derived/user/new.html")
Ejemplo n.º 5
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.º 6
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.º 7
0
 def evaluate(self, environ, credentials):    
     if is_anonymous().is_met(request.environ): self.unmet()
     usuario = DBSession.query(Usuario).filter(Usuario.nombre_usuario == \
               credentials.get('repoze.what.userid')).first()
     fichas = DBSession.query(Ficha).filter(Ficha.usuario == usuario)
     if self.id_proyecto:
         fichas = fichas.filter(Ficha.id_proyecto == self.id_proyecto)
     if self.id_fase:
         fichas = fichas.filter(Ficha.id_fase == self.id_fase)
     
     band = False
     for ficha in fichas:
         for perm in ficha.rol.permisos:
             if perm.nombre == self.permiso: 
                 band = True
                 break
     
     if not band: self.unmet() 
Ejemplo n.º 8
0
    def evaluate(self, environ, credentials):
        if is_anonymous().is_met(request.environ): self.unmet()
        usuario = DBSession.query(Usuario).filter(Usuario.nombre_usuario == \
                  credentials.get('repoze.what.userid')).first()
        fichas = DBSession.query(Ficha).filter(Ficha.usuario == usuario)
        if self.id_proyecto:
            fichas = fichas.filter(Ficha.id_proyecto == self.id_proyecto)
        if self.id_fase:
            fichas = fichas.filter(Ficha.id_fase == self.id_fase)

        band = False
        for ficha in fichas:
            for perm in ficha.rol.permisos:
                if perm.nombre == self.permiso:
                    band = True
                    break

        if not band: self.unmet()
Ejemplo n.º 9
0
    def index(self):
        """Handle the front-page."""

	if predicates.is_anonymous():
		admin=False
		logged_in=False
	else:
		logged_in=True
		user = request.environ.get('repoze.who.identity')['user']
		if predicates.has_permission('admin'):
			admin=True
		else:
			admin=False

        systems = System.get_all_systems()

        return dict(page='index',systems=systems,
		    logged_in=logged_in, admin=admin)
Ejemplo n.º 10
0
 def evaluate(self, environ, credentials):
     if is_anonymous().is_met(request.environ): self.unmet()
     usuario = DBSession.query(Usuario).filter_by(nombre = credentials.get('repoze.what.userid')).first()
     roles_de_usuario = DBSession.query(RolUsuario).filter(RolUsuario.id_usuario == usuario.id_usuario)
     id_roles_usuario = []
     for iterador in roles_de_usuario:
         id_roles_usuario.append(iterador.id_rol_usuario)
     denegar = 1
     for ids in id_roles_usuario:
         permisos_recursos = DBSession.query(PermisoRecurso).filter(PermisoRecurso.rol_usuario == ids)
         for permiso_recurso in permisos_recursos:
             if permiso_recurso.id_permiso == self.id_permiso:
                 if self.id_fase:
                     fase = DBSession.query(Recurso).filter(Recurso.id_fase == self.id_fase)
                     if fase.count() > 0:
                         denegar = 0
                 if self.id_proyecto:
                     proyecto = DBSession.query(Recurso).filter(Recurso.id_proyecto == self.id_proyecto)
                     if proyecto.count() > 0:
                         denegar = 0
     if denegar == 1:
         self.unmet()
             
Ejemplo n.º 11
0
                user = Session.query(User).filter_by(id=id).one()
            except:
                h.flash(_("No user with ID:%s to view") % id)
                return redirect(h.url(controller="user", action="index"))
            c.menu_items = h.top_menu(self.menu_items, _("Customers"))
            c.user = user
            return render("/derived/user/staff/view.html")
        else:
            return redirect(url(controller="user", action="index"))

    def forgot(self):
        c.menu_items = h.top_menu(self.menu_items, _("Customers"))
        return render("/derived/user/forgot.html")

    @validate(schema=Forgot(), form="forgot")
    @ActionProtector(is_anonymous())
    def forgotaction(self):
        values = dict(request.params)
        del values["action"]
        msg = ""
        settingsf = file(config["settings_file"], "rb")
        session["site_settings"] = pickle.load(settingsf)
        settingsf.close()
        session.save()

        captchres = h.captcha.submit(
            values["recaptcha_challenge_field"],
            values["recaptcha_response_field"],
            "6LepGccSAAAAAMfzDtmvyRjJ7-A1FWuJa5qUTxX2",
            session["site_settings"]["ip_address"],
        )
Ejemplo n.º 12
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.º 13
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.º 14
0
 def test_anonymous_user(self):
     environ = {}
     p = predicates.is_anonymous()
     self.eval_met_predicate(p, environ)
Ejemplo n.º 15
0
 def test_authenticated_user(self):
     environ = make_environ('gustavo')
     p = predicates.is_anonymous()
     self.eval_unmet_predicate(p, environ,
                               'The current user must be anonymous')
Ejemplo n.º 16
0
class RootController(TGController):
    sub1 = SubController()
    arena = InvisibleArena()

    @navbar('TestHome', icon="navdeco.png")
    @sidebar('TestHome on the side', icon='sidedeco.png')
    @expose('genshi:tgext.menu.test.templates.index')
    def index(self, *p, **kw):
        return dict(currpage='TestHome')

    @navbar(u'T\xe9l\xe9phones')
    @expose('genshi:tgext.menu.test.templates.index')
    def unicode(self, *p, **kw):
        return dict()

    @navbar('Foo Spot || Foo', extras={'id': 'foo_1'})
    @expose('genshi:tgext.menu.test.templates.index')
    def foo(self, *p, **kw):
        return dict()

    @navbar('Foo Spot || Bar', extras={'id': 'foo_2'})
    @expose('genshi:tgext.menu.test.templates.index')
    def bar(self, *p, **kw):
        return dict()

    @navbar('Foo Spot || Baz')
    @expose('genshi:tgext.menu.test.templates.index')
    def baz(self, *p, **kw):
        return dict()

    @navbar('Logout', permission=Not(is_anonymous()))
    @expose('genshi:tgext.menu.test.templates.index')
    def logout(self, *p, **kw):
        return dict()

    @navbar('ID Duper || Spot 1', extras={'id': 'idduper_1'})
    @expose('genshi:tgext.menu.test.templates.index')
    def iddupe1(self, *p, **kw):
        return dict()

    @navbar('ID Duper || Spot 2', extras={'id': 'idduper_2'})
    @expose('genshi:tgext.menu.test.templates.index')
    def iddupe2(self, *p, **kw):
        return dict()

    #### The following are required for auth stuff to work
    @expose('tgext.menu.test.templates.login')
    def login(self, came_from='/'):
        """Start the user login."""
        login_counter = request.environ['repoze.who.logins']
        if login_counter > 0:
            flash(_('Wrong credentials'), 'warning')
        return dict(page='login',
                    login_counter=str(login_counter),
                    came_from=came_from)

    @expose()
    def post_login(self, came_from='/'):
        """
        Redirect the user to the initially requested page on successful
        authentication or redirect her back to the login page if login failed.

        """
        if not request.identity:
            login_counter = request.environ['repoze.who.logins'] + 1
            redirect('/login', came_from=came_from, __logins=login_counter)
        userid = request.identity['repoze.who.userid']
        flash(_('Welcome back, %s!') % userid)
        redirect(came_from)

    @expose()
    def post_logout(self, came_from='/'):
        """
        Redirect the user to the initially requested page on logout and say
        goodbye as well.

        """
        flash(_('We hope to see you soon!'))
        redirect(came_from)