Package: roundup / 1.4.20-1.1

11_add-old-detector-sampes.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Author: <toni@debian.org>
Description: Added back the old detector examples script
--- /dev/null
+++ b/detectors/creator_resolution.py
@@ -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
+++ b/detectors/emailauditor.py
@@ -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
+++ b/detectors/newissuecopy.py
@@ -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