Páginas

domingo, 14 de octubre de 2012

libro escrito en castellano de web2py

http://www.latinuxpress.com/books/drafts/web2py/

definir una tabla de usuarios en web2py



db.define_table(
    auth.settings.table_user_name,
    Field('registration_id', length=64,
          writable=False, readable=False, default='',label=T('ID de registracion')),
    Field('first_name', length=64, default='',label=T('Nombre')),
    Field('last_name', length=64, default='',label=T('Apellido')),
    Field("dni",label=T('DNI'), unique=True),
    Field('TIPO_DNI', 'string',requires=IS_IN_SET([ 'D.N.I', 'CEDULA','PASAPORTE']),required=True,label=T('TIPO DE DOCUMENTO ')),
    Field('gender', requires=IS_IN_SET(['Hombre', 'Mujer']),label=T('Genero')),
    Field('password', length=64,readable=False, label=('Contraseña')),
    Field('email', length=64, default='', unique=True,label=T('E-Mail')),
    Field("calle",label=T('Calle')),
    Field("nro_calle", 'integer',label=T('Nro de calle')),
    Field("barrio", label=T('Barrio')),
    Field("telefono",label=T('Telefono')),
    Field('registration_key', length=64,
          writable=False, readable=False, default='',label=T('Clave de registracion')),
    Field('reset_password_key', length=64,
          writable=False, readable=False, default='',label=T('Clave de contraseña de restablecimiento')),

    Field('clientes_foto','upload'),  
    Field('codigo_CLIENTES','integer',required=True,label=T('CODIGO DE CLIENTES'), unique=True),
    Field('CUIT_CLIENTES',"string", length=13,required=True,label=T('N° CUIT DEL CLIENTES'), unique=True),

    Field('TIPO_EMPRESA',requires=IS_IN_SET([ 'PRODUCCION', 'COMERCIAL','SERVICIOS'])),
    Field('tipo_client_responsable','string',
    requires=IS_IN_SET([ 'IVA', 'EXENTO','NORESPONSABLE','MONOTRIBUTISTA']),required=True,label=T('TIPO DE RESP.INSC')),
    Field('fecha_Alta_CLIENTE','date',required=True,label=T('FECHA DE ALTA')),
    Field('fecha_Baja_CLIENTE','date',writable=False,readable=False),)
db.auth_user.dni.requires = IS_NOT_IN_DB(db,'auth_user.dni')
db.auth_user.codigo_CLIENTES.requires = IS_NOT_IN_DB(db,'auth_user.codigo_CLIENTES')
db.auth_user.CUIT_CLIENTES.requires = IS_NOT_IN_DB(db,'auth_user.CUIT_CLIENTES')         

viernes, 12 de octubre de 2012

COMPAÑEROS DE SISTEMAS 2013









                                                                                                           Compañeros de sistemas y nuestro profesor Mariano Reingart

domingo, 7 de octubre de 2012

pequeño ejemplo en python un ABM con Sqlite3


#segovia-altas-bajas-sqlite3


import sqlite3 as dbapi
import os
arch="bbdd.dat"



def AgregaDatoDeptos():  #Agrega datos a la tabla deptos si el depto coincide con alguno de personas imprime la direccion
 bbdd = dbapi.connect(arch)
 cursor = bbdd.cursor()
 print('Ingrese el Depto')
 dep=raw_input('Depto: ');
 while (dep!='0'):
  dire=raw_input('Direccion: ');
  cursor.execute("insert into Deptos values (?,?)",(dep,dire))#Recordar que es posicional los ?
  print('Ingrese otro depto, o cero para salir');
  dep=raw_input('Depto: ');
  bbdd.commit()
 bbdd.close()


def AgregaDatoPersonas():  #Agrega datos a la tabla personas
 bbdd = dbapi.connect(arch)
 cursor = bbdd.cursor()
 print('Ingrese el nombre')
 nom=raw_input('Nombre: ');
 while (nom!='0'):
  doc=raw_input('Doc: ');
  departamento=raw_input('Departamento: ');
  cursor.execute("insert into Personas values (?,?,?)",(nom,doc,departamento))#Recordar que es posicional los ?
  print('Ingrese otro nombre, o cero para salir');
  nom=raw_input('Nombre: ');
  bbdd.commit()
 bbdd.close()


def CrearTabla(): #Crea Tablas solo si no existen
  bbdd = dbapi.connect(arch)
  cursor = bbdd.cursor()
  cursor.execute("""create table if not exists Personas (Id INTEGER UNIKE PRIMARY KEY, nombre text,dni text,departamento text)""")
  cursor.execute("""create table if not exists Deptos (Id INTEGER UNIKE PRIMARY KEY, Depto text,Direccion text)""")
  bbdd.commit()
  bbdd.close()


