Если вам не нужно сильно менять поведение админки — то и допиливать ничего не прийдется. На счет поддержки — я планирую использовать приложение в своих проектах как замену поднадоевшего дизайна admin-tools, я не смогу его не поддерживать :)
apt-get install jenkins никто не отменял.
Проясните по хардкору, в чем преимущества github перед bitbucket? Лично мне удобнее пользоваться bitbucket, т.к. github не поддерживает mercurial. Какие плюшки кроме переделанного jenkins у него есть? Может, тоже стоит на него перебраться?
вначале посмотрел код, подумал, на кой черт вы туда QT прицепили. Потом хватило вежливости прочитать пост, и все стало ясно.
> Пролистав javascript, я нашёл функцию, которая из пути без первого символа и параметра s создаёт нужный нам ключ. Эту функцию было лень переписывать на python, поэтому она просто выполняется через QScript.
В django мы не можем подключить сигнал непосредственно к абстрактной модели, т.к. в качестве сендера будет использоваться модель-потомок. Но мы можем подключить свой менеджер, который унаследует потомок.
При подключении менеджера вызывается contribute_to_class, в котором мы цепляем к модели обработчик сигнала class_prepared, срабатывающий после инициализации класса. в самом обработчике — подключаем сигнал post_save, выполняющий основную работу.
Такой workaround для сигналов к абстрактным моделям. Идею нашел на stackoverflow, сам не пробовал еще. Там же есть еще вариант создать обработчик сигналов для всех моделей, и проверять в нем класс сендера. Но гонять такую проверку для всех зарегистрированных моделей — плохая идея.
Можно избавиться от декораторов сигналов, и следовательно, создания пустых функций-сигналов, используя для подключения сигналов post_save собственный менеджер. Примерно, так:
from django.db import models
from django.dispatch import receiver
from django.db.models.signals import class_prepared, post_save
def _save_created_by(sender, **kwargs):
"""
сохраняем пользователя, создавшего модель в нужное поле
"""
...
На счет документации в админке — появится как доделаю более срочные задачи.
Правда, наблюдается глюк с доваблением новых элементов через попап, но его я скоро исправлю.
* get_list_display в админке
* динамические фильтры
вероятно, еще много чего, всего и не вспомнишь
Проясните по хардкору, в чем преимущества github перед bitbucket? Лично мне удобнее пользоваться bitbucket, т.к. github не поддерживает mercurial. Какие плюшки кроме переделанного jenkins у него есть? Может, тоже стоит на него перебраться?
> Пролистав javascript, я нашёл функцию, которая из пути без первого символа и параметра s создаёт нужный нам ключ. Эту функцию было лень переписывать на python, поэтому она просто выполняется через QScript.
P.S. hack.py супер)
При подключении менеджера вызывается contribute_to_class, в котором мы цепляем к модели обработчик сигнала class_prepared, срабатывающий после инициализации класса. в самом обработчике — подключаем сигнал post_save, выполняющий основную работу.
Такой workaround для сигналов к абстрактным моделям. Идею нашел на stackoverflow, сам не пробовал еще. Там же есть еще вариант создать обработчик сигналов для всех моделей, и проверять в нем класс сендера. Но гонять такую проверку для всех зарегистрированных моделей — плохая идея.
from django.db import models
from django.dispatch import receiver
from django.db.models.signals import class_prepared, post_save
def _save_created_by(sender, **kwargs):
"""
сохраняем пользователя, создавшего модель в нужное поле
"""
...
def _set_created_by_signals(sender):
post_save.connect(_save_created_by, sender=sender)
class CreatedByManager(models.Manager):
def contribute_to_class(self, model, name):
class_prepared.connect(_set_created_by_signals, sender=model.__class__)
return super(CreatedByManager, self).contribute_to_class(model, name)