From 4717adf4e9b2192be765eb56b86599a16e33017a Mon Sep 17 00:00:00 2001 From: Kai Hang Chen <40642739+Kaihchen1230@users.noreply.github.com> Date: Thu, 29 Nov 2018 00:13:35 -0500 Subject: [PATCH 01/11] Delete login.py --- GUI/login.py | 97 ---------------------------------------------------- 1 file changed, 97 deletions(-) delete mode 100644 GUI/login.py diff --git a/GUI/login.py b/GUI/login.py deleted file mode 100644 index 0eadda0..0000000 --- a/GUI/login.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'login.ui' -# -# Created by: PyQt5 UI code generator 5.11.3 -# -# WARNING! All changes made in this file will be lost! - -from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox -from signup import Ui_Signup - -class Ui_Dialog(object): - - # event handler for signup button - def signup_check(self): - print("signup button is clicked") - - self.signupWindow = QtWidgets.QDialog() - self.ui = Ui_Signup() - self.ui.setupUi(self.signupWindow) - self.signupWindow.show() - - def setupUi(self, Dialog): - Dialog.setObjectName("Dialog") - Dialog.resize(637, 477) - Dialog.setStyleSheet("QDialog{\n" -" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 170, 0, 255), stop:1 rgba(255, 255, 255, 255))\n" -"}\n" -"QPushButton{\n" -" background-color:rgb(255, 255, 255)\n" -" border: none;\n" -"}") - self.label_2 = QtWidgets.QLabel(Dialog) - self.label_2.setGeometry(QtCore.QRect(160, 170, 91, 21)) - self.label_2.setObjectName("label_2") - self.label_3 = QtWidgets.QLabel(Dialog) - self.label_3.setGeometry(QtCore.QRect(160, 220, 91, 21)) - self.label_3.setObjectName("label_3") - self.email_field = QtWidgets.QLineEdit(Dialog) - self.email_field.setGeometry(QtCore.QRect(240, 170, 201, 22)) - self.email_field.setText("") - self.email_field.setObjectName("email_field") - self.password_field = QtWidgets.QLineEdit(Dialog) - self.password_field.setGeometry(QtCore.QRect(240, 220, 201, 22)) - self.password_field.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit) - self.password_field.setObjectName("password_field") - self.login_button = QtWidgets.QPushButton(Dialog) - self.login_button.setGeometry(QtCore.QRect(290, 280, 93, 28)) - self.login_button.setObjectName("login_button") - self.signup_button = QtWidgets.QPushButton(Dialog) - self.signup_button.setGeometry(QtCore.QRect(290, 320, 93, 28)) - self.signup_button.setObjectName("signup_button") - #########################3 Signup button event ######################## - self.signup_button.clicked.connect(self.signup_check) - ####################################################################### - self.login_page_label = QtWidgets.QLabel(Dialog) - self.login_page_label.setGeometry(QtCore.QRect(220, 70, 211, 91)) - self.login_page_label.setMinimumSize(QtCore.QSize(5, 0)) - self.login_page_label.setBaseSize(QtCore.QSize(40, 16)) - font = QtGui.QFont() - font.setPointSize(41) - font.setBold(False) - font.setItalic(False) - font.setUnderline(False) - font.setWeight(50) - font.setStrikeOut(False) - font.setStyleStrategy(QtGui.QFont.PreferAntialias) - self.login_page_label.setFont(font) - self.login_page_label.setFocusPolicy(QtCore.Qt.NoFocus) - self.login_page_label.setContextMenuPolicy(QtCore.Qt.NoContextMenu) - self.login_page_label.setTextFormat(QtCore.Qt.AutoText) - self.login_page_label.setAlignment(QtCore.Qt.AlignCenter) - self.login_page_label.setObjectName("login_page_label") - - self.retranslateUi(Dialog) - QtCore.QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - _translate = QtCore.QCoreApplication.translate - Dialog.setWindowTitle(_translate("Dialog", "Dialog")) - self.label_2.setText(_translate("Dialog", "Email:")) - self.label_3.setText(_translate("Dialog", "Password: ")) - self.login_button.setText(_translate("Dialog", "Login")) - self.signup_button.setText(_translate("Dialog", "Sign Up")) - self.login_page_label.setText(_translate("Dialog", "Login Page")) - - - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - Dialog = QtWidgets.QDialog() - ui = Ui_Dialog() - ui.setupUi(Dialog) - Dialog.show() - sys.exit(app.exec_()) From 227e7eca4427fd58c0c0acd9a3b9cd332eba351c Mon Sep 17 00:00:00 2001 From: Kai Hang Chen <40642739+Kaihchen1230@users.noreply.github.com> Date: Thu, 29 Nov 2018 00:13:45 -0500 Subject: [PATCH 02/11] Delete login.ui --- GUI/login.ui | 154 --------------------------------------------------- 1 file changed, 154 deletions(-) delete mode 100644 GUI/login.ui diff --git a/GUI/login.ui b/GUI/login.ui deleted file mode 100644 index 3607156..0000000 --- a/GUI/login.ui +++ /dev/null @@ -1,154 +0,0 @@ - - - Dialog - - - - 0 - 0 - 637 - 477 - - - - Dialog - - - QDialog{ - background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 170, 0, 255), stop:1 rgba(255, 255, 255, 255)) -} -QPushButton{ - background-color:rgb(255, 255, 255) - border: none; -} - - - - - 160 - 170 - 91 - 21 - - - - Email: - - - - - - 160 - 220 - 91 - 21 - - - - Password: - - - - - - 240 - 170 - 201 - 22 - - - - - - - - - - 240 - 220 - 201 - 22 - - - - QLineEdit::PasswordEchoOnEdit - - - - - - 290 - 280 - 93 - 28 - - - - Login - - - - - - 290 - 320 - 93 - 28 - - - - Sign Up - - - - - - 220 - 70 - 211 - 91 - - - - - 5 - 0 - - - - - 40 - 16 - - - - - 41 - 50 - false - false - false - false - PreferAntialias - - - - Qt::NoFocus - - - Qt::NoContextMenu - - - Login Page - - - Qt::AutoText - - - Qt::AlignCenter - - - - - - From 8d8a50485bfdc3c1032b0b49feb653be2b58ba40 Mon Sep 17 00:00:00 2001 From: Kai Hang Chen <40642739+Kaihchen1230@users.noreply.github.com> Date: Thu, 29 Nov 2018 00:13:51 -0500 Subject: [PATCH 03/11] Delete signup.py --- GUI/signup.py | 77 --------------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 GUI/signup.py diff --git a/GUI/signup.py b/GUI/signup.py deleted file mode 100644 index 2218c01..0000000 --- a/GUI/signup.py +++ /dev/null @@ -1,77 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'signup.ui' -# -# Created by: PyQt5 UI code generator 5.11.3 -# -# WARNING! All changes made in this file will be lost! - -from PyQt5 import QtCore, QtGui, QtWidgets - -class Ui_Signup(object): - def setupUi(self, Dialog): - Dialog.setObjectName("Dialog") - Dialog.resize(629, 446) - Dialog.setStyleSheet("QDialog{\n" -" background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 170, 0, 255), stop:1 rgba(255, 255, 255, 255))\n" -"}\n" -"QPushButton{\n" -" background-color:rgb(255, 255, 255)\n" -" border: none;\n" -"}") - self.email_field = QtWidgets.QLineEdit(Dialog) - self.email_field.setGeometry(QtCore.QRect(240, 150, 201, 22)) - self.email_field.setText("") - self.email_field.setObjectName("email_field") - self.label_3 = QtWidgets.QLabel(Dialog) - self.label_3.setGeometry(QtCore.QRect(160, 200, 91, 21)) - self.label_3.setObjectName("label_3") - self.signup_button = QtWidgets.QPushButton(Dialog) - self.signup_button.setGeometry(QtCore.QRect(290, 260, 93, 28)) - self.signup_button.setObjectName("signup_button") - self.label_2 = QtWidgets.QLabel(Dialog) - self.label_2.setGeometry(QtCore.QRect(160, 150, 91, 21)) - self.label_2.setObjectName("label_2") - self.password_field = QtWidgets.QLineEdit(Dialog) - self.password_field.setGeometry(QtCore.QRect(240, 200, 201, 22)) - self.password_field.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit) - self.password_field.setObjectName("password_field") - self.login_page_label = QtWidgets.QLabel(Dialog) - self.login_page_label.setGeometry(QtCore.QRect(190, 30, 251, 91)) - self.login_page_label.setMinimumSize(QtCore.QSize(5, 0)) - self.login_page_label.setBaseSize(QtCore.QSize(40, 16)) - font = QtGui.QFont() - font.setPointSize(41) - font.setBold(False) - font.setItalic(False) - font.setUnderline(False) - font.setWeight(50) - font.setStrikeOut(False) - font.setStyleStrategy(QtGui.QFont.PreferAntialias) - self.login_page_label.setFont(font) - self.login_page_label.setFocusPolicy(QtCore.Qt.NoFocus) - self.login_page_label.setContextMenuPolicy(QtCore.Qt.NoContextMenu) - self.login_page_label.setTextFormat(QtCore.Qt.AutoText) - self.login_page_label.setAlignment(QtCore.Qt.AlignCenter) - self.login_page_label.setObjectName("login_page_label") - - self.retranslateUi(Dialog) - QtCore.QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - _translate = QtCore.QCoreApplication.translate - Dialog.setWindowTitle(_translate("Dialog", "Dialog")) - self.label_3.setText(_translate("Dialog", "Password: ")) - self.signup_button.setText(_translate("Dialog", "Sign Up")) - self.label_2.setText(_translate("Dialog", "Email:")) - self.login_page_label.setText(_translate("Dialog", "Sign Up Page")) - - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - Dialog = QtWidgets.QDialog() - ui = Ui_Signup() - ui.setupUi(Dialog) - Dialog.show() - sys.exit(app.exec_()) From 4ad8099ece9f2117e10476a425d95256b7e4f3b4 Mon Sep 17 00:00:00 2001 From: Kai Hang Chen <40642739+Kaihchen1230@users.noreply.github.com> Date: Thu, 29 Nov 2018 00:13:58 -0500 Subject: [PATCH 04/11] Delete signup.ui --- GUI/signup.ui | 141 -------------------------------------------------- 1 file changed, 141 deletions(-) delete mode 100644 GUI/signup.ui diff --git a/GUI/signup.ui b/GUI/signup.ui deleted file mode 100644 index d768ab5..0000000 --- a/GUI/signup.ui +++ /dev/null @@ -1,141 +0,0 @@ - - - Dialog - - - - 0 - 0 - 629 - 446 - - - - Dialog - - - QDialog{ - background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 170, 0, 255), stop:1 rgba(255, 255, 255, 255)) -} -QPushButton{ - background-color:rgb(255, 255, 255) - border: none; -} - - - - - 240 - 150 - 201 - 22 - - - - - - - - - - 160 - 200 - 91 - 21 - - - - Password: - - - - - - 290 - 260 - 93 - 28 - - - - Sign Up - - - - - - 160 - 150 - 91 - 21 - - - - Email: - - - - - - 240 - 200 - 201 - 22 - - - - QLineEdit::PasswordEchoOnEdit - - - - - - 190 - 30 - 251 - 91 - - - - - 5 - 0 - - - - - 40 - 16 - - - - - 41 - 50 - false - false - false - false - PreferAntialias - - - - Qt::NoFocus - - - Qt::NoContextMenu - - - Sign Up Page - - - Qt::AutoText - - - Qt::AlignCenter - - - - - - From bf8072eefb2256d80ce2b5caeabcf44e160a4e05 Mon Sep 17 00:00:00 2001 From: Kaihang Chen Date: Fri, 30 Nov 2018 14:13:10 -0500 Subject: [PATCH 05/11] v1.1 --- GUI/Controller.py | 36 ++++++++++++++++++++ GUI/form.ui | 37 ++++++++++++++++++++ GUI/mainwindow.ui | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 GUI/Controller.py create mode 100644 GUI/form.ui create mode 100644 GUI/mainwindow.ui diff --git a/GUI/Controller.py b/GUI/Controller.py new file mode 100644 index 0000000..3571558 --- /dev/null +++ b/GUI/Controller.py @@ -0,0 +1,36 @@ +import sys +from PyQt5 import QtCore, QtWidgets +from GUI.login import Login +from GUI.Signup import Signup + + +class Controller: + + def __init__(self): + pass + + def show_login(self): + self.login = Login() + if self.login.signup_event(): + self.login.switch_window.connect(self.show_signup) + + else: + print("not a new accont") + self.login.show() + + def show_signup(self): + self.login.email_field.setText("") + self.login.password_field.setText("") + self.window = Signup() + self.window.show() + + +def main(): + app = QtWidgets.QApplication(sys.argv) + controller = Controller() + controller.show_login() + sys.exit(app.exec_()) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/GUI/form.ui b/GUI/form.ui new file mode 100644 index 0000000..24454e8 --- /dev/null +++ b/GUI/form.ui @@ -0,0 +1,37 @@ + + + Form + + + + 0 + 0 + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 458 + + + + Form + + + + + diff --git a/GUI/mainwindow.ui b/GUI/mainwindow.ui new file mode 100644 index 0000000..6da9707 --- /dev/null +++ b/GUI/mainwindow.ui @@ -0,0 +1,86 @@ + + + Dialog + + + + 0 + 0 + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 458 + + + + Dialog + + + + + 450 + 60 + 114 + 32 + + + + Manage + + + + + + 0 + 160 + 611 + 301 + + + + + + + 0 + 40 + 160 + 80 + + + + + + + Welcome, + + + + + + + dadssada + + + + + + + + + From b216822ae99eb6ca01fa69678a996b5d7103c1fb Mon Sep 17 00:00:00 2001 From: Kaihang Chen Date: Fri, 30 Nov 2018 14:17:44 -0500 Subject: [PATCH 06/11] v1.1.1 --- .idea/DocumentSharingSystem.iml | 11 +++ .idea/misc.xml | 4 ++ .idea/modules.xml | 8 +++ Control.py | 1 + GUI/Signup.py | 116 ++++++++++++++++++++++++++++++++ GUI/login.py | 95 ++++++++++++++++++++++++++ 6 files changed, 235 insertions(+) create mode 100644 .idea/DocumentSharingSystem.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 GUI/Signup.py create mode 100644 GUI/login.py diff --git a/.idea/DocumentSharingSystem.iml b/.idea/DocumentSharingSystem.iml new file mode 100644 index 0000000..c02803b --- /dev/null +++ b/.idea/DocumentSharingSystem.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1c3bf56 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..bf7f7ab --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Control.py b/Control.py index 9117032..d9fc8be 100644 --- a/Control.py +++ b/Control.py @@ -39,6 +39,7 @@ def ROOTUSER(email): def signUp(email, password, name, techInterest): """ sign up to be an OU, if password field leave blank, to be a GU + :rtype: :param email: :param password: :return: diff --git a/GUI/Signup.py b/GUI/Signup.py new file mode 100644 index 0000000..07c8004 --- /dev/null +++ b/GUI/Signup.py @@ -0,0 +1,116 @@ +from PyQt5 import QtCore, QtWidgets +from PyQt5.QtCore import QSize +from PyQt5.QtGui import QImage, QPalette, QBrush +import Control +class Signup(QtWidgets.QWidget): + switch_window = QtCore.pyqtSignal() + + def __init__(self): + QtWidgets.QWidget.__init__(self) + self.setWindowTitle('Signup Page') + oImage = QImage("images/signup_image.jpeg") + sImage = oImage.scaled(QSize(605, 458)) # resize Image to widgets size + palette = QPalette() + palette.setBrush(10, QBrush(sImage)) # 10 = Windowrole + self.setPalette(palette) + self.resize(605, 458) + self.setMinimumSize(QtCore.QSize(605, 458)) + self.setMaximumSize(QtCore.QSize(605, 458)) + self.setBaseSize(QtCore.QSize(605, 358)) + + self.signup_button = QtWidgets.QPushButton(self) + self.signup_button.setGeometry(QtCore.QRect(230, 410, 93, 28)) + self.signup_button.setObjectName("signup_button") + ################################# signup button event ########### + self.signup_button.clicked.connect(self.signup_event) + ################################################################# + self.formLayoutWidget_2 = QtWidgets.QWidget(self) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(20, 240, 411, 173)) + self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") + self.formLayout_2 = QtWidgets.QFormLayout(self.formLayoutWidget_2) + self.formLayout_2.setContentsMargins(0, 0, 0, 0) + self.formLayout_2.setObjectName("formLayout_2") + self.label_2 = QtWidgets.QLabel(self.formLayoutWidget_2) + self.label_2.setObjectName("label_2") + self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2) + self.label_4 = QtWidgets.QLabel(self.formLayoutWidget_2) + self.label_4.setObjectName("label_4") + self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_4) + self.name_field = QtWidgets.QLineEdit(self.formLayoutWidget_2) + self.name_field.setObjectName("name_field") + self.name_field.setPlaceholderText("Enter your name") + self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.name_field) + self.label_5 = QtWidgets.QLabel(self.formLayoutWidget_2) + self.label_5.setObjectName("label_5") + self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_5) + self.interest_field = QtWidgets.QLineEdit(self.formLayoutWidget_2) + self.interest_field.setObjectName("interest_field") + self.interest_field.setPlaceholderText("Enter your interest") + self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.interest_field) + self.label_3 = QtWidgets.QLabel(self.formLayoutWidget_2) + self.label_3.setObjectName("label_3") + self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_3) + self.password_field = QtWidgets.QLineEdit(self.formLayoutWidget_2) + self.password_field.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit) + self.password_field.setObjectName("password_field") + self.password_field.setPlaceholderText("Create a password") + self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.password_field) + self.label = QtWidgets.QLabel(self.formLayoutWidget_2) + self.label.setObjectName("label") + self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label) + self.confirm_password_field = QtWidgets.QLineEdit(self.formLayoutWidget_2) + self.confirm_password_field.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit) + self.confirm_password_field.setDragEnabled(False) + self.confirm_password_field.setObjectName("confirm_password_field") + self.confirm_password_field.setPlaceholderText("Confirm your password") + self.formLayout_2.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.confirm_password_field) + self.email_field = QtWidgets.QLineEdit(self.formLayoutWidget_2) + self.email_field.setText("") + self.email_field.setObjectName("email_field") + self.email_field.setPlaceholderText("Enter your email") + self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.email_field) + + self.retranslateUi(self) + QtCore.QMetaObject.connectSlotsByName(self) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.signup_button.setText(_translate("Dialog", "Sign Up")) + self.label_2.setText(_translate("Dialog", "Email:")) + self.label_4.setText(_translate("Dialog", "Name:")) + self.label_5.setText(_translate("Dialog", "Technical Interests:")) + self.label_3.setText(_translate("Dialog", "Password:")) + self.label.setText(_translate("Dialog", "Confirm Your Password:")) + self.email_field.setWhatsThis(_translate("Dialog", "

