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()
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."
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.'
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."
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
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."
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
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.'
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()
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."