view detectors/emailauditor.py @ 8543:1ffa1f42e1da

refactor: rework mime type comparison and clean code rest.py: accept application/* as match for application/json in non /binary_context rest path. allow defining default mime type to return when file/message is missing mime type. Make it a class variable to it can be changed from text/plain to text/markdown or whatever. extract code from determine_output_format() to create create_valid_content_types() method which returns a list of matching mime types for a given type/subtype. Eliminate mostly duplicate return statements by introducing a variable to specify valid mime types in error message. rest_common.py: Fix error messages that now return application/* as valid mime type. CHANGES.txt upgrading.txt rest.txt: top level notes and corrections. Also correct rst syntax on earlier change.
author John Rouillard <rouilj@ieee.org>
date Tue, 24 Mar 2026 21:30:47 -0400
parents 0942fe89e82e
children
line wrap: on
line source


def eml_to_mht(db, cl, nodeid, newvalues):
    '''This auditor fires whenever a new file entity is created.

    If the file is of type message/rfc822, we tack onthe extension .eml.

    The reason for this is that Microsoft Internet Explorer will not open
    things with a .eml attachment, as they deem it 'unsafe'. Worse yet,
    they'll just give you an incomprehensible error message. For more 
    information, please see: 

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;825803

    Their suggested work around is (excerpt):

     WORKAROUND

     To work around this behavior, rename the .EML file that the URL
     links to so that it has a .MHT file name extension, and then update
     the URL to reflect the change to the file name. To do this:

     1. In Windows Explorer, locate and then select the .EML file that
        the URL links.
     2. Right-click the .EML file, and then click Rename.
     3. Change the file name so that the .EML file uses a .MHT file name
        extension, and then press ENTER.
     4. Updated the URL that links to the file to reflect the new file
        name extension.

    So... we do that. :)'''
    if newvalues.get('type', '').lower() == "message/rfc822":
        if 'name' not in newvalues:
            newvalues['name'] = 'email.mht'
            return
        name = newvalues['name']
        if name.endswith('.eml'):
            name = name[:-4]
        newvalues['name'] = name + '.mht'

def init(db):
    db.file.audit('create', eml_to_mht)


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