Mercurial > p > roundup > code
annotate scripts/spam-remover @ 5272:c6fbd4803eae
If you upgrade to the newer query edit interface but did not allow
users full access to search queries, the edit interface displays
public queries that the user does not own in the section labeled
"Queries I created".
Updated upgrading.txt to discuss this problem and link back to the
1.4.17 upgrading instructions. Also included schema.py permissions
that can be used to make the edit interface work correctly without
allow full search access for queries.
Updated the test script in the 1.4.17 upgrading instructions to
display protected properties (like creator) to make dignosing this
easier.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 23 Sep 2017 13:05:48 -0400 |
| parents | 6e9b9743de89 |
| children | c75defc1c2f0 |
| 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') |
| 4781 | 96 db.tx_Source = "cli" |
| 97 | |
|
4660
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
98 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
|
99 files_to_remove = {} |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
100 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
|
101 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
|
102 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
|
103 files_to_remove[fid] = True |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
104 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
|
105 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
|
106 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
|
107 files_to_remove[fid] = True |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
108 files_found = {} |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
109 for d in opt.designators: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
110 clsname, id = hyperdb.splitDesignator(d) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
111 cls = db.getclass(clsname) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
112 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
|
113 for fid in issuefiles.keys(): |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
114 f = db.file.getnode(fid) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
115 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
|
116 files_to_remove[fid] = True |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
117 files_found[fid] = True |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
118 if not opt.quiet: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
119 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
|
120 del issuefiles[fid] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
121 if opt.doit: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
122 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
|
123 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
|
124 # 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
|
125 # 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
|
126 # 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
|
127 for x in xrange(2): |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
128 newjournal = [] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
129 for j in journal: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
130 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
|
131 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
|
132 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
|
133 continue |
|
4660
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
134 changes = dict(j[4]['files']) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
135 # 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
|
136 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
|
137 f = dict.fromkeys(changes['+']) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
138 files_found.update(f) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
139 files_to_remove.update(f) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
140 del changes['+'] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
141 # 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
|
142 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
|
143 new_f = [] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
144 for f in v: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
145 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
|
146 files_found[f] = True |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
147 else: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
148 new_f.append(f) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
149 if new_f : |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
150 changes[k] = new_f |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
151 else: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
152 del changes[k] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
153 msg = [] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
154 if not opt.quiet: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
155 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
|
156 if changes: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
157 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
|
158 else: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
159 del j[4]['files'] |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
160 if j[4]: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
161 newjournal.append(j) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
162 if 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 ("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
|
164 elif not opt.quiet: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
165 msg.append ("deleted") |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
166 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
|
167 for m in msg: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
168 print m |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
169 else: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
170 newjournal.append(j) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
171 journal = newjournal |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
172 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
|
173 db.setjournal(clsname, id, newjournal) |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
174 if opt.doit: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
175 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
|
176 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
|
177 db.commit() |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
178 else: |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
179 print "Database not changed" |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
180 |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
181 |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
182 if __name__ == '__main__': |
|
9f507a042c1b
Add a script to remove file-spam from a tracker.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
diff
changeset
|
183 main() |
