annotate scripts/spam-remover @ 4774:3adff0fb0207

Fixed issue2550595: Allow migrating from roundup 0.x to 1.4 All changes were required to make an upgrade from 0.6 to 1.4, The changes affecting "retired" were required for an upgrade from 0.8 to 1.4.
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 22 Mar 2013 15:53:27 +0100
parents f841a5868101
children 6e9b9743de89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4660
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
1 #! /usr/bin/env python
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
2 # Copyright (C) 2012 Dr. Ralf Schlatterbeck Open Source Consulting.
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
3 # Reichergasse 131, A-3411 Weidling.
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
4 # Web: http://www.runtux.com Email: rsc@runtux.com
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
5 # All rights reserved
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
6 #
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
7 # Permission is hereby granted, free of charge, to any person obtaining a copy
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
8 # of this software and associated documentation files (the "Software"), to deal
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
9 # in the Software without restriction, including without limitation the rights
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
10 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
11 # copies of the Software, and to permit persons to whom the Software is
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
12 # furnished to do so, subject to the following conditions:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
13 #
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
14 # The above copyright notice and this permission notice shall be included in
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
15 # all copies or substantial portions of the Software.
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
16 #
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
18 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
20 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
21 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
22 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
23 # SOFTWARE.
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
24
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
25 _doc = '''
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
26 %prog [options]
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
27 Remove file attachment spam from a tracker:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
28 - Edit the journal of the given issue(s) and remove the links to the
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
29 spam-files
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
30 - Set the contents of the spam-files involved to zero length
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
31 WARNING:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
32 This is a dangerous operation as it will edit the history *and* remove
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
33 data that is not in the journal (the contents of files). Be careful with
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
34 the file pattern (start of filename) you specify!
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
35 '''
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
36
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
37 import sys
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
38 from optparse import OptionParser
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
39 from roundup import instance, hyperdb
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
40
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
41 def main():
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
42 cmd = OptionParser(usage=_doc)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
43 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
44 ( "-i", "--instance"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
45 , help = "Instance home"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
46 , default = "."
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
47 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
48 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
49 ( "-d", "--designator"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
50 , dest = "designators"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
51 , help = "Item designator for issue(s), to remove files from,\n"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
52 "e.g. issue4711"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
53 , action = "append"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
54 , default = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
55 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
56 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
57 ( "-f", "--filename"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
58 , dest = "filenames"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
59 , help = "Exact spam-filename to remove from issue(s)"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
60 , action = "append"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
61 , default = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
62 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
63 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
64 ( "-a", "--action", "--no-dry-run"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
65 , dest = "doit"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
66 , help = "Don't perform any action by default unless specified"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
67 , action = "store_true"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
68 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
69 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
70 ( "-s", "--file-start-pattern"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
71 , dest = "file_pattern"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
72 , help = "Start of spam-filename to remove from issue(s)"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
73 , action = "append"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
74 , default = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
75 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
76 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
77 ( "-u", "--spam-user"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
78 , dest = "users"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
79 , help = "Username that created the spam-files to remove"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
80 , action = "append"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
81 , default = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
82 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
83 cmd.add_option \
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
84 ( "-q", "--quiet"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
85 , dest = "quiet"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
86 , help = "Be quiet about what we're doing"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
87 , action = "store_true"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
88 )
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
89 opt, args = cmd.parse_args()
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
90 # open the instance
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
91 if len(args):
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
92 print >> sys.stderr, "This command doesn't take arguments"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
93 cmd.show_help()
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
94 tracker = instance.open(opt.instance)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
95 db = tracker.open('admin')
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
96 users = dict.fromkeys (db.user.lookup(u) for u in opt.users)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
97 files_to_remove = {}
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
98 for fn in opt.filenames:
4661
73129d1a1bc3 Fix file options for spam-remover script, set content to single space.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4660
diff changeset
99 for fid in db.file.filter(None,dict(name=fn)):
4660
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
100 if db.file.get(fid,'name') == fn:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
101 files_to_remove[fid] = True
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
102 for fn in opt.file_pattern:
4661
73129d1a1bc3 Fix file options for spam-remover script, set content to single space.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4660
diff changeset
103 for fid in db.file.filter(None,dict(name=fn)):
4660
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
104 if db.file.get(fid,'name').startswith(fn):
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
105 files_to_remove[fid] = True
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
106 files_found = {}
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
107 for d in opt.designators:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
108 clsname, id = hyperdb.splitDesignator(d)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
109 cls = db.getclass(clsname)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
110 issuefiles = dict.fromkeys(cls.get (id, 'files'))
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
111 for fid in issuefiles.keys():
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
112 f = db.file.getnode(fid)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
113 if fid in files_to_remove or f.creator in users:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
114 files_to_remove[fid] = True
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
115 files_found[fid] = True
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
116 if not opt.quiet:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
117 print "deleting file %s from issue" % f
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
118 del issuefiles[fid]
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
119 if opt.doit:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
120 cls.set(id, files=issuefiles.keys())
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
121 journal = oldjournal = db.getjournal(clsname, id)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
122 # do this twice, we may have file-removals *before* file
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
123 # additions for files to delete and may discover mid-journal
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
124 # that there are new files to remove
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
125 for x in xrange(2):
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
126 newjournal = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
127 for j in journal:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
128 if j[3] == 'set' and 'files' in j[4]:
4667
f841a5868101 Bug-fix in spam-remover script: ignore cases where file-list is set
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4661
diff changeset
129 if j[4]['files'][0][0] not in ('-', '+') :
f841a5868101 Bug-fix in spam-remover script: ignore cases where file-list is set
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4661
diff changeset
130 newjournal.append(j)
f841a5868101 Bug-fix in spam-remover script: ignore cases where file-list is set
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4661
diff changeset
131 continue
4660
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
132 changes = dict(j[4]['files'])
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
133 # only consider file additions by this user
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
134 if j[2] in users and '+' in changes:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
135 f = dict.fromkeys(changes['+'])
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
136 files_found.update(f)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
137 files_to_remove.update(f)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
138 del changes['+']
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
139 # change dict in-place, don't use iteritems
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
140 for k, v in changes.items():
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
141 new_f = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
142 for f in v:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
143 if f in files_to_remove:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
144 files_found[f] = True
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
145 else:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
146 new_f.append(f)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
147 if new_f :
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
148 changes[k] = new_f
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
149 else:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
150 del changes[k]
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
151 msg = []
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
152 if not opt.quiet:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
153 msg.append ("Old journal entry: %s" % str(j))
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
154 if changes:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
155 j[4]['files'] = tuple(changes.iteritems())
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
156 else:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
157 del j[4]['files']
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
158 if j[4]:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
159 newjournal.append(j)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
160 if not opt.quiet:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
161 msg.append ("New journal entry: %s" % str(j))
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
162 elif not opt.quiet:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
163 msg.append ("deleted")
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
164 if len(msg) == 2 and msg[0][4:] != msg[1][4:]:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
165 for m in msg:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
166 print m
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
167 else:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
168 newjournal.append(j)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
169 journal = newjournal
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
170 if newjournal != oldjournal and opt.doit:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
171 db.setjournal(clsname, id, newjournal)
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
172 if opt.doit:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
173 for f in files_found:
4661
73129d1a1bc3 Fix file options for spam-remover script, set content to single space.
Ralf Schlatterbeck <rsc@runtux.com>
parents: 4660
diff changeset
174 db.file.set(f, content=' ')
4660
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
175 db.commit()
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
176 else:
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
177 print "Database not changed"
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
178
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
179
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
180 if __name__ == '__main__':
9f507a042c1b Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff changeset
181 main()

Roundup Issue Tracker: http://roundup-tracker.org/