annotate detectors/emailauditor.py @ 3909:e89bcb28f683

indexargs_url force ids to int ids appear as hyperdb.String instances, which confused indexargs_url when they appear in the filterspec. They need to be treated as treated as integers when generating URLs. It feels sort of hacky to check for 'id' like this but I'm at a loss for what else to do in this case. Suggestions are welcome :) Maybe we should look into using some other hyperdb class to represent ids? this fixes [SF#783492] Some trailing whitespace also got trimmed.
author Justus Pendleton <jpend@users.sourceforge.net>
date Tue, 18 Sep 2007 16:59:42 +0000
parents 81cb4860ca75
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2127
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 def eml_to_mht(db, cl, nodeid, newvalues):
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 '''This auditor fires whenever a new file entity is created.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 If the file is of type message/rfc822, we tack onthe extension .eml.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 The reason for this is that Microsoft Internet Explorer will not open
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 things with a .eml attachment, as they deem it 'unsafe'. Worse yet,
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 they'll just give you an incomprehensible error message. For more
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 information, please see:
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 http://support.microsoft.com/default.aspx?scid=kb;EN-US;825803
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14 Their suggested work around is (excerpt):
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 WORKAROUND
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 To work around this behavior, rename the .EML file that the URL
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 links to so that it has a .MHT file name extension, and then update
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 the URL to reflect the change to the file name. To do this:
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 1. In Windows Explorer, locate and then select the .EML file that
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 the URL links.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 2. Right-click the .EML file, and then click Rename.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 3. Change the file name so that the .EML file uses a .MHT file name
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 extension, and then press ENTER.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 4. Updated the URL that links to the file to reflect the new file
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 name extension.
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 So... we do that. :)'''
3345
81cb4860ca75 fix nameerror. backport candidate
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 2128
diff changeset
31 if newvalues.get('type', '').lower() == "message/rfc822":
2128
Richard Jones <richard@users.sourceforge.net>
parents: 2127
diff changeset
32 if not newvalues.has_key('name'):
2127
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 newvalues['name'] = 'email.mht'
2128
Richard Jones <richard@users.sourceforge.net>
parents: 2127
diff changeset
34 return
2127
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 name = newvalues['name']
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 if name.endswith('.eml'):
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 name = name[:-4]
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 newvalues['name'] = name + '.mht'
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 def init(db):
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 db.file.audit('create', eml_to_mht)
cee6efcbb57e bah, file renaming
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42

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