rellenar formulario django

escrito por Angel
en curro, django
3Sep 08

pues nada… habiendo tenido la enésima pelea con el sr. django, no es que haya conseguido algo muy meritorio pero bueno… puede ser que a alguien le pueda interesar y dado < ironia >la gran cantidad de documentación y código de ejemplo que hay por internet de django < /ironia > pues me animo a publicarlo.

primero pongamos un poco en antecedentes de cual era la necesidad que yo tenía, como lo tenía hecho antes y como lo he intentado hacer ahora (porque aún no me funciona al 100 % bien como yo quiero).

tengo un tipo de datos llamado “Concepto” el cual tiene asociadas unas “Keywords” y necesitaba que estos Conceptos y sus Keywords asociadas se pudieran duplicar, de forma que se creara una copia a través de la interfaz web con solo hacer un clic, bien en un principio bastó con hacer una copia del objeto y sencillamente redireccionar al formulario de edición con el nuevo concepto duplicado. (si a alguien le interesa esta version le puedo indicar como lo hice, o como estaba hecho) el problema de esta versión es que guarda el nuevo concepto si o si, es decir que si el usuario se lo piensa mejor y realmente no desea guardar ese nuevo concepto duplicado, ya está guardado en la base de datos, por lo cual ya se ha creado.
de ahí surge la necesidad de hacerlo de otra forma, de obtener el formulario de añadir un nuevo concepto y rellenarlo de alguna forma.
se puede hacer de varias formas, con una pequeña trampa que el sr. django se come de maravilla y contento, consiste en rellenarle el diccionario del POST o del GET.
si rellenamos el diccionario del POST, podemos tener problemas, ya que por defecto cuando en nuestro views.py tenemos algo así:
result = django.contrib.admin.views.main.add_stage( request, 'nombreAplicacion', 'concept', False, '','/'+apachePath+'/concept/')
ese método de django que es el que nos muestra el formulario y el mismo nos lo guarda, lo hace mirando si hay una determinada información en el diccionario del POST.
si le rellenamos los valores de los campos del formulario que nosotros de forma automática queremos rellenar mediante POST, nos vamos a encontrar con que directamente nos va a guardar el nuevo concepto duplicado, sin darnos opción a modificar nada, es decir, no nos va a mostrar el formulario para editar.
para hacer que nos deje modificarlo se me ocurrió, usar primero el diccionario del GET, para sugerirle los valores que quiero que se muestren en el formulario y dejar que el resto de la operación transcurra de forma normal, por suerte funcionó :)
viene a quedar algo así:

def duplicateConcept(request,conceptId) :
import django.views.generic.list_detail
import django.contrib.admin.views.main
import django.http
from django.views.generic.simple import redirect_to
from config import apachePath
from database import cargaDatosConcepto, cargaKeywordsConcepto
concepto = cargaDatosConcepto(conceptId)
strinstance = 'name='+concepto[1]+’_copia’
if concepto[2] :
strinstance += ‘&parent=’+str(concepto[2])
keywords = cargaKeywordsConcepto(conceptId)
i = 0
for (key,type) in keywords :
strinstance += ‘&keyword.’ + str(i) + ‘.keyword=’ + key
strinstance += ‘&keyword.’ + str(i) + ‘.type=’ + type
i += 1
request.GET= django.http.QueryDict(strinstance)
result = django.contrib.admin.views.main.add_stage( request, ‘nombreAplicacion’, ‘concept’, False, ”, ‘/’+apachePath+’/concept/’)
return result

y con esto conseguimos el efecto deseado, el problema, es que las keywords son una entidad débil de los conceptos, es decir que un concepto tiene asociadas una serie de keywords y que los keywords por si sólos carecen de importancia además de que por si sólos no existen, pues lo dicho el problema es que las keywords que se asocian al concepto se muestran en un formulario adjunto al del concepto y que no consigue rellenar el formulario de las keywords para más de 3 keywords… por lo cual al hacer el duplicado se pierde una posible gran parte de la información.

