예제 #1
0
 def account_validation(self):
     """! Check user account validity and connect user."""
     
     accounts = UserAccounts()
     
     user = accounts.find(self.user_id_edit.text())
     
     if user is None:
         msg_box = QAgiMessageBox()
         msg_box.setText(R.values.strings.invalid_user_id(self._lng))
         msg_box.setIcon(QAgiMessageBox.Critical)
         msg_box.setStandardButtons(QAgiMessageBox.Ok)
         msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
         msg_box.exec_()
     elif user.password == base64.b64encode(self.password_edit.text()):
         self._context.switchUser(user)
         self.close()
     else:
         msg_box = QAgiMessageBox()
         msg_box.setText(R.values.strings.invalid_password(self._lng))
         msg_box.setIcon(QAgiMessageBox.Critical)
         msg_box.setStandardButtons(QAgiMessageBox.Ok)
         msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
         msg_box.exec_()
예제 #2
0
class ModifUserAccountWidget(QWidget):
    
    def __init__(self, parent):
        """! The constructor."""
        QWidget.__init__(self)
        
        self._context = parent.getContext()
        self._lng = self._context.getLanguage()
        
        # Extend the widget with all attributes and children from UI file
        loadUi(R.layouts.modif_account_widget, self)
        
        self.select_user_label.setText(R.values.strings.select_user(self._lng))
        self.current_password_label.setText(R.values.strings.current_password(self._lng))
        self.check_password_button.setText(R.values.strings.ok(self._lng))
        self.access_rights_label.setText(R.values.strings.access_rights(self._lng))
        self.new_password_label.setText(R.values.strings.new_password(self._lng))
        self.confirm_password_label.setText(R.values.strings.confirm_password(self._lng))
        self.modif_user_account_button.setText(R.values.strings.ok(self._lng))
        
        self.new_password_edit.setEchoMode(QLineEdit.Password)
        self.confirm_new_password_edit.setEchoMode(QLineEdit.Password)
        
        self._accounts = UserAccounts()
        self.user_selected = User()
        self.user_dst = User()
        
        self.users_list_combo.addItems(self._accounts.user_list())
        self.users_list_combo.currentIndexChanged.connect(self.update_user_info)
        
        self.connect(self.modif_user_account_button, SIGNAL("clicked()"),
                      self.modif_user_account)
        
        self.connect(self.check_password_button, SIGNAL("clicked()"),
                     self.check_password)
        
        self.current_password_edit.textChanged[str].connect(self.current_password_changed)
        
    def current_password_changed(self):
        self.init_fields(False)
        
    def check_password(self):
        
        password = self.current_password_edit.text()
        
        if password == self.user_selected.getUserPassword(True):
            
            self.current_password_edit.setStyleSheet(R.values.styles.good_password)
            
            privilege = self.user_selected.getUserPrivilege()
            self.access_rights_combo.setCurrentIndex(privilege+1)
            self.new_password_edit.setText(self.user_selected.getUserPassword(True))
            self.confirm_new_password_edit.setText(self.user_selected.getUserPassword(True))
            
            self.new_password_edit.setEnabled(True)
            self.confirm_new_password_edit.setEnabled(True)
            self.access_rights_combo.setEnabled(True)
            self.modif_user_account_button.setEnabled(True)
            
        else:
            
            self.init_fields(False)
            
            self.current_password_edit.setStyleSheet(R.values.styles.bad_password)
            
        
    def update_user_info(self, index):
        """! Update user information with user selected.
        @param index: user list index.
        @type index: int.
        """
        self.init_fields()
        
        if index == 0:
            self.current_password_edit.setEnabled(False)
        else:
            self.user_selected = self._accounts.find(self.users_list_combo.itemText(index))
            self.current_password_edit.setEnabled(True)
            
    def modif_user_account(self):
        """! Check fields and modify user account."""
        
        user_modified = User(self.user_selected.getUserId())
        
        if self.access_rights_combo.currentIndex() == 0:
            
            msg_box = QAgiMessageBox()
            msg_box.setText(R.values.strings.select_access_rights(self._lng))
            msg_box.setIcon(QAgiMessageBox.Critical)
            msg_box.setStandardButtons(QAgiMessageBox.Ok)
            msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
            msg_box.exec_()
            return
        elif self.new_password_edit.text() != \
             self.confirm_new_password_edit.text():
            
            msg_box = QAgiMessageBox()
            msg_box.setText(R.values.strings.passwords_different(self._lng))
            msg_box.setIcon(QAgiMessageBox.Critical)
            msg_box.setStandardButtons(QAgiMessageBox.Ok)
            msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
            msg_box.exec_()
            return
        else:
            user_modified.privilege = Privilege.TOLEVEL[self.access_rights_combo.currentText().lower()]
            user_modified.setUserPassword(self.new_password_edit.text())
        
        try:
            
            self._accounts.modif(self.user_selected, user_modified)
        except Exception as e:
            
            msg_box = QAgiMessageBox()
            msg_box.setText(str(e))
            msg_box.setIcon(QAgiMessageBox.Critical)
            msg_box.setStandardButtons(QAgiMessageBox.Ok)
            msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
            msg_box.exec_()
            return
            
        msg_box = QAgiMessageBox()
        msg_box.setText(R.values.strings.user_mv_success(self._lng))
        msg_box.setIcon(QAgiMessageBox.Information)
        msg_box.setStandardButtons(QAgiMessageBox.Ok)
        msg_box.button(QAgiMessageBox.Ok).setMinimumSize(100,40)
        msg_box.exec_()
        
        self.users_list_combo.setCurrentIndex(0)
        self.init_fields()
        
    def init_fields(self, clear_all = True):
        
        self.access_rights_combo.setCurrentIndex(0)
        self.new_password_edit.setText('')
        self.confirm_new_password_edit.setText('')
        self.new_password_edit.setEnabled(False)
        self.confirm_new_password_edit.setEnabled(False)
        self.access_rights_combo.setEnabled(False)
        self.modif_user_account_button.setEnabled(False)
        
        if clear_all:
            self.current_password_edit.setText('')
            
        self.current_password_edit.setStyleSheet(R.values.styles.no_password)