Exemple #1
0
    def post(self):
        uid = self.request.get("uid")
        email = self.request.get("email")
        title = self.request.get("title")
        access_key = self.request.get("access_key")
        access_secret = self.request.get("access_secret")
        recv = eval(self.request.get("recv"))
        start = self.request.get("start")
        count = self.request.get("count")
        total = self.request.get("total")
        
        doubanbot = DoubanRobot(key=DB_API_KEY, secret=DB_API_SECRET)
        doubanbot.login(access_key, access_secret)
        mail_list = doubanbot.get_mails(recv=recv, start=start, cnt=count, uid=uid, name=title)
        if not mail_list:
            if recv:
                # fetch send doumail
                self.add_fetch_task(uid, email, title, access_key, access_secret, False, 1, 35, 0, 0)
                return
            else:
                # fetch done. send backup to user's email
                mail_list = db.GqlQuery("SELECT * FROM Mail WHERE uid=:1 AND recv=:2", uid, True)
                recvmails = self.render_string("doumail.txt", {"mails":mail_list})
                db.delete(mail_list)

                mail_list = db.GqlQuery("SELECT * FROM Mail WHERE uid=:1 AND recv=:2", uid, False)
                sendmails = self.render_string("doumail.txt", {"mails":mail_list})
                db.delete(mail_list)
                
                mail.send_mail(sender=ADMIN_MAIL,
                               to=email,
                               subject="豆邮备份",
                               body="""
                               你的豆邮备份
                               """,
                               attachments=[("收件箱.txt",recvmails),("发件箱.txt",sendmails)])
                return
        
        self.add_fetch_task(uid, email, title, access_key, access_secret, recv, int(start)+int(count), count, int(total)+int(count), 60)