/tsjepublisher/views/UsuarioViews.py
http://hackathon.codeplex.com · Python · 115 lines · 74 code · 16 blank · 25 comment · 20 complexity · d96007b4d90ce546e2ed566e8140ed9c MD5 · raw file
- '''
- Created on Mar 29, 2012
- @author: jorge
- Modulo que encapsula los rpc relacionados al manejo de sesiones
- '''
- from tsjepublisher.models import DBSession
- from tsjepublisher.models import Usuario
- from pyramid.view import view_config
- from pyramid.response import Response
- @view_config(route_name='loginAttempt', renderer='json')
- def LoginView(request):
- '''
- Intenta loguear un usuario al sistema, retorna el resultado del intento
- '''
- params = request.params
- session = request.session
-
- if(not "uid" in params or not "pwd" in params):
- return {"respuesta" : False , "causa" : "Los parametros ingresados son insuficientes."}
-
- user = params["uid"]
- pasw = params["pwd"]
-
- session["logged"] = False
- res = DBSession.query(Usuario).filter(Usuario.login == user)
- if(res.count() == 0):
- return {"respuesta" : False , "causa" : "El usuario ingresado no existe."}
- candidato = res.first()
- if(candidato.password == pasw):
- session["logged"] = True
- session['uid'] = candidato.idUsuario
- return {"respuesta" : True , "bienvenida" : "Bienvenido " + candidato.nombre + "!"}
- else:
- return {"respuesta" : False , "causa" : "El password ingresado es invalido."}
-
- return {"respuesta" : True , "bienvenida" : "Bienvenido "}
- @view_config(route_name='logout')
- def LogoutView(request):
- '''
- RPC para cerrar la sesion
- '''
- session = request.session
- session["logged"] = False
- session['uid'] = -1
- session.invalidate()
- return Response('Ok')
- @view_config(route_name='isLogged', renderer='json')
- def isLoggedView(request):
- '''
- RPC para chequear si el usuario esta logueado
- '''
- session = request.session
- return {"logged" : session["logged"] if "logged" in session else False}
-
- @view_config(route_name='listUsers', renderer = 'json')
- def listUsersView(request):
- '''
- Llamada a la vista, retorna el resultado del intento de logueo
- '''
- params = request.params
- session = request.session
- if isLoggedView(request)['logged']:
- return [p.toDict() for p in DBSession.query(Usuario)]##
- else:
- return []
-
- import mmap
- import transaction
- from sqlalchemy.orm import undefer
- from pyramid.httpexceptions import HTTPFound
- @view_config(route_name='uploadTry')
- def uploadImageView(request):
- '''
- Llamada a la vista, retorna el resultado del intento de logueo
- '''
- session = request.session
- if isLoggedView(request)['logged']:
- jorgem = DBSession.query(Usuario).filter_by(idUsuario=session['uid']).first()
- if 'upfile' in request.params and not request.params['upfile'] == '':
- mapj = mmap.mmap(request.params['upfile'].file.fileno(), 0)
- jorgem.bg = mapj.read(mapj.size())
- a = 'foto ' + ("%.2f" % (float(mapj.size())/1024.0)) + 'kb'
- else:
- jorgem.bg = None
- a = 'foto default'
- transaction.commit()
- return Response('Ok {' + a + '}')
- else:
- return Response('Login first')
-
-
- @view_config(route_name='dynDownload')
- def downloadImageView(request):
- '''
- Llamada a la vista, retorna el resultado del intento de logueo
- '''
- session = request.session
- if not isLoggedView(request)['logged']:
- return HTTPFound(location='/static/images/bg.jpg')
- else:
- logged_user = DBSession.query(Usuario).filter_by(idUsuario=session['uid']).options(undefer('bg')).first()
- if logged_user == None or logged_user.bg == None:
- return HTTPFound(location='/static/images/bg.jpg')
- else:
- return Response(logged_user.bg)