def get(self, idencode):

        
        params = {}
        params[KEY.IDENCODE] = idencode

        #先判段是是否有人确认过了
        verify_user_info = db.get_user_verify_info(params)
        if verify_user_info is None:
            return self.write('the link is fail')

        #没有的话 清除数据
        db.clear_verify_user_info(verify_user_info)

        #判段时间是否失效

        s = verify_user_info[KEY.TIME]
        emailTime = time.mktime(s.timetuple())
        nowTime = time.time()
        timeInterval = nowTime - emailTime

        verify_user_info[KEY.EMAIL] = verify_user_info[KEY.EMAIL].replace("%40", "@")
        if timeInterval > 86400:
            sendEmail.sendEmail([verify_user_info[KEY.EMAIL]], "认证失败消息", "您的实名认证失败,请重新认证")
            return self.write('the link is fail (The effective time has passed.)')
        else:
            verify_user_info[KEY.IS_VERIFY] = 1

            success = db.update_user(verify_user_info)
            if success:
                return self.write("success comfirm")
            else:
                sendEmail.sendEmail([verify_user_info[KEY.EMAIL]], "认证失败消息", "您的实名认证失败,请重新认证")
                return self.write("server error")
예제 #2
0
def accept_action(request, myid, id):
    print("Enter accept_action")
    if request.method != "GET":
        raise Http404

    user = request.user
    userEmail = user.email
    myitem = ExchangeItem.objects.get(pk=myid)

    item = ExchangeItem.objects.get(pk=id)
    owner = item.user
    ownerEmail = owner.email
    msg = """Hi {0},\n\n
             Your exchange for "{1}" with your "{2}" has been accepted.\n
             Come back to {5} to confirm the exchange if you hasn't change your mind!\n
             You can contact "{1}"'s owner {3} through SwapSpace's chat room or at {4}. Thanks!"""\
             .format(owner, myitem.name, item.name, user, userEmail, HOST)
    sendEmail(ownerEmail, "accept", msg)

    # update item status
    if myitem.status < 2:
        myitem.status = 2
        myitem.bestmatch = item
        myitem.save()
    if item.status < 2:
        item.status = 2
        item.bestmatch = myitem
        item.save()

    # update exchange logic list
    item.request.remove(myitem)
    myitem.accept.add(item)

    return redirect(reverse('status', kwargs={'id': myid}))
예제 #3
0
def cancel_action(request, myid, id):
    print("Enter cancel_action")
    if request.method != "GET":
        raise Http404

    user = request.user
    myitem = ExchangeItem.objects.get(pk=myid)

    item = ExchangeItem.objects.get(pk=id)
    owner = item.user
    ownerEmail = owner.email
    msg = """Hi {0},\n\n
             Your exchange for "{1}" with your "{2}" has been cancelled by user {3}.\n
             Come back to check for more exchange options!""".format(owner, myitem.name, item.name, user)
    sendEmail(ownerEmail, "cancel", msg)

    # update exchange logic list
    if myitem in item.request.all():
        item.request.remove(myitem)
    elif item in myitem.request.all():
        myitem.request.remove(item)
    elif myitem in item.accept.all():
        item.accept.remove(myitem)
    elif item in myitem.accept.all():
        myitem.accept.remove(item)

    return redirect(reverse('status', kwargs={'id': myid}))
예제 #4
0
def register_action(request):
    context = {}
    if request.method == "GET":
        return render(request, 'register.html')

    form = UserRegisterForm(request.POST)
    context["registerForm"] = form
    if not form.is_valid():
        print("User Registration Form is invalid ...")
        return render(request, 'register.html', context)

    print("User Registration Form is valid.")
    username, email = form.cleaned_data['username'], form.cleaned_data['email']
    password = form.cleaned_data['password1']
    user = User.objects.create_user(username=username,
                                    email=email,
                                    password=password)
    user.save()
    profile = UserProfile(user=user, good=0, fair=0, bad=0)
    profile.save()
    cart = ShoppingCart(user=user)
    cart.save()
    sendEmail(email) # send registration email

    print("New user is created but not activated.")
    return redirect('/login')
