Changeset 596
- Timestamp:
- 05/02/12 09:32:27 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/delete_spam.py.in
r595 r596 20 20 # 21 21 # vi: 22 # 22 # set ts=4 23 23 """ 24 24 Author: Bas van der Vlies … … 28 28 29 29 Usage : 30 30 delete_spam [ -f/--file <configfile> -n/--dry-run -p/--project <name> -v/--verbose] 31 31 32 32 defaults: 33 33 configfile = /etc/email2trac.conf 34 34 35 35 SVN Info: … … 46 46 47 47 def ReadConfig(file, name): 48 49 50 48 """ 49 Parse the config file 50 """ 51 51 52 53 54 52 if not os.path.isfile(file): 53 print 'File %s does not exists' %file 54 sys.exit(1) 55 55 56 57 58 59 60 61 56 config = ConfigParser.ConfigParser() 57 try: 58 config.read(file) 59 except ConfigParser.MissingSectionHeaderError,detail: 60 print detail 61 sys.exit(1) 62 62 63 64 65 66 67 68 69 63 # Use given project name else use defaults 64 # 65 if name: 66 if not config.has_section(name): 67 print "Not an valid project name: %s" %name 68 print "Valid names: %s" %config.sections() 69 sys.exit(1) 70 70 71 72 73 71 project = dict() 72 for option in config.options(name): 73 project[option] = config.get(name, option) 74 74 75 76 75 else: 76 project = config.defaults() 77 77 78 78 return project 79 79 80 80 81 81 82 82 def new_delete_spam(parameters): 83 84 85 83 """ 84 This only works for trac versions higher or equal then 0.10 85 """ 86 86 87 88 89 87 debug = int(parameters['debug']) 88 DRY_RUN = parameters['DRY_RUN'] 89 VERBOSE = parameters['VERBOSE'] 90 90 91 91 project = parameters['project'] 92 92 93 93 94 95 94 env = Environment(project, create=0) 95 db = env.get_db_cnx() 96 96 97 98 99 100 101 102 97 cursor = db.cursor() 98 cursor.execute("SELECT id FROM ticket WHERE component = 'Spam';") 99 while 1: 100 row = cursor.fetchone() 101 if not row: 102 break 103 103 104 104 spam_id = row[0] 105 105 106 107 106 if debug or DRY_RUN or VERBOSE: 107 print "Deleting ticket %s" %spam_id 108 108 109 110 111 112 113 109 try: 110 tkt = Ticket(env, spam_id, db) 111 except util.TracError, detail: 112 print detail 113 continue 114 114 115 116 117 118 115 if DRY_RUN: 116 print 'DRY_RUN: tkt.delete()' 117 else: 118 tkt.delete() 119 119 120 120 if __name__ == '__main__': 121 122 123 121 # Default config file 122 # 123 configfile = '@email2trac_conf@' 124 124 125 125 126 127 128 129 130 131 126 try: 127 opts, args = getopt.getopt(sys.argv[1:], 'hf:np:v', ['help', 'file=', 'dry-run', 'project=', 'verbose']) 128 except getopt.error,detail: 129 print __doc__ 130 print detail 131 sys.exit(1) 132 132 133 134 135 133 DRY_RUN = False 134 VERBOSE = False 135 project_name = None 136 136 137 138 139 140 141 142 143 144 145 146 147 148 137 for opt,value in opts: 138 if opt in [ '-h', '--help']: 139 print __doc__ 140 sys.exit(0) 141 elif opt in ['-f', '--file']: 142 configfile = value 143 elif opt in ['-n', '--dry-run']: 144 DRY_RUN = True 145 elif opt in ['-p', '--project']: 146 project_name = value 147 elif opt in ['-v', '--verbose']: 148 VERBOSE = True 149 149 150 151 152 153 154 155 150 # Determine major trac version used to be in email2trac.conf 151 # Quick hack for 0.12 152 # 153 version = '0.%s' %(trac_version.split('.')[1]) 154 if version.startswith('0.12'): 155 version = '0.12' 156 156 157 158 157 if VERBOSE: 158 print "Found trac version: %s" %version 159 159 160 161 162 163 160 ## We only support versions 0.11 and 0.12 161 # 162 if not version in ['0.11', '0.12']: 163 print 'Trac version %s is not suported' %(version) 164 164 165 166 167 168 169 165 settings = ReadConfig(configfile, project_name) 166 if not settings.has_key('project'): 167 print __doc__ 168 print 'No project defined in config file, eg:\n\t project: /data/trac/bas' 169 sys.exit(1) 170 170 171 172 171 settings['DRY_RUN'] = DRY_RUN 172 settings['VERBOSE'] = VERBOSE 173 173 174 175 176 174 from trac.env import Environment 175 from trac.ticket import Ticket 176 from trac import util 177 177 178 178 179 179 180 180 new_delete_spam(settings) 181 181 182 182 print 'Spam is deleted succesfully..' 183 183 # EOB
Note: See TracChangeset
for help on using the changeset viewer.