예제 #1
0
def devolverLibro():
    usuario = Usuario()
    print(f"\t Codigo\t Nombre\t Correo\t Documento")
    for obj in usuario.all():
        print(f"\t {obj.id}\t {obj.nombre}\t {obj.correo}\t {obj.documento}")
    idUsuario = int(
        input("Escriba el id del usuario que realiza la reserva: "))
    libro = Libro()
    print(f"\t Codigo\t Nombre\t ISBN\t Autor\t Editorial\tEstado")
    for obj in libro.all():
        print(
            f"\t {obj.id}\t {obj.nombre}\t {obj.isbn}\t {obj.autor_id}\t {obj.editorial_id}\t {obj.estado_libro_id}"
        )
    idLibro = int(input("Ingrese el id del libro a reservar: "))
    libro = Libro.find(idLibro)
    libro.estado_libro_id = 1
    libro.save()
    biblioteca = Biblioteca()
    print(f"\t Codigo\t Nombre\t Dirección\t Documento")
    for obj in biblioteca.all():
        print(
            f"\t {obj.id}\t {obj.nombre}\t {obj.direccion}\t {obj.documento}")
    idBiblioteca = int(
        input("Ingrese el id de la biblioteca donde se reservara: "))
    prestamo = Prestamo()
    prestamo.usuario_id = idUsuario
    prestamo.libros_id = idLibro
    prestamo.prestado_on = str(date.today())
    prestamo.bibliotecas_id = idBiblioteca
    prestamo.save()
예제 #2
0
def trabajarTicket():
    if "ID" in session and session['Tipo'] == 4:
        if request.method == 'POST':
            objTicket = Ticket()
            objEmail = Email()
            objUsuario = Usuario()
            IdTicket = int(request.form['IdTicket'])

            objTicket.setID(IdTicket)
            ticket = objTicket.consultarID()
            objUsuario.setID(int(ticket[0].IdCreador))
            usuario = objUsuario.consultarID()

            if ticket[0].IdSolucionador != None:
                return "TicketTrabajando"
            else:            
                if objTicket.trabjarTicket():
                    if len(usuario) > 0:
                        email = usuario[0].Email
                        objEmail.emailActualizacionTicket(email,1,ticket[0].Titulo,0)
                    else:
                        return "Error"

                    return "Exito"
                else:
                    return "Error"
        else:
            return redirect(url_for('inicio.index'))
예제 #3
0
def login():
    global vLogin
    if vLogin == 0:
        if request.method == 'POST':
            username = request.form['username']
            senha = request.form['senha']

            user = Usuario(tabela='usuarios', username=username, senha=senha)
            validate = user.autenticar()

            if validate:
                #global vLogin
                global usr
                global usrList
                usr = username
                usuario = Model(tabela='usuarios')
                usrList = usuario.get(username=username)
                vLogin = 1
                return redirect(url_for('index'))
            else:
                erro = 'Login ou senha incorretos'
                return render_template('Login.html', erro=erro)
        if request.method == 'GET':
            return render_template('Login.html')
    else:
        #global vLogin
        vLogin = 0
        return redirect(url_for('index'))
예제 #4
0
def cerrarTicket():
        if "ID" in session and session['Tipo'] == 4:
            if request.method == 'POST':
                objTicket = Ticket()
                objEmail = Email()
                objUsuario = Usuario()
                IdTicket = int(request.form['IdTicket'])
                Resolucion = request.form['res']

                objTicket.setID(IdTicket)
                objTicket.setResolucion(Resolucion)
                ticket = objTicket.consultarID()
                objUsuario.setID(int(ticket[0].IdCreador))
                usuario = objUsuario.consultarID()
                
                if len(ticket) > 0:
                    if objTicket.cerrarTicket():

                        if len(usuario) > 0:
                            email = usuario[0].Email
                            objEmail.emailActualizacionTicket(email,2,ticket[0].Titulo,0)
                        else:
                            return "Error"

                        return "Exito"
                    else:
                        return "Error"
        else:
            return redirect(url_for('inicio.index'))
