Archive for the ‘ Django ’ Category

django-thumbs ahora en blanco y negro

Trabajando con miniaturas de imágenes, nos ha surgido la necesidad de hacer algunas en blanco y negro.

Con este objetivo he decido mejorar el módulo django-thumbs añadiendo soporte para esto y de paso me he animado y ha realizado mi primera publicación en http://djangosnippets.org.

Toda la documentación está en el snippet que podéis encontrarlo aquí http://djangosnippets.org/snippets/2817/ 🙂

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea recta sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar de numerosas drogas existe. Kamagra es un remedio usado para tratar varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Mejorando django-simple-captcha

Esta semana estamos siendo objeto de un ataque de spam (basado en comentarios) en thechurchofhorrors.com, que aparte de lo absurdo de su objetivo es un auténtico incordio.

TheChurchofHorrors es un Magazine Cultural que yo mismo desarrollé hace un tiempo que sigo manteniendo y mejorando, el código fuente completo lo podemos encontrar en https://github.com/dugo/The-Church-of-Horrors

Al parecer el posible atacante ha sido capaz de romper la protección captcha de los comentarios, basada en django simple captcha versión 0.3.0

Recuerdo que se acordó la publicación de comentarios libre para fomentar la participación y la libertad de expresión, de hecho en las implementaciones iniciales mi idea era aprobar los comentarios, algo que molestó a mis compañeros.

Para solucionar el problema he implementado las mejoras expuestas en http://hacktimes.com/reforzando_django_simple_captcha/ pero con algunas modificaciones propias.

Leer mas

django-minipressroom

Aquí dejo mi nueva contribución al mundo del software libre, se trata de una aplicación de django muy simple pero funcional que puede ser muy útil para aprender.

La podréis encontrar de nuevo en GitHub https://github.com/dugo/django-minipressroom

La aplicación consiste en una sala de prensa, pensada para mostrar una serie de entradas organizadas por medios (tv, radio, etc)

Click para ver más grande


 De forma muy simple pero ilustrativa podemos encontrar un ejemplo de: modelos, vistas, plantillas , fixtures, admininistración e internacionalización.

Para usarla tendremos que instalar django-transmeta (pip install django-transmeta) que es necesario para algunos modelos.

 

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar por teléfono de numerosas drogas existe. Kamagra es un remedio usado para tratar varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet de las cosas. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Django y cross-origin

A muchos programadores web os sonará, otros quizá no os habréis topado con él.

El problema que voy a tratar en esta entrada es el de cross-domain o cross-origin (dominio cruzado u origen cruzado resp.) y su solución en Django. Para empezar debería hacer una introducción en que casos se puede dar este problema y las políticas que nos restringen poder hacerlo.

 

Supongamos que tenemos nuestra web alojada en http://mydomain.com y que desde https://mydomain.com/login queremos hacer una carga por AJAX de cualquier contenido o información que nos puede ser necesaria, nos topamos con que los navegadores (sobre todo los más modernos) nos impiden dicha petición argumentando algo similar a Access-Control-Allow-Origin not allowed

Leer mas

Auto Lorem Ipsum en Django 1.2.3

Tradicionalmente se han utilizado los textos Lorem Ipsum para hacer rellenos en diseños, Django cuenta con un generador automático de textos Lorem Ipsum a partir de la versión 1.0, para activarlo;

  • Añadimos django.contrib.webdesign a las aplicaciones instaladas (INSTALLED_APPS).
  • En la plantilla ponemos {% load webdesign %} para tener acceso a las templatetags

Ahora simplemente poniendo {% lorem %} tendremos un bonito Lorem Ipsum.

Para más info http://docs.djangoproject.com/en/dev/ref/contrib/webdesign/

Un gran número de parejas jóvenes que se enfrentan a varios problemas de saludos cordiales, tales personas pueden comprar medicamentos en línea recta sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar por teléfono de numerosas drogas existe. Kamagra es un remedio usado para tratare varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Deploying django en un subdirectorio

