2013-09-05 4 views
0

У меня есть вопрос о django-registration (https://bitbucket.org/ubernostrum/django-registration), но я не могу найти их трекер ошибок или список рассылки, поэтому я попробую удачу здесь.Настроить сообщения об ошибках на django-registration

Мое приложение разрешает вход через OpenID и логин/пароль.

Некоторые пользователи «забыли свой пароль» на FS на попытки сбросить его (here), но потом они получают сообщение:

Учетная запись пользователя, связанный с этим электронной почты не может сбросить пароль.

Без дальнейших объяснений. (Вы можете попытаться сбросить мой пароль - просто введите свой адрес электронной почты (tonylampada на GMAIL точка ком) там, чтобы увидеть сообщение об ошибке

Я хочу, чтобы настроить это сообщение Лучше сообщение будет:.

.

Учетная запись пользователя, связанная с этим адресом электронной почты, не может сбрасывать пароль. Это происходит из-за того, что учетная запись пользователя была создана с помощью провайдера OpenID или OAuth (типично Google, Facebook, MyOpenID и т. Д.). Чтобы увидеть поставщика логина (ы), связанные с этим счетом, посмотрите на user profile.

Что является самым простым способом рассказать о регистрации django?

Спасибо!

PS: Этот вопрос на Github: https://github.com/freedomsponsors/www.freedomsponsors.org/issues/191 (только в случае, если вы чувствуете, как сделать запрос нагрузочного сегодня :-))

ответ

2

Джанго регистрация использует взгляды от django.contrib.auth.

В этом случае: reset_password()github

Поскольку это не класс на основе точки зрения, вы не можете изменить/наследовать от него, но вы можете передать в PasswordResetForm от django.contrib.auth.forms

from django.contrib.auth.forms import PasswordResetForm 

class CustomResetForm(PasswordResetForm): 

     def validate(self, value): 
      #pseudocode 
      if user.cant_reset_pw: 
       raise ValidationError("The user account associated with this e-mail address cannot reset the password. and so forth..") 

      super(CustomResetForm, self).validate(value) 

Вам необходимо связать вещи, переопределив URL-адрес r'^password/change/$', чтобы указать на пользовательскую функцию, которая вызывает django.contrib.auth.passwort_reset() с вашим CustomResetForm.

+0

Прямо на месте, спасибо! –