예제 #5
0
def registration():
    if request.method == "POST":
        #Capturamos las variables del formulario
        nombres = request.form["name"]
        apellidos = request.form["lastname"]
        documento = request.form["document"]
        email = request.form["email"]
        telefono = request.form["phone"]
        edad = int(request.form["age"])

        username = request.form["username"]
        password = request.form["password"]

        cliente = Usuario(nombres=nombres,
                          apellidos=apellidos,
                          documento=documento,
                          edad=edad,
                          email=email,
                          telefono=telefono,
                          username=username,
                          password=password)

        estado_op = cliente.crearUsuario()
        if estado_op:
            return redirect("login")
        else:
            error = 'No se ha podido registrar su cuenta'
            return render_template('users/register.html', error=error)

    return render_template('users/register.html', request=request)
예제 #6
0
def registration():
    if request.method == "POST":
        userprimernombre = request.form["primer_nombre"]
        userprimerapellido = request.form["primer_apellido"]
        usersegundoapellido = request.form["segundo_apellido"]
        useredad = request.form["edad"]
        usercorreoelectronico = request.form["correo_electronico"]
        usertelefono = request.form["telefono"]
        usercontrasena = request.form["contrasena"]

        usertelefono = int(usertelefono)
        useredad = int(useredad)

        user = Usuario(
            primer_nombre=userprimernombre,
            primer_apellido=userprimerapellido,
            segundo_apellido=usersegundoapellido,
            edad=useredad,
            correo_electronico=usercorreoelectronico,
            telefono=usertelefono,
            contrasena=usercontrasena
        )

        estado_op = user.crear_cuenta()

        if estado_op:
            return redirect("inicio-sesion")
        else:
            error = 'No se a podido registrar tu cuenta'
            return render_template('users/register.html', error=error)
    return render_template('users/register.html')
예제 #7
0
def cPanelGerente():
    objUsuario = Usuario()

    if "ID" in session and session['Tipo'] == 2:
        usuarios = objUsuario.ListarUsuariosXDepartamento(1)
        return render_template('cPanelGerente.html', empleados=usuarios, avatar=session["Avatar"], ID=session['ID'])
    else:
        return redirect(url_for('inicio.index'))
예제 #8
0
    def registeruser(self):
        # _firstname = request.form.get('firstname', '')
        # _lastname = request.form.get('lastname', '')
        # _email = request.form.get('email', '')
        # _password = request.form.get('password', '')
        # return sendResponse(authmodel.registerUser(_firstname,_lastname,_email,_password))

        errores = []

        email = request.form["email"]
        if Usuario.existe_usuario_con_email(email):
            errores.append(
                'El email ya esta en uso, por favor seleccione otro.')

        contraseña = request.form["password"]
        # https://kite.com/python/answers/how-to-check-if-a-string-contains-letters-in-python
        tiene_letras = contraseña.lower().islower()
        # https://stackoverflow.com/questions/5188792/how-to-check-a-string-for-specific-characters
        tiene_numeros = '0' in contraseña or '1' in contraseña or '2' in contraseña or '3' in contraseña or '4' in contraseña or '5' in contraseña or '6' in contraseña or '7' in contraseña or '8' in contraseña or '9' in contraseña
        tiene_simbolos = "'" in contraseña or '¿' in contraseña or '?' in contraseña or '¡' in contraseña or '!' in contraseña or '#' in contraseña or '@' in contraseña or '.' in contraseña or '-' in contraseña or '_' in contraseña
        longitud_de_caracteres_valido = (contraseña.__len__() >= 8)
        contraseña_valida = tiene_letras and tiene_numeros and tiene_simbolos and longitud_de_caracteres_valido

        if not contraseña_valida:
            errores.append('Contraseña inválida.')

        # El número de la tarjeta tiene que ser de 16 digitos
        # El pin de la tiene que ser de 3 digitos
        tarjetaNumero_valido = (request.form["tarjetaNumero"].__len__() != 16)
        tarjetaPin_valido = (request.form["tarjetaPin"].__len__() != 3)

        # https://learnandlearn.com/python-programming/python-reference/python-get-current-date
        # Pregunto si la fecha de expiración ingresada para la tarjeta es mayor al día de hoy ...
        # ... con esto compruebo si es válida o no.
        feha_de_hoy = datetime.today()
        tarjetaFechaDeExpiracion = datetime.strptime(
            request.form["tarjetaFechaDeExpiracion"], "%Y-%m-%d")
        if (feha_de_hoy >= tarjetaFechaDeExpiracion
            ) or tarjetaNumero_valido or tarjetaPin_valido:
            errores.append(
                'Los datos proporcionados acerca la tarjeta de crédito no son válidos.'
            )

        if errores:
            # Solo entra aca si el arreglo tiene elementos, osea que hay errores.
            planes = Plan.all()
            usuario = request.form
            return render_template('registrar.html',
                                   planes=planes,
                                   errores=errores,
                                   usuario=usuario)
        else:
            # Solo entra aca si el arreglo esta vacio, esto significa que no hay ...
            # ... errores y el registro se realiza de forma exitosa.
            usuario = Usuario.crear(request.form)
            mensaje_de_exito = "Enhorabuena, ¡Su usuario fue creado con exito!"
            return render_template("login.html",
                                   mensaje_de_exito=mensaje_de_exito)