eso es todo por el momento.


php + mysql en mac (leopard)

escrito por Angel
en mac, sysadmin
21Aug 08

bueno… pues después de varios días perdiendo un poco el tiempo con ello ya lo he conseguido! por fin tengo en mi leopard un apache con php y mysql funcionando.

trás mis primeras preguntas al sr. google y desanimarme bastante, tras leer a mucha gente diciendo que no era posible, probar con xampp con complete apache y otros… al final encontré una lucezita al final del túnel en applesana curiosamente todo se simplificaba y a pesar de ser un post de tiger me ha servido como guía, hace falta remarcar que complete apache en teoria si que funciona en mac, pero solo para procesadores ppc, no he sabido/podido encontrar una version para procesadores intel, ya que había modos de compilarlo de forma manual, pero al parecer hacen faltan unas librerías de desarrollo de macos que no he sabido encontrar tampoco… si soy malo de cojones buscando en google, que pasa? xD

pues eso… resulta que ya tenemos un apache en leopard, lo único que hay que hacer en un primer paso es activar para ese apache el php. esto lo hacemos editando el fichero /etc/apache2/httpd.conf y buscando una línea donde pone esto otro:

#LoadModule php5_module libexec/apache2/libphp5.so

a esta línea le tenemos que quitar el # que tiene al principio y luego hacer lo siguiente:

sudo su
cp /etc/php.ini.default /etc/php.ini
apachectl restart

en el fichero /var/log/apache2/error_log podemos ver si ha tenido lugar algún error al reiniciar apache.

ahora lo que tenemos que hacer es instalar el servidor de mysql, para ello descargamos el paquete mysql para macos. para instalarlo sencillamente es como si se tratara de cualquier otro tipo de dmg para mac, al hacer doble clic se monta una unidad y tenemos que instalar primero el package generico, luego el startupitem y finalmente el prefPane.

una vez hecho todo esto ya estamos. hay que tener en cuenta que debemos tener en las preferencias de compartir activado el “compartir web” en las preferencias de nuestro sistema. y que el directorio por defecto que monta apache es /Users/nombre_de_usuario/Sites (a través de la consola) y a través del finder y en tu home se llama “Web”.

eso es todo por el momento, creo que no me olvido nada. espero que sirva de ayuda :)


ispconfig

escrito por Angel
en php, sysadmin, web
31Jul 08

llevo ya un tiempo pensando en que me tengo que pelear con ispconfig y teniendo algunas pequeñas peleas con él… la instalación digamos que no es complicada pero si larga ( a ver si en los próximos días o pongo un link o me curro yo un mini-tutorial para debian) … la idea es hacer un pequeño tutorial de como se instala y otro de como hacer las tareas básicas para las que sirve ispconfig (o lo uso yo :P)

basicamente como sus siglas indican es un configurador de Internet Service Provider, lo que viene a ser que es un gestor de alojamientos compartidos, necesita instalarse en el servidor para poder actuar y facilitar la tarea al gestor del alojamiento, ya que lo que nos permite es gestionar un servidor que quieres compartir/realquilar, de forma transparente para el usuario, encargándose él de la configuración de los ficheros y permitiéndote a ti cambiar las configuraciones a través de la interfaz web de administración que trae.

para los que sean curiosos y no tengan bastante con esta mini-explicación os dejo aqui el enlace a la página web del proyecto ispconfig.

yo personalmente he estado siguiendo unos tutoriales de howtoforge para refinar la instalación de debian e instalar todo lo necesario para ispconfig.

algo más que decir acerca de ispconfig, pues que, de momento se le puede considerar como una alternativa a otros gestores de alojamiento compartido como plesk y directadmin por ejemplo, que es libre, es decir que no hay que pagar desórbitadas cifras para podertelo instalar y usar y que no tiene limitaciones a la hora de usuarios que crees. a parte de todo eso, está programado en php5 y va coordinado con una base de datos de mysql para almacenar sus datos.

