def check_user_email(parent=None):
    """
    Check if the current user has an email address. If not, open an email request dialog.
    parent -- the widget to parent the dialog to
    """
    project = Project()
    user = project.get_user()
    if user.get_email() == "":
        dialog = RequestEmailDialog(parent)
        dialog.show()
def check_user_email(parent=None):
    """
    Check if the current user has an email address. If not, open an email request dialog.
    parent -- the widget to parent the dialog to
    """
    project = Project()
    user = project.get_user()
    if user.get_email()=="":
        dialog = RequestEmailDialog(parent)
        dialog.show()
class RequestEmailDialog(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("Email")
        # palette = parent.palette
        self.setPalette(parent.palette)

        self.project = Project()
        self.username = self.project.get_current_username()
        self.user = self.project.get_user(self.username)
        self.user_fullname = self.user.get_fullname()

        request_str = '<span style=" font-size:12pt; font-weight:600;">Please input your email address</span>'
        info_str = "username: "******"\nfull name: " + self.user_fullname
        self.request_label = QtGui.QLabel(request_str)
        self.info_label = QtGui.QLabel(info_str)

        input_str = "email:"
        self.input_label = QtGui.QLabel(input_str)

        self.input = QtGui.QLineEdit()
        self.input.textChanged.connect(self._check_valid)

        self.accept_button = QtGui.QPushButton("OK")
        self.accept_button.setEnabled(False)
        self.accept_button.clicked.connect(self._store_email)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.request_label)
        self.layout.addWidget(self.info_label)
        self.input_layout = QtGui.QHBoxLayout()
        self.input_layout.addWidget(self.input_label)
        self.input_layout.addWidget(self.input)
        self.layout.addLayout(self.input_layout)
        self.layout.addWidget(self.accept_button)

    def _check_valid(self, text):
        if re.match(r"[^@]+@[^@]+\.[^@]+",
                    text):  # check for valid email address
            self.accept_button.setEnabled(True)
        else:
            self.accept_button.setEnabled(False)

    def _store_email(self):
        self.user.update_email(str(self.input.text()))
        self.done(0)
class RequestEmailDialog(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("Email")
        # palette = parent.palette
        self.setPalette(parent.palette)

        self.project = Project()
        self.username = self.project.get_current_username()
        self.user = self.project.get_user(self.username)
        self.user_fullname = self.user.get_fullname()
        
        request_str = '<span style=" font-size:12pt; font-weight:600;">Please input your email address</span>'
        info_str = "username: "******"\nfull name: "+self.user_fullname
        self.request_label = QtGui.QLabel(request_str)
        self.info_label = QtGui.QLabel(info_str)

        input_str = "email:"
        self.input_label = QtGui.QLabel(input_str)

        self.input = QtGui.QLineEdit()
        self.input.textChanged.connect(self._check_valid)

        self.accept_button = QtGui.QPushButton("OK")
        self.accept_button.setEnabled(False)
        self.accept_button.clicked.connect(self._store_email)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.addWidget(self.request_label)
        self.layout.addWidget(self.info_label)
        self.input_layout = QtGui.QHBoxLayout()
        self.input_layout.addWidget(self.input_label)
        self.input_layout.addWidget(self.input)
        self.layout.addLayout(self.input_layout)
        self.layout.addWidget(self.accept_button)

    def _check_valid(self, text):
        if re.match(r"[^@]+@[^@]+\.[^@]+", text): # check for valid email address
            self.accept_button.setEnabled(True)
        else:
            self.accept_button.setEnabled(False)

    def _store_email(self):
        self.user.update_email(str(self.input.text()))
        self.done(0)