Posted by & filed under django, python.

Не очевидная для меня вещь с загрузкой файла и класса наследника ModelForm, нужно указать

files=request.FILES

Иначе появлялась ошибка

This field is required.

Хотя оно там было заполнено.

рабочий пример:

if request.POST:
        pcf=PhotoCandidateForm(request.POST,files=request.FILES)
        if pcf.is_valid():
            pcf.save()
            message='Data is saved. Thanks'

Сумбурно получилось, но так как пишу для себя, то должен сам себя понять

Posted by & filed under python, windows.

Настраивать Django под Windows XP тот ещё секс, в общем проблема была в точности как
http://victor-k-development.blogspot.com/2010/07/unicodedecodeerror-django.html
Резюмирую:
проблема

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe0 in position 0: ordinal not in range(128)

Решение:

В моем случае проблема заключалась в том, что в реестре в разделе[HKEY_CLASSES_ROOT\CLSID\{4063BE15-3B08-470D-A0D5-B37161CFFD69}\EnableFullPage\MIME] содержались подразделы содержащие в названии кириллицу. При удалении этих разделов они автоматически пересоздавались. Поэтому помогло переименование, просто заменил кириллицу латиницей.

Так же удалить русские ключи из:
HKEY_CLASSES_ROOT\MIME\Database\Content Type

Posted by & filed under Linux.

Проброска портов.
Мое спасение от погружения в бездну iptables это rinetd.
Всё просто, ставим из репозитория:

sudo aptitude install rinetd

Правим конфиг перенаправления /etc/rinetd.conf, пример:

#откуда_ip откуда_port  куда_ip куда_port
192.168.1.2 80 192.168.1.59 80

Пример 2, переводит все входящие соединения (и внутренние и внешние) на нужным нам ip

0.0.0.0 80 192.168.1.59 80

И рестартуем сервис:

sudo /etc/init.d/rinetd restart

Posted by & filed under Linux.

Tmux — тайловый мультиплесор терминалов. Возможности те что в screen + ещё куча фич, + более стабильная работа.
Основное отличие:
у screen горячие главиши привязаня на Ctrl+a,
у tmux на Ctrl+b
Хорошая статья по теме:
http://www.xakep.ru/post/52156/

Список сессий:

tmux ls

Подключение к конкретной сессии:

tmux attach -t 1

Переименование сессии:

tmux rename-session -t 3 name_of_session

Где 3 — номер сессии из списка выведенной командой tmux ls
Подключение к переменованной сессии:

tmux attach-sesssion -t name_of_session

Posted by & filed under Linux.

Проблема: сложности при создании нескольких тайловых окон для SSH

Попытка1: пробывал Terminator но в отличии от локального использования при создании нового тайла приходилось пересоединяться по SSH

Правильное решение:
UNIX приложение screen

Плюсы, которые важны для меня:
1)можно делать тайлы
2) при закрытии терминала сессия screen не закрывается(!), достаточно сново присоединиться по SSH и выполнить

screen -x

и все окошки на месте

Полезная статья с горячими клавишами:
http://www.pixelbeat.org/lkdb/screen.html
Кеш

Posted by & filed under Articles.

Вообще-то всё должно быть банально просто:

./manage.py migrate myapp

Но так как приложение уже было, то нужно было игнорировать первую миграцию, которая создает базу,а запустить вторую, которая делала обновления. В моем случае такое решение:

./manage.py migrate myapp 0001 --fake
./manage.py migrate myapp 0002

Posted by & filed under python.

Для разработки встал вопрос, как протестировать работу отправки писем и при этом не отправлять тысячи писем, в python есть готовое решение

python -m smtpd -n -c DebuggingServer localhost:1025

Запускаем в терминале, указываем хост и порт в своих скриптах и работает с тестовым почтовым сервером

Posted by & filed under python.

При работе с CSV файлом возникла такая ошибка:

new-line character seen in unquoted field — do you need to open the file in universal-newline mode?

Решение оказалось простым нужно было вместо «rb» написать «rU».
Правильное чтение csv файла:

    import csv
    reader = csv.reader(open("myfile.csv", "rU"),delimiter=',')
    for row in reader:
        print row