def Modificar(): #Modifica datos de  una persona buscada por nombre
  nom2=raw_input("Ingrese el nombre a buscar: ")
  nom=raw_input('Nombre modificado: ');
  doc=raw_input('Doc modificado: ');
  dep=raw_input('Departamento modificado: ');
  bbdd = dbapi.connect(arch)
  cursor = bbdd.cursor()
  cursor.execute("UPDATE Personas SET nombre = '"+nom+"',dni = '"+doc+"',departamento = '"+dep+"' WHERE nombre = '"+nom2+"'")
  nom2=raw_input("Desea guardar los cambios? responder con s o n ") #guarda o no los cambios recicle la variable jeje
  if nom2=='s':
   bbdd.commit()
  else:
   bbdd.rollback()
  bbdd.close()

def ImprimirDatos(): #Imprime la tabla ordenada por departamento
  if os.path.exists(arch):
   bbdd = dbapi.connect(arch)
   cursor = bbdd.cursor()
   cursor.execute("select * from Personas order by departamento")
   #print "Cantidad de elementos: "+str(len(cursor.fetchall()))  #cantidad de elementos al usarlo vacia la tupla
   print "Listado de Personas"
   print " "
   for tupla in cursor.fetchall():
    print tupla #En caso de querer imprimir solo un dato usar tupla[0] un rango tupla[0:1]
   print "------------------------------------------"
   print "Nombre de Campos"
   print " "
   cursor.execute("select * from Personas")
   for i in cursor.description:
    print i[0]

   #print cursor.description()
   #for tupla in cursor.fetchall():
   # print tupla
   bbdd.close()
  else:
   print "No existe el archivo"

def ImprimirTablasJuntas():
  bbdd = dbapi.connect(arch)
  cursor = bbdd.cursor()
  cursor.execute("select * from Personas,Deptos where Personas.departamento=Deptos.Depto")
  for tupla in cursor.fetchall():
   print tupla
  bbdd.close()

def ImprimirTablasCantporDepto():
  bbdd = dbapi.connect(arch)
  cursor = bbdd.cursor()
  #cursor.execute("select Personas.departamento,Deptos.Depto from Personas,Deptos Left Join Deptos USING(Depto)")
  cursor.execute("select distinct(Personas.departamento),count(Personas.departamento) from Personas group by departamento")
  for tupla in cursor.fetchall():
   print tupla
  bbdd.close()

def BorraDato(): #Borra una persona
  bbdd = dbapi.connect(arch)
  cursor = bbdd.cursor()
  nom=raw_input('Nombre: ')
  cursor.execute("DELETE from Personas WHERE nombre='"+nom+"'")
  bbdd.commit()
  bbdd.close()


if __name__=="__main__":
 op='2'
 while (op!='0'):
  print('\n*****************************')
  print('    Menu Principal   ')
  print('*****************************')
  print('0-Salir')
  print('1-Agregar Dato Personas')
  print('2-AgregarDepto')
  print('3-Modificar Dato')
  print('4-Borra Dato')
  print('5-Crear Tabla')
  print('6-Imprimir Tablas Juntas')
  print('7-Imprimir Tablas Cantidad por Depto')
  print('8-Imprimir Datos')
  print('*****************************')
  op=raw_input('Opcion: ')
  if (op=='1'):
      AgregaDatoPersonas()
  elif (op=='2'):
      AgregaDatoDeptos()
  elif (op=='3'):
      Modificar()
  elif (op=='4'):
      BorraDato()
  elif (op=='5'):
      CrearTabla()
  elif (op=='6'):
      ImprimirTablasJuntas()  
  elif (op=='7'): #Usa el  count
      ImprimirTablasCantporDepto()  
  elif (op=='8'):
      ImprimirDatos()

TUTORIAL Python para todos

escrito por Raúl González Duque. Se trata de un tutorial de Python adecuado para todos los niveles y que puedes descargar totalmente gratis.

'Python para todos' se distribuye bajo licencia Creative Commons Reconocimiento 2.5 España, lo que supone que puedes distribuirlo, modificarlo, traducirlo a otros idiomas, ... siempre que indiques el autor original'

El libro cuenta con 160 páginas en las que se tratan los siguientes temas:

  • Tipos básicos
  • Control de flujo
  • Funciones
  • Orientación a objetos
  • Programación funcional
  • Excepciones
  • Módulos y paquetes
  • Entrada / Salida
  • Expresiones regulares
  • Sockets
  • Interacción con webs
  • Threads
  • Serialización de objetos
  • Bases de datos
  • Documentación
  • Pruebas
  • Distribuir aplicaciones Python

Descargar el tutorial de Python 'Python para todos'

Puedes descargar el tutorial de Python 'Python para todos' en formato PDF (1,21 MB) haciendo clic sobre el siguiente enlace:

martes, 2 de octubre de 2012

TUTORIAL DE PYTHON

¿Por qué Python? Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido. La sintaxis de Python es tan sencilla y cercana al lenguaje natural que
los programas elaborados en Python parecen pseudocódigo. Por este motivo se trata además de uno de los mejores lenguajes para comenzar a programar. Python no es adecuado sin embargo para la programación de bajo nivel o para aplicaciones en las que el rendimiento sea crítico. Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los programas disponibles.Puedes descargar el tutorial de Python 'Python para todos' en formato PDF (1,21 MB) haciendo clic sobre el siguiente enlace: