martes, 11 de marzo de 2014

Tutorial básico de django south



South es una app de django que permite modificar la estructura de la base de datos de una aplicación django cuando cambiamos el modelo (models.py).

El comando syncdb sólo crea nuevas tablas, pero no modifica tablas existentes, así que si en el modelo de una aplicación renombramos un campo de una tabla existente syncdb no realizará ese cambio en la base de datos. A este tipo de cambios en la base de datos se les denomina “migración del esquema” y es de lo que se encarga South.

Instalación

  1. pip install south
  2. Agregar “south” a INSTALLED_APPS
  3. Ejecutar syncdb antes de crear nuestros propios modelos. Está será la última (y única) vez, que necesitamos ejecutar este comando
  4. manage.py syncdb

Usar south en un una app nueva

  1. Crear la aplicación, y empezar a rellenar el models.py
  2. Crear el script de migración inicial
  3. python manage.py schemamigration app_name --initial
  4. Hacer los cambios en la bbdd

    python manage.py migrate app_name

Usar south en una app ya creada


python manage.py convert_to_south app_name

En el caso de que haya otros desarrolladores en el equipo y cada cual esté usando su propia instancia de la base de datos, el resto de desarrolladores ejecutará:

python manage.py migrate app_name --fake


Migración de modelos

  1. Modificamos el models.py de nuestra aplicación
  2. Crear un nuevo script de migración
  3. python manage.py schemamigration app_name --auto
  4. Aplicar la migración a la bbdd

    python manage.py migrate app_name

Como funciona

    Se puede decir que South funciona en varios niveles de abstracción disintos.
  • Añade una tabla en la base de datos que mantiene el estado actual de la base de datos. Es decir, guarda que migraciones se han aplicado.
  • Crea un directorio en la applicación, donde guarda para cada migración un fichero (script) con la información necesaria para realizarla
  • Añade varios comandos al manage.py

Los ficheros de migración generados en deben subirse al repositorio para que el resto de los desarrolladores pueda también realizar la migración.

Referencias

domingo, 9 de marzo de 2014

Usando Flatpages

Flatpages

A menudo tendrás una aplicación Web impulsada por bases de datos ya funcionando, pero necesitarás agregar un par de páginas estáticas, tales como una página Acerca de o una página de Política de Privacidad. Sería posible usar un servidor Web estándar como por ejemplo Apache para servir esos archivos como archivos HTML planos, pero eso introduce un nivel extra de complejidad en tu aplicación, porque entonces tienes que preocuparte de la configuración de Apache, tienes que preparar el acceso para que tu equipo pueda editar esos archivos, y no puedes sacar provecho del sistema de plantillas de Django para darle estilo a las páginas.
La solución a este problema es la aplicación flatpages de Django, la cual reside en el paquete django.contrib.flatpages. Esta aplicación te permite manejar esas páginas aisladas mediante el sitio de administración de Django, y te permite especificar plantillas para las mismas usando el sistema de plantillas de Django. Detrás de escena usa modelos Django, lo que significa que almacena las páginas en una base de datos, de la misma manera que el resto de tus datos, y puedes acceder a las flatpages con la API de bases de datos estándar de Django.
Las flatpages son identificadas por su URL y su sitio. Cuando creas una flatpage, especificas con cual URL está asociada, junto con en cuál(es) sitio(s) está (para más información acerca de sitios, consulta la sección “Sites”).

Usar flatpages

Para instalar la aplicación flatpages, sigue estos pasos:
  1. Agrega 'django.contrib.flatpages' a tu INSTALLED_APPSdjango.contrib.flatpages depende de django.contrib.sites, asi que asegúrate de que ambos paquetes se encuentren enINSTALLED_APPS.
  2. Agrega 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware' a tu variable de configuración MIDDLEWARE_CLASSES.
  3. Ejecuta el comando manage.py syncdb para instalar las dos tables necesarias en tu base de datos.
La aplicación flatpages crea dos tablas en tu base de datos: django_flatpage y django_flatpage_sitesdjango_flatpage simplemente mantiene una correspondencia entre URLs y títulos más contenido de texto.django_flatpage_sites es una tabla muchos a muchos que asocia una flatpage con uno o más sitios.
La aplicación incluye un único modelo FlatPage, definido en django/contrib/flatpages/models.py. El mismo se ve así:
from django.db import models
from django.contrib.sites.models import Site

class FlatPage(models.Model):
    url = models.CharField(maxlength=100)
    title = models.CharField(maxlength=200)
    content = models.TextField()
    enable_comments = models.BooleanField()
    template_name = models.CharField(maxlength=70, blank=True)
    registration_required = models.BooleanField()
    sites = models.ManyToManyField(Site)
Examinemos cada uno de los campos:
  • url: La URL donde reside esta flatpage, excluyendo el nombre del dominio pero incluyendo la barra (/) inicial (por ej. /about/contact/).
  • title: El título de la flatpage. El framework no usa esto para nada en especial. Es tu responsabilidad visualizarlo en tu plantilla.
    content: El contenido de la flatpage (por ej. el HTML de la página). El framework no usa esto para nada en especial. Es tu responsabilidad visualizarlo en tu plantilla.
  • enable_comments: Indica si deben activarse los comentarios e esta flatpage. El framework no usa esto para nada en especial. Puedes comprobar este valor en tu plantilla y mostrar un formulario de comentario si es necesario.
  • template_name: El nombre de la plantilla a usarse para renderizar esta flatpage. Es opcional; si no se indica o si esta plantilla no existe, el framework usará la plantilla flatpages/default.html.
  • registration_required: Indica si se requerirá registro para ver esta flatpage. Esto se integra con el framework de autenticación/usuarios de Django.
  • sites: Los sitios en los cuales reside esta flatpage. Esto se integra con el framework sites de Django, el cual se trata en la sección “Sites” en este capítulo.
Puedes crear flatpages ya sea a través de la interfaz de administración de Django o a través de la API de base de datos de Django. Para más información, examina la sección “Agregar, modificar y eliminar flatpages”.
Una vez que has creado flatpages, FlatpageFallbackMiddleware se encarga de todo el trabajo. Cada vez que cualquier aplicación Django lanza un error, este middleware verifica como último recurso la base de datos de flatpages en búsqueda de la URL que se ha requerido. Específicamente busca una flatpage con la URL en cuestión y con un identificador de sitio que coincida con la variable de configuración SITE_ID.
Si encuentra una coincidencia, carga la plantilla de la flatpage, o flatpages/default.html si la flatpage no ha especificado una plantilla personalizada. Le pasa a dicha plantilla una única variable de contexto: flatpage, la cual es el objeto flatpage. Usa RequestContext para renderizar la plantilla.
Si FlatpageFallbackMiddleware no encuentra una coincidencia, el proceso de la petición continúa normalmente.
Nota
Este middleware sólo se activa para errores 404 (página no encontrada) – no para errores 500 (error en servidor) u otras respuestas de error. Nota también que el orden de MIDDLEWARE_CLASSES es relevante. Generalmente, puedes colocar el FlatpageFallbackMiddleware cerca o en el final de la lista, debido a que se trata de una opción de último recurso.

Agregar, modificar y eliminar flatpages

Puedes agregar, cambiar y eliminar flatpages de dos maneras:

Vía la interfaz de administración

Si has activado la interfaz automática de administración de Django, deberías ver una sección “Flatpages” en la página de índice de la aplicación admin. Edita las flatpages como lo harías con cualquier otro objeto en el sistema.

Vía la API Python

Como ya se describió, las flatpages se representan mediante un modelo Django estándar que reside en django/contrib/flatpages/models.py. Por lo tanto puede acceder a objetos flatpage mediante la API de base de datos Django, por ejemplo:
>>> from django.contrib.flatpages.models import FlatPage
>>> from django.contrib.sites.models import Site
>>> fp = FlatPage(
...     url='/about/',
...     title='About',
...     content='<p>About this site...</p>',
...     enable_comments=False,
...     template_name='',
...     registration_required=False,
... )
>>> fp.save()
>>> fp.sites.add(Site.objects.get(id=1))
>>> FlatPage.objects.get(url='/about/')
<FlatPage: /about/ -- About>

Usar plantillas de flatpages

Por omisión, las flatpages son renderizadas vía la plantilla flatpages/default.html, pero puedes cambiar eso para cualquier flatpage con el campo template_name en el objeto FlatPage.
Es tu responsabilidad el crear la plantilla flatpages/default.html. En tu directorio de plantillas, crea un directorio flatpages que contenga un archivo default.html.
A las plantillas de flatpages se les pasa una única variable de contexto: flatpage, la cual es el objeto flatpage.
Este es un ejemplo de una plantilla flatpages/default.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
    "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>{{ flatpage.title }}</title>
</head>
<body>
{{ flatpage.content }}
</body>
</html>


fuentes:

http://django-book.mkaufmann.com.ar/chapter14.html#flatpages