예제 #9
0
 def usuario_detalles(self):
     usuario = Usuario.encontrar_por_id(session['id'])
     perfiles_creados = Usuario.cantidad_de_perfiles_creados_por_el_usuario_con_id(
         session['id'])
     plan = Plan.encontrar_por_id(usuario['plan_id'])
     return render_template('usuarios/detalles.html',
                            usuario=usuario,
                            plan=plan,
                            perfiles_creados=perfiles_creados)
예제 #10
0
def verificarCedula():
    origen = request.form['url']
    cedula = request.form['cedula']
    objUsuario = Usuario()
    objUsuario.setCedula(cedula)

    if objUsuario.validarCedula(origen):
        return "Existe"
    else:
        return "Valido"
예제 #11
0
def inserir(dic_usuario):
    usuario = Usuario()
    usuario.nome = dic_usuario.get("nome")

    if usuario.nome is None or usuario.nome == '' or usuario.nome.isspace():
        return RespostaDto("O nome do usuário é inválido").to_dict(
        ), HTTPStatus.BAD_REQUEST.value

    db.session.add(usuario)
    db.session.commit()
    return usuario.to_dict(), HTTPStatus.CREATED.value
예제 #12
0
def verificarEmail():
    # print(request.form['url'])
    origen = request.form['url']
    email = request.form['email']
    objUsuario = Usuario()
    objUsuario.setEmail(email)

    if objUsuario.validarEmail(origen):
        return "Existe"
    else:
        return "Valido"
예제 #13
0
def eliminarCuenta():
    if request.method != 'POST':
        return redirect(url_for('inicio.index'))
    else:
        if "ID" in session and session['Tipo'] in [1,2,5]:
            objUsuario = Usuario()
            objUsuario.setID(int(request.form['IdUsuario']))

            if objUsuario.eliminarUsuario():
                return "Exito"

    return "Error"
예제 #14
0
def cargarUsuariosDepartamento():
    if request.method == "POST" and "ID" in session:
        plantilla = "<option selected disabled hidden value=''>Usuario</option>"
        IdDep = request.form["IdDep"]
        objUsuario = Usuario()
        usuarios = objUsuario.ListarEmpleadosDepEmp(IdDep,int(session['Empresa']))

        for usuario in usuarios:
            plantilla += "<option value='"+str(usuario.IdUsuario)+"'>"+usuario.Nombre+"</option>"

        return plantilla
    else:
        return redirect(url_for('inicio.index'))
