Mercurial > p > roundup > code
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 |
| 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() |
