Примечания к выпуску 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.

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