예제 #15
0
def buscarUsuarios():
    if request.method == "POST" and session['Tipo'] in [1,2,5]:
        plantilla = ""
        objUsuario = Usuario()
        objUsuario.setTipo(int(session['Tipo']))
        objUsuario.setIDEmpresa(int(session['Empresa']))
        objUsuario.setIdDep(int(session['Departamento'])) if session['Departamento'] != None else objUsuario.setIdDep(0)
        filtro = request.form['filtro']

        resultado = objUsuario.buscarUsuarios(filtro)
        if len(resultado) > 0:
            for r in resultado:
                Departamento = r.Departamento if (r.Departamento != None) else 'Vacio'
                if r.Activo == 1:
                    plantilla +=""" <div class='card mb-3' style='max-width: 90%;'>
                    <div class='row no-gutters'>
                        <div class='col-md-4'>
                        <img src="""+url_for('static', filename='imgs_perfil/'+r.Avatar)+""" class='card-img avatar' alt='Imagen Usuario'>
                        </div>
                        <div class='col-md-8'>
                        <div class='card-body'>
                            <h5 class='card-title'>"""+r.TipoUsuario+"""</h5>
                            <p class='card-text'>"""+r.Nombre+"""</p>
                            <p class='card-text' empresaUsuario>"""+r.Empresa+"""</p>
                            <p class='card-text'>"""+Departamento+"""</p>
                            <button class='btn btn-primary mt-1' style='width: 120px !important;' idUsuarioMod='"""+str(r.IdUsuario)+"""'>Modificar</button>
                            <button class='btn btn-danger mt-1' style='width: 120px !important;' idUsuarioElim='"""+str(r.IdUsuario)+"""'>Eliminar</button>
                        </div>
                        </div>
                    </div>
                    </div>
                        """
                else:
                    plantilla +=""" <div class='card mb-3' style='max-width: 90%;'>
                    <div class='row no-gutters'>
                        <div class='col-md-4'>
                        <img src="""+url_for('static', filename='imgs_perfil/'+r.Avatar)+""" class='card-img avatar' alt='Imagen Usuario'>
                        </div>
                        <div class='col-md-8'>
                        <div class='card-body'>
                            <h5 class='card-title'>"""+r.TipoUsuario+"""</h5>
                            <p class='card-text'>"""+r.Nombre+"""</p>
                            <p class='card-text' empresaUsuario>"""+r.Empresa+"""</p>
                            <p class='card-text' depUsuario>"""+Departamento+"""</p>
                            <button class='btn btn-success mt-1' style='width: 120px !important;' idUsuarioAct='"""+str(r.IdUsuario)+"""' IdTipo='"""+str(r.IdTipoUsuario)+"""'>Activar</button>
                        </div>
                        </div>
                    </div>
                    </div>
                        """
        else:
            plantilla += "<h4 class='text-center' style='text-transform:capitalize'>No hay resultados para tu busqueda</h4>"
        
        return plantilla

    return redirect(url_for('inicio.index'))
예제 #16
0
def recuperarClave():
    if request.method == "GET":
        return render_template("recuperarClave/recuperarClave.html")
    elif request.method == "POST":
        objEmail = Email()
        objUsuario = Usuario()
        correo = str(request.form['email'])
        url = str(request.form['url'])
        objEmail.setCorreo(correo)

        objUsuario.setEmail(correo)
        if objUsuario.validarEmail(url):
            objEmail.enviarEmailRecuperacion()
    
        return "Exito"
 def GET(self):
     print web.ctx.session.login 
     print web.ctx.session.privilege 
     render = web.template.render('templates/', base="base")
     print "In get"
     usuario =  Usuario.getById(web.ctx.session.privilege)
     return render.index(usuario)
