Django-hateconf 0.2.3

Odio configurar cosas, y mas odio olvidarme que mi settings.py de django esta versionado y subir algún password mio a un repo publico.

Así que probé varias soluciones de archivos de conf distribuidos pero todos metían conceptos nuevos que no me interesaba descular.

En fin… hice esto

django-hateconf

Las premisas eran:

  • el setttings.py original es suficiente información para utilizar de templates y de schema para los archivos externos.
  • Las conf pueden guardarse en varios formatos a gusto del usuario del proyecto.

Bueno a los bifes:

  • Paso 1:  Instalar

$ pip install django-hateconf

o

$ easy_install django-hateconf

o bajarlo de aca: https://bitbucket.org/leliel12/django-hateconf/

  • Paso 2: Crear proyecto django

$ django-admin start-project myproject
  • Paso 3: Editar el “settings.py” y agregar a la variable INSTALLED_APPS, django_hateconf.

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',

"django_hateconf",
)
  • Paso 4: Editar al “settings.py” de myproject y agregar esta variable

SETTINGS_BIND = {
    "file":
        "archivo.yaml",
    "bind":
        ("DATABASES", "DEBUG"),
    "header":
        "Este es un archivo de configuracion del proyecto myproject"
}

Esta diccionario tiene las siguientes llaves:

  • file: El cual es un path a un archivo que va a contener la configuración que va  a utilizar nuestro proyecto. El formato del archivo se deduce desde su extensión (NO es case sensitive); las cuales pueden ser:
  • “.yml” o “.yaml”  para  formato yaml YAML (
  •  “.json” para formato JSON (http://www.json.org/).
  •  “.xml” para formato XML (http://www.w3.org/XML/).
  •  “.cfg” o “.ini” pata formato que consiste en secciones que empiezan con la cabecera “[section]”y continua con combinaciones de “llave = valor” en el estilo
    de la RFC 822.
  • bind: Es una lista o tupla que contiene los nombres de las variables de settings.py que se deseamos que se configuren desde nuestro archivo. Con este campo, django-hateconf, busca por su nombre a las  variables en el settings.py y con su contenido genera un template en el formato especificado en el campo file. Las reglas para el contenido del campo bind son:
  • Las variables deben existir en el settings.py
  • No se puede “bindear” SETTINGS_BIND
  • Si en nuestro archivo declarado en file, por ejemplo, bindeamos la variable “TIME_ZONE” y esta no esta en el campo bind, django-hateconf  ignorará el bindeo y se utilizara el valor dentro del settings.py,
  • El valor que se asigne a las variables dentro de nuestro file, tiene que ser un valor “casteable” al que tenemos asignado a la misma variable dentro del settings.py. Para entender si decimos que la variable “A = 1” en nuestro settings.py cualquier cosa que pueda convertirse automaticamente a un “int” puede existir dentro de nuestro archivo declarado en file. Un caso particular es el valor None el cual acepta cualquier objeto sin castearlo cuando se bindea.
  • Si el valor es una lista, tupla, diccionario o set; el casteo se hace recursivamente. Asi que los valores internos a estas colecciones también deben ser casteables.
  • header: Es el comentario que llevara en la cabecera el archivo declarado en file. Este campo es opcional.
  • Paso 5: Agregar al final de “settings.py” estas dos lineas:

import django_hateconf
django_hateconf.patch(locals())
  • Paso 6: Ejecutar…

$ python manage.py settings --sync

Con esto deberia haberse creado un nuevo archivo “archivo.yaml” en la misma carpeta del proyecto exactamente así:

# Este es un archivo de configuracion del proyecto myproject
– DATABASES:
default:
ENGINE: django.db.backends.dummy
HOST: ”
NAME: ”
OPTIONS: {}
PASSWORD: ”
PORT: ”
TEST_CHARSET: null
TEST_COLLATION: null
TEST_MIRROR: null
TEST_NAME: null
TIME_ZONE: America/Chicago
USER: ”
– DEBUG: true

Bueno para configurar su database solo tiene que editar su archivo.yaml.

Las otras opciones que da django hateconf son:

python manage.py settings --path                 Dice donde esta el archivo de configuración
 python manage.py settings --show                 Muestra el settings ya mergeado.
 python manage.py settings --sync                 Sincroniza los archivos
 python manage.py settings --vars     Muestra los valores de las variables ya bindeados
 python manage.py settings --formats              Lista los formatos validos para los archivos de configuración
 python manage.py settings --validate             Busca errores en nuestro archivo de bindeo
 python manage.py settings -h, --help             Muestra una ayuda

Links al proyecto

Anuncios

Agenda de Django Day Córdoba 2011 lista

El evento django day que va a realizarse en Córdoba el 2/07/2011 ya tiene confirmada su agenda:

http://djangoday.wordpress.com/agenda-de-charlas/

Django-Day Córdoba 2011

El 2 de julio en la utn-frc hay un django day.

Mas info

Consejo django

Nunca creen una base sqlite en windola y traten de correrla el linux con django.

Me exploto en plena pre-entrega de tesis

SteamEnd 0.5 “Tim”

Publicado la primer versión de Steamend.
Un motor AGPL3 altamente configurable para desarrollar juegos a lo “Ogame” (Browser Games) que utiliza tecnología python+yaml+django

El motor no esta perfecto y tiene unas pequeñas fallas, pero ya puede tenerse una idea de lo que queremos lograr.

Funcionalidades:

  • Instalación de un juego
  • Darse de alta y modificar perfil de usuario
  • Explorar un mundo

Links:

SteamEnd HomePage