develop
liangliangyy 7 years ago
parent 0477a15c4f
commit e5e2bab497

@ -22,7 +22,7 @@ from django.core.mail import EmailMultiAlternatives
from django.db.models.signals import post_save
from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed
from DjangoBlog.utils import cache, send_email, expire_view_cache, get_blog_setting
from DjangoBlog.utils import cache, send_email, expire_view_cache, get_blog_setting, delete_view_cache
from DjangoBlog.spider_notify import SpiderNotify
from oauth.models import OAuthUser
from blog.models import Article, Category, Tag, Links, SideBar, BlogSettings
@ -65,12 +65,16 @@ def send_email_signal_handler(sender, **kwargs):
def oauth_user_login_signal_handler(sender, **kwargs):
id = kwargs['id']
oauthuser = OAuthUser.objects.get(id=id)
setting = get_blog_setting()
if oauthuser.picture and not oauthuser.picture.startswith(setting.resource_path):
site = Site.objects.get_current().domain
if oauthuser.picture and not oauthuser.picture.find(site) >= 0:
from DjangoBlog.utils import save_user_avatar
oauthuser.picture = save_user_avatar(oauthuser.picture)
oauthuser.save()
delete_view_cache(oauthuser.author.username)
cache.clear()
@receiver(post_save)
def model_post_save_callback(sender, instance, created, raw, using, update_fields, **kwargs):
@ -99,10 +103,7 @@ def model_post_save_callback(sender, instance, created, raw, using, update_field
cache.delete('seo_processor')
comment_cache_key = 'article_comments_{id}'.format(id=instance.article.id)
cache.delete(comment_cache_key)
from django.core.cache.utils import make_template_fragment_key
key = make_template_fragment_key('sidebar', [instance.author.username])
logger.info('delete sidebar key:' + key)
cache.delete(key)
delete_view_cache(instance.author.username)
_thread.start_new(send_comment_email, (instance,))
@ -114,4 +115,5 @@ def model_post_save_callback(sender, instance, created, raw, using, update_field
@receiver(user_logged_out)
def user_auth_callback(sender, request, user, **kwargs):
logger.info(user)
delete_view_cache(user.username)
cache.clear()

@ -209,11 +209,19 @@ def get_blog_setting():
def save_user_avatar(url):
setting = get_blog_setting()
logger.info(url)
try:
imgname = url.split('/')[-1]
if imgname:
path = r'{basedir}/avatar/{img}'.format(basedir=setting.resource_path, img=imgname)
if os.path.exists(path):
os.remove(path)
except:
pass
try:
rsp = requests.get(url, timeout=2)
if rsp.status_code == 200:
setting = get_blog_setting()
basepath = r'{basedir}/avatar/'.format(basedir=setting.resource_path)
if not os.path.exists(basepath):
os.makedirs(basepath)
@ -229,3 +237,10 @@ def save_user_avatar(url):
except Exception as e:
logger.error(e)
return url
def delete_view_cache(username):
from django.core.cache.utils import make_template_fragment_key
key = make_template_fragment_key('sidebar', [username])
logger.info('delete sidebar key:' + key)
cache.delete(key)

@ -5,6 +5,7 @@ from django.contrib.sites.models import Site
import datetime
from accounts.models import BlogUser
from django.urls import reverse
from DjangoBlog.utils import *
# Create your tests here.
@ -58,6 +59,7 @@ class AccountTest(TestCase):
user.is_superuser = True
user.is_staff = True
user.save()
delete_view_cache(user.username)
category = Category()
category.name = "categoryaaa"
category.created_time = datetime.datetime.now()

@ -24,9 +24,6 @@ class OAuthUserAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
def link_to_usermodel(self, obj):
if obj.author:
info = (obj.author._meta.app_label, obj.author._meta.model_name)

@ -58,7 +58,11 @@ def authorize(request):
import datetime
user.nikename = "djangoblog" + datetime.datetime.now().strftime('%y%m%d%I%M%S')
try:
user = OAuthUser.objects.get(type=type, openid=user.openid)
temp = OAuthUser.objects.get(type=type, openid=user.openid)
temp.picture = user.picture
temp.matedata = user.matedata
temp.nikename = user.nikename
user = temp
except ObjectDoesNotExist:
pass
# facebook的token过长
@ -83,7 +87,6 @@ def authorize(request):
oauth_user_login_signal.send(sender=authorize.__class__, id=user.id)
login(request, author)
return HttpResponseRedirect(nexturl)
if not email:
user.save()

Loading…
Cancel
Save