All work and no play makes Jack a dull boy

sábado, 1 de março de 2014

quebra de linha ou word wrap no Sublime Text

Por acaso você já pensou por que toda hora tem que definir a quebra de linha, 'word wrap', no Sublime?

Por que não resolver logo isso?

Acesse Preferências > Settings. No arquivo de configurações do Sublime e busque por word_wrap.

Você tem 3 opções:
true: a quebra de linha sempre ativada
false: quebra de linha nunca ativada
"auto": pode ser que esteja em alguns casos

Por via das dúvidas, pessoalmente, prefiro deixar como true.


sexta-feira, 28 de fevereiro de 2014

git push mesma tag

Como dar um git push numa tag?

Antes é melhor lembrar (rapidamente) qual o procedimento para criação de tags no git.
$ git tag nome-da-tag
$ git push origin nome-do-branch --tags
ou
$ git push origin nome-da-branch
$ git push origin --tags
Agora, por alguma razão, você precisa fazer um ajuste que valha para essa mesma tag. Digamos que seja por uma versão do software que você quer publicar e faltou um pequeno item.
$ git push origin :nome-da-tag
Depois que fizer suas alterações:
$ git add arquivo_alterado.py
$ git commit -m 'agora vai!'
$ git tag nome-da-nova-tag
$ git push origin nome-do-branch --tags

E seja feliz.

quinta-feira, 27 de fevereiro de 2014

indentaçao no Sublime Text

Cansado de abrir um arquivo no Sublime Text e ver que a indentação está estranha ou completamente zoada?

O Sublime Text permite que você configure atalhos de teclado. Sabendo dessa possibilidade, passemos à solução desse incômodo:

Vá em Preferences > Key Bindings User

Considerando que é a primeira vez que você irá definir um atalho, insira:
[
    { "keys": ["ctrl+f12"], "command": "reindent"}
]

Salve e pronto. Volte para seu arquivo de indentação pitoresca, usufrua do atalho e veja a mágica acontecendo!

Naturalmente que você pode facilmente resolver pelo menu:  Edit > Line > Reindent .

quarta-feira, 26 de fevereiro de 2014

Segmentation fault: 11 no OS X

Tentou trabalhar com python no mavericks e tomou um 'Segmentation fault: 11' ?

Ned Deily criou um patch que resolve isso.

Eis a solução:

Abra seu aplicativo de terminal ou o shell que você utilize e digite:
$ curl -O http://bugs.python.org/file32324/patch_readline_issue_18458.sh
$ openssl sha1 patch_readline_issue_18458.sh
$ sh ./patch_readline_issue_18458.sh

Fiz no OS X 10.9.2 - Mavericks e foi tranquilo - inclusive dentro do virtualenv.


quarta-feira, 16 de outubro de 2013

Verifica se usuário está no grupo

Como verificar se o usuário está em um grupo específico no Django? E como fazer isso em forma de decorator?

Vamos lá:
from django.contrib.auth.decorators import user_passes_test


def esta_no_grupo_Alunos(user):

    return user.is_authenticated() and not user.groups.filter(name='Alunos').exists()


@user_passes_test(esta_no_grupo_Alunos, login_url='/login/')

def nome_da_view(request):

    # código da sua view

Use com o user_passes_test para restringir acesso a usuários autenticados e que estejam no grupo.

O decorator user_passes_test tem um argumento obrigatório: um objeto User e retorna True, caso o usuário tenha permissão. Como user_passes_test não verifica automaticamente se o usuário está logado, então foi necessário incluir essa verificação.

Como bem notou Luan Fonseca, no Facebook, perceba que, para o caso de redirecionar para login, você pode muito bem usar o decorator @login_required antes do user_passes_test e remover o is_authenticated() da função.