Comments 5
Привет. Хороший задел. Тоже используем свой рукописный импорт.
вместо options в settings у нас модель importhelper. позволяет не морочиться с правкой settings и перестартом сервера. Рекомендую.
Ну и на правах знатока django.admin:
class ImportLogInline(StackedInline):
def has_add_permission(request, *av, **kw):
Нарушена сигнатура has_add_permission
. Первым должен передаваться self. Да, я вижу что пофиг и return false. но все же.
Ну и рекомендую подробнее разобраться с ContentType. Понимаю, что пакет применялся на маленьком проекте и без истории. Но у Django есть такое свойство, что на больших проектах бывает, что в таблице django_content_type лежат данные несуществующих моделей.
Просто Django.objects.all() получает данные из локального списка моделей (ContentTypeManager._cache), в котором все проверено для текущего проекта.
А вот ContentType.objects.all().annotate(...) тюкнется в базу и сможет получить записи удаленных моделей. Уверен, что ImportJobAdmin.formfield_for_foreignkey в текущем варианте на github.com/nnseva/django-import/blob/master/django_import/admin.py может привести к падению, как раз по этой причине.
вместо options в settings у нас модель importhelper. позволяет не морочиться с правкой settings и перестартом сервера. Рекомендую.
Хм. Ну, скажем так, что касается настройки списка доступных к импорту моделей и хранилища файлов, так это вряд ли поменяется в рантайме, тем более что хранилище поменять в рантайме вообще будет весьма затруднительно.
А вот флаг синхронного/асинхронного запуска импорта можно было бы включить в задание, но я подумал, что такая кастомизация только вредна, поскольку влияет на нагрузку узлов в большом распределенном проекте. По сути, синхронный запуск - это затычка для локально запущенного сервера, а продакшн должен конечно, запускаться с асинхронным запуском всегда.
def has_add_permission(request, *av, **kw):
Ох вот ведь, поймал :) Давай PR, замержу. Ну или как будет момент, сам поправлю.
подробнее разобраться с ContentType
Да, недавно об этом же подумал. Удаление моделей - дело редкое и кажется, я встречался с тем, что это мешало сложным миграциям. Но возможность такая есть, да. Я помню был проект где это реально произошло и там из за этого были неприятности, связанные то ли с джанговскими правами, то ли с сохраненными фикстурами ...
UPD вспомнил. В частности, в списке раздаваемых прав в джанговской админке пользователей и групп выводились как раз права на отсутствующие модели, отличающиеся странными вывертами в отображении. Ну и фикстуры с отсутствующими моделями не импортируются конечно ...
Пакет для импорта данных в Django