offtopic: he editado el post :P antes era más cutrillo xD (19/08/2008)


mi mesa

escrito por Angel
en curro
10Jun 08


Trac (debian)

escrito por Angel
en linux, sysadmin, web
22May 08

Trac es un “gestor de proyectos” via web para programadores/desarrolladores. Esta es la web del proyecto Trac. En ella podemos encontrar casi todos los aspectos tanto como la instalación como la configuración de sus opciones.

Básicamente a mi las funcionalidades de trac que me han interesado han sido las siguientes:

- Sistema de Tickets
- Navegación por repositorios SVN
- Enlace entre Tickets y SVN

Yo lo he instalado teniendo en cuenta el siguiente entorno (algunas de estas cosas si no se tienen instaladas se deberian instalar):

- Distribución Linux Debian Etch
- Apache 2
- MySQL 5
- python 2.4

Necesitaremos crear una base de datos en MySQL para el trac, así como un usuario, y hemos de recordar de darle permisos a ese usuario para acceder a esa tabla.

Véamos primero cuales son las dependencias, para ver que paquetes y/o componentes necesitamos a priori antes de meternos con la instalación propiamente dicha de trac.

- modulo de python para mysql
- modulo de python para subversion
- modulo de apache para python
- modulo de apache para autentificación mediante mysql

sudo apt-get install python-mysqldb python-subversion libapache2-mod-python

para que funcione el mod_python, hemos de ir a /etc/apache2/mods-enabled y comprobar que esta activado el modulo, lo que hará falta seguramente para que funcione es reiniciar apache.

hasta aquí las instalaciones que podemos hacer a través de apt-get, lo peor del tema es que si queremos tener la autentificación mediante mysql en debian etch, no hay un paquete especifico que puedas instalar a través de apt, lo que comporta bajar el modulo de apache en código fuente, compilarlo y enlazarlo desde apache. digamos que es un currillo, vamos a verlo.

para poder compilar el modulo de apache para mysql necesitamos unas dependencias, que son las siguientes y se pueden instalar a traves de apt.

sudo apt-get install libmysql++-dev patch

en funcion de la versión de apache que tengamos (threaded o preforked), hemos de instalar alguno de estos dos paquetes tambien a través de apt. como sabemos que version tenemos, pues así:

dpkg -l | grep apache2

sencillamente en la salida de este comando miramos si tenemos preforked o threaded y instalamos o bien apache2-threaded-dev o bien apache2-prefork-dev.

sudo apt-get install apache2-threaded-dev | apache2-prefork-dev

nos arremangamos que viene lo divertido, descargamos el codigo fuente del módulo :

wget http://mesh.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-3.0.0.tar.gz

la mala noticia es que si descargamos solamente eso y lo intentamos compilar, va a pasar lo que me pasó a mi al principio, que es para flipar con la de errores que da a la hora de intentar compilar el modulo, por lo tanto y tras horas y horas de búsqueda (bueno vale no fueron tantas horas) encontré una posible solución y consiste en un archivo de diff, que cambiara todas las lineas que no le gustan al compilador, por otras que le gustan más y que por lo tanto nos permitiran compilar el modulo sin problemas. descargamos el patch con wget por ejemplo.
descomprimimos el modulo y le aplicamos el patch

tar xvfz mod_auth_mysql-3.0.0.tar.gz
patch -p0 < mod_auth_mysql-3.0.0-apr1x.patch\?view\=co

compilamos el modulo

cd mod_auth_mysql-3.0.0
apxs2 -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
apxs2 -i mod_auth_mysql.la

esto únicamente nos ha creado el modulo en el sistema operativo, ahora necesitamos hacer que apache se entere de que tiene ese modulo y que lo puede usar. por lo tanto nos tenemos que ir a /etc/apache2/mods-enabled y crear un fichero que se llame por ejemplo mod_auth_mysql.load y poner dentro de el lo siguiente:

LoadModule mysql_auth_module /usr/lib/apache2/modules/mod_auth_mysql.so