예제 #5
0
	def post(self):
		resp = {}
		resp[KEY.STATUS] = 500
		params = {}


		#对当前请求对象的参数解析,得到当前请求对象里面的参数
		params = utils.decode_params(self.request)
		
		if KEY.EMAIL in params and KEY.ACCOUNT in params:
			userInfo = {}
			userInfo = db.get_user_information_by_email(params)
			
			if userInfo is not None:
				if KEY.NICKNAME in userInfo and userInfo[KEY.NICKNAME] == params[KEY.ACCOUNT]:
					#获得验证码

					idencode = ''.join(random.sample(string.ascii_letters, 4))

					#emailt = email.PlainEmail()

					userEmail = params[KEY.EMAIL].replace('%40', '@')
					#if emailt.sendPlainEmail(params[KEY.EMAIL], "找回密码", "您的验证码为:" + idencode) == 200:
					if sendEmail.sendEmail([userEmail], "找回密码", "您的验证码为:" + idencode) == 200:
						md5_encode = hashlib.md5()
						md5_encode.update(userInfo[KEY.NICKNAME] + idencode)
						idencode = md5_encode.hexdigest()
						resp[KEY.STATUS] = 200
						resp["secret"] = idencode

		self.write(json_encode(resp))
예제 #6
0
    def post(self):
        resp = {}
        resp[KEY.STATUS] = 500
        params = {}
        params = utils.decode_params(self.request)

        if KEY.EMAIL in params and KEY.ACCOUNT in params:
            isExist = db.isAccountHasExist(params)
            if isExist is not None:

                #如果这个账户不存在
                if isExist == 0:
                    idencode = ''.join(random.sample(string.ascii_letters, 4))
                    #emailt = email.PlainEmail()
                    params[KEY.EMAIL] = params[KEY.EMAIL].replace("%40", '@')
                    if sendEmail.sendEmail([params[KEY.EMAIL]], "新用户注册",
                                           "您的验证码为:" + idencode) == 200:
                        md5_encode = hashlib.md5()
                        md5_encode.update(params[KEY.ACCOUNT] + idencode +
                                          "?" + params[KEY.EMAIL])
                        idencode = md5_encode.hexdigest()
                        resp[KEY.STATUS] = 200
                        resp["secret"] = idencode
                else:
                    resp[KEY.STATUS] = 400

        self.write(json_encode(resp))
예제 #7
0
def forget_pwd_action(request):
    userForgetPwdForm = UserForgetPwdForm()
    if request.method == "GET":
        return render(request, 'forgetpwd.html', {'forgetPwdForm': userForgetPwdForm})

    context = {}
    form = UserForgetPwdForm(request.POST)
    context["forgetPwdForm"] = form

    if not form.is_valid():
        print("User forget pwd form is invalid ...")
        return render(request, 'forgetpwd.html', context)

    email = form.cleaned_data['email']
    print("Send to %s"%(email))

    sendEmail(email, 'forget')
    return render(request, 'send-success.html')
예제 #8
0
def confirm_action(request, myid, id):
    print("Enter confirm_action")
    if request.method != "GET":
        raise Http404

    user = request.user
    userEmail = user.email
    myitem = ExchangeItem.objects.get(pk=myid)

    item = ExchangeItem.objects.get(pk=id)
    owner = item.user
    ownerEmail = owner.email
    msg = """Hi {0},\n\n
             Your exchange for "{2}" with your "{1}" has been confirmed.\n
             Remember to rate this exchange at {5}:/rate/{6}!\n
             You can contact "{2}"'s owner {3} at {4}. Thanks!"""\
             .format(owner, item.name, myitem.name,
                     user, userEmail, HOST, id)

    sendEmail(ownerEmail, "confirm", msg)

    # update item status
    myitem.status = 3
    myitem.bestmatch = item
    myitem.save()
    item.status = 3
    item.bestmatch = myitem
    item.save()

    # clean up exchange logic list
    myitem.request.clear()
    myitem.myRequesteds.clear()
    myitem.accept.clear()
    myitem.myAccepteds.clear()
    myitem.automatch.clear()
    myitem.myAutoMatcheds.clear()
    item.request.clear()
    item.myRequesteds.clear()
    item.accept.clear()
    item.myAccepteds.clear()
    item.automatch.clear()
    item.myAutoMatcheds.clear()

    return redirect(reverse('status', kwargs={'id': myid}))
예제 #9
0
  def post(self):
  	params = utils.decode_params(self.request)
  	resp = {}
  	resp[KEY.STATUS] = 500
  	if KEY.TITLE in params and KEY.CONTENT in params:
  		content_t = params[KEY.TITLE] + "---" + params[KEY.CONTENT]
		if sendEmail.sendEmail([KEY.EMAIL_BOSS], "User-Feedback", content_t) == 200:
			resp[KEY.STATUS] = 200

  	self.write(json_encode(resp))
예제 #10
0
 def __init__(self):
     self.q = Queue()
     self.myUtils = myUtils()
     self.mail = sendEmail()
     self.gt = getTotal()
     self.su = s3util()
     self.log = logUtil('mylog')
     self.num = 1
     self.qUrl = 'https://api.newrelic.com/v2/applications.json?page='
     self.appBasicUrl = 'https://api.newrelic.com/v2/applications/'
     self.tmp_content = 'Below applications in NewRelic stopped reporting, please take a look.<br><br>If no action taken in three days, these applications will be deleted.<br><br>'
