viernes, 24 de febrero de 2017

[Flask] - TypeError: 'NoneType' object is not iterable

Problema:


Flask reporta el error:

TypeError: 'NoneType' object is not iterable

Al hacer POST en un formulario Flask-WTF. La vista que la maneja es:

def nuevo_proyecto():
    newprojectform = NewProjectForm()
    if newprojectform.validate_on_submit():
        return redirect('/')
    else:
        tutors = User.query.filter(User.id != current_user.id)
        newprojectform.tutor.choices = [(t.id, t.username) for t in tutors]
        newprojectform.line.choices = [(l.id, l.nombreLinea) for l in lines]
        return render_template('nuevo_proyecto.html', lines=lines, newprojectform = newprojectform)


Solución:


Hay que definir choices antes de validar el formulario:

def nuevo_proyecto():
    newprojectform = NewProjectForm()
    tutors = User.query.filter(User.id != current_user.id)
    newprojectform.tutor.choices = [(t.id, t.username) for t in tutors]
    newprojectform.line.choices = [(l.id, l.nombreLinea) for l in lines]
    if newprojectform.validate_on_submit():
        return redirect('/')
    else:
        return render_template('nuevo_proyecto.html', lines=lines, newprojectform = newprojectform)

Funciona correctamente!


domingo, 5 de febrero de 2017

[Munin] Fallo al acceder a Munin en servidor Fedora FC4

Rechaza usuario y contraseña al acceder por web. El log de errores de apache devuelve:

access to /munin/ failed, reason: require directives present and no Authoritative handler.

Para mí, la solución ha sido editar /var/etc/httpd/conf/httpd.conf:

<Directory /var/www/html/munin>
    Require all granted
    Options FollowSymLinks SymLinksIfOwnerMatch
</Directory>

____________

<Directory /var/www/html/munin>
    Require valid-user
    Options FollowSymLinks SymLinksIfOwnerMatch
</Directory>

martes, 24 de enero de 2017

[GitHub] Branches no sincronizadas después de 'git pull'

Después de hacer un git pull origin master en un equipo que esté detrás de origin, al hacer git status nos dirá que está X commits por delante (tantos como estuviera por delante el remoto respecto del local):

~ git pull origin master
<pasan cosas>

~ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

Esto se debe a que la referencia al HEAD de origin no ha cambiado en el local, para actualizarla basta con hacer git fetch origin:

~ git fetch origin
<pasan cosas>

~ git status
# On branch master
nothing to commit (working directory clean)

Para evitar esta situación o evitar tener que hacer un fetch después de un pull (cuando se supone que un pull es un fetch + merge), podemos hacer directamente:

~ git pull origin
<pasan cosas, pero esta vez sincronizando los HEAD del branch remoto y del local>

viernes, 2 de diciembre de 2016

Un par de usos para du [bash]

du -sh foo
      # Tamaño del directorio foo

du -shc foo bar
      # Tamaño de los directorios foo y bar y su suma

du -hd<n> foo
      # Tamaño de los directorios de foo a profundidad n

-s - summarize
-h - human readable
-d - depth
-c - total
 -a  - all (incompatible con -s)

Uso básico tar con gzip/bzip2 [bash]

Usos comunes:

tar -czvf archive.tar.gz foo
       # Create archive.tar.gz compressing file foo (using gzip)

tar -cjvf archive.tar.bz2 foo
       # Using bzip2

tar -xzvf archive.tar.gz -C foo

       # Extract files from archive.tar.gz to foo directory


Ejemplos extraídos del man de tar:

       tar -cf archive.tar foo bar
              # Create archive.tar from files foo and bar.

       tar -tvf archive.tar
              # List all files in archive.tar verbosely.

       tar -xf archive.tar
              # Extract all files from archive.tar.

martes, 25 de agosto de 2015

Montaje de partición de datos en Ubuntu

Problema:

Mi disco duro tiene varias particiones.
- C:\ , partición de sistema de Windows, ntfs 75GB
- D:\ , partición de datos compartidos, ntfs 700GB
- sda5, swap 4GB
- sda6, /, ext4 46GB
- sda7, /home, ext4 110GB

Quiero que la partición de datos compartidos, D:\, aparezca en Ubuntu desde el booteo y en una localizacion accesible.

Solución:

Editar /etc/fstab:

UUID="id-de-la-particion"    /media/Data    ntfs    defaults    0    0

jueves, 30 de julio de 2015

[Fix] lxml-3.4.4 installation / Failed building wheel for lxml

Problema:

Instalación de lxml-3.4.4 en Ubuntu 14.04.1 64 Server sobre VirtualBox.
Tras intentar instalar lxml mediante sudo pip install lxml, arrojará el siguiente error durante la ejecución:
/usr/bin/ld: no se puede encontrar -lzcollect2: error: ld returned 1 exit statuserror: command 'i686-linx-gnu-gcc' failed with exit status 1
______________________________Failed building wheel for lxmlFailed to build lxml


Solución:

Falta el paquete zlib1g-dev.
Ejecutar sudo apt-get install zlib1g-dev