viernes, 7 de marzo de 2014

Como trabajar sin conexion en Google Chrome


Hoy trabajando con un amigo, vi que desconecto su conexión wifi para probar una pagina que había descargado para su maquina. Y le comente que los navegadores tienen esa opción. Para trabajar "sin conexión". Bueno, mejor rectifico lo que le dije con este post, Firefox y IExplorer tienen. Chrome no lo tiene, y lo siento para los seguidores de Safari pero no indague sobre Safaris ;) .

Bueno para Chrome hay una manera, aunque parece un poco "tricky", explicare primero para IE y para Firefox ya que son un pastel comido :) . Empecemos por orden de calidad :P :

FireFox - se hace click en el botón FireFox y después seleccionamos Desarrollador Web ( o en ingles, Web developer, o en frances, Dévelopement web ) y despues seleccionas en Trabajar sin conexion (o en ingles, "Work Offline", o en frances 'Travailler hors connexion' ) .

Internet Explorer- Seleccionamos 'Herramientas' y después "Trabajar sin conexión"

En Chrome no hay un botón de "trabajar sin conexión" pero podemos conseguir el mismo objetivo con un poco de magia.

Una forma efectiva y menos dolorosa que desconectarse y volverse a conectarse de la red, es crear un servidor proxy que apunte a tu propria PC. Pero el secreto esta en hacerlo desde chrome solamente, ya que de esta manera evitarías que otros programas que usen internet se desconecten y demás.

Hay muchas extensiones disponibles para Chrome, pero muchas están diseñadas para cosas privadas y simplemente redireccionar el trafico sobre internet, para proveer un poco de anonimato. La extensión que voy a usar aquí se llama: "Quick & Dirty Proxy Flipper", para descargarlo e instalarlo haga click aquí.

Una vez instalado, aparecerá el icono del servidor proxy.






Selecciona http://localhost:8080 a no ser que seas un desarrollador y estés corriendo algún servidor en esa dirección. De esa manera ya estarás offline, también es importante tener en cuenta de que Chrome tiene una memoria Cache y algunas cosas parecerán tener acceso a internet, pero en realidad no es asi.


Para volver a la normalidad basta con ir a la extensión y seleccionar la opción system.


Espero que les haya ayudado ;)

miércoles, 5 de febrero de 2014

Installing LaTeX on Mac OS X

Previously, I wrote a tutorial on how to install LaTeX on Windows. This time, I’ll do the same thing for Mac OS X. I’m using OS X 10.7 (Lion), but I’m sure this guide still holds for Mountain Lion, Leopard or earlier versions of OS X. The scope of this tutorial is to show you how to install the complete LaTeX package, including my favorite free editor (Texmaker). The installation will be a lot shorter than that for Windows users :)

Installing MacTeX


The governing LaTeX distribution for Mac OS X is MacTeX. This distribution is actually an all-in-one package as it not only contains the LaTeX distribution, but also several editors and other useful stuff. So let’s cut to the case: head over to the MacTeX website (or here). If you follow the link you can immediately download it. Note that this download is about 2 GB and thus may take a while to be downloaded (depending on your internet connection).

Once you’ve downloaded the distribution, install it by double-clicking the .dmg file. The rest will speak for itself, as the installation procedure is just the same as any other Mac software.

Now, open your Applications folder and search for a folder called TeX. This contains everything you need, as can be seen here. TeXShop and TeXworks are both open source LaTeX editors, released under the GPL. If you want to use one of these, you can start right away. Personally I prefer another editor: Texmaker. It will be shown in the next section how to install this one (which is no rocket science ;)). Furthermore in the TeX folder we see BibDesk, a handy tool for maintaining references for BibTeX. We also see LaTeXit, a great tool that can be used to add LaTeX equations to Powerpoint for instance.

Installing Texmaker


As I said before, you already get two LaTeX editors with the MacTeX installation. However, I’m used to Texmaker so I’ll show you how to install this editor as del (this one is really easy). Head over to the Texmaker website. Next, go to the download section in the menu on the right and download Texmaker. You probably need the 64 bit version, depending on your Mac hardware. Once you downloaded the file, drag and drop it to the Applications folder and your ready to LaTeX!
Anything else?

That’s it? Yes! However, for the control freaks among us there is an extra distribution for MacTeX called MaxTeXtras. You can find it here. This download contains several editors (like Texmaker), utilities, tools and demos you might find handy. Have fun!

source

Installing LaTeX on Windows

In this guide, I will show you how to install the needed components of LaTeX on Windows. In this tutorial Windows 7 is used, but the steps will be similar for other versions.

