Esempio n. 1
0
def cms_top_article(request):
    '''置顶和取消置顶
        1. 如果文章已置顶则无需再置顶,未置顶则置顶。
        2. 如果选择的是置顶(不置顶),而数据库中存的也是置顶(不置顶),
            则不需操作,抛出异常
            如果选择的是置顶,而数据库中存的是不置顶,则删除该字段
            如果选择的是不置顶,而数据库中存的是置顶,则创建改字段
        3. 修改TopModel之后也要更改ArticleModel的top字段
    '''
    form = TopArticleForm(request.POST)
    if form.is_valid():
        article_id = form.cleaned_data.get('article_id')
        # 本文章选择的是置顶还是不置顶
        is_top = form.cleaned_data.get('is_top')
        article_model = ArticleModel.objects.filter(pk=article_id).first()
        if article_model:
            top_model = article_model.top
            if is_top:
                if top_model:
                    return myjson.json_params_error(message=u'该文章已经置顶!')
                else:
                    top_model = TopModel()
                    top_model.save()
                    article_model.top = top_model
                    article_model.save(update_fields=['top'])
                    return myjson.json_result()
            else:
                if top_model:
                    top_model.delete()
                    return myjson.json_result()
                else:
                    return myjson.json_params_error(message=u'该文章没有置顶!')
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 2
0
def top_article(request):
    # method(GET,POST)
    # 参数
    # wiki
    form = TopArticleForm(request.POST)
    if form.is_valid():
        uid = form.cleaned_data.get('uid')
        articleModel = ArticleModel.objects.filter(pk=uid).first()

        if articleModel:
            if not articleModel.thumbnail:
                return myjson.json_params_error(message=u'有缩略图的文章才能置顶')
            topModel = articleModel.top
            if not topModel:
                topModel = TopModel()

            # 如果存在,也save一下,这样就会更新operate_time了
            topModel.save()

            articleModel.top = topModel
            articleModel.save(update_fields=['top'])
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该文章不存在')
    else:
        return form.get_error_response()
Esempio n. 3
0
def sms_captcha(request):
    telephone = request.GET.get('telephone')
    # 获取用户名,用于发送短信验证码显示用户名
    if not telephone:
        return myjson.json_params_error(message=u'必须指定手机号码!')
    if cache.get(telephone):
        return myjson.json_params_error(message=u'验证码已发送,请1分钟后重复发送!')
    # if not username:
    #     return myjson.json_params_error(message=u'必须输入用户名!')
    # 阿里大于APP_KEY及APP_SECRET
    app_key = settings.APP_KEY
    app_secret = settings.APP_SECRET
    req = top.setDefaultAppInfo(app_key, app_secret)
    req = toprequest.api.AlibabaAliqinFcSmsNumSendRequest()
    req.extend = ""
    req.sms_type = 'normal'
    # 签名名称
    req.sms_free_sign_name = settings.SIGN_NAME
    # 随即生成字符串
    captcha = Captcha.gene_text()
    # 设置短信的模板
    req.sms_param = "{code:%s}" % captcha
    # req.sms_param = "{username:%s,code:%s}" % (username, captcha)
    req.rec_num = telephone.decode('utf-8').encode('ascii')
    req.sms_template_code = settings.TEMPLATE_CODE
    try:
        resp = req.getResponse()
        cache.set(telephone, captcha, 120)
        return myjson.json_result()
    except Exception, e:
        print e
        return myjson.json_server_error()
