def add_author_view(request): """ 添加作者 """ form = AddAuthorForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('author_list')) item_id = form.cleaned_data.get('item_id') try: if not item_id: Author.objects.create( name=form.cleaned_data.get('name'), email=form.cleaned_data.get('email'), website=form.cleaned_data.get('website'), ) messages.success(request, '添加成功') else: Author.objects.filter(id=item_id).update( name=form.cleaned_data.get('name'), email=form.cleaned_data.get('email'), website=form.cleaned_data.get('website'), ) messages.success(request, '编辑成功') return HttpResponseRedirect(reverse('author_list')) except Exception as e: messages.error(request, '操作失败: %s' % e) return HttpResponseRedirect(reverse('author_list'))
def add_friend_link_view(request): """ 添加/编辑友情链接 """ form = AddFriendLinkForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('friend_link_list')) edit_id = form.cleaned_data.get('edit_id') try: if not edit_id: Links.objects.create( name=form.cleaned_data.get('name'), link=form.cleaned_data.get('link'), avatar=form.cleaned_data.get('avatar'), desc=form.cleaned_data.get('desc'), ) messages.success(request, '添加成功') else: Links.objects.filter(id=edit_id).update( name=form.cleaned_data.get('name'), link=form.cleaned_data.get('link'), avatar=form.cleaned_data.get('avatar'), desc=form.cleaned_data.get('desc'), ) messages.success(request, '编辑成功') cache.delete_pattern('tmp_links') # 清除缓存 return HttpResponseRedirect(reverse('friend_link_list')) except Exception as e: messages.error(request, '操作失败: %s' % e) return HttpResponseRedirect(reverse('friend_link_list'))
def add_carousel_view(request): """ 添加轮播图片 """ form = AddCarouselForm(request.POST, request.FILES) if not form.is_valid(): messages.error(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('carousel_list')) try: filestream = request.FILES.get('path') key, img_path = upload_data(filestream, 'blog') img_type = int(form.cleaned_data.get('img_type')) CarouselImg.objects.create( name=form.cleaned_data.get('name'), description=form.cleaned_data.get('description'), path=img_path, link=form.cleaned_data.get('link'), weights=form.cleaned_data.get('weights'), img_type=img_type, ) messages.success(request, '添加成功') if img_type == CarouselImgType.BANNER: cache.delete_pattern('tmp_carouse_imgs') # 清除缓存 elif img_type == CarouselImgType.ADS: cache.delete_pattern('tmp_ads_imgs') # 清除缓存 return HttpResponseRedirect(reverse('carousel_list')) except Exception as e: messages.error(request, '添加失败: %s' % e) return HttpResponseRedirect(reverse('carousel_list'))
def add_ownmessage_view(request): """ 添加主人寄语 """ tp = "manager/create_ownmessage.html" context = { "active_classes": ['.blog', '.ownmessage_list'], } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateOwnMessageForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('ownmessage_list')) try: OwnerMessage.objects.create( summary=form.cleaned_data.get("summary"), message=form.cleaned_data.get("message"), editor=EditorKind.Markdown) messages.success(request, '添加成功') return HttpResponseRedirect(reverse('ownmessage_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('ownmessage_list'))
def blog_edit_view(request, item_id): """ 博客编辑 :param request: :return: """ article = Article.objects.filter(id=item_id).first() if not article: messages.warning(request, "此博客不存在") return HttpResponseRedirect(reverse('blog_list')) selected_tags = article.get_tags() auhtors = Author.objects.values("id", "name") classifications = Classification.objects.values("id", "name") tags = Tag.objects.values("id", "name") context = { "active_classes": ['.blog', '.blog_list'], "article": article, "auhtors": auhtors, "classifications": classifications, "tags": tags, "selected_tags": selected_tags, "blog_status": BlogStatus.CHOICES, "item_id": item_id } if request.method == "GET": return render(request, "manager/edit_blog.html", context) if request.method == "POST": form = OperateBlogForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('blog_list')) try: new_tags = request.POST.getlist('tags') article.set_tags(new_tags) Article.objects.filter(id=item_id).update( title=form.cleaned_data.get("title"), author_id=form.cleaned_data.get("author"), classification_id=form.cleaned_data.get("classification"), content=form.cleaned_data.get("content"), count=form.cleaned_data.get("count"), status=form.cleaned_data.get("status"), editor=form.cleaned_data.get("editor"), last_update=datetime.now() ) messages.success(request, '修改成功') cache.delete_pattern("tmp_articles") # 清除缓存 cache.delete_pattern("tmp_archive") # 清除缓存 return HttpResponseRedirect(reverse('blog_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('blog_list'))
def blog_edit_view(request, item_id): """ 博客编辑 :param request: :return: """ article = Article.objects.filter(id=item_id).first() if not article: messages.warning(request, "此博客不存在") return HttpResponseRedirect(reverse('blog_list')) selected_tags = article.get_tags() auhtors = Author.objects.values("id", "name") classifications = Classification.objects.values("id", "name") tags = Tag.objects.values("id", "name") context = { "active_classes": ['.blog', '.blog_list'], "article": article, "auhtors": auhtors, "classifications": classifications, "tags": tags, "selected_tags": selected_tags, "blog_status": BlogStatus.CHOICES, "item_id": item_id } if request.method == "GET": return render(request, "manager/edit_blog.html", context) if request.method == "POST": form = OperateBlogForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('blog_list')) try: new_tags = request.POST.getlist('tags') article.set_tags(new_tags) Article.objects.filter(id=item_id).update( title=form.cleaned_data.get("title"), author_id=form.cleaned_data.get("author"), classification_id=form.cleaned_data.get("classification"), content=form.cleaned_data.get("content"), count=form.cleaned_data.get("count"), status=form.cleaned_data.get("status"), editor=form.cleaned_data.get("editor"), ) messages.success(request, u'修改成功') return HttpResponseRedirect(reverse('blog_list')) except Exception, ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('blog_list'))
def blog_create_view(request): """ 博客添加 """ tp = "manager/create_blog.html" auhtors = Author.objects.values("id", "name") classifications = Classification.objects.values("id", "name") tags = Tag.objects.values("id", "name") context = { "active_classes": ['.blog', '.blog_list'], "auhtors": auhtors, "classifications": classifications, "tags": tags, "blog_status": BlogStatus.CHOICES, } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateBlogForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('blog_list')) try: article = Article.objects.create( title=form.cleaned_data.get("title"), author_id=form.cleaned_data.get("author"), classification_id=form.cleaned_data.get("classification"), content=form.cleaned_data.get("content"), count=form.cleaned_data.get("count"), status=form.cleaned_data.get("status"), editor=EditorKind.Markdown, ) tags = request.POST.getlist('tags') article.set_tags(tags) messages.success(request, u'添加成功') cache.delete_pattern("tmp_articles") # 清除缓存 cache.delete_pattern("tmp_archive") # 清除缓存 return HttpResponseRedirect(reverse('blog_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('blog_list'))
def add_music_view(request): """ 添加背景音乐 """ form = AddMusicForm(request.POST) if not form.is_valid(): messages.error(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('music_list')) try: Music.objects.create( name=form.cleaned_data.get('name'), url=form.cleaned_data.get('url'), cover=form.cleaned_data.get('cover'), artist=form.cleaned_data.get('artist'), ) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('music_list')) except Exception as e: messages.error(request, u'添加失败: %s' % e) return HttpResponseRedirect(reverse('music_list'))
def add_author_view(request): """ 添加作者 """ form = AddAuthorForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('author_list')) try: Author.objects.create( name=form.cleaned_data.get('name'), email=form.cleaned_data.get('email'), website=form.cleaned_data.get('website'), ) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('author_list')) except Exception as e: messages.error(request, u'添加失败: %s' % e) return HttpResponseRedirect(reverse('author_list'))
def add_carousel_view(request): """ 添加轮播图片 """ form = AddCarouselForm(request.POST) if not form.is_valid(): messages.error(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('carousel_list')) try: CarouselImg.objects.create( name=form.cleaned_data.get('name'), description=form.cleaned_data.get('description'), path=form.cleaned_data.get('path'), link=form.cleaned_data.get('link'), weights=form.cleaned_data.get('weights'), ) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('carousel_list')) except Exception as e: messages.error(request, u'添加失败: %s' % e) return HttpResponseRedirect(reverse('carousel_list'))
def add_friend_link_view(request): """ 添加友情链接 """ form = AddFriendLinkForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('friend_link_list')) try: Links.objects.create( name=form.cleaned_data.get('name'), link=form.cleaned_data.get('link'), avatar=form.cleaned_data.get('avatar'), desc=form.cleaned_data.get('desc'), ) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('friend_link_list')) except Exception as e: messages.error(request, u'添加失败: %s' % e) return HttpResponseRedirect(reverse('friend_link_list'))
def blog_create_view(request): """ 博客添加 """ tp = "manager/create_blog.html" auhtors = Author.objects.values("id", "name") classifications = Classification.objects.values("id", "name") tags = Tag.objects.values("id", "name") context = { "active_classes": ['.blog', '.blog_list'], "auhtors": auhtors, "classifications": classifications, "tags": tags, "blog_status": BlogStatus.CHOICES, } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateBlogForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('blog_list')) try: article = Article.objects.create( title=form.cleaned_data.get("title"), author_id=form.cleaned_data.get("author"), classification_id=form.cleaned_data.get("classification"), content=form.cleaned_data.get("content"), count=form.cleaned_data.get("count"), status=form.cleaned_data.get("status"), editor=EditorKind.Markdown, ) tags = request.POST.getlist('tags') article.set_tags(tags) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('blog_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('blog_list'))
def edit_ownmessage_view(request, item_id): """ 主人寄语编辑 :param request: :return: """ message = OwnerMessage.objects.filter(id=item_id).first() if not message: messages.warning(request, "此主人寄语不存在") return HttpResponseRedirect(reverse('ownmessage_list')) tp = "manager/edit_ownmessage.html" context = { "active_classes": ['.blog', '.ownmessage_list'], "message": message, "item_id": item_id } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateOwnMessageForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('ownmessage_list')) data = { "summary": form.cleaned_data.get("summary"), "message": form.cleaned_data.get("message"), "editor": form.cleaned_data.get("editor"), "last_update": datetime.now() } try: OwnerMessage.objects.filter(id=item_id).update(**data) messages.success(request, '修改成功') return HttpResponseRedirect(reverse('ownmessage_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('ownmessage_list'))
def edit_ownmessage_view(request, item_id): """ 主人寄语编辑 :param request: :return: """ message = OwnerMessage.objects.filter(id=item_id).first() if not message: messages.warning(request, "此主人寄语不存在") return HttpResponseRedirect(reverse('ownmessage_list')) tp = "manager/edit_ownmessage.html" context = { "active_classes": ['.blog', '.ownmessage_list'], "message": message, "item_id": item_id } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateOwnMessageForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('ownmessage_list')) data = { "summary": form.cleaned_data.get("summary"), "message": form.cleaned_data.get("message"), "editor": form.cleaned_data.get("editor") } try: OwnerMessage.objects.filter(id=item_id).update(**data) messages.success(request, u'修改成功') return HttpResponseRedirect(reverse('ownmessage_list')) except Exception, ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('ownmessage_list'))
def add_ownmessage_view(request): tp = "manager/create_ownmessage.html" context = { "active_classes": ['.blog', '.ownmessage_list'], } if request.method == "GET": return render(request, tp, context) if request.method == "POST": form = OperateOwnMessageForm(request.POST) if not form.is_valid(): messages.warning(request, "</br>".join(form_error(form))) return HttpResponseRedirect(reverse('ownmessage_list')) try: OwnerMessage.objects.create( summary=form.cleaned_data.get("summary"), message=form.cleaned_data.get("message"), editor=EditorKind.Markdown ) messages.success(request, u'添加成功') return HttpResponseRedirect(reverse('ownmessage_list')) except Exception as ex: messages.warning(request, ex) return HttpResponseRedirect(reverse('ownmessage_list'))
def add_comments_view(request): """ 添加评论 """ form = CommentForm(request.POST) if not form.is_valid(): return http_response(request, statuscode=ERRORCODE.PARAM_ERROR, msg_cn="</br>".join(form_error(form))) nickname = form.cleaned_data.get('nickname') email = form.cleaned_data.get('email') website = form.cleaned_data.get('website') content = form.cleaned_data.get('content') target = form.cleaned_data.get('target') parent_comment_id = form.cleaned_data.get('parent_comment_id') try: user, created = Visitor.objects.update_or_create( nickname=nickname, email=email, defaults={ "nickname": nickname, "email": email, "website": website, "avatar": gravatar_url(email) } ) ip_address = get_clientip(request) country, province, city = get_location_by_ip(ip_address) anchor = ''.join(random.sample(string.ascii_lowercase + string.digits, 16)) comment_data = { "user_id": user.id, "content": content, "target": target, "ip_address": ip_address, "country": country, "province": province, "city": city, "anchor": anchor, } # 二级回复 if parent_comment_id: parent_comment = Comments.objects.select_related().filter(pk=parent_comment_id).first() reply_to = parent_comment.user if parent_comment else None comment_data.update({"parent_id": parent_comment_id, "reply_to": reply_to}) mail_body = MailTemplate.notify_parent_user.format( parent_user=parent_comment.user.nickname, parent_comment=parent_comment.content, comment_user=nickname, comment=content, target_url=DOMAIN_NAME + parent_comment.target, anchor='#' + parent_comment.anchor ) send_email_task.delay(reply_to.email, mail_body) Comments.objects.create(**comment_data) cache.delete_pattern(target) # 清除缓存 if not parent_comment_id and not user.blogger: mail_body = MailTemplate.notify_blogger.format( nickname=nickname, comment=content, target_url=DOMAIN_NAME + target, anchor='#' + anchor ) send_email_task.delay(BLOGGER_EMAIL, mail_body) return http_response(request, statuscode=ERRORCODE.SUCCESS) except Exception as exp: return http_response(request, statuscode=ERRORCODE.FAILED, msg=exp)