Zhang Huangbin avatar Zhang Huangbin committed bce71cf

Fixed: Didn't remove SQL records of real-time mailbox quota while deleting mail users.

Comments (0)

Files changed (5)

+= 0.1.9 =
+    * Fixed:
+        + Didn't remove SQL records of real-time mailbox quota while deleting 
+          mail users.
+
 = 0.1.8 =
     * Fixed:
         + [pgsql] Don't show link to view all mail aliases in domain profile page.

libs/ldaplib/connUtils.py

 
 import web
 import ldap
-import ldif
 from ldap.filter import escape_filter_chars
 from libs import iredutils
 from libs.ldaplib import core, ldaputils, decorators, attrs, deltree
             return (True, self.managedDomains)
         except Exception, e:
             return (False, ldaputils.getExceptionDesc(e))
+
+
+def deleteAccountFromUsedQuota(accounts):
+    # @accounts: must be list/tuple of email addresses.
+    if len(accounts) > 0:
+        try:
+            web.admindb.delete(
+                'used_quota',
+                where='username IN %s' % (web.sqlquote(accounts)),
+            )
+            return (True,)
+        except Exception, e:
+            return (False, str(e))
+    else:
+        return (True,)

libs/ldaplib/user.py

             if deleteFromGroups:
                 self.deleteSingleUserFromGroups(self.mail)
 
+            # Delete record from SQL database: real-time used quota.
+            if session.get('enableShowUsedQuota', False) is True:
+                try:
+                    connutils = connUtils.Utils()
+                    connutils.deleteAccountFromUsedQuota([self.mail])
+                except:
+                    pass
+
             # Log delete action.
             web.logger(
                     msg="Delete user: %s." % (self.mail),

libs/mysql/core.py

             accounts = [str(v) for v in accounts if iredutils.isEmail(v)]
             sql_vars = {'accounts': accounts, }
             try:
-                self.conn.delete(
-                    'mailbox',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
+                for tbl in ['mailbox', 'used_quota',
+                            'recipient_bcc_user', 'sender_bcc_user',
+                           ]:
+                    self.conn.delete(
+                        tbl,
+                        vars=sql_vars,
+                        where='username IN $accounts',
+                    )
+
                 self.conn.delete(
                     'alias',
                     vars=sql_vars,
                     where='address IN $accounts',
                 )
-                self.conn.delete(
-                    'recipient_bcc_user',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
-                self.conn.delete(
-                    'sender_bcc_user',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
 
                 # Remove users from alias.goto.
                 try:

libs/pgsql/core.py

             accounts = [str(v) for v in accounts if iredutils.isEmail(v)]
             sql_vars = {'accounts': accounts, }
             try:
-                self.conn.delete(
-                    'mailbox',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
+                for tbl in ['mailbox', 'used_quota',
+                            'recipient_bcc_user', 'sender_bcc_user',
+                           ]:
+                    self.conn.delete(
+                        tbl,
+                        vars=sql_vars,
+                        where='username IN $accounts',
+                    )
+
                 self.conn.delete(
                     'alias',
                     vars=sql_vars,
                     where='address IN $accounts',
                 )
-                self.conn.delete(
-                    'recipient_bcc_user',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
-                self.conn.delete(
-                    'sender_bcc_user',
-                    vars=sql_vars,
-                    where='username IN $accounts',
-                )
 
                 # Remove users from alias.goto.
                 try:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.