Esempio n. 4
0
def front_article_star(request):
    '''点赞和取消点赞,同置顶
        1. 如果文章已点赞则无需再点赞,未点赞则点赞。
        2. 如果选择的是点赞(不点赞),而数据库中存的也是点赞(不点赞),
            则不需操作,抛出异常
            如果选择的是点赞,而数据库中存的是不点赞,则删除该字段
            如果选择的是不点赞,而数据库中存的是点赞,则创建改字段
        3. 修改TopModel之后也要更改ArticleModel的top字段
    '''
    form = ArticleStarForm(request.POST)
    if form.is_valid():
        article_id = form.cleaned_data.get('article_id')
        # 本文章选择的是置顶还是不置顶
        is_star = form.cleaned_data.get('is_star')
        article_model = ArticleModel.objects.filter(pk=article_id).first()
        star_model = ArticleStarModel.objects.filter(pk=article_id).first()
        if article_model:
            if is_star:
                if star_model:
                    return myjson.json_params_error(message=u'该文章已经置顶!')
                else:
                    star_model = ArticleStarModel()
                    star_model.author = request.user.username
                    star_model.article = article_model
                    star_model.save()
                    return myjson.json_result()
            else:
                if star_model:
                    star_model.delete()
                    return myjson.json_result()
                else:
                    return myjson.json_params_error(message=u'该文章没有置顶!')
    else:
        return myjson.json_params_error(message=form.get_error())
Esempio n. 5
0
def front_reset_email(request):
    if request.method == 'GET':
        return render(request, 'front_reset_email.html')
    else:
        # 如果邮箱在数据库存在,则无需修改
        # 否则才允许修改新密码
        form = ResetEmailForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data.get('email', None)
            user = request.user
            if email:
                if request.email == email:
                    return myjson.json_params_error(u'新邮箱与老邮箱一致,无需修改!')
                else:
                    if send_mail(receivers=email):
                        user.email = email
                        user.save(update_fields=['email'])
                        return myjson.json_result(u'该邮箱验证成功!')
                    else:
                        return myjson.json_server_error()
            else:
                return myjson.json_params_error(message=u'必须输入邮箱!')
        else:
            return render(request, 'front_reset_email.html',
                          {'error': form.get_error()})
Esempio n. 6
0
def front_delete_comment(request):
    comment_id = request.GET.get('comment_id', None)
    if comment_id:
        comment_model = CommentModel.objects.filter(pk=comment_id).first()
        if comment_model:
            comment_model.is_removed = True
            comment_model.save()
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该评论不存在!')
    else:
        return myjson.json_params_error(u'没有该id!')
Esempio n. 7
0
def front_delete_article(request):
    article_id = request.GET.get('article_id', None)
    if article_id:
        article_model = ArticleModel.objects.filter(
            article_id=article_id).first()
        if article_model:
            article_model.is_removed = True
            article_model.save()
            return redirect(reverse('article_list'))
        else:
            return myjson.json_params_error(u'该文章不存在!')
    else:
        return myjson.json_params_error(u'没有该id!')
Esempio n. 8
0
def comment(request):
    form = CommentForm(request.POST)
    if form.is_valid():
        content = form.cleaned_data.get('content')
        articleId = form.cleaned_data.get('article_id')
        articleModel = ArticleModel.objects.filter(pk=articleId).first()
        if articleModel:
            commentModel = CommentModel(content=content, article=articleModel, author=request.front_user)
            commentModel.save()
            return redirect(reverse('front_article_detail', kwargs={'article_id': articleId}))
        else:
            return myjson.json_params_error(message=u'没有这篇文章')
    else:
        return myjson.json_params_error(message=form.get_error())
Esempio n. 9
0
def cms_edit_category(request):
    form = EditCategoryForm(request.POST)
    if form.is_valid():
        category_id = form.cleaned_data.get('category_id')
        category_name = form.cleaned_data.get('category_name')
        category_model = CategoryModel.objects.filter(pk=category_id).first()
        if category_model:
            category_model.name = name
            category_model.save(update_fields=['name'])
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该分类不存在')
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 10
0
def add_category(request):
    form = AddCategoryForm(request.POST)
    if form.is_valid():
        categoryname = form.cleaned_data.get('categoryname', None)
        resultCategory = CategoryModel.objects.filter(name=categoryname).first()
        if not resultCategory:
            categoryModel = CategoryModel(name=categoryname)
            categoryModel.save()
            return myjson.json_result(data={'id': categoryModel.id, 'name': categoryModel.name})
        else:
            # return JsonResponse({'error':u'不能設置同名的分類!','code':403})
            return myjson.json_params_error(message=u'不能設置同名的分類!')
    else:
        # return JsonResponse({'error':form.errors.as_json,'code':'403'});
        return myjson.json_params_error(message=u'表单验证失败')
