ФорумПрограммированиеPythonDjango → django-configurations: Более гибкое хранение настроек (в классах)

django-configurations: Более гибкое хранение настроек (в классах)

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 22 июля 2012 г. 23:30

    Вышла любопытнейшая батарейка django-configurations от одного из core devs. По духу она напоминает django-classbasedsettings, но обладает намного более простым API. Теперь можно хранить настройки для различных окружений в классах и использовать стандартное питоновское наследование.


    http://django-configurations.readthedocs.org/en/latest/index.html
    Источник: http://blog.futurecolors.ru/2012/07/3.html
    adw/0
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 23 июля 2012 г. 2:30, спустя 2 часа 59 минут 20 секунд

    Мммм… Не могу вспомнить когда бы мне это было полезно.
    На мой взгляд, settings для любого проекта, на любом языке, должны быть простые до боли. Пользователь конфигурационных файлов вполне может быть не программистом, или программистом из другой оперы. И классный конфиг это когда пользователь его открывает, за секунду находит что ему надо поправить и правит, без въезжания в синтаксис.
    Большинство программ которые мы юзаем - у них конфиги ini-файлы. Исключения которые я помню: веб-сервера, где конфигурация перемешана с логикой, что лучше разделять инклюдами и xmonad у которого конфиг на хаскеле.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 июля 2012 г. 2:54, спустя 24 минуты 26 секунд

    у emacs на elisp
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 июля 2012 г. 3:59, спустя 1 час 5 минут 21 секунду

    Я помню что один из core-dev джанги собирался концептуально менять settings в 2.0 версии, эта новость была в том году, после какой-то международной конфы.
    Он приводил причины почему это стоит сделать, а не продолжать использовать "суперглобальный" контекст, вроде как-то так было
    Спустя 295 сек.
    Мне лично нехватает в текущей реализации settings это возможность указывать для каждой app свой settings, при этом он должен наследоваться от главного settings
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 июля 2012 г. 4:53, спустя 53 минуты 31 секунду

    Мне лично нехватает в текущей реализации settings это возможность указывать для каждой app свой settings, при этом он должен наследоваться от главного settings

    в теории это круто, а на практике - когда тебе такого не хватало? просто интересно :-)

    в смысле опиши ситуацию если не сложно.
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 июля 2012 г. 5:02, спустя 9 минут 22 секунды

    я только с практической точки зрения и пришел к этому
    Спустя 88 сек.
    все только для разделения зон ответсвенности, если у меня есть 12 apps, у них есть свои шаблоны, своя статика, свой MVT набор вообщем, а настройки для этих app я впихиваю в глобальный settings
    Спустя 67 сек.
    Мозгам проще думать когда все разделено/модульно/нормализовано/структуированно
    Спустя 101 сек.
    конечно можно написать пару строк когда в футере settings.py, чтобы он бегал по INSTALLED_APPS и брал их settings.py, вообще по практике как мы делаем с local_settings
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 23 июля 2012 г. 5:08, спустя 5 минут 34 секунды

    Мозгам проще думать когда все разделено/модульно/нормализовано/структуированно

    ну да. понял идею. в этмо плане да, прикольно когда сами апп имели бы свой сеттингс. ТРУ! :)
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 27 июля 2012 г. 2:02, спустя 3 дня 20 часов 54 минуты

    На каждый app свой settings это нужно. Но для этого не надо классов. Я тоже против портянки, но и против любых конструкций, кроме как присваивания к константе. А то сегодня классы, завтра метаклассы, генераторы, мультитрединг чтение из файлов и коннекты по сети :)

    А для разделения settings препятствие ровно одно - INSTALLED_APPS находится в settings. И поэтому в один проход не получится. Видимо надо импортировать, как сейчас settings проекта, потом брать пустой объект, пробегаться по файлам settings.py для каждого в INSTALLED_APPS, набирая в него. И в итоге всё это ещё аппдейтить settings из проекта.
    В инфраструктуре django это патч на восемь строчек.
    Может замутить pull-request?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 27 июля 2012 г. 2:32, спустя 29 минут 54 секунды

    Может замутить pull-request?

    отличная идея! надо! скинь линку на пул реквест, подпишемся
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 июля 2012 г. 2:34, спустя 1 минуту 42 секунды

    Замути, только с тебя затребуют тикет, документацию и тесты
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 27 июля 2012 г. 2:35, спустя 56 секунд


    Замути, только с тебя затребуют тикет, документацию и тесты
    )))))))))))))))))))
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 27 июля 2012 г. 2:36, спустя 1 минуту 17 секунд


    Замути, только с тебя затребуют тикет, документацию и тесты

    Ну вот всё испортил…  Так бы я хоть кодло накидал, а теперь забил даже не начиная.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 27 июля 2012 г. 2:58, спустя 22 минуты 9 секунд



    Замути, только с тебя затребуют тикет, документацию и тесты

    Ну вот всё испортил…  Так бы я хоть кодло накидал, а теперь забил даже не начиная.
    отстой! :(
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 июля 2012 г. 3:26, спустя 27 минут 55 секунд



    Замути, только с тебя затребуют тикет, документацию и тесты

    Ну вот всё испортил…  Так бы я хоть кодло накидал, а теперь забил даже не начиная.
    за качество приходится платить :)
    Сделай отдельным приложением или просто форки и сделай патч без пулл-реквеста, дуд и я тебе поможем доделать благое дело :)
    adw/0
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 27 июля 2012 г. 4:21, спустя 55 минут 25 секунд

    Ну чтобы не прослыть конченным пиздаболом - вот https://github.com/ussi/django
    Работает, как я описал выше (ну там и по диффу коммита всё видно):
    1. В любом аппе из INSTALLED_APPS создаем файлик settings.py, туда фигачим что нам надо
    2. В settings проекта можем переопределить.

    Я ещё разложил поудобнее, а то там __init__ этот был на два экрана.
    Да убрал странное жопоподтирательство: там было для двух настроек, которые должны быть туплами, проверка что они туплы и конвертирование в туплы, если они строки…Пиздец короче.

    Докстринги страшненькие я написал. Документировать и тестировать не ясно чего.

    Хотя, вот уже сейчас прикинул: можно сеттинги контрибов раскидать. ну теже, которые для auth например, вынести из global_settings во внутрь django.contrib.auth - если тесты по прежнему будут проходить, вот как бы и протестировали. Не?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!