una vez hecho esto, hemos de activar el modulo

cd /etc/apache2/mods-available
ln -s ../mods-enabled/mod_auth_mysql.load mod_auth_mysql.load

solo nos queda reiniciar apache para que reconozca el nuevo modulo.

ahora que ya tenemos todas las dependencias ya estamos listos para instalar trac propiamente dicho, bueno, nos falta la última dependencia, el instalador de trac ;) y lo usamos de la siguiente forma por ejemplo:

sudo python ez_setup.py
sudo easy_install Trac==0.11rc1
easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11rc1

y con esto ya tenemos trac instaladito.

ahora viene la gracia, de que nos sirve tenerlo instalado? pues de nada si no le comenzamos a dar faena.

yo para el caso he creado un usuario en mi debian para trac de forma que tengo /home/trac y será alli donde ire poniendo los proyectos, de forma que si tengo myproject el path a ese proyecto será /home/trac/myproject, pero estos directorios no los hemos de crear nosotros, de eso se encarga el señor trac-admin que ya deberíamos tener instalado en nuestro sistema.

véamos como va esto.

trac-admin /path/to/my/project initenv

este programa nos pregunta, el nombre del proyecto, la base de datos con la que lo queremos linkar, la pagina de las opciones de environment de trac a mi concretamente me fue muy útil para el linkado del trac con la base de datos, ya que te explica como tienes que especificarle la base de datos que quieres usar. más tarde nos pregunta, el tipo de sistema de control de versiones que utilizamos o utilizaremos para el proyecto y la localización del repositorio subversion.

una vez hecho esto ya tenemos creado el trac para nuestro proyecto, pero como entramos via web a verlo?
pues nada, vamos a preguntarle al amigo apache como hacemos eso, o mejor dicho, vamos a decirle como queremos que lo haga.

nos vamos a /etc/apache2/sites-available y editamos nuestro fichero default añadiendo algo de este estilo


SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /path/to/myproject
PythonOption TracUriRoot /myproject

para despistaos… mejor darle permisos de lectura a apache en /path/to/myproject, para no tener problemas ;)

sudo chown -R www-data:www-data /path/to/myproject

y ahora si reiniciamos apache y escribimos esto en el navegador www.midominio.com/myproject ya tenemos el trac!!! muy bien! ahora el problema es que de igual modo que nosotros podemos verlo sin introducir contraseña y usuario alguno, lo puede ver cualquiera, esto puede ser un arma de doble filo, por lo tanto vamos a entrar en el tema de la autentificación de usuarios, utilizando mysql y la misma base de datos que usamos para este trac.

modificamos el fichero /etc/apache2/sites-available/default y añadimos estas lineas a lo que ya habíamos puesto antes para que apache nos mostrara el trac del proyecto:

AuthType Basic
AuthName “escriba su nombre cachondo”
AuthMySQLHost
AuthMySQLPort AuthMySQLUser
AuthMySQLPassword AuthMySQLDB
AuthMySQLUserTable
AuthMySQLNameField
AuthMySQLPasswordField
AuthMySQLEnable on
AuthMySQLPwEncryption
AuthMySQLSocket “
AuthBasicAuthoritative Off
require valid-user

nos hemos de acordar de reiniciar apache para que coja los cambios que hemos echo.

y claro está, en la tabla de usuarios deben haber las ocurrencias, por ejemplo introducimos pepe como nombre de usuario y pepote como password en la tabla. nos vamos a www.midominio.com/myproject y nos saltara una ventanita de autentificacion donde tras introducir pepe como usuario y pepote como password podemos ver el trac del proyecto, si no no ;)

como dice matías prats, así son las cosas y así se las hemos contado.


Paulo Coelho

escrito por Angel
en libros
14May 08

pues eso… cual ha sido mi sorpresa al volver tras meses de ausencia a meneame y ilustrarme la mañana con millones de noticias, algunas con más importancia y otras con menos, algunas más divertidas, otras menos… pero sin duda me he encontrado con una que se me merece un 10.