sadsad

")) + + def signup_event(self): + print("sign up button is pressed") + # sign up successful + if (Control.signUp(str(self.email_field), str(self.email_field), str(self.name_field), str(self.interest_field)) == 1): + em = QtWidgets.QMessageBox() + em.setText("Sign Up Successfully") + em.setStandardButtons(QtWidgets.QMessageBox.Ok) + em.exec_() + if QtWidgets.QMessageBox.Ok: + self.close() + return 1 + + + # guest user registered + elif (Control.signUp(str(self.email_field), str(self.email_field), str(self.name_field),str(self.interest_field)) == 0): + em = QtWidgets.QMessageBox() + em.setText("Guest User Registered") + em.setStandardButtons(QtWidgets.QMessageBox.Ok) + em.exec_() + return 0 + + # account existed, go back to login page + else: + em = QtWidgets.QMessageBox() + em.setIcon(QtWidgets.QMessageBox.Warning) + em.setText("User already existed, please login") + em.setStandardButtons(QtWidgets.QMessageBox.Ok) + em.exec_() + return -1 + diff --git a/GUI/login.py b/GUI/login.py new file mode 100644 index 0000000..c8f4380 --- /dev/null +++ b/GUI/login.py @@ -0,0 +1,95 @@ +from PyQt5 import QtCore, QtWidgets +from PyQt5.QtCore import QSize +from PyQt5.QtGui import QImage, QPalette, QBrush +import Control + +class Login(QtWidgets.QWidget): + + switch_window = QtCore.pyqtSignal() + + def __init__(self): + QtWidgets.QWidget.__init__(self) + self.setWindowTitle('Login Page') + oImage = QImage("images/login_image.jpeg") + sImage = oImage.scaled(QSize(605,458)) # resize Image to widgets size + palette = QPalette() + palette.setBrush(10, QBrush(sImage)) # 10 = Windowrole + self.setPalette(palette) + self.resize(605, 458) + self.setMinimumSize(QtCore.QSize(605, 458)) + self.setMaximumSize(QtCore.QSize(605, 458)) + self.setBaseSize(QtCore.QSize(605, 358)) + + self.login_button = QtWidgets.QPushButton(self) + self.login_button.setGeometry(QtCore.QRect(300, 390, 93, 28)) + #########################3 Login button event ######################## + self.login_button.clicked.connect(self.login_event) + ####################################################################### + self.signup_button = QtWidgets.QPushButton(self) + self.signup_button.setGeometry(QtCore.QRect(200, 390, 93, 31)) + #########################3 Signup button event ######################## + self.signup_button.clicked.connect(self.signup_event) + ####################################################################### + self.formLayoutWidget = QtWidgets.QWidget(self) + self.formLayoutWidget.setGeometry(QtCore.QRect(140, 300, 291, 81)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget) + self.formLayout.setContentsMargins(0, 0, 0, 0) + self.formLayout.setObjectName("formLayout") + self.label_2 = QtWidgets.QLabel(self.formLayoutWidget) + self.label_2.setStyleSheet("font: 13pt \".SF NS Text\";") + self.label_2.setObjectName("label_2") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_2) + self.password_field = QtWidgets.QLineEdit(self.formLayoutWidget) + self.password_field.setEchoMode(QtWidgets.QLineEdit.PasswordEchoOnEdit) + self.password_field.setObjectName("password_field") + self.password_field.setPlaceholderText("Enter your password") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.password_field) + self.email_field = QtWidgets.QLineEdit(self.formLayoutWidget) + self.email_field.setText("") + self.email_field.setObjectName("email_field") + self.email_field.setPlaceholderText("Enter your email") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.email_field) + self.label = QtWidgets.QLabel(self.formLayoutWidget) + self.label.setObjectName("label") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label) + + self.retranslateUi(self) + QtCore.QMetaObject.connectSlotsByName(self) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle("Login Page") + self.login_button.setText(_translate("Dialog", "Login")) + self.signup_button.setText(_translate("Dialog", "Sign Up")) + self.label_2.setText(_translate("Dialog", "Email:")) + self.label.setText(_translate("Dialog", "Password:")) + + def login_event(self): + print("login is pressed") + if (Control.signIn(str(self.email_field), str(self.password_field)) == -1): + em = QtWidgets.QMessageBox() + em.setIcon(QtWidgets.QMessageBox.Warning) + em.setText("Account not found, Please create an account") + em.setStandardButtons(QtWidgets.QMessageBox.Ok) + em.exec_() + self.signup_event() + + # correct users + elif (Control.signIn(str(self.email_field), str(self.password_field)) == 1): + self.isIn_event() + + # already login + elif (Control.signIn(str(self.email_field), str(self.password_field)) == 2): + em = QtWidgets.QMessageBox() + em.setIcon(QtWidgets.QMessageBox.Warning) + em.setText("Already login!") + em.setStandardButtons(QtWidgets.QMessageBox.Ok) + em.exec_() + + def signup_event(self): + self.switch_window.emit() + return -1 + + def isIn(self): + return 1 \ No newline at end of file From 268a448a0fb7532adcced03063348e4f15eee0e6 Mon Sep 17 00:00:00 2001 From: Haoran He <41132644+hrGuTou@users.noreply.github.com> Date: Fri, 30 Nov 2018 14:20:55 -0500 Subject: [PATCH 07/11] Delete DocumentSharingSystem.iml --- .idea/DocumentSharingSystem.iml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .idea/DocumentSharingSystem.iml diff --git a/.idea/DocumentSharingSystem.iml b/.idea/DocumentSharingSystem.iml deleted file mode 100644 index c02803b..0000000 --- a/.idea/DocumentSharingSystem.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file From 356322480a2b5c5f0500e245df6d3e8aa2abfa7e Mon Sep 17 00:00:00 2001 From: Haoran He <41132644+hrGuTou@users.noreply.github.com> Date: Fri, 30 Nov 2018 14:21:17 -0500 Subject: [PATCH 08/11] Delete misc.xml --- .idea/misc.xml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .idea/misc.xml diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 1c3bf56..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file From 18f7082d9fcdfdfebaf5bd7fb2d8d2a458d1195c Mon Sep 17 00:00:00 2001 From: Haoran He <41132644+hrGuTou@users.noreply.github.com> Date: Fri, 30 Nov 2018 14:21:24 -0500 Subject: [PATCH 09/11] Delete modules.xml --- .idea/modules.xml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .idea/modules.xml diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index bf7f7ab..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file From 92be03daa38f2f83b61170a3de9480256e382838 Mon Sep 17 00:00:00 2001 From: Kaihang Chen Date: Fri, 30 Nov 2018 14:41:36 -0500 Subject: [PATCH 10/11] v1.1.1: add background images --- GUI/images/login_image.jpeg | Bin 0 -> 37336 bytes GUI/images/signup_image.jpeg | Bin 0 -> 33289 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 GUI/images/login_image.jpeg create mode 100644 GUI/images/signup_image.jpeg diff --git a/GUI/images/login_image.jpeg b/GUI/images/login_image.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b0a6b2da3cb043ec0216d4d299cc57fff7a222ef GIT binary patch literal 37336 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 Date: Fri, 30 Nov 2018 20:41:57 -0500 Subject: [PATCH 11/11] Add files via upload --- GUI/__pycache__/Signup_1.cpython-37.pyc | Bin 0 -> 3814 bytes GUI/__pycache__/login.cpython-37.pyc | Bin 0 -> 3321 bytes GUI/__pycache__/login_1.cpython-37.pyc | Bin 0 -> 3323 bytes GUI/__pycache__/signup.cpython-37.pyc | Bin 0 -> 3812 bytes GUI/login.ui | 110 ++++++++++++++++ GUI/mainwinodw.py | 56 +++++++++ GUI/signup.ui | 159 ++++++++++++++++++++++++ __pycache__/Account.cpython-37.pyc | Bin 0 -> 3113 bytes __pycache__/Control.cpython-37.pyc | Bin 0 -> 2223 bytes __pycache__/DB.cpython-37.pyc | Bin 0 -> 5001 bytes __pycache__/Document.cpython-37.pyc | Bin 0 -> 5436 bytes __pycache__/Taboo.cpython-37.pyc | Bin 0 -> 1973 bytes __pycache__/User.cpython-37.pyc | Bin 0 -> 6859 bytes 13 files changed, 325 insertions(+) create mode 100644 GUI/__pycache__/Signup_1.cpython-37.pyc create mode 100644 GUI/__pycache__/login.cpython-37.pyc create mode 100644 GUI/__pycache__/login_1.cpython-37.pyc create mode 100644 GUI/__pycache__/signup.cpython-37.pyc create mode 100644 GUI/login.ui create mode 100644 GUI/mainwinodw.py create mode 100644 GUI/signup.ui create mode 100644 __pycache__/Account.cpython-37.pyc create mode 100644 __pycache__/Control.cpython-37.pyc create mode 100644 __pycache__/DB.cpython-37.pyc create mode 100644 __pycache__/Document.cpython-37.pyc create mode 100644 __pycache__/Taboo.cpython-37.pyc create mode 100644 __pycache__/User.cpython-37.pyc diff --git a/GUI/__pycache__/Signup_1.cpython-37.pyc b/GUI/__pycache__/Signup_1.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8aa0b0a827b33e90c65dadddc7db32b21bdcdea0 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/GUI/__pycache__/login_1.cpython-37.pyc b/GUI/__pycache__/login_1.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c4440a374287016c703ffe8064811a502ad70e5 GIT binary patch literal 3323 zcmaJ^TW=f372aKvyUUAcN^&eqR^yHB#9`%%h|<2eK@rP02(V?*v=LyDWU=Oqq^0)4 z%nW0Zpq~`BGWY^%e5lg zwFxVSRk!+BV-;rpq%o5lgW6fit+R4ZYg^}_Q)?TU*;V%w!Lw>teG{-Fu4G%!D&1Z% z;q4O4?nV9)&+P7jA9AHQAiH8DkN5j1KYt7$zJ?~hf{tsh&NSEHrL;WL+zQi~@ssA7 zti;OjwsL!1n_0|;ag|kB4c;|Y2fG?sr8u7nwC#T#!dLgp}D>d1rh0J=o!CD3XHRL0SO`tZ@U$N!o^67Erg+Pl4m+;Il&J z7FhJrg1*h@1b`29t&y(JQR+QiZ9v=UuNm#0=nV$DA)DIiZMN~AO{k|`=(*U>7NA>T z!?m~g^L23#TgVUoa3}XDwKVumx}DQZ1Bcw)pVY`BodXDj$y$K%AUh#CsYiqD!H^#X z-+^lee+REU$AAtFfeP+m_eaFO1MGYgyT4&~9lJk67u>|zE>KzPFcHxcf1HepKol^g zWwi@aO#}mqX>;*zP@Y_Iu6?eyVQ#KC?pq6%W0gtU2_he4Pm99R@sPlhuc@ z;=%#7!kJHhUE<4!7PtfHbr_QYwkFMt&WyXheLEc@l9Y#%`tiocEP$^~0cl!dYhZlQ;$>tLHNO zM;@zeNd`ypXz1k{vPLnaNzp>9mtgT{uLdBw??<@&qs4UzNZgvc0u1-zen6dk>I-lW z>6+aqcr9XOuA!&KA@3b?uG}i{=O^k`iR*b1a<|%j62$x=3zS$zt+?lh{o~|m!nnI~ zP~0sd&tl}FWe-BX&ySOkae?mORv+Qjqdsv3SGGV2PKY(KL%_lKu?&61Uk0#~r(F5@ z*4&libb4W;qs5qJVX9whxy1c%i-_C*jM^~O^1sPp*cUJ+YgY!Am` z9Ta0c$rsRRdPA@2w%*cBXf+tE;Lm92SB=(14|o%B>>KdA0`Jy>LL|qaH){H%Nx{86 z_vt=*9zN*v=+9Jlz6S#9&cJwMK!qu44rGsVTA3QmU?r?Jl$p!|DK8MKKq?EwE)X+E zD9>2$VbDUFNYKJAqMQ-NpPo#W|En)gDO zWn+i5e$sAbl_7+T$}G$`A_*ZR!9n)otR$77kf-E9d7I)}N+?>p$*GH(U=LzEv%c{~ z3}HteK}n>i{FwQIG!cTeM6AoD6)&jW~dz2B|2DuD;;zhZGkgJfFdQ$CNgy&5_A+?m4utT=l|luteeRDgK&3fTw7wjyK12sLRH_*a8&3 zV3*|UK=qHk*HnqJGLHh))^n%+A0Ku=!i6TWIB8(jWF@!Y?R@`^31|kHfD-eC@oH$} zA6_Oa<56MGkd#gI;tOIM;r(_UD`*Uv6)I@W^P+@}LZlm>_ru5!^BIcjtTr6~pfLFT zQ0(BMm=7ru1s*hAjQA~57aP5}3(Or@fGJ{a1AaTUZC|m=lvVIk`(WHvzoVscUuh7q xo&P1E3hvhD(Bn}+1)gd;RdTV7D__M9m->(mnf+D1zdztXN@T-ad|9`R{{nQ&O$Y!0 literal 0 HcmV?d00001 diff --git a/GUI/__pycache__/signup.cpython-37.pyc b/GUI/__pycache__/signup.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7d61972f337b8d575a63c2d912a6921a0a7e0ac GIT binary patch literal 3812 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 + + Dialog + + + + 0 + 0 + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 458 + + + + + 605 + 358 + + + + Dialog + + + QDialog{ + background-image: url(Users/kappa/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/1feec28dbcbbd41c908e5319f9080e3b/Message/MessageTemp/047868fcf45822c2e58d288b5fe5d070/Image/5041543441403_.pic.jpg) +} +QPushButton{ + background-color:rgb(255, 255, 255) + border: none; +} + + + false + + + + + 110 + 320 + 361 + 130 + + + + + + + font: 13pt ".SF NS Text"; + + + Email: + + + + + + + Password: + + + + + + + QLineEdit::PasswordEchoOnEdit + + + + + + + + + Sign Up + + + + + + + Login + + + + + + + + + + + + + + + + + + diff --git a/GUI/mainwinodw.py b/GUI/mainwinodw.py new file mode 100644 index 0000000..70da73f --- /dev/null +++ b/GUI/mainwinodw.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainwindow.ui' +# +# Created by: PyQt5 UI code generator 5.11.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(605, 458) + Dialog.setMinimumSize(QtCore.QSize(605, 458)) + Dialog.setMaximumSize(QtCore.QSize(605, 458)) + Dialog.setBaseSize(QtCore.QSize(605, 458)) + self.pushButton = QtWidgets.QPushButton(Dialog) + self.pushButton.setGeometry(QtCore.QRect(450, 60, 114, 32)) + self.pushButton.setObjectName("pushButton") + self.listView = QtWidgets.QListView(Dialog) + self.listView.setGeometry(QtCore.QRect(0, 160, 611, 301)) + self.listView.setObjectName("listView") + self.gridLayoutWidget = QtWidgets.QWidget(Dialog) + self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 40, 160, 80)) + self.gridLayoutWidget.setObjectName("gridLayoutWidget") + self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(self.gridLayoutWidget) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.pushButton.setText(_translate("Dialog", "Manage")) + self.label.setText(_translate("Dialog", "Welcome,")) + self.label_2.setText(_translate("Dialog", "dadssada")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + Dialog = QtWidgets.QDialog() + ui = Ui_Dialog() + ui.setupUi(Dialog) + Dialog.show() + sys.exit(app.exec_()) + diff --git a/GUI/signup.ui b/GUI/signup.ui new file mode 100644 index 0000000..0b75b1c --- /dev/null +++ b/GUI/signup.ui @@ -0,0 +1,159 @@ + + + Dialog + + + true + + + + 0 + 0 + 590 + 458 + + + + + 590 + 458 + + + + + 594 + 458 + + + + + 590 + 458 + + + + Dialog + + + QDialog{ + background-image: url(Users/kappa/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/1feec28dbcbbd41c908e5319f9080e3b/Message/MessageTemp/9e20f478899dc29eb19741386f9343c8/Image/541543462213_.pic.jpg); +} +QPushButton{ + background-color:rgb(255, 255, 255) + border: none; +} + + + + + 230 + 410 + 93 + 28 + + + + Sign Up + + + + + + 20 + 240 + 411 + 173 + + + + + + + Email: + + + + + + + Name: + + + + + + + QLineEdit::PasswordEchoOnEdit + + + + + + + + + + Technical Interests: + + + + + + + QLineEdit::PasswordEchoOnEdit + + + + + + + Password: + + + + + + + QLineEdit::PasswordEchoOnEdit + + + + + + + Confirm Your Password: + + + + + + + QLineEdit::PasswordEchoOnEdit + + + false + + + + + + + + + + <html><head/><body><p>sadsad</p></body></html> + + + + + + + + + + + + + + + diff --git a/__pycache__/Account.cpython-37.pyc b/__pycache__/Account.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c57912fb363c74e248b286f3960e8705069291f GIT binary patch literal 3113 zcma)8TW=#t74ECuwv)_N0Ra-lWmzn;8+~G%a__HJ&*eU^p!Il_2WWj><8`zZ-ryT(t9+Ah zp$+&W{upgd)cKQZNB&XN_*4Gutz+Z=9jp2L=D5yK4x=cYCYpU7CgD&_M560vzS}-- zAFyZ?CPTrpP^nj`Mp04QX+wf% z(vjq+sbuX-Gd##b8BUm(gyZ;NeI`?UHI_n8Wpcmyb6^tdrxz3st2Fu_FlKutmn@0 zXZfROB%>jD;ll}eO$*li1_KY!eoJLcEM`sj5jA3V{w3zI!;PY`d%WDx{Qwz*A z$od0=L9V_v84Lj-p zS0nt;wye^&gs-bqk67o@;QoDBV{tkhCk5~x;*Mo;h&3%*e>`Xw{m-5k~zD#cr{B>bxUTwrODg>ptPC|Nz5S0 z()pIr`UO2$M~6Cp98IMJpa_L$GM#3*e>KxW<<)^qCqQ*?({3Gd^xTPkxB5`YtMKvu@Y@ZSS%D6gc&qinC!? z+=?q1)*{l13bmw)!RwFF0h$V8`yP70E4K~WK&?b{+y$Pzo8OeL`E9^tHXp3uUXMsZTz^>6ka^0a0Xq0#Fy6_UVOp! z*x|*+i}Rzy?s>b#PTMcp$>GuOzVR(7!o3seV}$T@upaW%gUG)}f!#U{BqSjDEqmMXY{!ZJrni}mTESs2($z|D@Uf163uCue~ zU5PfyBS#Ug_O=Prm!2-|y^QEw#vOX20K=`Tm&s%=i19 zgX80Q1=`1Vluv%oDaunE44VPWyU^nRepI1qRdG_PI;tFNjwWfw$xw}EzET{W>NE>9 zOAVR>YEYAo0L{@n9R+IAF**)(gyreBMU8*T3_3w4>2^9rcT}`5brt+rN?~Uod@6IE ziUgVlJp=s^^!Ro73FU^`R9fmuwW(4SEbXG2r2wA+{#B}53e7?{z*esDK|W8QO-C+w zYlPKYzdD`Ha3&HSOp}xnvA{?YGfqT3VkDd=UcxyGgq)NbZS{>t-bx~nu|cq{?rV&f zIQ0XU*X2wjKa;RnNPe!MwY9?soymb2)R^I662W{{ZlkTEr+W$q@Rh&jiYO5m7u_gw zi-%dfD8i^1)x|;>6c5GTf&Kf7wR-sk$oMdGIP{Vl?9N(nxgS)ldMsG2cqj}65375l zdfUXa90Lb<$?+Kc6eF*is*YXbBQRb^7?EB__+=O%!Y#NB#8zlGGKeHE zJP_9zdzMrZpR#E}I@j)Y&R*}_IoJFCQRm5(-j(J4^_zb_UhdpJ-Tm=e_sWCr`IXM< zrS7#Q%kEvi+dca$E`D==?a{5?55IIT+)DK|DHn2F|SZE<9L! zcxvt8Pra2^@8Z|p<)!|&D^E|I-sHG{X1V)wOS(tB$G`P{y86fcoBgXR-S6&qF5d2( zKhs;iv-WTmcCgX$kWbC^Pc3!N-2)A@@#Iox>3qrFthq(BrSTWJar}A6>9Zjyy&ah= z=v)Wz9n-Se7k(__cJ4jT3zI-NqY)2lpC(w_;#wt2KvI%Zq%AAJc% zF&a|xV=5m7>d6r>NHMi#D!mEJAc1zLDb-Y48sClA3}dYct4*z$Y3Y0q%|Jp8602Y| z&JFR2{YpTRh=`CJXT%Li$=*Z!c``gFnfFPx)m=V9WIoxDh58N7a#su>gW&^=E z`ncTnZ3VZ{$fEL@SqL~>X+ z&``}4Qna9@uw_AXHUJQ1luf`193$1+5|r8CEf7fqE;pv}DHv^CS$3_1(Ng&~to0ab z7+M9r!Q>t=)u0YSG4^9Jp9G$OVuuj}dm>?y7UR7e5&EBsKGaD!FO?b-ABGjQ6DOX> z;`o)u6qa2QgaTbu7zJ#gbf-udFjY##a}q9xApy%r@c5WjSYROQ+3f5Bnp@|?Vx=j_u+P1@i*mO*Opoxr!vav5I3 zpj>uz0TJ(H_U%957z=L5-M}%uuofkd3r;q!G8Pp^B_x9aHGF*>9nq7Ii7YfS6J!KP v6xRJ>WfY#t<>#g@Vs8C(Lc;lsOJGZ>s+Q2xfCv literal 0 HcmV?d00001 diff --git a/__pycache__/DB.cpython-37.pyc b/__pycache__/DB.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6be0be3cf43f70399a73fc68a036848549313a71 GIT binary patch literal 5001 zcmcgw+iu&)8RqaHQHreCj-A9gmCa_e)^=;BX^XZ&5VRY|y8#wLuyzg=HWg^j*k(h7?xMg_;LLD1{K@(L??36| zxw)!_gX`KCe_7D9f78Y2FfjNv&iG$wxW-waby$lr8tZ}HFSr6{H4~aahq4r&+#fhgTBsdd=C9tUgu}g&+~b{ zfPR55@^k1H`4V47e~zE$7tk;9i+lzBGQY$xqd(8D@T=%A@N4`B=r3}I{}BBOzs}!7 ze~I7V@1wsguJD@&y8NfODlYR6UbEMXcFOQN zvzck*M|7+rykj~qp-Hvpi$^TQgQuF*Q}zT>U+7%JgRH5(E_Q>k*TL86Yqv5c{-((@ zc+~)0`hnZ+y6YPvK1ibOdbgkKN8$SY*!$`2+v}Zv`z6-+nAwQDUPpw<*1jwK zaBr(0C!({y@$p)>|5fGgo(RQZSKgbW&!TTMwZRQ3I?+qHvpdcw7jW7O1AKp44PJN(3qUZc#I5zNpDtQ+8Cr7VKTzO3Zhp+HdxCf zMNGe^oJ8tANgPRE#CR;7FeeL8(tn3R|7N0{utZOlnv@2NQ!xHOj~x!RaeYgBs)e^r zEin(O@)^^PbfyiK5{nzeq{K>f>YtL8;NG$RO#7`CqE)&xo7)W=#yAL?T!{^3x1W{=)8Qyt~u zs~t#-ub|1*phFq-s~T0d#Oj8btK=r`&!*?+xYNHh0W_#d6yU)RwDfZ(Q&i-Up6VwCEQ{s# zQt&XJL!HLZ!;I9aJk8L<7{|thtw5c`vBA8z?}mGVI8VHtrB?^*3VJnjy@?&S?`oR-12NX7=XyafcWShdPg5M=0hq!7yfku~PuU9J<>P7#6pVieOj> z5v4)9T6J*T>AKSGILdL}DbB4{YSXt;Zz4P zZ_KzaaM8a(jN|afCpy>BlJh_`mDjj|xCZZBVBHe{4Zp48TJE8(RAov-*0EzY!Mak; zx{Tf0-puT+$3g|RAp)&BLNh$|PQR_f8}h;zJvV44(X?yPTXr0}-FQDrX1NymW9(xO z=Qx@zVfTn;xy8}l@7t*;TU+#cQX+{WWBWu#z3wb)`;K08ep+Ti`z|=re9vpeJ(JGI ziRVYSnD8-_P3HQij7C4O<&BZ%DXVE%gWFGp^mk#6`)=Y0*V}hKdF*&@=)@xA4id`1 z_guBJ_D)F4O7kur1Rjh?&HLnqadrd&KSahFj+f@H=_&0%u# zAxI5xF^r!BP~RF-UnM1opUMP=)VGeU3F?=davk5%Dn9~9NTHFDmngLKVtEbogOvh6 z>r+|DTmjQroN*wa;4n%#ito|u>H$*6Xm^}>D3AR&lFztCoEDm#>i(=7E&{- ztjg-TnbYbv){HTy1aXY{+evaxsw0IwC5Uf@FiMimsSu{T_YhI@*qlJrXtpZ%qfR$) z{V*PYAAuNMehZK+1yW|yW0b44%3g#-E&K)-TPwce4Z$-CY2;sqA?;@b2~Kqo9f^wf zamM74`*(J5_&XZg%n~_=v%B0g?^j`Bd6|3#tq=9!gQ)9e>Zwko|W&G0BnKY<@|I zjQ$27j*QJlapX$TRekM?DTN=qpC*iDR8fxdJ=G75WxAp?nuEoHzSeWsGgv_JNYmeh z#&?WJXQxE|gFqMsq>G@2%KUzX+01UYQLBaRc4qDMP=7TW*IMM~#f}?`w#z$yC@EOA z&Toz;Jt_Fw=t>fHEtCFdkrdD*xu8}B1ux1uiaMr@kRmLp*@XUwc}ms4s_UrGmBd(8 z-AbybB$XQ~RhN{QN=lSeE+Hv=ssJO&<4Lk{MQcf#l%u_n8)>&yRah_>6~}1*nSHkt r@m?VAk?LcLS2bA4yk0_`4Yz98CVn-0*{;}C^yln3^c7s!h9mZ0rY`%{ literal 0 HcmV?d00001 diff --git a/__pycache__/Document.cpython-37.pyc b/__pycache__/Document.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6fc611fbe0461e300b2905d984f3d8124f01c30 GIT binary patch literal 5436 zcmcIo-E$jP72j{IRhk|KLkF*-qMx?iln$a?Ark=H1H4E)# zWVf7}GiuA#a?E1(CtA&A4$Gm=GneI2d(2}6)CE>#GpLKK#4ezoVY6%wb&1Whi>NQK z1@;2!S$2tCMm-nIvn$62|4lH*7N6>PkG`u_Ui=)p({?IG>I%sZWY`MQd=xkQh;A!- zTDZqqzyr1wHe|!3!T4RkMJK<3OT4CQn#5{Sf2ut-2BtKIW}=$b7*sLu6ig^t*9;@8(u{`@y}t<))M!v01GihO*h+ zUu(pz>iwqQmT~KLTZD&ADXIq{5B7Z#taf^`8MmwZQM_Mm`9cP~DrC(4!=U=$<`1^+ z-dt<3={wN0ckjXG7rg;9+Om_qW-_7MiDI9XS=g3&@g~u2Gy)+G zx>3|qDjComKz)|VPv z@1%1)XvHVN?I;Qk{pd#1=cyHU0&JCIbE(tiQ55c{IUWEUA=BK0@eO)tASdHZ-S-~c zxv4g99SOYJCLly=cX-&ASSyZYYB!o;L`!yX`XDtA16jF%GZXx&2?^F*LY9tGbBQu; z#4M;eU5McJR%%gSEk|V?l60icu|R5(3{w-^OLeT-5{I<{jky(ySn?kA9MlRY5JaOH zKtlZY8h;f#{^z|a$yQX40j6Kw3dFIDJJpdT+z^e|*Vn79Ui}1PAj|3)f?Y@`Y#;9S zU?r_d>sqIm=131PERWU2H56LDsC)Rk`W4+Z77Rn5)fe=VzHBV%mTstj(Yk^b56_;- zS23qSFwxJ(HQ~k2@X%vYJJN@S)G|&4M;HuTGPD@+1#zMdjx>*5evMhX+MzZu9xo;O zmiFUI1Mtt#N%X`7j~R>LHC=nO`B0NN>4FV0|0x(8e7Fui^uUF`1s7W2!Ub7iHnE;8 zB-V)iOlA(OCzfJA;{$jb@Q~BL@13>V%%-0;QsSrx3QT6~N0Bn+MwfFac9}pXhEQrQ z)I2_eL-P`f9i_Yd5>3WLf>*p;sTBD~ zQj6B$7B#sCJZ>EaJ(1>bK5hgZVi^7sdMY+wM#Xb#A`e72lBtQ2{AFq;?a7MQXh8Ao zuD*p9aS4Uy82U1hw+tYwUoz&6Sv>I#^fbr-=|}5N5dH)Yy*vLI;RI+83_=oEo50t4 zd?_)3ZwX$}8s-vP;rix7Edl;O(gl)FfFvRTAem>TLNcE?BP1GugHO@pRXnCHIL43a zpgIDNlQHqvsZj9b6gJvd1Ok79iZ8-ztVN@pyo+%Y#Fli2Fau&G z!^#lbME?XaVokbKtnwmmq?Txjj;I8vNIfy0>P)|)EozXXvGX~Za>d}ZL~25c6*E(; zH_?#o@|-Tsfzj@e{}uB6jCbl7Do9;5Y>K~yx}lzMQ@}+ep*Hh3+$1K`5tMDHO;M-> zVvryS3ZM`mAvjWj64j%?X<)aPpF0NQD7YHf(mb+;2)melYJdnF3b3%clQ_d16cGW| z&^^_3C5mH1{6*?V`Jp#{GpNa9IVi51xWfX*Blt={LCnRK$NC=HiwJGp#0&K-yh(Bp zpx6IYhnw}` z>QbHaIVeTVrXWD@@8Z5PqckY9JK{=CRK+i&NDFZ1I0O#^oNj6Ix52@r*J*AfBfdgUCM|nawbQt`E0wj@90-;?vrV2^oaa=R5Tfx6 zGesGNmUnf}xN0pM@U%sDQ#{Ez-I1*0znG<;8@J@9lwQ<4P5F+V7s^!;BDMwz>sA>9{@Z_|*|@a+OCXB7crCqk?K)+Gk$4+7*|ZOOpN&_czBM{jY4?}^u8p>gE7Mh z3H56O=Q*nxi38oqCAp!Ck0r*)2;a?2xMGj!t%U7xI>KHh|J;!5ys?xqzT%$YJg+m! zJO68&nGu1UrmKI(l7c*s21A*ejWQaO@1cF7WF*RoIDd|ZOaNpcA!R)$D(h(v!0lPi zbL{X16)$g(av-QAM7IHh$#Nn*lfe-4CmID&h^NhSeaM}ZIc>m{ENLU306Zc(C!~c&jIRU@%9BL4b7f?dwW`EM1-hA=+@>}~s6=tf78HV$*Aju(>t{}( u=u{4{pQHkPF7jE9wi-v2uuez7q7hK!D>N@U{JLg`&-~Ja)IuH;5 literal 0 HcmV?d00001 diff --git a/__pycache__/Taboo.cpython-37.pyc b/__pycache__/Taboo.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17da9e09af9decbd344f139d20b39debafefa562 GIT binary patch literal 1973 zcmai#-)`eX6vk)9W5-RK>~<+7yTDQj32g-0NaYSyE3_>uu|gG6iwYGGLT1{A{INTB zx^?9AW_gh2l2`IASG)pOd}r*q-m1$wni-Ghcs%EKzH{=t(WoJTEQq)U9Dnt)tYKx^mI)%hr+zj@-^ew zOG|nd%p+4lXlz7 z#NP94C8p_7U{vN!L)D9QR*QpC@JgF(<(tdC4&y;E$=uKkCUM)zR!4&<4o>V_nS4d> zas3xFt8nDs?>aw3+C-gUFARH~Jsl0>Anb%md=^YPyHWqk?d{Gu>0ZDFn|Ahs{&cJ- z@xfUSyPqB;QLM)ud%mY(lKIQSB2p~6kB)J{>)hjy94YQ|pPL4r^=W}F3SbHLdrXp6 zj&s50ECotsF{Xe~Abbgg0QUw$PACh6{EFW~Xef%a`l*gfjE25zD5{x*=a~}*q4DS$ zox3fJPxo{%3n}l`FwOksHXE2lO?0_~bzZnfK9{{yq*LN#9MR9tqhoLep*&KgRObgY*i*D4;n{j=Jl5P2UfWx(Gc5@RLVxe53Hp)K=D zD4w!ZJY+-9Z02{0KV&IS#SS~)Ji?t7g#$v9l8`J2$#)RS8VA$UQysO36_CkKO!bXQ-3A0GSV9^f_8Y*11q5(5&$dA-T;4vgnf<>7tO7 za!D~s_A14NS%Cn{g3ra}XDLVdc|3PgaV=4F+|;qf$Bsqu**Zd2Otz6Z9w1!+lC(0a z6_9GFtjI`S$y+iqn>fR)8RevwTJm!(wXkN^(PisKkAn;S?P#P=d!t=c218-C3ac=4 zGgps$gOPcU7KzB)m9+oBO8KLI3zOHtopGS1 XBmImDtNp0&`3-;7U-R#wHGTdcmAZuk literal 0 HcmV?d00001 diff --git a/__pycache__/User.cpython-37.pyc b/__pycache__/User.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ff3e982bd177a34473d66207bc916e773e37e84 GIT binary patch literal 6859 zcmcIp%X1t@8Q+{Qaphl_D+kK|0vGuGdLBEomQ$t-qw4OR{(Aa*^!Msd zw^mkK6+FVM{OqI4mC8T(l07y2*hC9{iB436F{%ub(HI!|-5i*DtPZMov4^OBQW4ch z=AeeRnyBNgE^CjfgF4Q$?~N+K-IEl5EMPPupje zM}`5sJC)w@W6)6PyX>>a#E(t1U<;kBkS5S$2=kN5pem}Oh7nYV2FAK*3JYUHEQuDz zrf7?0jFwmt9gIuj0KYuap+IhC$sR#_ttL*?ptrZxjvrlKg60LX108H zI+k9zbL6O@cepbPLOIr3T%XKhYkz;}4a5EYHYw5M8PN(6T+bjbkBbk-2AU@N3Vwu@ zPeJyFCWtprt7kQcG-aR~TN&Qi@+Z=aoqE}PgCtl*r_K7D|Z1Jb(jAh(RiPnrJ z9TCP&Zh;Luc*%%d)5-e!%Nt6DQ{~yCVG!E>f$fY&w(#A+ zP6-J5y{fW^y2B*^A7Sv-EaAb_JSfU+k<=CJtcDNe_DH-h)kUmG2sWctO>hb9@?80F zpbxNcsZCJ9?BrpZ$(kXZHm!9IPsMT7DT2<%8LbZE^2a$Ta^f+thAhH zH~M&uGg`6{{khe$(`RGiC}(U>q#6$c+QIH@A~);_j>ZY)nmw657!BPuTY*|NbVDiD z>;M)b#e9oIM>eoV>q@R8C&Tc_4v(ZAKxYdm><~EYp=S$h_=_oQh)TWjL8fGxn*aRc z97oSgv~2ZIhWB$?@8EO;fV81>$~-IxFJ38q`Q==Uja1)CVAlYg569g9P|qpHGku)V zKMPXKL=YY+DeZ7N0b#TkazFNAI}eBQL<-uDb}~WES#}V2d^L7Ldl=YP$-lPvt7}(b z%zX&w>Y9D^eQXh2ed0qXflceSvD6OzOTl@QCUra~*y}ZBw(bO3w5Y@ycYK7eec9+=E4Ad9d@e~W^tcjr?R6H_jeLzQO z8CDg4HQiep=3+X3xOfvSSVQ;hQ4E&Uip{%wC7a7#Y8QJYF7?#V4mEWFrpB-NN)=a| ze}N0l0Qr7{G?BQ95w-8`&EpIWn-9m&cZM`~Gx}A2l+=NnlgVgCMR_1?$FsNha%k!c zv@tGDhSEK{=Y^7fAlS&`0jFWf$^87A)Ex4O=yy?3B)C=R4?LACq9~2#TTqAjdl@dJ*(u?c-c=kPrC*Xlpnq4EZAVED{vTcg+ zHrH*T%R=CpA&g^7T^8m}ajuH|=$fdN=IWTcAsRc#tI#NJEBfo)=F;%FVZTl`Gk$E( z5A6dmD$pzV2pIj{y*1mV=S)R#y(EEaclUIjvu2a~H7$Pspd^D{F6_+E-$1lh(h;)+ zH$Ar)1_*^STPg*_V;Ka_p`4T3SM+yr^L}zPkM&z)OL{{o9{(H9W2z$}KD9f(0Do{3 zTy05r$jFf#(^DLS7X5>182a8OKGufGbEz3=Gowy+Ldml8?dqIVB@3>~CRMN$=+oGz zrj;UVbrOgLMNzNei~A%eH8YY>_`ct3s+Ry(Ut#xEcG@Am!e8HF#|;Xb&OOlA0C*iO zV9WzeFFOu8j5idBqlaYJOFR3uw+XbIh45+!$Eo1fE=s+A&`ZS$fPSZ&p#6Cx})OGCf(*o8Dz*_wF z{M7MU0W%UuGq6ENHOtYNNP0DzGhINh8l9GmYj}`EO_=S-caL>SlOEcuTz zor%XtP^VWE>f|D_*3f%640X&p&N1QE2TXIw^P}l79^T7Qc?DD#HB&|C^P}rJUT`AS z9N|X=gqMJD5ne*cbJhn=znIx>lH$xQ=!{llL_cw-N`W_|8!j>pYOhX+sq@G?Y#+DU zxv?;8?QU;vBe~#0A1SQjDy}Z4%bBvb+#|<3)XJ_^U9E$rEUP;2&S`OH+DAy1$x5Zx zF(W#v3{uJto~||LN4d^Tmtp6<^se+Vv82wBCs~F*7pBI0a^kD-*98nqz>v&7-_C(_ zlza4>g`Jbxey?+GK%^7aenY**U*BQ(U3SdD)c4uF&2EF;57^Bw4)d7#Z2)%B0@h5@ ztbIAn+pE?RVrX4)jf<8)lYQmQ8S%eGNUYHo_X|vmFOI_a)3S z=Uz)^YkC&-M1*Bz+`VSx6hx5JG4Ad?5n)A|o^IH0BqGuG4J6U8>sKMYSuU1LkokoA zCa4=&;1hQgL{xeN^(wmPa+dbu`ZJk^NlM+%btb7rp*o?5+ zrR(|k;O{bs8(c*0zmt8ZKYL0=fR}`Hpo1GgDUrVuyH;VO z4#1rik^8;&xxw)r?nARyo9w7i`ZyF>QQWbBWgZQ00PtJ1fR0*6!zHV0HLNBg;gTYh z6*T