--- a/ProjectDjango/Project.py Sun Mar 24 14:39:36 2013 +0100 +++ b/ProjectDjango/Project.py Sun Mar 24 15:29:37 2013 +0100 @@ -219,6 +219,8 @@ self.__initDatabaseSqlActions() self.__initToolsActions() self.__initTestingActions() + self.__initAuthorizationActions() + self.__initSessionActions() def __initDatabaseActions(self): """ @@ -503,6 +505,53 @@ self.runTestServerAct.triggered[()].connect(self.__runTestServer) self.actions.append(self.runTestServerAct) + def __initAuthorizationActions(self): + """ + Private method to define the authorization actions. + """ + self.changePasswordAct = E5Action(self.trUtf8('Change Password'), + self.trUtf8('Change &Password'), + 0, 0, + self,'django_auth_changepassword') + self.changePasswordAct.setStatusTip(self.trUtf8( + 'Change the password of a user')) + self.changePasswordAct.setWhatsThis(self.trUtf8( + """<b>Change Password</b>""" + """<p>Change the password of a user of the Django project.</p>""" + )) + self.changePasswordAct.triggered[()].connect(self.__changePassword) + self.actions.append(self.changePasswordAct) + + self.createSuperUserAct = E5Action(self.trUtf8('Create Superuser'), + self.trUtf8('Create &Superuser'), + 0, 0, + self,'django_auth_createsuperuser') + self.createSuperUserAct.setStatusTip(self.trUtf8( + 'Create a superuser account')) + self.createSuperUserAct.setWhatsThis(self.trUtf8( + """<b>Create Superuser</b>""" + """<p>Create a superuser account for the Django project.</p>""" + )) + self.createSuperUserAct.triggered[()].connect(self.__createSuperUser) + self.actions.append(self.createSuperUserAct) + + def __initSessionActions(self): + """ + Private method to define the session actions. + """ + self.clearSessionsAct = E5Action(self.trUtf8('Clear Sessions'), + self.trUtf8('Clear &Sessions'), + 0, 0, + self,'django_session_clearsessions') + self.clearSessionsAct.setStatusTip(self.trUtf8( + 'Clear expired sessions')) + self.clearSessionsAct.setWhatsThis(self.trUtf8( + """<b>Clear Sessions</b>""" + """<p>Clear expired sessions of the Django project.</p>""" + )) + self.clearSessionsAct.triggered[()].connect(self.__clearSessions) + self.actions.append(self.clearSessionsAct) + def initMenu(self): """ Public slot to initialize the Django menu. @@ -529,6 +578,10 @@ menu.addSeparator() menu.addMenu(self.__initTestingMenu()) menu.addSeparator() + menu.addMenu(self.__initAuthorizationMenu()) + menu.addSeparator() + menu.addMenu(self.__initSessionMenu()) + menu.addSeparator() menu.addAction(self.aboutDjangoAct) menu.addSeparator() menu.addAction(self.helpAct) @@ -613,6 +666,33 @@ menu.addAction(self.runTestServerAct) return menu + + def __initAuthorizationMenu(self): + """ + Private slot to initialize the authorization menu. + + @return the menu generated (QMenu) + """ + menu = QMenu(self.trUtf8("&Authorization"), self.__ui) + menu.setTearOffEnabled(True) + + menu.addAction(self.changePasswordAct) + menu.addAction(self.createSuperUserAct) + + return menu + + def __initSessionMenu(self): + """ + Private slot to initialize the authorization menu. + + @return the menu generated (QMenu) + """ + menu = QMenu(self.trUtf8("&Session"), self.__ui) + menu.setTearOffEnabled(True) + + menu.addAction(self.clearSessionsAct) + + return menu ################################################################## ## methods below implement the various hook related functions @@ -1697,6 +1777,87 @@ self.__testServerProc = None ################################################################## + ## slots below implement authorization functions + ################################################################## + + def __changePassword(self): + """ + Private slot to change the password of a user. + """ + consoleCmd = self.__isSpawningConsole( + self.__plugin.getPreferences("ConsoleCommandNoClose"))[1] + if consoleCmd: + userName, ok = QInputDialog.getText( + self.__ui, + self.trUtf8("Change Password"), + self.trUtf8("Enter the name of the user:"), + QLineEdit.Normal) + if ok and userName != "": + args = Utilities.parseOptionString(consoleCmd) + args[0] = Utilities.getExecutablePath(args[0]) + args.append(self.__getPythonExecutable()) + args.append("manage.py") + args.append("changepassword") + args.append(userName) + try: + wd = self.__sitePath() + started, pid = QProcess.startDetached(args[0], args[1:], wd) + if not started: + E5MessageBox.critical(None, + self.trUtf8('Process Generation Error'), + self.trUtf8('The Django process could not be started.')) + except DjangoNoSiteSelectedException: + pass + + def __createSuperUser(self): + """ + Private slot to create a super user account. + """ + consoleCmd = self.__isSpawningConsole( + self.__plugin.getPreferences("ConsoleCommandNoClose"))[1] + if consoleCmd: + args = Utilities.parseOptionString(consoleCmd) + args[0] = Utilities.getExecutablePath(args[0]) + args.append(self.__getPythonExecutable()) + args.append("manage.py") + args.append("createsuperuser") + try: + wd = self.__sitePath() + started, pid = QProcess.startDetached(args[0], args[1:], wd) + if not started: + E5MessageBox.critical(None, + self.trUtf8('Process Generation Error'), + self.trUtf8('The Django process could not be started.')) + except DjangoNoSiteSelectedException: + pass + + ################################################################## + ## slots below implement session functions + ################################################################## + + def __clearSessions(self): + """ + Private slot to clear expired sessions. + """ + title = self.trUtf8("Clear Sessions") + + try: + wd = self.__sitePath() + except DjangoNoSiteSelectedException: + return + + args = [] + args.append(self.__getPythonExecutable()) + args.append("manage.py") + args.append("clearsessions") + + dia = DjangoDialog(title, + msgSuccess = self.trUtf8("Expired sessions cleared successfully.")) + res = dia.startProcess(args, wd) + if res: + dia.exec_() + + ################################################################## ## slots below implement translation functions ##################################################################