All work and no play makes Jack a dull boy

terça-feira, 11 de novembro de 2014

AND, OR e NOT com Django Haystack


Não, o  django.db.models.Q  não funciona ao buscar usando o haystack com  SearchQuerySet(). O haystack oferece sua própria versão para usar com o filter().

Eis o exemplo da documentação oficial:
from haystack.query import SQ

# We want "title: Foo AND (tags:bar OR tags:moof)"
sqs = SearchQuerySet().filter(title='Foo').filter(SQ(tags='bar') | SQ(tags='moof'))

Funciona "like a charm".


sexta-feira, 7 de novembro de 2014

Descobrir ip local com python

Como saber qual seu ip local com python?
>> import socket
>> socket.gethostbyname(socket.gethostname())
Segundo a documentação do python, o módulo socket:
Esse módulo provê acesso à interface do socket BSD. Está disponível em todos os sistemas Unix modernos, Windows, Mac OS X, BeOS, OS/2, e provavelmente plataformas adicionais.
=]

quinta-feira, 6 de novembro de 2014

parsear pdf com javascript? PDF.js


Sim, é isso mesmo! O que é? A autodefinição diz:
Uma plataforma baseada em web-standards para parsear e renderizar PDFs
Essa belezura é mais uma obra do povo Mozilla.

PDF.js _ site | github

=]

quarta-feira, 5 de novembro de 2014

juntar querysets

Como combinar ou como mesclar querysets (2 ou mais) em apenas um elemento?
from itertools import chain
lista_final = list(chain(primeira_queryset, segunda_queryset))
Usar o método chain do itertools é mais rápido do que fazer um loop em cada um e apendar em outra lista. Por que ele é mais rápido? Como quase tudo em python, se há um método que faz mais rápido, muito provavelmente é por ter sido implementado em C. Não é diferente aqui, é mais rápido por ser implementado em C.

Agora, caso você queira que a lista final tenha um ordem comum às querysets, você pode trabalhar com uma lambda dentro de um sorted() combinada ao chain().
lista_final = sorted(
    chain(primeira_queryset, segunda_queryset),
    key=lambda instance: instance.data_criacao)

Se você está com Python 2.4 ou superior, usar attrgetter como alternativa ao uso de lambda.
from operator import attrgetter
lista_final = sorted(
    chain(primeira_queryset, segunda_queryset),
    key=attrgetter('data_criacao'))

fonte

terça-feira, 4 de novembro de 2014

Trocar editor de texto default do crontab

Como trocar o editor default do crontab?

Segue com o exemplo de trocar do nano para usar o vim.
CentOS
$ export VISUAL=vim

Ubuntu
$ export EDITOR=vim

Mas se for a primeira vez que você tente editar o crontab, a saída poderá ser assim:
$ crontab -e
no crontab for jonatascd - using an empty one

Select an editor.  To change later, run 'select-editor'.

  1. /bin/ed
  2. /bin/nano       <---- easiest
  3. /usr/bin/vim/tiny

Choose 1-3 [2]:

Com um simples 'Enter' você confirma que usará o nano, ou digite um número para indicar sua opção.

=]