Примечания к выпуску Django 1.2.4

Добро пожаловать в Django 1.2.4!

Это четвертый выпуск «исправлений ошибок» в серии Django 1.2, улучшающий стабильность и производительность кодовой базы Django 1.2.

За одним исключением, Django 1.2.4 сохраняет обратную совместимость с Django 1.2.3. Он также содержит ряд исправлений и других улучшений. Django 1.2.4 является рекомендуемым обновлением для любой разработки или развертывания, использующей или нацеленной на Django 1.2.

Для получения полной информации о новых возможностях, обратной несовместимости и устаревших возможностях в ветке 1.2 см. раздел Примечания к выпуску Django 1.2.

Обратные несовместимые изменения

Ограниченные фильтры в интерфейсе администратора

Административный интерфейс Django, django.contrib.admin, поддерживает фильтрацию отображаемых списков объектов по полям соответствующих моделей, включая отношения на уровне базы данных. Это реализуется путем передачи аргументов поиска в части строки запроса URL, а опции класса ModelAdmin позволяют разработчикам указать конкретные поля или отношения, которые будут генерировать автоматические ссылки для фильтрации.

Одной из исторически недокументированных и неофициально поддерживаемых возможностей была способность пользователя, достаточно хорошо знающего структуру модели и формат этих аргументов поиска, изобретать новые полезные фильтры на лету, манипулируя строкой запроса.

Однако было продемонстрировано, что этим можно злоупотреблять для получения доступа к информации за пределами прав администратора; например, злоумышленник с доступом к администратору и достаточным знанием структуры модели и отношений может составить строки запроса, которые - при многократном использовании поиска по регулярным выражениям, поддерживаемого API базы данных Django - откроют конфиденциальную информацию, такую как хэши паролей пользователей.

Чтобы исправить это, django.contrib.admin теперь будет проверять, что аргументы поиска в строке запроса либо указывают только поля просматриваемой модели, либо пересекают отношения, которые были явно разрешены разработчиком приложения с помощью ранее существовавшего механизма, упомянутого выше. Это обратно несовместимо для всех пользователей, полагающихся на предыдущую возможность вставки произвольных поисков.

Одна новая функция

Обычно точечный релиз не включает новых возможностей, но в случае с Django 1.2.4 мы сделали исключение из этого правила.

Одна из ошибок, исправленных в Django 1.2.4, связана с тем, что при запуске тестового пакета на конфигурации с несколькими базами данных исходная база данных (т.е. реальная производственная база данных) могла быть удалена, что приводило к катастрофической потере данных. Чтобы решить эту проблему, было необходимо ввести новую настройку – TEST_DEPENDENCIES, которая позволяет вам определить любые зависимости порядка создания в конфигурации базы данных.

Большинству пользователей - даже пользователям с конфигурацией из нескольких баз данных - не стоит беспокоиться об ошибке потери данных или о ручной настройке TEST_DEPENDENCIES. Подробности см. в документации original problem report по controlling the creation order of test databases.

GeoDjango

Функциональная система TEST_RUNNER, ранее использовавшаяся для выполнения набора тестов GeoDjango, django.contrib.gis.tests.run_gis_tests, была окончательно упразднена в пользу основанной на классах системы запуска тестов, django.contrib.gis.tests.GeoDjangoTestSuiteRunner, добавленной в этом выпуске.

Кроме того, набор тестов GeoDjango теперь включен при running the Django test suite с runtests.py и при использовании spatial database backends.

Вернуться на верх