예제 #11
0
    def post(self):
        params = utils.decode_params(self.request)
        resp = {}
        resp[KEY.STATUS] = 500
        if KEY.TITLE in params and KEY.CONTENT in params:
            content_t = params[KEY.TITLE] + "---" + params[KEY.CONTENT]
            if sendEmail.sendEmail([KEY.EMAIL_BOSS], "User-Feedback",
                                   content_t) == 200:
                resp[KEY.STATUS] = 200

        self.write(json_encode(resp))
예제 #12
0
    def get(self, idencode):

        params = {}
        params[KEY.IDENCODE] = idencode

        #先判段是是否有人确认过了
        verify_user_info = db.get_user_verify_info(params)
        if verify_user_info is None:
            return self.write('the link is fail')

        #没有的话 清除数据
        db.clear_verify_user_info(verify_user_info)

        #判段时间是否失效

        s = verify_user_info[KEY.TIME]
        emailTime = time.mktime(s.timetuple())
        nowTime = time.time()
        timeInterval = nowTime - emailTime

        verify_user_info[KEY.EMAIL] = verify_user_info[KEY.EMAIL].replace(
            "%40", "@")
        if timeInterval > 86400:
            sendEmail.sendEmail([verify_user_info[KEY.EMAIL]], "认证失败消息",
                                "您的实名认证失败,请重新认证")
            return self.write(
                'the link is fail (The effective time has passed.)')
        else:
            verify_user_info[KEY.IS_VERIFY] = 1

            success = db.update_user(verify_user_info)
            if success:
                return self.write("success comfirm")
            else:
                sendEmail.sendEmail([verify_user_info[KEY.EMAIL]], "认证失败消息",
                                    "您的实名认证失败,请重新认证")
                return self.write("server error")
    def post(self):

        id = self.get_secure_cookie("id")
        resp = {}
        if self.get_secure_cookie("passwordVerify") != "yes":
            resp[KEY.STATUS] = 400
            
        else: 
            params = utils.decode_params(self.request)

            resp[KEY.STATUS] = 500
            if KEY.ID in params and KEY.EMAIL in params:
                

                emailAddress = params[KEY.EMAIL].replace("%40", "@")

                #防止有人跨过登录这个地址
                while (True):

                    idencode = ''.join(random.sample(string.ascii_letters, 4))
                    tempParams = {}
                    tempParams[KEY.IDENCODE] = idencode
                    if db.get_verify_email_by_idencode(tempParams) == None:
                        params[KEY.IDENCODE] = idencode
                        break


                link = "链接为: " + "http://120.24.208.130:8000/account/userinfo/modify/email_verify/" + params[KEY.IDENCODE]
                # link = "链接为: " + "localhost:8000/account/userinfo/modify/email_verify/" + params[KEY.IDENCODE]

                if sendEmail.sendEmail([emailAddress], "邮箱验证", link) == 200:

                    params[KEY.ID] = int(params[KEY.ID])
                    verify = db.add_email_verify(params)

                    if verify != -1:
                        
                        #self.set_secure_cookie("passwordVerify", "no")
                        resp[KEY.STATUS] = 200

        return self.write(json_encode(resp))
    def post(self):
        resp = {}
        resp[KEY.STATUS] = 500
        params = {}
        params = utils.decode_params(self.request)
                
        if KEY.EMAIL in params and KEY.ACCOUNT in params:

            idencode = ''.join(random.sample(string.ascii_letters, 4))
            #emailt = email.PlainEmail()

            params[KEY.EMAIL] = params[KEY.EMAIL].replace("%40", '@')
            if sendEmail.sendEmail([params[KEY.EMAIL]], "账号信息修改", "您的验证码为:" + idencode) == 200:
                md5_encode = hashlib.md5()

                md5_encode.update(params[KEY.ACCOUNT] + idencode + "?" + params[KEY.EMAIL])
                idencode = md5_encode.hexdigest()
                resp[KEY.STATUS] = 200
                resp["secret"] = idencode

        self.write(json_encode(resp))