예제 #18
0
 def addUsuarios(self, dt):
     """Adiciona os Usuarios na Tela."""
     self.ids.box.clear_widgets()
     usuarios = Usuario().select("""
         SELECT id, nome, email, tipo
         FROM usuario
         """,
                                 sel='fetchall')
     if len(usuarios) > 0:
         for i in usuarios:
             ex = Exibir()
             ex.idUser = i.id
             ex.att = self.atualizar
             ex.deletar = self.deletar
             ex.height = sp(70)
             ex.texto = (
                 f"Nome: {i.nome}\n"
                 f"Email: {i.email}\n"
                 f"Tipo: {'Bibliotecário' if i.tipo==1 else 'Usuario'}")
             self.ids.box.add_widget(ex)
     else:
         ex = Exibir()
         ex.remove_widget(ex.ids.att)
         ex.remove_widget(ex.ids.deletar)
         ex.height = sp(50)
         ex.ids.texto.font_size = sp(20)
         ex.texto = "Não há Usuarios!"
         self.ids.box.add_widget(ex)
예제 #19
0
def crear_usuario():
    try:
        body = Usuario(request.json)
        usuarios.append(body)
        return '', 201
    except Exception as e:
        return '', 400
예제 #20
0
def actualizar_usuario_by_username(username):
    body = Usuario(request.json)
    if get_index_of_user(username) != -1:
        delete_user_by_username(username)
        usuarios.append(body)
        return '', 200
    return '', 404
예제 #21
0
def login():
    erros = campos_presentes_na_requisicao('email senha')

    if erros:
        return render_template('usuario/login.html', erros=erros), 400

    email = request.form.get('email')
    senha = request.form.get('senha')

    try:
        usuario = Usuario.get(email=email)

        if usuario.hash_senha == senha_hasheada(senha):
            session['usuario'] = model_to_dict(usuario)

            flash('Seja bem-vindo, {usuario}.'.format(
                usuario=usuario.nome.split()[0]))
            return redirect(url_for('pagina_inicial'))
        else:
            return render_template('usuario/login.html',
                                   erros=[Erro('Senha inválida.')]), 400

    except Usuario.DoesNotExist:
        return render_template('usuario/login.html',
                               erros=[{
                                   'mensagem': 'Usuário não encontrado.'
                               }]), 404
예제 #22
0
    def get(self):
        jinja = jinja2.get_jinja2(app=self.app)

        valores_plantilla = {}

        if self.request.GET.keys():
            usuario = Usuario.recuperar(self.request, "id_usuario")
            libro = Libro.recuperar(self.request, "id_libro")

            like = Like(libro=libro.key, usuario=usuario.key)
            tiene_likes = Like.query(Like.libro == libro.key,
                                     Like.usuario == usuario.key)

            if libro.creador == usuario.key:
                print("NO PUEDES DAR LIKE A TU LIBRO")
            else:
                if tiene_likes.count() == 0:
                    print("LE DISTE LIKE")
                    like.put()
                else:
                    print("YA TIENE TU LIKE")

            return self.redirect('/?id={}'.format(usuario.key.urlsafe()),
                                 body={"mira": "pepe"})
        else:
            self.redirect('/')
예제 #23
0
def cadastro_usuario():
    '''
    ROTA UTILIZADA PARA REALIZAR O CADASTRO DO USUÁRIO DA APLICAÇÃO

    @autor: Gabriel Oliveira Gonçalves -
    @data: 07/09/2020 -
    @URL: http://localhost:5000/usuario/cadastro -
    @versao: 1.0.0
    '''
    if not is_admin(current_user):
        flash('Acesso não autorizado!')
        return redirect(url_for('form_gerenciamento_estoque'))
    form = CadastroUsuarioForm()
    if form.validate_on_submit():
        usuario = Usuario(
            form.nome.data, form.sobrenome.data, form.email.data,
            form.login.data, form.senha.data,
            permissao_dao.get_id_permissao(form.permissao.data)[0])
        usuario_dao.cadastrar_usuario(usuario)
        flash("Usuário cadastrado com sucesso!")
        return redirect(url_for('form_gerenciamento_estoque'))
    return render_template(
        'cadastro_usuario.html',
        form=form,
        notificacoes=notificacao_dao.get_notificacoes(),
        quantidade_notificacoes_usuario=notificacao_usuario_dao.
        get_quantidade_notificacoes_usuario(current_user.id_usuario))
