Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2010 17:43:15

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Данный сигнал появился только в Django 1.2. Назрела необходимость использовать его в Django 1.1.
Знает ли кто-нибудь по этому поводу замену, или какой-нибудь workaround.

Задача состоит в том, чтобы выполнять некие телодвижения, когда пользователя включают или выключают из группы.



Офлайн

#2 Сен. 24, 2010 12:56:53

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Офлайн

#3 Сен. 24, 2010 13:53:41

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Это решение приходило в голову. Ну, если мыслей больше нет, придется делать так. Ferroman, спасибо.



Офлайн

#4 Сен. 24, 2010 13:57:58

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

сигнал m2m_changed

А чем плохо отлавливать сигналы модели Users и когда идет изменение модели - проверять, состоит он в группе или нет?



Офлайн

#5 Сен. 24, 2010 14:00:35

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

сигнал m2m_changed

vaxXxa
А чем плохо отлавливать сигналы модели Users и когда идет изменение модели - проверять, состоит он в группе или нет?
Плохо тем, что обработчик сигнала post_save на User еще не видит, что у пользователя поменялись группы. Для этого и создавался m2m_changed сигнал. К сожалению проект в ближайшее время на 1.2 версию не перейдет, поэтому буду играться с менеджером.



Офлайн

#6 Сен. 24, 2010 16:44:39

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

сигнал m2m_changed

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

Обращаюсь к вам, чтобы узнать, содержим ли такой подход подводные камни?



Офлайн

#7 Сен. 25, 2010 01:20:51

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Какой-то частный “воркераунд”. Если группы можно ещё где-то добавлять (даже в другом месте админки) то проблема.

Офлайн

#8 Сен. 25, 2010 11:21:50

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Ferroman
Какой-то частный “воркераунд”
Согласен
Ferroman
Если группы можно ещё где-то добавлять (даже в другом месте админки) то проблема.
В том-то и дело, что нет.



Офлайн

#9 Сен. 25, 2010 15:13:49

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

сигнал m2m_changed

Добавить новые связи возможно и в коде где-то через add/remove. В каком-нибудь кастомном сейве модели (пользователя, если не в админке, или или редактировании группы). Надо будет отслеживать все такие изменения. Хотя, если изменение состава групп происходит только в одном месте, то нормально, до апгрейда особых проблем не будет создавать, я думаю.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version