예제 #15
0
    def post(self):

        id = self.get_secure_cookie("id")
        resp = {}
        if self.get_secure_cookie("passwordVerify") != "yes":
            resp[KEY.STATUS] = 400

        else:
            params = utils.decode_params(self.request)

            resp[KEY.STATUS] = 500
            if KEY.ID in params and KEY.EMAIL in params:

                emailAddress = params[KEY.EMAIL].replace("%40", "@")

                #防止有人跨过登录这个地址
                while (True):

                    idencode = ''.join(random.sample(string.ascii_letters, 4))
                    tempParams = {}
                    tempParams[KEY.IDENCODE] = idencode
                    if db.get_verify_email_by_idencode(tempParams) == None:
                        params[KEY.IDENCODE] = idencode
                        break

                link = "链接为: " + "http://120.24.208.130:8000/account/userinfo/modify/email_verify/" + params[
                    KEY.IDENCODE]
                # link = "链接为: " + "localhost:8000/account/userinfo/modify/email_verify/" + params[KEY.IDENCODE]

                if sendEmail.sendEmail([emailAddress], "邮箱验证", link) == 200:

                    params[KEY.ID] = int(params[KEY.ID])
                    verify = db.add_email_verify(params)

                    if verify != -1:

                        #self.set_secure_cookie("passwordVerify", "no")
                        resp[KEY.STATUS] = 200

        return self.write(json_encode(resp))
예제 #16
0
    def post(self):
        resp = {}
        resp[KEY.STATUS] = 500
        params = {}
        params = utils.decode_params(self.request)

        if KEY.EMAIL in params and KEY.ACCOUNT in params:

            idencode = ''.join(random.sample(string.ascii_letters, 4))
            #emailt = email.PlainEmail()

            params[KEY.EMAIL] = params[KEY.EMAIL].replace("%40", '@')
            if sendEmail.sendEmail([params[KEY.EMAIL]], "账号信息修改",
                                   "您的验证码为:" + idencode) == 200:
                md5_encode = hashlib.md5()

                md5_encode.update(params[KEY.ACCOUNT] + idencode + "?" +
                                  params[KEY.EMAIL])
                idencode = md5_encode.hexdigest()
                resp[KEY.STATUS] = 200
                resp["secret"] = idencode

        self.write(json_encode(resp))
예제 #17
0
def request_item_view(request, ids):
    print("Enter exchange/request_item_view")
    if request.method != "GET":
        raise Http404
    ids = ids.split(" ")

    # double check the url data
    if len(ids) != 2 or not ids[0].isnumeric() or not ids[1].isnumeric():
        raise Http404

    myItemId, itemId = int(ids[0]), int(ids[1])

    # check if the ids are valid
    if ExchangeItem.objects.filter(pk=myItemId).count() == 0 or \
       ExchangeItem.objects.filter(pk=myItemId).count() ==0:
        raise Http404

    # ids.append(roomname)
    # sendrequest.delay(" ".join(ids))

    myItem = ExchangeItem.objects.get(pk=myItemId)
    user = request.user
    userEmail = user.email

    otherItem = ExchangeItem.objects.get(pk=itemId)
    owner = otherItem.user
    ownerEmail = owner.email

    roomname = generateRandomCode(ROOMNAME_LENGTH)
    chatroom = ChatRoom(user1=user, user2=owner, roomname=roomname)
    chatroom.save()

    # update both item status
    myItem.request.add(otherItem)
    if myItem.status < 1:
        myItem.status = 1
    if otherItem.status < 1:
        otherItem.status = 1
    myItem.save()
    otherItem.save()

    context = {
        "name": otherItem.name,
        "id": otherItem.pk,
        "description": otherItem.description,
        "price": otherItem.price,
        "status": otherItem.status,
        "item": otherItem,
        "owner": otherItem.user
    }
    # master
    # context = {"name": otherItem.name,
    #            "id": otherItem.pk,
    #            "description": otherItem.description,
    #            "price": otherItem.price,
    #            "status": otherItem.status,
    #            "owner": otherItem.user,
    #            "item": otherItem,
    #            "myItem": myItem}
    #            master

    print(userEmail, ownerEmail)
    msg1 = """Hi {0},\n\n
             User {1} would like to exchange for your "{2}" with "{3}".\n
             Accept this request if you are interested!\n
             You can contact {1} through:\n
             1. SwapSpace's chatroom at http://74739114.ngrok.io/chat, enter code <{5}> to start chatting!\n
             2. Or at {4}. Thanks!""".format(owner, user, otherItem, myItem,
                                             userEmail, roomname)
    sendEmail(ownerEmail, "request", msg1)

    msg2 = """Hi {0},\n\n
             Your exchange request for "{1}" with your "{2}" has been sent successfully!\n
             To follow up this request, \n
             1. SwapSpace's chatroom at http://74739114.ngrok.io/chat, enter code <{4}> to start chatting!\n
             2. Or at {3}. Thanks!""".format(user, otherItem, myItem,
                                             ownerEmail, roomname)
    sendEmail(userEmail, "request", msg2)

    return redirect(reverse('item_detail', kwargs={'id': otherItem.pk}))