Posted by & filed under django.

Задача: создать пустой HttpRequest (или не пустой 🙂 )
Решение:

Найдено на просторах инета:

from django.test import RequestFactory

request_factory = RequestFactory()
request = request_factory.post('/fake-path', data={'name': u'Waldo'})

Оригинал:

http://tech.novapost.fr/django-unit-test-your-views-en.html

Posted by & filed under python.

Божественный и простой способ сравнения словарей:

a={'a': 1, 'b': 2 }
b={'b': 2, 'a': 1 }
print(cmp(a,b))

Posted by & filed under Мысли.

СУПЕР СТАТЬЯ!!!! ВСЁ МОИ МЫСЛИ, КОТОРЫЕ КРУЖИЛИСЬ ПО ПОВОДУ РАЗРАБОТКИ СОБРАЛИСЬ ЗДЕСЬ!

Для себя ещё хотел бы записать следущее правило:
Не допускать инверсии:

например, вместо константы NOT_CHANGE_MAP=True, делать например так:
HOLD_MAP=True

Posted by & filed under python.

Скрипт ежедневного бекапа Mysql (основано на этом)

#!/bin/bash
# Created by Dmitry
# based on solution from http://carrotplant.com/en/blog/how-to-dump-all-mysql-databases-into-separate-files

USER="root"
PASSWORD="root"
OUTPUTDIR="/home/dmitry/Backups/mysql_everyday_backup2/"
GZIP_ENABLED=1

MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"

if [ ! -d "$OUTPUTDIR" ]; then
    mkdir -p $OUTPUTDIR
fi
OUTPUTDIR_CURRENT=$OUTPUTDIR/backup_$(date '+%Y-%m-%d_%T')
if [ ! -d "$OUTPUTDIR_CURRENT" ]; then
    mkdir -p $OUTPUTDIR_CURRENT
fi

# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

# dump each database in turn
for db in $databases; do
    echo $db
	if [ $GZIP_ENABLED == 1 ]; then
		$MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db | gzip > "$OUTPUTDIR_CURRENT/$db.gz"
	else
	    $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db > "$OUTPUTDIR_CURRENT/$db.sql"
   	fi    
done

Теперь только в cron прописываем:

0 0 * * * /home/dmitry/mysqlbackup2

Posted by & filed under python.

Суть heartbeat:
RabbitMQ-cервер периодически отсылает heartbeat сигналы (frames) клиентам и ждет от них ответа.
Если определенное количество сингналов теряется, то соединение закрывается.

Hearbeat обычно используется для проверки, что клиент на другой стороне всё ещё живой, и не упал с незакрытым соединением (ИМХО, полезно если клиент выполняет времяемкие операции и может долго не отвечать)

Posted by & filed under python.

Настройка аутентификации на RabbitMQ сервере:
Добавление пользователя

sudo rabbitmqctl add_user myusername mypassword

Добавление виртуального хоста

sudo rabbitmqctl add_vhost /myvhost

Настройка прав:

sudo rabbitmqctl set_permissions -p /myvhost myusername ".*" ".*" ".*"

UPD:
Назначение админских прав:

sudo rabbitmqctl set_user_tags myusername administrator

Нужно для полноценного просмотра через web-интерфейс (http://localhost:55672/)

Posted by & filed under django.

Определение:

class Aclass(models.Model):
    #some fields here
    pass

    ...
class Bclass(models.Model):
    b_field = models.ForeignKey(Aclass)

Использование:

a=Aclass.objects.get(pk=1)
a.aclass_set.objects.all()

Posted by & filed under python.

Задача:
Переместить git репозиторий существующего проекта в другое место (Практический смысл: перемещение на другой физический носитель, с целью избежать потери данных)

Исходное состояние:
1) проект
2) .git директория (расположена рядом)

Решение:
1) перемещаем .git директорию в другое место
2) создаем файл .git со следующим содержанием:

gitdir: /home/dmitry/another_path/.git

Всё.
Проверяем: git status
Всё корректно работает.

Posted by & filed under python.

Задача:
Разместить .git директорию в другой папке

Решение:
каталог «A» — место с исходниками
каталог «B» — место где я хочу разместить git репозиторий

Действия:

cd /home/dmitry/A
git init --separate-git-dir="/home/dmitry/B/.git"
Initialized empty Git repository in /home/dmitry/B/.git/

Posted by & filed under python, Мысли.

Наткнулся на этот сайт:
http://pyjs.org/
идея хорошая — вместо js писать на python.
Потом посмотрел примеры:
http://pyjs.org/examples/
вот примеры меня оттолкнули.
Не совсем интуитивно, придется учить эту библиотеку и на выходе все равно какие-то простые куски html и js. Сомневаюсь, что можно что-то отличное сделать в формате web2.0