コード例 #1
0
def delete_post():
    conn = sqlite3.connect('bbs.db')
    c = conn.cursor()
    cursor = c.execute("SELECT author, object, cmt_object FROM POSTS p")
    results = cursor.fetchall()
    conn.commit()
    conn.close()

    print('Deleting post and comment objects')
    s3 = boto3.resource('s3')
    for row in results:
        bucket = db.get_bucket(row[0])
        target_bucket = s3.Bucket(bucket)
        target_object = target_bucket.Object(row[1])
        target_object.delete()
        target_bucket = s3.Bucket(bucket)
        target_object = target_bucket.Object(row[2])
        target_object.delete()

    print('Deleting table post from database')
    conn = sqlite3.connect('bbs.db')
    c = conn.cursor()
    cursor = c.execute("DROP TABLE POSTS")
    conn.commit()
    conn.close()
コード例 #2
0
    def mail_to(self):
        receiver = ""
        subject = ""
        content = ""
        argc = len(self.argv)
        status = 0

        for arg in self.argv:
            if 0 == status:
                status = 1
            elif 1 == status:
                if arg == "--subject":
                    status = 2
                else:
                    receiver = arg
            elif 2 == status:
                if arg == "--content":
                    status = 3
                else:
                    subject = arg if subject == "" else subject + " " + arg
            elif 3 == status:
                content = arg if content == "" else content + " " + arg
        content = content.replace("<br>", "\n")
        object_name = 'mail' + str(int(time.time())) + ''.join(
            random.choice(string.ascii_lowercase) for i in range(8)) + '.txt'

        if status != 3 or receiver == "":
            return self.usage()
        elif db.insert_mail(self.username, receiver, subject,
                            object_name) == 0:
            bucket = db.get_bucket(receiver)
            return '&<!mail-to::>' + bucket + '&<!spl>' + object_name + '&<!spl>' + content + "&<!meta|msg>Sent successfully."
        else:
            return receiver + " does not exist."
コード例 #3
0
    def delete_mail(self):
        index = int(self.argv[1])
        username = self.username
        mail = ''
        results = db.select_mail(receiver = username)

        if 0 < index <= len(results):
            db.delete_mail(results[index-1][4])
            return '&<!delete-mail::>' + db.get_bucket(username) + '&<!spl>' + results[index-1][3] + '&<!meta|msg>Mail deleted.'
        else:
            return 'No such mail.'
コード例 #4
0
 def delete_post(self):
     pid = int(self.argv[1])
     object_name = db.get_post_object_name(pid)
     comment_object_name = db.get_comment_object_name(pid)
     action = db.delete_post(pid, self.username)
     if action == 0:
         return '&<!delete-post::>' + db.get_bucket(self.username) + '&<!spl>' + object_name + '&<!spl>' + comment_object_name + '&<!meta|msg>' + "Delete successfully."
     elif action == 2:
         return "Post does not exist."
     else:
         return "Not the post owner."
コード例 #5
0
    def read_post(self):
        pid = int(self.argv[1])
        if not db.post_existed_check(pid):
            return "Post does not exist."

        post = ""
        result = db.select_post(pid = pid)
        object_name = result[0][3]
        comment_object_name = result[0][4]
        post = "Author\t:{}\nTitle\t:{}\nDate\t:{}\n--\n".format(result[0][0], result[0][1], result[0][2])  
        return '&<!read::>' + db.get_bucket(result[0][0]) + '&<!spl>' + object_name + '&<!spl>' + comment_object_name + '&<!meta|msg>' + post
コード例 #6
0
 def login(self):
     if self.logged_in:
         return "Please logout first."
     else:
         username = self.argv[1]
         password = self.argv[2]
         if db.login_check(username, password):
             self.logged_in = True
             self.username = username
             self.bucket = db.get_bucket(username)
             return "Welcome, " + self.username + "."
         else:
             return "Login failed."
コード例 #7
0
    def retr_mail(self):
        index = int(self.argv[1])
        username = self.username
        mail = ''
        results = db.select_mail(receiver = username)

        if 0 < index <= len(results):
            mail = 'Subject\t:{}\nFrom\t:{}\nDate\t:{}\n--\n'.format(results[index-1][0], results[index-1][1], results[index-1][2])
        else:
            return 'No such mail.'

        object_name = results[index-1][3]

        return '&<!retr-mail::>' + db.get_bucket(username) + '&<!spl>' + object_name + '&<!meta|msg>' + mail
コード例 #8
0
    def comment(self):
        pid = int(self.argv[1])
        if not db.post_existed_check(pid):
            return "Post does not exist."

        comment = self.username + ":"
        argi = 2
        while argi < len(self.argv):
            comment += (" " + self.argv[argi]) if comment != self.username + ":" else self.argv[argi]
            argi += 1
        result = db.insert_comment(pid)
        bucket = db.get_bucket(result[0])
        comment_object_name = result[1]
        return '&<!comment::>' + bucket + '&<!spl>' + comment_object_name + '&<!spl>' + comment + '&<!meta|msg>Comment successfully.'
コード例 #9
0
def delete_mail():
    conn = sqlite3.connect('bbs.db')
    c = conn.cursor()
    cursor = c.execute("SELECT receiver, object FROM MAILS")
    results = cursor.fetchall()
    conn.commit()
    conn.close()

    print('Deleting mail objects')
    s3 = boto3.resource('s3')
    for row in results:
        bucket = db.get_bucket(row[0])
        target_bucket = s3.Bucket(bucket)
        target_object = target_bucket.Object(row[1])
        target_object.delete()

    print('Deleting table mail from database')
    conn = sqlite3.connect('bbs.db')
    c = conn.cursor()
    cursor = c.execute("DROP TABLE MAILS")
    conn.commit()
    conn.close()
コード例 #10
0
 def update_post(self):
     pid = int(self.argv[1])
     title_or_content = self.argv[2]
     argi = 3
     change = ""
     while argi < len(self.argv):
         change = self.argv[argi] if change == "" else change + " " + self.argv[argi]
         argi += 1
     if title_or_content != "--title" and title_or_content != "--content":
         return self.usage()
     elif title_or_content == "--content":
         change = change.replace("<br>", "\n")
     action = db.update_post(pid, self.username, title_or_content, change)
     if action == 0:
         return "Update successfully."
     elif action == 2:
         return "Post does not exist."
     elif action == 5:
         bucket = db.get_bucket(self.username)
         object_name = db.get_post_object_name(pid)
         return '&<!update-post-content::>' + bucket + '&<!spl>' + object_name + '&<!spl>' + change + '&<!meta|msg>Update successfully.'
     else:
         return "Not the post owner."