un 10 para el señor coelho, que no solo escribe, y puede haber a quien le guste y a quien no, pero que ha decidido compartir sus libros vía BitTorrent con todo aquel que los pueda querer, dejando a libre elección el hecho de comprar sus libros o no, pero segun aseguran la mayor parte de la gente que los empieza a leer tras descargarselos, se los acaba comprando ;)

citando http://www.abadiadigital.com/noticia3079.html y la noticia que tiene por título Paulo Coelho : “Estoy utilizando BitTorrent ahora mismo”

Paulo Coelho es uno de los escritores más conocidos de nuestros tiempos. Autor de bestsellers como El Alquimista, El Zahir o La Bruja de Portobello, ha vendido más de 100 millones de libros a lo largo de su extensa carrera, que comenzó en 1987 con la publicación de El Peregrino de Compostela.

Además de por la popularidad que alcanzan sus obras, este brasileño se diferencia de la mayor parte de los autores contemporáneos porque, en lugar de clamar contra los males de Internet, alaba las bondades de este medio y le saca partido de una manera que nunca antes un escritor en su posición había hecho.

Sin ir más lejos, desde mediados del año pasado mantiene un blog llamado Pirate Coelho en el que ofrece enlaces de BitTorrent hacia sus propios libros para que la gente se los descargue gratuitamente. Es, según sus propias palabras, la mejor forma de dar a conocer sus textos a millones de personas de todo el mundo.

Y también de vender más, puesto que una parte de quienes descubren sus obras a través de la Red acaban yendo a una librería a comprar el libro que comenzaron a leer en su ordenador. Los números así lo demuestran. De hecho, la editorial Harper Collins, vista la buena acogida que ha tenido la iniciativa de Coelho, ha decidido ofrecer un nuevo libro cada mes para que los visitantes de su sitio puedan leerlo gratuitamente.

Por si esto fuera poco, estamos ante un tipo que no duda en afirmar, ante una entrevista de los chicos de TorrentFreak, que está “utilizando BitTorrent ahora mismo, mientras respondo a sus preguntas” y que asegura que desde que ha puesto sus obras a disposición de todos los internautas, las ventas de sus libros han aumentado significativamente.

¿Teniendo en cuenta los números que exhibe Coelho, por qué no hay más editoriales que utilizan Internet para promocionar las obras de sus autores? ¿Tanto miedo tienen a que las cosas les salgan mal? Es más, tal y como están las cosas, ¿realmente tienen algo que perder?

el blog de paulo coelho y el enlace a sus libros para descargar via torrent en castellano aquí


desmotivación profesional

escrito por Angel
en curro
13May 08

cuando todo viene cuesta arriba… cuando los marroncitos “extras” se convierten en super-marrones, todo se hace díficil… dormir por las noches, concentrarse en una única cosa… seguir adelante en definitiva…

quedan pocos marrones ya… pero aún hay uno que sigue dando por el culo, la decisión ya está tomada… antes de que un marrón te de por el culo, dale tu a él por el culo.

lo único que queda claro en el aspecto profesional, que es en el único que tengo dudas, es que a día de hoy mi trabajo fijo, al que me dedico 8 horas diarias en la fundación es el único que me merece la pena y me motiva. para un programador es dificil no meter el moco en diferentes temas… esa ansía de aprender es la que durante mucho tiempo me ha matado y de momento eligo matarla, o más bien, delimitarla a lo que a mi trabajo se refiere.

seguiremos trabajando para seguir recibiendo recompensas… trabajando duro.


pidgin 2.4.1 gtalk

escrito por Angel
en linux
8May 08

pues nada después de un dia entero sin poder conectar al gtalk a través del pidgin de las narices… y de buscar casi como un desesperado a ver si había algo o alguien se habia encontrado con algo parecido y sabía porque le pasaba he conseguido arreglarlo y ya vuelvo a tener gtalk en pidgin.