Installing MiKTeX


MiKTeX is a free TeX distribution for Windows systems. The current version is MiKTeX 2.9. The survey starts at the MiKTeX website. In the menu, click on MiKTeX 2.9 and scroll down to download the MiKTeX 2.9 Net Installer. This is the installation file that will be used to download the MiKTeX distribution. Run the file once it is downloaded. The installation wizard of MiKTeX will now pop up.

First, agree with the copying conditions and click next. In the following window, click ‘Download MiKTeX’ to download the distribution to a directory on your computer. Again, click next. Next you will be prompted whether you want install Basic or Complete MiKTeX. I recommend you to download the complete distribution, since it will save a lot of time in the future. Note that the complete package is quite large (1.2 GB) and it takes a while to install. So you’ll need a steady internet connection and enough space on your hard-disk. The next thing you have to choose is the source where the package will be downloaded from. Search for a source that is located in your country, or nearby. After you click next you’ll have to choose a directory where MiKTeX will be installed. This was the last step, the downloading will now begin. Note that this installation will take a while.

Once its finished, navigate to the directory where you’ve installed MiKTeX. There are a lot, really a lot, of files here. However, there is only one .exe file. Run this file (called setup-2.9.3959.exe for this version). This time, the real installation of MiKTeX will take place. This process will again be quite lengthy.

Installing the editor


In order to actually compile LaTeX documents, we need an editor. For windows, the most used editors are probably TeXnicCenter and Texmaker. I might add an overview of all editors in the future, but that is not where this tutorial is about. Personally, I like Texmaker the most, so let’s install that editor right away!

On the Texmaker website, go to the download section to download Texmaker for Windows. The current version is 2.2.1. We’re going to download the Executable file (.exe). When the downloading is complete, don’t run the installation wizard! Wait for the MiKTeX installation to be completed. This way, Texmaker will automatically configure the settings for you. Once you’re ready to install Texmaker, agree to the GPL license by clicking ‘I Agree’ and choose a directory to install the editor. Done! Wow, that was fast :-)

The installation of LaTeX is now complete. A guide to create your first document might be added in the future. For now, here are some references.

source:

viernes, 13 de diciembre de 2013

Installing pygame on OS X with a Homebrew Python 2.7 install

Solved this surprisingly quickly today thanks in part to this post by Basti am. His post was mostly correct but some parts have changed, so I’m going to document how I got it working. Note that this method will miss out PNG, SCRAP, and PORTMIDI support. Good luck getting those working!
  1. Install Python via Homebrew:
    brew install python
  2. Install pip (because one package manager isn’t enough, right Python?):
    easy_install pip
  3. Install numpy with pip:
    pip install numpy
  4. Install the pre-requesites for pygame with Homebrew:
    brew install sdl sdl_ttf sdl_image sdl_mixer
  5. Download the pygame source. (in my case was: pygame_version) It’s one of the top links. Extract it somewhere and go to that directory in a terminal.
  6. Run python config.py.
  7. Fix the Setup file to point to your Homebrew SDL libraries, not OS X ones (which are missing stuff). Change the lines starting SDL, FONT, IMAGE, and MIXER to read:
    SDL = -I/usr/local/include/SDL -L/usr/local/lib -lSDL
    FONT = -lSDL_ttf
    IMAGE = -lSDL_image
    MIXER = -lSDL_mixer

    Below those definitions are lines commented out that enable/disable features. Remove the # to uncomment the ones you want.
  8. Run python setup.py install.
  9. Success!














source: http://jalada.co.uk/2011/06/17/installing-pygame-on-os-x-with-a-homebrew-python-2-7-install.html



lunes, 28 de octubre de 2013

Downloading an Entire Web Site with wget



If you ever need to download an entire Web site, perhaps for off-line viewing, wget can do the job—for example:

$ wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
         www.website.org/tutorials/html/





This command downloads the Web site www.website.org/tutorials/html/.

The options are:

--recursive: download the entire Web site.

--domains website.org: don't follow links outside website.org.

--no-parent: don't follow links outside the directory tutorials/html/.

--page-requisites: get all the elements that compose the page (images, CSS and so on).

--html-extension: save files with the .html extension.

--convert-links: convert links so that they work locally, off-line.

--restrict-file-names=windows: modify filenames so that they will work in Windows as well.

--no-clobber: don't overwrite any existing files (used in case the download is interrupted and
resumed).


source: http://www.linuxjournal.com/content/downloading-entire-web-site-wget