Pull to refresh

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 Con EU я про это упоминал в докладе.

UFO just landed and posted this here
Sign up to leave a comment.

Articles