Esempio n. 11
0
def untop_article(request):
    form = TopArticleForm(request.POST)
    if form.is_valid():
        uid = form.cleaned_data.get('uid')
        articleModel = ArticleModel.objects.filter(pk=uid).first()
        if articleModel:
            if articleModel.top:
                topModel = articleModel.top
                topModel.delete()
                return myjson.json_result()
            else:
                return myjson.json_params_error(message=u'本文章还未置顶呢')
        else:
            return myjson.json_params_error(message=u'该文章不存在')
    else:
        return form.get_error_response()
Esempio n. 12
0
def cms_reset_pwd(request):
    if request.method == 'GET':
        return render(request, 'cms_reset_pwd.html')
    else:
        username = request.user
        ## 使用cleaned_password方法
        # form = ResetpwdForm(request.POST,username=username)
        # return render(request,'cms_reset_pwd.html',{'error':form.errors})
        # 使用save_password方法
        form = ResetpwdForm(request.POST, user=username)
        if form.is_vaild():
            oldpwd = form.cleaned_data.get('oldpwd')
            user = authenticate(username=username, password=oldpwd)
            if user:
                is_vaild = form.save_password()
                if is_vaild:
                    return myjson.json_result()
                else:
                    return myjson.json_params_error(message=u'密码验证错误!')
            else:
                user = user.create(username=username, password=newpwd)
                return myjson.json_result()
        else:
            return render(request, 'cms_reset_pwd.html',
                          {'error': form.get_error()})
Esempio n. 13
0
def update_profile(request):

    # 1.更新头像
    # 2.更新用户名
    form = UpdateFrontProfileForm(request.POST)
    if form.is_valid():
        front_username = form.cleaned_data.get('front_username', None)
        portrait = form.cleaned_data.get('portrait', None)
        email = form.cleaned_data.get('email')
        print email
        user = FrontUserModel.objects.filter(email=email).first()
        if user:
            user.username = front_username
            user.portrait = portrait
            user.save()
        # # 获取FrontUserModel中所有用户信息
        # users = FrontUserModel.objects.all()
        # user = users.filter(email="*****@*****.**").first()
        # frontUser = FrontUser.objects.filter(user__pk=user.pk).first()
        # 如果FrontUser表中已存在数据与user对应 直接更新
        # if frontUser:
        # frontUser.portrait = portrait
        # 否则,先新建一个frontuser模型 再保存
        # else:
        # frontUser = FrontUser(portrait=portrait,user=user)
        # frontUser.save()
        # return JsonResponse({'code':200})
        return myjson.json_result()
    else:
        print '------------------------fial'
        # return JsonResponse({'error':form.errors})
        return myjson.json_params_error(message=u'表单验证错误!')
Esempio n. 14
0
def cms_add_tag(request):
    '''如果tag已经存在,则不允许在添加,否则添加
    '''
    form = AddTagForm(request.POST)
    if form.is_valid():
        tag_name = form.cleaned_data.get('tag_name')
        tag_model = TagModel.objects.filter(name=tag_name).first()
        if tag_model:
            return myjson.json_params_error(u'该标签已存在,请重新设置!')
        else:
            tagModel = TagModel(name=tag_name)
            tagModel.save()
            return myjson.json_result()
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 15
0
def front_article_detail(request, article_id):
    '''我们需要获取的有:
       1. 文章(ArticleModel)
       2. 标签(TagModel)
       3. 分类(CategoryModel)
       4. 评论(CommentModel)
       5. 点赞(ArticleStarModel)
       另外,阅读量访问一次+1,还需获取当前的分类
    '''
    article_model = ArticleModel.objects.filter(pk=article_id,
                                                is_removed=False)
    if article_model:
        # 每次访问阅读量都+1
        article_model.read_count += 1
        article_model.save()
        # 获取所有给这篇文章点赞的作者
        star_author_ids = [
            star_model.author.id for star_model in article_model.stars
        ]
        context = {
            'articles': article_model,
            'comments': article_model.commentmodel_set.all(),
            'tags': TagModel.objects.all(),
            'categorys': CategoryModel.objects.all(),
            # 当前文章分类
            'c_category': article_model.category,
            # 当前文章分类
            'c_tag': article_model.tags,
            'star_author_ids': star_author_ids
        }
        return render(request, 'front_article_detail.html', context=context)
    else:
        return myjson.json_params_error(u'该文章不存在!')