예제 #24
0
def cadastrarUsuario():
    try:

        tipoUsuario = input(
            "Tipo de usuário: \n1 - Cliente\n2 - Nutricionista\n>>> ")
        nomeUsuario = input(
            "Insira um nome para o seu usuário (Sem acentos, pontuações, vírgulas e pontos!):\n>>> "
        )
        senhaUsuario = input(
            "Insira uma senha para o seu usuário (Recomendável acima de 8 digitos com letras, números e simbolos)\n>>> "
        )
        assert nomeUsuario.isalpha() or senhaUsuario.isalnum()
        assert senhaUsuario.isalpha() or senhaUsuario.isalnum()

        usuariosCadastrados = read.readFileUsuario()

        if nomeUsuario in list(usuariosCadastrados.keys()):
            print('Esse usuário já existe!.')
            exit(principal.interface())

        usuariosCadastrados[nomeUsuario] = Usuario(nomeUsuario, senhaUsuario,
                                                   tipoUsuario)

        insert.insertUsuario(usuariosCadastrados)

        cadastrarCliente(
            nomeUsuario) if tipoUsuario == '1' else cadastrarNutricionista(
                nomeUsuario)
    except AssertionError:
        print("Entradas inválidas.")
예제 #25
0
    def loginuser(self):
        errores = []

        # Me fijo si existe el usuario ingresado y luego pregunto si la contraseña ingresada es correcta
        usuario = Usuario.encontrar_por_email(request.form["email"])
        perfiles = Perfiles.all()
        if usuario:
            # Luego de saber que el usuario buscado existe, pregunto si la contraseña es correcta
            if (usuario["contraseña"] != request.form["password"]):
                errores.append("Los datos ingresados son incorrectos.")
                return render_template("login.html", errores=errores)

            session["id"] = usuario["id"]

            # session["perfil_id"] = request.form["perfil_id"] TODAVÍA NO HICIMOS NADA ACERCA DE LOS PERFILES
            session["admin"] = (usuario["email"] == "*****@*****.**")
            # se conecta a perfiles

            if session["admin"]:
                return render_template('panel_de_control.html')
            elif not usuario["tarjeta_valida"]:
                return redirect(url_for("modificar_tarjeta"))
            else:
                return redirect(url_for("ver_perfiles", id=session['id']))
        else:
            errores.append("No existe ninguna cuenta con el email ingresado.")
            return render_template("login.html", errores=errores)
예제 #26
0
    def modificar_perfil(self, id_perfil):
        errores = []
        arreglo = []
        perfil = Perfiles.encontrar_por_id(id_perfil)
        user = Usuario.encontrar_por_id(session['id'])
        ok = False
        perfiles = Perfiles.all()
        for p in perfiles:
            if p['id_usuario'] == user['id']:
                arreglo.append(p)
        if request.method == 'GET':
            return render_template("/usuarios/modificarPerfil.html",
                                   perfil=perfil,
                                   usuario=user,
                                   errores=errores)

        else:
            if request.method == 'POST':
                for a in arreglo:
                    if a['nombre'] == request.form['nombre']:
                        ok = True
                if ok == True:
                    errores.append("ya existe el nombre especificado.")
                    nombre = request.form['nombre']
                    return render_template("/usuarios/modificarPerfil.html",
                                           perfil=perfil,
                                           usuario=user,
                                           errores=errores,
                                           nombre=nombre)
                else:
                    nombre = request.form['nombre']
                    foto = request.form['foto']
                    Perfiles.edit(nombre, foto, id_perfil)
                    return redirect(url_for('ver_perfiles', id=session['id']))
예제 #27
0
    def post(self):
        titulo = self.request.get("edTitulo", "")
        autor = self.request.get("edAutor", "")
        str_fecha_pub = self.request.get("edFechaPub", "")

        try:
            fecha_pub = datetime.datetime.strptime(str_fecha_pub, "%Y-%m-%d")

        except ValueError:
            fecha_pub = -1

        if self.request.GET.keys():
            usuario = Usuario.recuperar(self.request, "id")
        else:
            self.redirect('/')

        if fecha_pub == -1 or not titulo or not autor:
            return self.redirect('/')
        else:
            libro = Libro(titulo=titulo,
                          autor=autor,
                          fecha_pub=fecha_pub,
                          creador=usuario.key)
            libro.put()
            time.sleep(1)
            return self.redirect('/?id={}'.format(usuario.key.urlsafe()))
