ProjectDjango/Project.py

changeset 5
96a317de4626
parent 4
81c2943be6b6
child 6
80815349eef4
--- 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
     ##################################################################
     

eric ide

mercurial