Planeta Python México

September 21, 2012

Jorge Luis Hernandez C.

Generación de un Password aleatorio en Django

En muchos lugares existe la funcionalidad para cuando no recuerdas tu password tengas la posibilidad de resetearlo, tras lo cual se te envía uno nuevo a tu cuenta de correo electrónico.

Y si has estado pensando en agregar esta funcionalidad a tu aplicación, esto puede ayudarte mucho.

Generar un password aleatorio es tan ridículamente sencillo como hacer lo siguiente:

new_password = User.objects.make_random_password(length=15)

Y new_password tendrá una cadena como esta: ‘cWm6hx6C4MMa4R2′. La longitud predefinida es 10, pero nosotros podemos establecer el tamaño de nuestro password aleatorio.

Puedes visitar la documentación oficial aquí.

Publicado por lesthack el September 21, 2012 11:53 AM

September 19, 2012

Jorge Luis Hernandez C.

Como formatear una fecha String en Python

Formatear una cadena que contiene a una fecha a otro formato especifico es muy sencillo en python.
import time
 
str_fecha = "May 01 2011"
fto_fecha = time.strftime("%Y-%m-%d", time.strptime(str_fecha, "%b %d %Y"))
 
print fto_fecha

Para mas detalles, puedes consultar la documentación oficial sobre como interpreta el parser la cadena.

Publicado por lesthack el September 19, 2012 06:52 PM

September 14, 2012

Jorge Luis Hernandez C.

Actualizar Serial de los campos ID en Postgresql

Postgresql es uno de mis engines de base de datos favoritos, ya que puedes tener una gran libertad en elegir el lenguaje que quieres usar para tus funciones, procedimientos, triggers, etc.

Solo que hasta no hace mas de una semana lo volví a retomar para un proyecto laboral y del que necesita desempolvar los conocimientos aprendidos hace años.

Uno de los problemas con los que me he topado ha sido la serialización en las tablas, como ocurre en los campos nombrados id que se incrementan automáticamente, sin embargo, el problema suele presentarse cuando agregas información a la tabla usando un id especifico. Ejemplificaremos esto:

Usando una tabla como la siguiente

CREATE TABLE usuario
(
  id serial NOT NULL,
  nombre character(50),
  CONSTRAINT usuario_pk_id PRIMARY KEY (id )
)

Podemos ir agregando información son sentencias sencillas como las siguientes:

insert into usuario(nombre) values('jorge');
insert into usuario(nombre) values('andres');

También podemos hacerlo especificando el id y no habrá ningún problema.

insert into usuario(id,nombre) values(3,'alberto');

Sin embargo, al volver a insertar información sin especificar el id, para que éste sea generado automáticamente:

insert into usuario(nombre) values('pedro');

Obtenemos un grave error.

ERROR:  duplicate key value violates unique constraint "usuario_pk_id"
DETAIL:  Key (id)=(3) already exists.

Por lo que deducimos que el serial id no se actualizó cuando insertamos información especificando el id. El problema se resuelve actualizando este serial key de la siguiente manera.

SELECT setval('usuario_id_seq', (SELECT MAX(id) FROM usuario)+1)

Una solución simple a un problema simple.

Publicado por lesthack el September 14, 2012 08:17 PM