basicamente el problema es que por defecto pidgin, en su nueva version 2.4.1 (para ubuntu hardy - es decir ubuntu 8.04), activa una opcion de “Usar GSSAPI (Kerberos v5) en la autenticación” … cosa que parece ser que si esta activada, hace que se te sature el pidgin al intentar conectar con el servidor de gmail y luego provoca un error y no te deja conectar a gtalk, el error que arroja es “Error de lectura” y por mucho que intentes volver a conectar no tira.

unicamente es necesario desactivar esa opción, nada más, los parametros de configuración ya los coje bien los que asigna pidgin por defecto para la cuenta.


firefox 3 beta mac

escrito por Angel
en firefox, mac, mozilla
28Apr 08

firefoxmac

espero que vaya la mitad de bien que en linux!! ^^

:)~~~~~~~~


fw: stallman

escrito por Angel
en freak, linux
18Apr 08

  • Richard Stallman toma notas en binario
  • Richard Stallman obtiene 9 bits de 1 byte.
  • Richard Stallman puede dejar feedback negativos o neutrales en eBay.
  • Richard Stallman es el único hombre vivo que puede pronunciar GNU como debe pronunciarse.
  • Algunas personas revisa sus ordenadores en busca de virus. Los virus revisan sus ordenadores en busca de Richard Stallman.
  • Todos los virus son programados para autoeliminarse si se dan cuenta de que están en la máquina de Richard Stallman.
  • La barba de Richard Stallman está hecha de paréntesis.
  • El DNA de Richard Stallman está en binario.
  • El sistema nervioso de Richard Stallman es completamente inalámbrico.
  • El cerebro de Richard Stallman acepta comandos UNIX.
  • Si Richard Stallman tiene 1 GB de RAM y tú tienes 1 GB de RAM, Richard Stallman tiene más memoria que tú.
  • Richard Stallman se come los cables de red, ese es el motivo por el que se inventó la wireless.
  • Richard Stallman escribió un programa que puede dividir entre cero.
  • Richard Stallman no usa unidades ZIP, estruja los discos duros.
  • El compilador de Richard Stallman tiene miedo de reportar errores.
  • Richard Stallman escribió el compilador que Dios usó y el Big Bang fue el primer fallo de segmentación del universo.
  • Richard Stallman no escribe programas, los programas se escriben sólos bajo su mandato.
  • Richard Stallman puede finalizar un bucle infinito.
  • El antivirus de Richard Stallman puede curar el VIH.
  • El ordenador de Richard Stallman no tiene reloj, él define la hora que es.
  • Richard Stallman escribió un programa que obtiene el último decimal del número Pi.
  • Richard Stallman no usa navegadores web, manda un enlace a un demonio que usa wget para tomar la página y se la envía.
  • Algunas personas se ponen el pijama de Linus Torvalds para dormir. Linus Torvalds se opne el pijama de Richard Stallman para dormir.
  • Richard Stallman no tiene madre, se codificó a sí mismo.
  • No existe un proceso de desarrollo de software, tan sólo un grupo de programas que Richard Stallman permite que existan.
  • Richard Stallman no tiene problemas en usar Emacs, él lo escribió usando cuatro de sus manos mientras la quinta estaba usando emacs para programarse a sí mismo.
  • Richard Stallman es el arquitecto de Matrix.
  • Las primeras palabras de Richard Stallman fueron llamadas al sistema.
  • No hay barbilla bajo la barba de Richard Stallman, en su lugar se esconde otro Emacs.
  • Richard Stallman no necesita teclado ni ratón para usar un ordenador, se queda mirándolo hasta que cede y hace lo que él quiere.
  • Richard Stallman no necesita guardar sus documentos, recuerda cada 1 y 0 de estos.
  • En Rusia Richard Stallman se sigue pronunciando Richard Stallman.
  • Richard Stallman no está soltero, está aplicando la reusabilidad de código en las mujeres, lo que significa que se está acostando con nuestras novias/esposas.

forwarded to me by marc0s, que se mete conmigo por usar emacs… estos de vim… xD