From 260244c5113610fcbe437daabf4735512de9a62a Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Thu, 4 Jul 2019 22:19:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E5=90=8D?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E4=B8=BA=E7=A9=BA=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=90=8E=E5=8F=B0=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- accounts/admin.py | 24 ++++++++++++++++-------- accounts/models.py | 1 + accounts/views.py | 3 ++- oauth/views.py | 8 ++++++-- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/accounts/admin.py b/accounts/admin.py index eebb165..7333b8d 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -5,6 +5,8 @@ from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.contrib.auth.forms import ReadOnlyPasswordHashField # Register your models here. from .models import BlogUser +from django.utils.translation import gettext, gettext_lazy as _ +from django.contrib.auth.forms import UsernameField class BlogUserCreationForm(forms.ModelForm): @@ -28,23 +30,29 @@ class BlogUserCreationForm(forms.ModelForm): user = super().save(commit=False) user.set_password(self.cleaned_data["password1"]) if commit: + user.source = 'adminsite' user.save() return user -class BlogUserChangeForm(forms.ModelForm): - password = ReadOnlyPasswordHashField +class BlogUserChangeForm(UserChangeForm): + password = ReadOnlyPasswordHashField( + label=_("Password"), + help_text=_( + "Raw passwords are not stored, so there is no way to see this " + "user's password, but you can change the password using " + "this form." + ), + ) email = forms.EmailField(label="Email", widget=forms.EmailInput) class Meta: model = BlogUser - fields = ('email', 'password', 'is_active') + fields = '__all__' + field_classes = {'username': UsernameField} - def clean_password(self): - # Regardless of what the user provides, return the initial value. - # This is done here, rather than on the field, because the - # field does not have access to the initial value - return self.initial["password"] + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) class BlogUserAdmin(UserAdmin): diff --git a/accounts/models.py b/accounts/models.py index 12b4f61..b7d4025 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -11,6 +11,7 @@ class BlogUser(AbstractUser): nickname = models.CharField('昵称', max_length=100, blank=True) created_time = models.DateTimeField('创建时间', default=now) last_mod_time = models.DateTimeField('修改时间', default=now) + source = models.CharField("创建涞源", max_length=100, blank=True) # objects = BlogUserManager() diff --git a/accounts/views.py b/accounts/views.py index 4845782..77a5e4c 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -33,6 +33,7 @@ class RegisterView(FormView): if form.is_valid(): user = form.save(False) user.is_active = False + user.source = 'Register' user.save(True) site = get_current_site().domain sign = get_md5(get_md5(settings.SECRET_KEY + str(user.id))) @@ -106,7 +107,7 @@ class LoginView(FormView): if cache and cache is not None: cache.clear() logger.info(self.redirect_field_name) - redirect_to = self.request.GET.get(self.redirect_field_name) + auth.login(self.request, form.get_user()) return super(LoginView, self).form_valid(form) # return HttpResponseRedirect('/') diff --git a/oauth/views.py b/oauth/views.py index 9c828dc..51aef0a 100644 --- a/oauth/views.py +++ b/oauth/views.py @@ -2,6 +2,7 @@ from django.shortcuts import render # Create your views here. from urllib.parse import urlparse +import datetime from django.conf import settings from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth import get_user_model @@ -70,7 +71,7 @@ def authorize(request): return HttpResponseRedirect(manager.get_authorization_url(nexturl)) user = manager.get_oauth_userinfo() if user: - if not user.nikename: + if not user.nikename.strip(): import datetime user.nikename = "djangoblog" + datetime.datetime.now().strftime('%y%m%d%I%M%S') try: @@ -96,6 +97,7 @@ def authorize(request): author = result[0] if result[1]: author.username = user.nikename + author.source = 'authorize' author.save() user.author = author @@ -127,7 +129,9 @@ def emailconfirm(request, id, sign): result = get_user_model().objects.get_or_create(email=oauthuser.email) author = result[0] if result[1]: - author.username = oauthuser.nikename + author.source = 'emailconfirm' + author.username = oauthuser.nikename.strip() if oauthuser.nikename.strip() else "djangoblog" + datetime.datetime.now().strftime( + '%y%m%d%I%M%S') author.save() oauthuser.author = author oauthuser.save()