예제 #28
0
def cPanelAdmin():
    objUsuario = Usuario()
    objDep = Departamento()
    objEmp = Empresa()

    if "ID" in session and session['Tipo'] == 1:
        usuarios = objUsuario.ListarUsuariosXEstado(1)
        depActivos = objDep.ListarDepartamentosXEstado(1)
        empresas = objEmp.ListarEmpresasXEstado(1)
        return render_template('cPanelAdmin.html',
                               usuarios=usuarios,
                               avatar=session["Avatar"],
                               departamentos=depActivos,
                               empresas=empresas,
                               ID=session["ID"])
    else:
        return redirect(url_for('inicio.index'))
예제 #29
0
def delete():
    libros = Libro.query()
    for l in libros:
        l.key.delete()

    usuarios = Usuario.query()
    for u in usuarios:
        u.key.delete()
예제 #30
0
 def getListaPesquisa(self, paramCod):
     #Pesquisar o nome do carinha
     sql = "SELECT * from usuario where cod =?"
     resultado = self.conexao.execute(sql, (paramCod, ))
     for codes in resultado:
         usuario = Usuario(codes[0], codes[1], codes[2])
         #listaCod.append(tanque)
         return usuario
예제 #31
0
def registrar():
    if request.method == 'POST':
        username = request.form['username']
        senha = request.form['senha']
        email = request.form['email']
        tipo = request.form['tipo']

        user = Usuario(tabela='usuarios', username=username, senha=senha, email=email, tipo=tipo)
        validate = user.registrar()

        if validate:
            return redirect(url_for('login'))
        else:
            erro= 'Usuario ja existe'
            return render_template('registro.html', erro=erro)
    if request.method == 'GET':
        return render_template('registro.html')
 def create(identificador,sexo, fecha_nacimiento, direccion_despacho, dr_ciudad_id, telefono):
     if Usuario.getById(identificador) == None :
         print "El usuario no existe, no se puede crear el Usuario_de_internet"
         return None;
     else:
         query = " INSERT INTO %s (id, sexo, fecha_nacimiento, direccion_despacho, dr_ciudad_id, telefono) VALUES (%s,'%s','%s','%s',%s,%s)  RETURNING id " % (Usuario_de_internet.tabla, str(int(identificador)), sexo, fecha_nacimiento, direccion_despacho,str(int(dr_ciudad_id)), str(int(telefono)))
         cursor = Config.getCursor()
         try:
             cursor.execute(query)
         except Exception, e:
             print e 
             print "No es posible guardar objeto"
	def create(identificador): #del usuario
		if Usuario.getById(identificador) == None :
			print "El usuario no existe, no se puede crear el administrador"
			return None;
		else:	
			query = " INSERT INTO %s (id) VALUES (%s)  RETURNING id " % (Administrador.tabla, str(int(identificador)))
			cursor = Config.getCursor()
			try:
				cursor.execute(query)
			except Exception, e:
				print e
				print "No es posible guardar objeto"
			id = cursor.fetchone()
 def POST(self):
     render = web.template.render('templates/', base="base")
     datos_in = web.input()
     name = datos_in['user']
     passwd = datos_in['passwd']
     id = Usuario.isValidUser(name, passwd)
     try:
         if id is not None:
             usuario = Usuario.getById(id)
             web.ctx.session.login = 1
             web.ctx.session.privilege = usuario.id
             print web.ctx.session.privilege
             web.seeother('/')# Cambiar por menu inicial
         else:
             web.ctx.session.login = 0
             web.ctx.session.privilege = 0
             render = create_render(web.ctx.session.privilege)
             return render.login_error()
     except Exception, e:
         print e
         web.ctx.session.login = 0
         web.ctx.session.privilege = 0
         web.ctx.session = create_render(web.ctx.session.privilege)
         return render.seeother()
 def create(asignatura, docente, periodo, estructura_padre):
     nombre_usuario  = "%s  - %s" % (asignatura.nombre, str(periodo))
     username = id_generator()
     u =  Usuario.create(nombre_usuario, username, "DSAFGHGFDSFGFDS", e_mail=username+"@u.co", habilitado="N")
     c = Cargo.getByName("Docente")
     estruc = Estructura.create(u, c, estructura_padre)
     query = "INSERT INTO %s (id, asignatura_id, docente_id, periodo) VALUES (%s, %s, %s, %s) " % ( Grupo.tabla, u.id, asignatura.id, docente.id, periodo)
     cursor = Config.getCursor()
     try:
         cursor.execute(query)
     except Exception, e:
         print e
         import ipdb; ipdb.set_trace()
         print "No es posible ejecutar query  o no hay resultados validos"
         return None
 def POST(self):
     datos_in = web.input()
     nombre_completo = datos_in['nombre_completo']
     identificacion = datos_in['identificacion']
     e_mail = datos_in['e_mail']
     usuario = datos_in ['usuario']
     contrasena= datos_in['contrasena']
     direccion_residencia = datos_in['direccion_residencia']
     ciudad_residencia = datos_in['ciudad_residencia']
     sexo = datos_in['sexo']
     fecha_nacimiento= datos_in['fecha']
     telefono =   datos_in['telefono']
     direccion_despacho = datos_in['direccion_despacho']
     ciudad_despacho = datos_in['ciudad_despacho']
     user = Usuario.create(identificacion,nombre_completo, usuario, contrasena, e_mail,direccion_residencia,ciudad_residencia)
     if "Usuario_de_internet" in datos_in:
         Usuario_de_internet.create(identificacion,sexo, fecha_nacimiento, direccion_despacho, ciudad_despacho, telefono)
     if "Administrador" in datos_in:
         Administrador.create(identificacion)
     if "Despachador" in datos_in:
         Despachador.create(identificacion)
     raise web.redirect('/usuario/listar/')
