среда, 31 марта 2010 г.

Администрируемые настроечки и github

Понадобились тут для приложения настраиваемые настройки в админке (буквально потребовалось сделать редактируемыми адреса для отрпавки определённых формочек). Не желая изобретать свой велосипед, полез в гугл. Там обнаружил с ходу старенький django-dbsettings, который мне показался каким-то не кузявым: проект заброшен (хотя есть форки на github) да и с ходу не нашёл там группировки настроек (адреса и сабжи отличаются для разных форм). Следующим оказался совсем свежий django-appsettings. Вроде бы простое приложение, но я что-то 2 вечера разбирался в (ещё не очень знакомых мне) фокусах с метапрограммированием на python, которые там используются. Всему виной, по-моему, несколько противоречивое README к проекту. Ключевым вопросом стало то, что для подключения настроек для приложения необходимо, чтобы эти настройки были использованы в моделях приложения, т.е. в них должны присутствовать строки:

from appsettings import app
settings = app.settings.your_app

которые и вызывают соответствующий autodiscover().
С учётом этого всё стало довольно прозрачно и ясно и группировки вроде на месте, только вот в интерфейсе администрирования их не было у Джареда. Пришлось "форкнуть" проект и реализовать то, что необходимо.
Поставил в итоге ещё один плюсик гиту и понравился github. Правда в последнем обнаружилось пару багов: с коммитом, начинающимся с # он по ходу дела не дружит (в итоге пришлось делать merge из коммандной строки), да ещё на 1-м из флэшевых графов мой Firefox просто "схлопнулся". А в целом очень удобно - возьму себе на вооружение.
P.S. Ещё для настроек есть какое-то решение от авторов Satchmo, но смотреть его как-то было уже лень, когда было получено практически рабочее решение.

2 комментария:

  1. Я в своё время использовал djblets:
    http://www.chipx86.com/blog/2008/08/05/django-development-with-djblets-dynamic-site-configuration/

    ОтветитьУдалить
  2. О, спасибо, другие вещи оттуда надо бы посмотреть.
    А тут же несколько более простое решение.

    ОтветитьУдалить