Esempio n. 16
0
def front_reset_pwd(request):
    if request.method == 'GET':
        return render(request, 'front_reset_pwd.html')
    else:
        username = request.user
        form = ResetpwdForm(request.POST, user=username)
        if form.is_vaild():
            oldpwd = form.cleaned_data.get('oldpwd')
            newpwd = form.cleaned_data.get('newpwd')
            user = FrontUserModel.objects.filter(username=username,
                                                 password=oldpwd).first()
            if user:
                is_vaild = user.check_password()
                if is_vaild:
                    user.set_password(newpwd)
                    user.save()
                    return myjson.json_result()
                else:
                    return myjson.json_params_error(message=u'密码验证错误!')
            else:
                user = user.create(username=username, password=newpwd)
                return myjson.json_result()
        else:
            return render(request, 'front_reset_pwd.html',
                          {'error': form.get_error()})
Esempio n. 17
0
def cms_add_category(request):
    '''如果tag已经存在,则不允许在添加,否则添加
    '''
    form = AddCategoryForm(request.POST)
    if form.is_valid():
        category_name = form.cleaned_data.get('category_name')
        category_model = CategoryModel.objects.filter(
            name=category_name).first()
        if category_model:
            return myjson.json_params_error(u'该分类已存在,请重新设置!')
        else:
            categoryModel = categoryModel(name=category_name)
            categoryModel.save()
            return myjson.json_result()
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 18
0
def cms_remove_comment(request):
    comment_id = request.POST.get('comment_id', 1)
    if not comment_id:
        return myjson.json_params_error()
    comment_model = CommentModel.objects.filter(comment_id).first()
    if comment_model:
        comment_model.is_removed = True
        comment_model.save()
    return myjson.json_result()
Esempio n. 19
0
def front_edit_article(request):
    '''
       它的逻辑和add_article相似,但作者不会变,只需获取文章的id
       我们会用到一篇已存在的article里的的所有数据,包括tags
       但文章里的tags会通过article.tags多对多的方式获取,而不再从tagmodel获取
       因为可能会修改tags,我们仍需要传入所有的tags
       因此我们需要将tags添加到article里,而为了方便使用,也为了添加tags
       我们会使用到model_to_dict这个函数,将数据库里的数据提取出来并转化成dict类型
    '''
    if request.method == 'GET':
        article_id = request.GET.get('article_id', None)
        if article_id:
            article_model = ArticleModel.objects.filter(pk=article_id).first()
            article_dict = model_to_dict(article_model)
            tag_model = article_model.tags.all()
            article_dict['tags'] = [tag_model.id for tags in tag_model]
            context = {
                'categorys': CategoryModel.objects.all(),
                'tags': TagModel.objects.all(),
                'article': article_dict
            }
            return render(request, 'front_add_article.html', context=context)
        else:
            return myjson.json_params_error(u'没有该id!')
    else:
        form = EditArticleForm(request.POST)
        if form.is_valid():
            tag_ids = request.POST.getlist('tags[]')

            article_id = form.cleaned_data.get('article_id')
            title = form.cleaned_data.get('title')
            thumbnail = form.cleaned_data.get('thumbnail')
            content = form.cleaned_data.get('content')
            category_id = form.cleaned_data.get('category')

            article_model = ArticleModel.objects.filter(pk=article_id).first()
            category = CategoryModel.objects.filter(pk=category_id).first()

            # 修改和创建的方式不一样
            if article_model:
                article_model.title = title
                article_model.thumbnail = thumbnail
                article_model.content = content
                article_model.category = category
                article_model.save()

            # 文章与标签的多对多的保存
            # 如果选择了标签,则将选择的标签以此存入,否则不用存
            if tag_ids:
                for tag_id in tag_ids:
                    tag_model = TagModel.objects.filter(pk=tag_id).first()
                    if tag_model:
                        article_model.tags.add(tag_model)
            return myjson.json_result()
        else:
            return render(request, 'front_edit_article.html',
                          {'error': form.get_error()})