#Creo 2 asignaturas
a1 = Asignatura.create("Bases de datos 2")
a2 = Asignatura.create("Bases de datos 1")

# Creo algunos cargos
docente_c =  Cargo.create("Docente")
decano_ing_c = Cargo.create("Decano Ingenieria")
rector_c = Cargo.create("Rector") 
coordinador_ing_sistemas = Cargo.create("Coordinador ingenieria de sistemas")

#Creo una plantilla y anado una pregunta
pl = Plantilla.create("Plantilla de prueba")
pl.addPregunta("Nueva pregunta")

#Creo usuario administrador
u1 = Usuario.create("Cristian Rojas", "carojasq", "contrasena", "*****@*****.**")
a1 = Administrador.create(u1)

#Creo una estructura (rectoria)
u1 = Usuario.create("Rectoria",  "rectoria", "contrasena", "*****@*****.**")
es1 = Estructura.create(u1, rector_c)

#Creo una estructura derivada de rectoria
u2 = Usuario.create("Decanatura de ingenieria",  "decanaturaing", "contrasena", "*****@*****.**")
es2 = Estructura.create(u2, decano_ing_c, es1)

#Creo proyecto curricular, derivado de decanatura
u3 = Usuario.create("Ingenieria de sistemas",  "ingsistemas", "contrasena", "*****@*****.**")
es3 = Estructura.create(u3, coordinador_ing_sistemas, es2)

#Creo un estudiante
 def getUser(id):
     usuario = Usuario.getById(id)
     if usuario == None :
         print "El usuario no existe,"
         return None;
     return usuario
	def __init__(self, identificador):
		self.id = identificador
		self.privilegios = Usuario.getTipo(self.id)
 def __init__(self, id, nombre, jurado_id=0, director_id=0):
     self.id = id
     self.nombre = nombre
     self.jurado = Usuario.getById(jurado_id)
     self.director = Usuario.getById(director_id)