Я разработчик

Django-pipeline converter on windows issue

Django, Python, Разработка Комментариев нет

Столкнулся со следующей проблемой. django-pipeline при обработке coffeescript (и других форматов) через manage collectstatic выдает  системную ошибку 22: неправильный синтаксис в имени файла или метки тома. После изучения настроек pipeline оказалось, что проблема не в моих настройках, а находится на стыке pipeline и библиотек python.

А именно: shlex или pipes. Конкретно метод quotes(), который из pipes в 3-м питоне переполз в shlex. Но обо всем по порядку. Открываем site-packages/pipeline/_init_.py

строка 5:

try:
from shlex import quote as quote
except ImportError:
from pipes import quote as quote

строка 44:

  compiler.compile_file(quote(infile), quote(outfile), outdated=outdated, force=force)

Это передает в обработчик пути файлов для обработки: входной и выходной, обернутые в кавычки. В кавычках и оказалась вся соль. Дело в том, что quote() оборачивает в одинарные кавычки, которые не воспринимаются стандартным обработчиком в Windows.

Если Вы только разрабатываете под windows и готовы поставить костыль и помнить о нем, то можно поставить костыль в виде собственной функции quote(), перекрывающей работу стандартной. Например, вот так:

try:
from shlex import quote as _quote
except ImportError:
from pipes import quote as _quote

if os.name == ‘nt':
def quote(arg):
return # впишите здесь свой вариант обработки
else:
quote = _quote

Другой выход — дождаться, когда починят вот этот запрос: https://github.com/cyberdelia/django-pipeline/issues/444

TDD и Django

Django, Разработка Комментариев нет

Просто оставлю здесь ссылочку на хороший туториал по TDD в DJango http://www.tdd-django-tutorial.com/

Eclipse Django Templates integration

Django, Eclipse, Модули, Разработка, Фишки Комментариев нет

Интегрировать подсветку синтаксиса шаблонов Django и сниппеты в Eclipse можно через плагин django-editor

Установить можно через добавление репозитория http://eclipse.kacprzak.org/updates

О South и syncdb в двух словах

App Engine, CloudSQL, Django, Python, Модули, Разработка, Расширения, Совместная работа, Фишки Один комментарий

Начну с определения. South — приложение Django для осуществления миграций. У меня это слово всегда вызывало больше вопросов, чем ответов поэтому, лучше расскажу что к чему.
Когда мы пишем/меняем модель нам необходимо создавать/менять структуру данных в самой базе. Если мы просто создаем модель, то с этой задачей справляется syncdb, но когда мы вносим изменения в модель syncdb оказывается беспомощной, и мы остаемся один на один со структурой данных в базе не отвечающей требованиям кода (моделей). Читать далее »

Менеджер для CloudSQL

App Engine, CloudSQL, Google, БД, Инструменты, Разработка Комментариев нет

Консоль управления CloudSQL невозможно назвать даже куцей. Она совсем никакая. Но, оказывается, есть неплохое решение. Читать далее »

GAE SDK 1.5.x -> 1.7.x

App Engine, Google, Инструменты, Разработка Комментариев нет

Проблема перехода на более свежий SDK — проблема переноса данных на сервере разработки. (Да, конечно, хорошо бы все заполнять фикстурами, но не всегда это возможно.)
Перенести данные из обычного локального хранилища можно используя для dev_appserver.py два ключа:

  • —default_partition=»» — в новых SDK по умолчанию партиция ‘dev~’, в старых — »
  • —port_sqlite_data — нежно перемалывает старые данные в новое локальное хранилище (может занять продолжительное время, дождитесь завершения, прогресс можно наблюдать по изменениям в %temp%, где по умолчанию хранятся datastore)

А дальше, хорошо использовать ключ —use-sqlite

Теперь сервер разработки запускается за секунды и весит в памяти в пять раз меньше.

P.S.: GAE SDK не лишены багов. И ветка 1.6.х не стала исключением, где половина ключей либо не работала, либо работала неправильно, по крайней мере те, что касались локального datastore.

Python SSL на windows

App Engine, Python, Библиотеки, Разработка Комментариев нет

Случилось так, что встала необходимость установить модуль SSL для питона. Его давно просил AppEngine SDK. Читать далее »

window.opener behavior

Javascript, Разработка Комментариев нет

Вот скажите мне почему window.opener работает только для окон, открытых через window.open() ? Из какой логики нельзя отдавать window.opener не null, если они находятся в одном домене?

xhtml2pdf и вертикальное выравнивание в таблице

Django, Python, Библиотеки, Разработка, Фишки Комментариев нет

Так уж случилось, что для генерации PDF в приложении использую библиотеку xhtml2pdf. Библиотека позволяет сгенерировать PDF на основе HTML + CSS. Однако, поддержка CSS не совсем полная. Некоторые правила игнорируются, а комплексное применение правил иногда не приводит к нужному результату.

Например, столкнулся с ситуацией, когда "игнорировались" отступы внутри ячейки. Строка оставалась прилепленной к верхней границе. При этом, padding-top для td как бы игнорировался. Оказалось, что рендер определяет центр строки и правила ее выравнивания по вертикали несколько иначе, чем браузер. Картина исправилась, когда было выставлено свойство line-height: 75%.

Изящный способ определить предыдущий месяц в python

Python Комментариев нет

Довольно изящный способ получить номер предыдущего месяца в python

month = datetime.datetime.now().month — 1 or 12