Esempio n. 20
0
def delete_category(request):
    form = CategoryForm(request.POST)
    if form.is_valid():
        categoryId = form.cleaned_data.get('category_id')
        categoryModel = CategoryModel.objects.filter(pk=categoryId).first()
        if categoryModel:
            # 首先拿到该分类下的文章数量
            articleCount = categoryModel.articlemodel_set.all().count()
            # 如果文章数量大于0,就不让删除
            if articleCount > 0:
                return myjson.json_params_error(message=u'该分类下还存在文章,不能删除!')
            else:
                categoryModel.delete()
                return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该分类不存在')
    else:
        return form.get_error_response()
Esempio n. 21
0
def article_detail(request, article_id=''):
    articleId = article_id
    if articleId:
        articleModel = ArticleModel.objects.filter(pk=articleId).first()
        if articleModel:
            comments = articleModel.commentmodel_set.all()
            context = {
                'article': articleModel,
                'categorys': CategoryModel.objects.all(),
                'c_category': articleModel.category,
                'tags': articleModel.tags.all(),
                'comments': comments
            }
            return render(request, 'front_article_detail.html', context)
        else:
            myjson.json_params_error(message=u"该文章不存在")
    else:
        myjson.json_params_error(message=u'文章id不能为空')
Esempio n. 22
0
def add_tag(requset):
    form = AddTagForm(requset.POST)
    if form.is_valid():
        tagname = form.cleaned_data.get('tagname', None)
        resultTag = TagModel.objects.filter(name=tagname).first()
        if not resultTag:
            tagModel = TagModel(name=tagname)
            tagModel.save()
            # return JsonResponse(data={'id':tagModel.id,'name':tagModel.name,'code':200})
            return myjson.json_result(data={
                'id': tagModel.id,
                'name': tagModel.name
            })
        else:
            # return JsonResponse({'error':u'该标签已存在!','code':400})
            return myjson.json_params_error(message=u'该标签已存在!')
    else:
        # return JsonResponse({'error':form.errors.as_json,'code':'403'})
        return myjson.json_params_error(message=u'表单验证错误!')
Esempio n. 23
0
def delete_category(request):
    form = CategoryForm(request.POST)
    if form.is_valid():
        categoryId = form.cleaned_data.get('category_id')
        categoryModel = CategoryModel.objects.filter(pk=categoryId).first()

        if categoryModel:
            # 首先获取该分类下文章数量
            articleCount = categoryModel.articlemodel_set.all().count()
            # 若该分类存在文章 禁止删除操作
            if articleCount > 0:
                return myjson.json_params_error(
                    message=u'无法删除该分类,请删除分类下文章后再尝试')
            else:
                categoryModel.delete()
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'不存在该分类!')
    else:
        return form.get_error_response()
Esempio n. 24
0
def front_reply_comment(request):
    '''回复评论需要:文章id,被回复的评论id(即原始评论),回复内容
    '''
    if request.method == 'GET':
        article_id = request.GET.get('article_id', None)
        comment_id = request.GET.get('comment_id', None)
        if article_id:
            article_model = ArticleModel.objects.filter(pk=article_id).first()
            if article_model:
                context = {'articles': article_model}
                if comment_id:
                    # 原始评论
                    origin_comment = CommentModel.objects.filter(
                        pk=comment_id).first()
                    if origin_comment:
                        context['origin_comment'] = origin_comment
        return render(request, 'front_add_article.html', context)
    else:
        form = ReplyCommentForm(request.POST)
        if form.is_valid():
            article_id = form.cleaned_data.get('article_id', None)
            comment_id = form.cleaned_data.get('comment_id', None)
            content = form.cleaned_data.get('content', None)
            if article_id:
                article_model = ArticleModel.objects.filter(article_id).first()
                if content:
                    comment_model = CommentModel(content=content)
                    comment_model.article = article_model
                    comment_model.author = request.user.username
                    if comment_id:
                        origin_comment = CommentModel.objects.filter(
                            pk=comment_id).first()
                        comment_model.origin_comment = origin_comment
                        comment_model.save()
                    return myjson.json_result()
                else:
                    return myjson.json_params_error(u'没有评论内容!')
            else:
                return myjson.json_params_error(u'没有该评论!')
        else:
            return myjson.json_params_error(message=form.errors)
