import datetime
import math
import random

from django.http import JsonResponse, HttpResponseRedirect
from django.utils import timezone

from blog import models
from system.error.ServerException import ServerException






def get_very_code(request):
    very_num = random.randint(1, 100)
    request.session['very_num'] = very_num
    return JsonResponse({"success": True, "data": very_num})


def add_comment(request):
    if request.method == 'POST':
        nick_name = request.POST.get("nick_name")
        avatar = request.POST.get("avatar")
        website = request.POST.get("website")
        article_id = request.POST.get("article_id")
        article_title = request.POST.get("article_title")
        comment = request.POST.get('comment')
        email = request.POST.get('email')
        veryCode = request.POST.get('veryCode')
        try:
            veryCode = int(veryCode)
            if request.session['very_num'] != veryCode:
                request.session['msg'] = "验证码不正确"
                return HttpResponseRedirect('/article/' + article_title + '.html')
        except Exception as e:
            request.session['msg'] = "验证码不正确"
            return HttpResponseRedirect('/article/' + article_title + '.html')

        article = models.Article.objects.get(id=int(article_id))
        if article is None:
            return JsonResponse({"success": False, "message": "没有找到对应文章"}, safe=False)

        def is_empty(val):
            return val is None or val == ''

        if is_empty(nick_name):
            request.session['msg'] = "请填写昵称"
            return HttpResponseRedirect('/article/' + article_title + '.html')  # 跳转到主界面

        if is_empty(comment):
            request.session['msg'] = "请填写评论内容"
            return HttpResponseRedirect('/article/' + article_title + '.html')  # 跳转到主界面

        if is_empty(email):
            request.session['msg'] = "请填写Email"
            return HttpResponseRedirect('/article/' + article_title + '.html')  # 跳转到主界面

        request.session['msg'] = ""
        obj = models.Comment.objects.create(nick_name=nick_name, avatar=avatar, article=article,
                                                    website=website,
                                                    comment=comment,
                                                    created_time=datetime.datetime.now(), email=email)
        now_utc = timezone.now()
        plus_eight = now_utc + datetime.timedelta(hours=8)

        obj.created_time = plus_eight
        obj.save(update_fields=['created_time'])

        return HttpResponseRedirect('/article/' + article_id + '.html')  # 跳转到主界面

    else:
        raise ServerException("错误的请求")