Mercurial > p > roundup > code
changeset 4627:6b32e9dac625
Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
| author | Thomas Arendsen Hein <thomas@intevation.de> |
|---|---|
| date | Wed, 16 May 2012 11:17:03 +0200 |
| parents | e3cd5fcf710b |
| children | b3f46759b4d1 |
| files | detectors/creator_resolution.py detectors/emailauditor.py detectors/newissuecopy.py |
| diffstat | 3 files changed, 107 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/detectors/creator_resolution.py Wed May 16 11:17:03 2012 +0200 @@ -0,0 +1,43 @@ +# This detector was written by richard@mechanicalcat.net and it's been +# placed in the Public Domain. Copy and modify to your heart's content. + +#$Id: creator_resolution.py,v 1.2 2004-04-07 06:32:54 richard Exp $ + +from roundup.exceptions import Reject + +def creator_resolution(db, cl, nodeid, newvalues): + '''Catch attempts to set the status to "resolved" - if the assignedto + user isn't the creator, then set the status to "in-progress" (try + "confirm-done" first though, but "classic" Roundup doesn't have that + status) + ''' + if not newvalues.has_key('status'): + return + + # get the resolved state ID + resolved_id = db.status.lookup('resolved') + + if newvalues['status'] != resolved_id: + return + + # check the assignedto + assignedto = newvalues.get('assignedto', cl.get(nodeid, 'assignedto')) + creator = cl.get(nodeid, 'creator') + if assignedto == creator: + if db.getuid() != creator: + name = db.user.get(creator, 'username') + raise Reject, 'Only the creator (%s) may close this issue'%name + return + + # set the assignedto and status + newvalues['assignedto'] = creator + try: + status = db.status.lookup('confirm-done') + except KeyError: + status = db.status.lookup('in-progress') + newvalues['status'] = status + +def init(db): + db.issue.audit('set', creator_resolution) + +# vim: set filetype=python ts=4 sw=4 et si
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/detectors/emailauditor.py Wed May 16 11:17:03 2012 +0200 @@ -0,0 +1,42 @@ + +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 not newvalues.has_key('name'): + 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) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/detectors/newissuecopy.py Wed May 16 11:17:03 2012 +0200 @@ -0,0 +1,22 @@ +# copied from nosyreaction + +from roundup import roundupdb + +def newissuecopy(db, cl, nodeid, oldvalues): + ''' Copy a message about new issues to a team address. + ''' + # so use all the messages in the create + change_note = cl.generateCreateNote(nodeid) + + # send a copy to the nosy list + for msgid in cl.get(nodeid, 'messages'): + try: + # note: last arg must be a list + cl.send_message(nodeid, msgid, change_note, ['team@team.host']) + except roundupdb.MessageSendError, message: + raise roundupdb.DetectorError, message + +def init(db): + db.issue.react('create', newissuecopy) + +# vim: set filetype=python ts=4 sw=4 et si