Esempio n. 25
0
def delete_blog(request):
    form = DeleteArticleForm(request.POST)
    if form.is_valid():
        uid = form.cleaned_data.get('uid')
        articleModel = ArticleModel.objects.filter(pk=uid).first()
        if articleModel:
            articleModel.delete()
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该文章不存在!')
    else:
        return form.get_error_response()
Esempio n. 26
0
def cms_delete_article(request):
    form = DeleteArticleForm(request.POST)
    if form.is_valid():
        article_id = form.cleaned_data.get('article_id')
        article_model = ArticleModel.objects.filter(pk=article_id).first()
        if article_model:
            article_model.delete()
            return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该文章不存在或已被删除')
    else:
        # return myjson.json_params_error(message=form.errors)
        return redirect(reverse('article_list'))
Esempio n. 27
0
def add_category(request):
    form = AddCategoryForm(request.POST)
    if form.is_valid():
        print '-------------------sucece'
        categoryname = form.cleaned_data.get('categoryname', None)
        resultCategory = CategoryModel.objects.filter(
            name=categoryname).first()
        if not resultCategory:
            categoryModel = CategoryModel(name=categoryname)
            categoryModel.save()
            # return JsonResponse(data={'id':categoryModel.id,'name':categoryModel.name,'code':200})
            return myjson.json_result(data={
                'id': categoryModel.id,
                'name': categoryModel.name
            })
        else:
            # return JsonResponse({'error':u'该分类已存在!','code':400})
            return myjson.json_params_error(message=u'该分类已存在!')
    else:
        print '---------------------error'
        # return JsonResponse({'error':form.errors.as_json,'code':'400'})
        return myjson.json_params_error(message=u'表单验证错误!')
Esempio n. 28
0
def cms_remove_category(request):
    '''
    1.如果该分类不存在不能移除,
    2.如果分类下有文章则不允许移除,
    因此我们要获取该分类下的所有文章,如果文章数小于0则不允许删除
    '''
    form = CategoryForm(request.POST)
    if form.is_valid():
        category_id = form.cleaned_data.get('category_id')
        category_model = CategoryModel.objects.filter(pk=category_id).first()
        if category_model:
            article_count = category_model.articlemodel_set.all().count()
            if article_count > 0:
                return myjson.json_params_error(message=u'该分类下还有文章,不能删除!')
            else:
                category_model.delete()
                return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该分类不存在!')
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 29
0
def cms_remove_tag(request):
    '''
    1.如果该标签不存在不能移除,
    2.如果标签下有文章则不允许移除,
    因此我们要获取该标签下的所有文章,如果文章数小于0则不允许删除
    '''
    form = TagForm(request.POST)
    if form.is_valid():
        tag_id = form.cleaned_data.get('tag_id')
        tag_model = TagModel.objects.filter(pk=tag_id).first()
        if tag_model:
            article_count = tag_model.articlemodel_set.all().count()
            if article_count > 0:
                return myjson.json_params_error(message=u'该标签下还有文章,不能删除!')
            else:
                tag_model.delete()
                return myjson.json_result()
        else:
            return myjson.json_params_error(message=u'该标签不存在!')
    else:
        message = form.errors
        return myjson.json_params_error(message)
Esempio n. 30
0
def front_search(request):
    q = request.GET.GET('query')
    if q:
        # 查询条件忽略大小写
        article_model = ArticleModel.objects.filter(
            Q(title__icontains=q) | Q(content__icontains=q))
        context = {
            'articles': article_model,
            'categorys': CategoryModel.objects.all()
        }
        # return myjson.json_result()
        return render(request, 'front_search.html', context=context)
    else:
        return myjson.json_params_error(message=u'请输入查询字符串')