Acabo de explicar como hacer un deploy de un proyecto django, pero esto se nos puede complicar mucho si lo queremos hacer en un subdirectorio de la URL principal, es decir, queremos acceder a nuestro proyecto mediante la URL http://host/subdirectorio.

Más que nada por las URLs predefinidas de login, logout y profile.

Para esto, añadimos a settings.py:

ROOT_URL = '/subdirectorio/'

MEDIA_URL = ROOT_URL + 'media/'
ADMIN_MEDIA_PREFIX = ROOT_URL + 'media/admin/'
LOGIN_URL = ROOT_URL + 'accounts/login/'
LOGOUT_URL = ROOT_URL + 'accounts/logout/'
LOGIN_REDIRECT_URL = ROOT_URL + 'accounts/profile/'

Haciendo que todas las rutas sean relativas a ROOT_URL.
Ahora en un urls.py añadimos;

url(r'^accounts/logout/$','django.contrib.auth.views.logout',kwargs=dict(next_page=settings.ROOT_URL)),
url(r'^accounts/profile/$','django.views.generic.simple.redirect_to',kwargs=dict(url=settings.ROOT_URL) ),

Para que sepa a que URLs redireccionar. ¡Y listo!

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea recta sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar por teléfono de numerosas drogas existe. Kamagra es un remedio usado para tratare varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Deploying django

Ya que hace poco que he deployeado (=publicado) un par de proyectos Django voy a explicar cómo hacerlo, entre ellos el blog experimental http://dug0.com/lachispaadecuada .

El deploy lo he hecho con Apache y mod_wsgi, recomiendo descargar el módulo y compilarlo, mejor que descargarlo de los repositorios, está más actualizado y a me dio problemas el de los repos.

Una vez instalado el módulo y activado, copiamos el proyecto a un directorio donde contendremos los proyectos Django, pueder ser /var/webapp o similares.

Hecho esto creamos en el directorio principal de nuestro proyecto el fichero django.wsgi que contendrá;

import os
import sys
from django.core.management import setup_environ


path = sys.path.append(os.path.abspath(os.path.dirname(__file__)))
if path not in sys.path:
    sys.path.append(path)

import settings
setup_environ(settings)

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Que vale para cualquier proyecto Django. ¿No recuerda a http://dug0.com/django/script-python-con-entorno-de-django?

Hecho esto, añadimos a Apache;

WSGIScriptAlias / /var/webapp/MyDjangoProject/django.wsgi

Y ahora tenemos la parte dinámica, pero también queremos tener acceso a la estática, para lo que añadimos;

Alias /media /var/webapp/MyDjangoProject/media

<Directory /var/webapp/MyDjangoProject/media>
Order deny,allow
Allow from all
</Directory>

Y para tener acceso a los contenidos estáticos del área administrativa, que deberá estar situada en /media/admin. Creamos un enlace simbólico con el nombre admin en el directorio /var/webapp/MyDjangoProject/media al destino /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media. Que es la ruta donde están los contenidos estáticos, al menos Python 2.6+Django 1.2.3 en Ubuntu.

¡Reiniciamos Apache y a volar!

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar de numerosas drogas existe. Kamagra es un remedio usado para tratare varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Script Python con entorno de Django

Recientemente tuve la necesidad de crearme un script que utilizará el modelo de una aplicación Django sin necesidad de ejecutarlo como una vista, para ello simplemente creamos un script python normal al que añadimos:

from django.core.management import setup_environ

''' Esta ruta debe de ser la del proyecto, en mi caso como el script
estaba en un directorio de aplicación utilizaba la relativa ../'''
sys.path.append(os.path.abspath(os.path.dirname(__file__)+"../"))

import settings

''' Importamos el modelo que nos interese '''
from app.models import *

Ya podemos utilizar el modelo como cualquier vista.

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablar por teléfono de numerosas drogas existe. Kamagra es un remedio usado para tratar varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver el problema qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.

Salvando la oscura era digital; de SQL Server 2000 a Django

