def seo_processor(requests): key = 'seo_processor' value = cache.get(key) if value: return value else: # logger.debug('set processor cache.') setting = get_blog_setting() value = { 'SITE_NAME': setting.sitename, 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, 'SITE_SEO_DESCRIPTION': setting.site_seo_description, 'SITE_DESCRIPTION': setting.site_description, 'SITE_KEYWORDS': setting.site_keywords, 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', 'ARTICLE_SUB_LENGTH': setting.article_sub_length, 'nav_category_list': Category.objects.all(), 'nav_pages': Article.objects.filter(type='p', status='p'), 'ENABLE_SITE_COMMENT': setting.enable_site_comment, 'FOOTER_TITLE': setting.footer_title, 'ANALYTICS_CODE': setting.analyticscode, "CURRENT_YEAR": datetime.now().year, "SHOW_CATEGORY_BAR": setting.show_category_bar, } cache.set(key, value, 60 * 60 * 10) return value
def seo_processor(requests): key = 'seo_processor' value = cache.get(key) if value: logger.info('get processor cache.') return value else: logger.info('set processor cache.') setting = get_blog_setting() value = { 'SITE_NAME': setting.sitename, 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, 'SITE_SEO_DESCRIPTION': setting.site_seo_description, 'SITE_DESCRIPTION': setting.site_description, 'SITE_KEYWORDS': setting.site_keywords, 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', 'ARTICLE_SUB_LENGTH': setting.article_sub_length, 'nav_category_list': Category.objects.all(), 'nav_pages': Article.objects.filter(type='p', status='p'), 'OPEN_SITE_COMMENT': setting.open_site_comment, 'BEIAN_CODE': setting.beiancode, 'ANALYTICS_CODE': setting.analyticscode, "BEIAN_CODE_GONGAN": setting.gongan_beiancode, "SHOW_GONGAN_CODE": setting.show_gongan_code } cache.set(key, value, 60 * 60 * 10) return value
def seo_processor(requests): key = 'seo_processor' value = cache.get(key) if value: return value else: logger.info('set processor cache.') setting = get_blog_setting() value = { 'SITE_NAME': setting.sitename, 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, 'SITE_SEO_DESCRIPTION': setting.site_seo_description, 'SITE_DESCRIPTION': setting.site_description, 'SITE_KEYWORDS': setting.site_keywords, 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', 'ARTICLE_SUB_LENGTH': setting.article_sub_length, 'nav_category_list': Category.objects.all(), 'nav_pages': Article.objects.filter(type='p', status='p'), 'OPEN_SITE_COMMENT': setting.open_site_comment, 'BEIAN_CODE': setting.beiancode, 'ANALYTICS_CODE': setting.analyticscode, "BEIAN_CODE_GONGAN": setting.gongan_beiancode, "SHOW_GONGAN_CODE": setting.show_gongan_code } cache.set(key, value, 60 * 60 * 10) return value
def oauth_user_login_callback(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): from DjangoBlog.utils import save_user_avatar oauthuser.picture = save_user_avatar(oauthuser.picture) oauthuser.save()
def load_sidebar(user, linktype): """ 加载侧边栏 :return: """ logger.info('load sidebar') from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() if user and user.is_superuser: recent_articles = Article.objects.filter( status='p')[:blogsetting.sidebar_article_count] else: recent_articles = Article.objects.filter( status='p', is_show=True)[:blogsetting.sidebar_article_count] sidebar_categorys = Category.objects.all() extra_sidebars = SideBar.objects.filter( is_enable=True).order_by('sequence') if user and user.is_superuser: most_read_articles = Article.objects.filter( status='p').order_by('-views')[:blogsetting.sidebar_article_count] else: most_read_articles = Article.objects.filter( status='p', is_show=True).order_by( '-views')[:blogsetting.sidebar_article_count] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.filter( is_enable=True).filter(Q(show_type=str(linktype)) | Q(show_type='a')) commment_list = Comment.objects.filter( is_enable=True).order_by('-id')[:blogsetting.sidebar_comment_count] # 标签云 计算字体大小 # 根据总数计算出平均值 大小为 (数目/平均值)*步长 increment = 5 tags = Tag.objects.all() sidebar_tags = None if tags and len(tags) > 0: s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] count = sum([t[1] for t in s]) dd = 1 if (count == 0 or not len(tags)) else count / len(tags) import random sidebar_tags = list( map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) random.shuffle(sidebar_tags) return { 'recent_articles': recent_articles, 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, 'sidebar_comments': commment_list, 'user': user, 'sidabar_links': links, 'show_google_adsense': blogsetting.show_google_adsense, 'google_adsense_codes': blogsetting.google_adsense_codes, 'open_site_comment': blogsetting.open_site_comment, 'show_gongan_code': blogsetting.show_gongan_code, 'sidebar_tags': sidebar_tags, 'extra_sidebars': extra_sidebars }
def truncatechars_content(content): """ 获得文章内容的摘要 :param content: :return: """ from django.template.defaultfilters import truncatechars_html from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return truncatechars_html(content, blogsetting.article_sub_length)
def truncatechars_content(content): """ 获得文章内容的摘要 :param content: :return: """ from django.template.defaultfilters import truncatechars_html from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return truncatechars_html(content, blogsetting.article_sub_length)
def load_sidebar(user, linktype, request): """ Load the sidebar :return: """ # logger.info('load sidebar') # logger.info('request: {}'.format(request)) from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() recent_articles = Article.objects.filter(status='p')[:blogsetting.sidebar_article_count] sidebar_categorys = Category.objects.all() extra_sidebars = SideBar.objects.filter(is_enabled=True).order_by('sequence') most_read_articles = Article.objects.filter(status='p').order_by('-views')[:blogsetting.sidebar_article_count] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.filter(is_enabled=True).filter(Q(show_type=str(linktype)) | Q(show_type='a')) commment_list = Comment.objects.filter(is_enabled=True).order_by('-id')[:blogsetting.sidebar_comment_count] unique_commment_list = [] for comment in commment_list: if any(c.article.title == comment.article.title for c in unique_commment_list) and any(c.author.username == comment.author.username for c in unique_commment_list): continue unique_commment_list.append(comment) # Tag cloud calculate font size # Calculate the average value based on the total size (number / average) * step size increment = 5 tags = Tag.objects.all() sidebar_tags = None if tags and len(tags) > 0: s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] count = sum([t[1] for t in s]) dd = 1 if (count == 0 or not len(tags)) else count / len(tags) import random sidebar_tags = list(map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) random.shuffle(sidebar_tags) return { 'recent_articles': recent_articles, 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, 'sidebar_comments': unique_commment_list, 'user': user, 'sidabar_links': links, 'show_google_adsense': blogsetting.show_google_adsense, 'google_adsense_codes': blogsetting.google_adsense_codes, 'enable_site_comment': blogsetting.enable_site_comment, 'sidebar_tags': sidebar_tags, 'show_views_bar': blogsetting.show_views_bar, 'show_category_bar': blogsetting.show_category_bar, 'show_search_bar': blogsetting.show_search_bar, 'show_menu_bar': blogsetting.show_menu_bar, 'extra_sidebars': extra_sidebars, 'request': request }
def load_breadcrumb(article): """ 获得文章面包屑 :param article: :return: """ names = article.get_category_tree() from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() site = get_current_site().domain names.append((blogsetting.sitename, '/')) names = names[::-1] return {'names': names, 'title': article.title}
def load_sidebar(user, linktype): """ Load the sidebar :return: """ logger.info('load sidebar') from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() recent_articles = Article.objects.filter( status='p')[:blogsetting.sidebar_article_count] sidebar_categorys = Category.objects.all() extra_sidebars = SideBar.objects.filter( is_enable=True).order_by('sequence') most_read_articles = Article.objects.filter(status='p').order_by( '-views')[:blogsetting.sidebar_article_count] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.filter(is_enable=True).filter( Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A)) commment_list = Comment.objects.filter(is_enable=True).order_by( '-id')[:blogsetting.sidebar_comment_count] # Tag cloud calculate font size # Calculate the average value based on the total number.The size is (number/average)*step increment = 5 tags = Tag.objects.all() sidebar_tags = None if tags and len(tags) > 0: s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] count = sum([t[1] for t in s]) dd = 1 if (count == 0 or not len(tags)) else count / len(tags) import random sidebar_tags = list( map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) random.shuffle(sidebar_tags) return { 'recent_articles': recent_articles, 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, 'sidebar_comments': commment_list, 'user': user, 'sidabar_links': links, 'show_google_adsense': blogsetting.show_google_adsense, 'google_adsense_codes': blogsetting.google_adsense_codes, 'open_site_comment': blogsetting.open_site_comment, 'show_gongan_code': blogsetting.show_gongan_code, 'sidebar_tags': sidebar_tags, 'extra_sidebars': extra_sidebars }
def load_article_detail(article, isindex, user): """ 加载文章详情 :param article: :param isindex:是否列表页,若是列表页只显示摘要 :return: """ from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return { 'article': article, 'isindex': isindex, 'user': user, 'open_site_comment': blogsetting.open_site_comment, }
def load_article_detail(article, isindex, user): """ Load article details :param article: :param isindex:Whether list page,If the list page only shows the summary :return: """ from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return { 'article': article, 'isindex': isindex, 'user': user, 'open_site_comment': blogsetting.open_site_comment, }
def load_article_detail(article, isindex, user): """ 加载文章详情 :param article: :param isindex:是否列表页,若是列表页只显示摘要 :return: """ from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return { 'article': article, 'isindex': isindex, 'user': user, 'open_site_comment': blogsetting.open_site_comment, }
def load_sidebar(user): """ 加载侧边栏 :return: """ logger.info('load sidebar') from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() recent_articles = Article.objects.filter( status='p')[:blogsetting.sidebar_article_count] sidebar_categorys = Category.objects.all() extra_sidebars = SideBar.objects.filter( is_enable=True).order_by('sequence') most_read_articles = Article.objects.filter( status='p').order_by('-views')[:blogsetting.sidebar_article_count] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.all() commment_list = Comment.objects.filter( is_enable=True).order_by('-id')[:blogsetting.sidebar_comment_count] # show_adsense = settings.SHOW_GOOGLE_ADSENSE # 标签云 计算字体大小 # 根据总数计算出平均值 大小为 (数目/平均值)*步长 increment = 5 tags = Tag.objects.all() sidebar_tags = None if tags and len(tags) > 0: s = list(map(lambda t: (t, t.get_article_count()), tags)) count = sum(map(lambda t: t[1], s)) dd = 1 if count == 0 else count / len(tags) sidebar_tags = list( map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) return { 'recent_articles': recent_articles, 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, 'sidabar_links': links, 'sidebar_comments': commment_list, 'user': user, 'show_google_adsense': blogsetting.show_google_adsense, 'google_adsense_codes': blogsetting.google_adsense_codes, 'open_site_comment': blogsetting.open_site_comment, 'show_gongan_code': blogsetting.show_gongan_code, 'sidebar_tags': sidebar_tags, 'extra_sidebars': extra_sidebars }
def fileupload(request): """ 该方法需自己写调用端来上传图片,该方法仅提供图床功能 :param request: :return: """ if request.method == 'POST': sign = request.GET.get('sign', None) if not sign: return HttpResponseForbidden() if not sign == get_sha256(get_sha256(settings.SECRET_KEY)): return HttpResponseForbidden() response = [] for filename in request.FILES: timestr = datetime.datetime.now().strftime('%Y/%m/%d') imgextensions = ['jpg', 'png', 'jpeg', 'bmp'] fname = u''.join(str(filename)) isimage = len([i for i in imgextensions if fname.find(i) >= 0]) > 0 blogsetting = get_blog_setting() basepath = r'{basedir}/{type}/{timestr}'.format( basedir=blogsetting.resource_path, type='files' if not isimage else 'image', timestr=timestr) if settings.TESTING: basepath = settings.BASE_DIR + '/uploads' url = 'https://resource.lylinux.net/{type}/{timestr}/{filename}'.format( type='files' if not isimage else 'image', timestr=timestr, filename=filename) if not os.path.exists(basepath): os.makedirs(basepath) savepath = os.path.join( basepath, f"{uuid.uuid4().hex}{os.path.splitext(filename)[-1]}") with open(savepath, 'wb+') as wfile: for chunk in request.FILES[filename].chunks(): wfile.write(chunk) if isimage: from PIL import Image image = Image.open(savepath) image.save(savepath, quality=20, optimize=True) response.append(url) return HttpResponse(response) else: return HttpResponse("only for post")
def fileupload(request): """ This method needs to write the caller to upload the picture. This method only provides the picture bed function. :param request: :return: """ if request.method == 'POST': sign = request.GET.get('sign', None) if not sign: return HttpResponseForbidden() if not sign == get_md5(get_md5(settings.SECRET_KEY)): return HttpResponseForbidden() response = [] for filename in request.FILES: timestr = datetime.datetime.now().strftime('%Y/%m/%d') imgextensions = ['jpg', 'png', 'jpeg', 'bmp'] fname = u''.join(str(filename)) isimage = len([i for i in imgextensions if fname.find(i) >= 0]) > 0 blogsetting = get_blog_setting() basepath = r'{basedir}/{type}/{timestr}'.format( basedir=blogsetting.resource_path, type='files' if not isimage else 'image', timestr=timestr) if settings.TESTING: basepath = settings.BASE_DIR + '/uploads' url = 'https://mtuktarov.ru/{type}/{timestr}/{filename}'.format( type='files' if not isimage else 'image', timestr=timestr, filename=filename) if not os.path.exists(basepath): os.makedirs(basepath) savepath = os.path.join(basepath, filename) with open(savepath, 'wb+') as wfile: for chunk in request.FILES[filename].chunks(): wfile.write(chunk) if isimage: from PIL import Image image = Image.open(savepath) image.save(savepath, quality=20, optimize=True) response.append(url) return HttpResponse(response) else: return HttpResponse("only for post")
def load_article_detail(article, isindex, user): """ Loading article details :param article: :param isindex: List page containing only summary :return: """ from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() return { 'article': article, 'isindex': isindex, 'user': user, 'enable_site_comment': blogsetting.enable_site_comment, 'show_views_bar': blogsetting.show_views_bar, }
def load_breadcrumb(article): """ 获得文章面包屑 :param article: :return: """ names = article.get_category_tree() from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() site = Site.objects.get_current().domain names.append((blogsetting.sitename, site)) names = names[::-1] return { 'names': names, 'title': article.title }
def load_sidebar(user): """ 加载侧边栏 :return: """ logger.info('load sidebar') from DjangoBlog.utils import get_blog_setting blogsetting = get_blog_setting() recent_articles = Article.objects.filter(status='p')[:blogsetting.sidebar_article_count] sidebar_categorys = Category.objects.all() extra_sidebars = SideBar.objects.filter(is_enable=True).order_by('sequence') most_read_articles = Article.objects.filter(status='p').order_by('-views')[:blogsetting.sidebar_article_count] dates = Article.objects.datetimes('created_time', 'month', order='DESC') links = Links.objects.all() commment_list = Comment.objects.filter(is_enable=True).order_by('-id')[:blogsetting.sidebar_comment_count] # show_adsense = settings.SHOW_GOOGLE_ADSENSE # 标签云 计算字体大小 # 根据总数计算出平均值 大小为 (数目/平均值)*步长 increment = 5 tags = Tag.objects.all() sidebar_tags = None if tags and len(tags) > 0: s = list(map(lambda t: (t, t.get_article_count()), tags)) count = sum(map(lambda t: t[1], s)) dd = 1 if count == 0 else count / len(tags) sidebar_tags = list(map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) return { 'recent_articles': recent_articles, 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, 'sidabar_links': links, 'sidebar_comments': commment_list, 'user': user, 'show_google_adsense': blogsetting.show_google_adsense, 'google_adsense_codes': blogsetting.google_adsense_codes, 'open_site_comment': blogsetting.open_site_comment, 'show_gongan_code': blogsetting.show_gongan_code, 'sidebar_tags': sidebar_tags, 'extra_sidebars': extra_sidebars }