2012-03-02 19 views
3

こんにちは私は、ユーザーの管理者からパスワードリセット電子メールを送信し、アクションを設定したいと思います。django admin action

password_resetビューを使用できるかどうか判断できません。ビューを使用してクエリーセットをループして、トークンを生成して電子メールを送信できますか?

答えて

5
  1. サブクラスUSERADMIN、あなたはreverse engineering the password_reset viewPasswordResetFormを使用し、追加したアクションを追加django.contrib.auth.admin

  2. からそれをインポートすることができます。 admin.siteから

  3. 登録解除ユーザー、admin.site.register(User)

  4. ユーザー

ためModelAdminのは、ここで登録解除の使用をプッシュするための一例(おかげでクリス・プラットだとして、あなたのサブクラスを登録/レジスタ):

from django.contrib.auth.forms import PasswordResetForm 
from django.contrib.auth.tokens import default_token_generator 
from django.conf import settings 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class YourUserAdmin(UserAdmin): 
    actions = list(UserAdmin.actions) + ['send_reset_password'] 

    def send_reset_password(modeladmin, request, queryset): 
     for user in queryset: 
      form = PasswordResetForm({'email': user.email}) 
      form.full_clean() 
      form.save({ 
       'use_https': request.is_secure(), 
       'token_generator': default_token_generator, 
       'from_email': settings.DEFAULT_FROM_EMAIL, 
       'email_template_name': 'registration/password_reset_email.html', 
       'request': request 
      }) 

admin.site.unregister(User) 
admin.site.register(User, YourUserAdmin) 
+1

nサルパッチ 'UserAdmin'が必要です。それをサブクラス化し、必要に応じて任意の属性またはメソッドをオーバーライドするだけです。次に、 'admin.site.unregister(UserAdmin)'と 'admin.site.register(User、MyUserAdmin)'だけです。 –

+0

どういう違いがあるのか​​分かりませんが、おそらくサルのパッチがなくてもやや清潔です。ありがとう! – jpic

+0

私は未登録のことをしたいと思います... @jpicこれは私に残します: 'PasswordResetForm'オブジェクトには 'users_cache'属性がありません – Timbadu