Uno de los últimos problemas a los que me he tenido que enfrentar es construir, a partir de una base de datos SQL Server 2000 obsoleta, un modelo Django, que aunque no importa, está alojado en una BD Postgres.

En cierto modo, se parece a este documental, en el cuál se describe lo inaccesible que puede llegar a ser la información debido al rápido avance de los sistemas de almacenamiento.

Esto llegó a preocupar a la CIA, la cual guarda un ejemplar funcional de cada máquina con la que ellos han trabajado, con sistema operativo incluido. De forma que se pueda recuperar la información almacenada en dichos soportes obsoletos, en caso de que sea necesario. También tiene su punto paranoico.

¡Vamos al grano! Para empezar avisaré de que mi experiencia con SQL Server era nula (hasta este momento) y los sistemas con los que trabajo son GNU/Linux y sw libre preferiblemente.

Para ello, después probar con wine sin resultados, lo intenté con una VirtualBox y Windows XP, pero SQL Server tiene cerradas las conexiones  TCP, después de probar con diversos SP del mismo sin lograr conectar (para esto tenemos la plugin de Python pymssql, o podemos hacer un telnet 127.0.0.1 <puerto que sea>) resulta que SQL Server 2000 tiene cerrado el puerto TCP por seguridad… ya sabemos lo que entiende esta gente por seguridad…

SQL Server no habre el puerto TCP para conexiones entrantes, así que se identifica con credenciales de Windows y viendo el panorama decidí que no me interesaba meterme más en el tema, por lo que opté por exportar la BD entera a otro sistema, para esto utilicé el driver (que ya tenía instalado) MySQL ODBC, consiguiendo pasar al base de datos SQL Server virtualizada a una MySQL en host con GNU/Linux.

A partir de aquí me deshice de la VirtualBox y programé el parser.

En general, cuando requería sacar un objeto de la BD hacía la consulta a la base de datos en SQL “a pelo”, con los valores resultantes instanciaba las clases y las guardaba. Los problemas más destacables que tuve que afrontar fueron:

  • Elementos repetidos: Para esto almacenaba los elementos en un diccionario (par id en sqlserver-objeto), capturaba la excepción KeyError, si entraba en esta el elemento no existía y era creado, en caso contrario era descartado.
  • Claves externas huérfanas: ¿Tiene SQL Server 2000 restricciones en claves externas? Si las tiene la gente que programó la BD no las tuvo en cuenta, para esto consultaba el diccionario de la entidad maestro y capturaba de nuevo la excepción KeyError, en este caso si existía estábamos de suerte y el elemento era guardado, en caso contrario el elemento estaba huérfano y era descartado.
  • Relaciones muchos a muchos: Estas relaciones se modelan como una tabla id-id, para obtenerlas hacía una consulta cruzada en SQL para cada elemento, obteniendo así sus elementos relacionados, aquí aplicaba el mismo procedimiento que en el caso anterior sólo que con varios resultados.

Y mi pregunta es; ¿cómo han programado esta gente la BD?

Un gran número de parejas jóvenes que se enfrentan a varios problemas de salud, tales personas pueden comprar medicamentos en línea sin orden. Antibióticos de penicilina muy populares que combaten las bacterias. Estos remedios no tratan una infección viral por ejemplo un resfriado común. Vamos a hablare de numerosas drogas existe. Kamagra es un remedio usado para tratar de varias quejas. ¿Qué sabes sobre “Comprar Kamagra Oral Jelly“? Actualmente muchos hombres buscan la frase exacta “comprar kamagra 100mg” en Internet. (Leer más “Kamagra Oral Jelly“). Debido a que algunos de los problemas sexuales son emergencias médicas, es bueno conocer los síntomas. Ciertas personas que usan este medicamento generalmente no tienen efectos secundarios graves Kamagra. El farmacéutico necesita resolver el problema qué dosis es la mejor en su caso. Si el medicamento se usa según sea necesario, es poco probable que esté en un horario de dosificación.