Mercurial > p > roundup > code
annotate roundup/roundupdb.py @ 5356:91954be46a66
A real fix for the problem where:
import random
would result in every call to random() returning the same value
in the web interface.
While cgi/client.py:Client::__init.py__ was calling random.seed(),
on most systems random was SystemRandom and not the default random.
As a result the random as you would get from:
import random
was never being seeded. I added a function to access and seed the
random bound instance of random.Random that is called during init.
This fixes all three places where I saw the broken randomness.
It should also fix:
http://psf.upfronthosting.co.za/roundup/meta/issue644
I also removed the prior code that would bail if systemRandom was not
available.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 08 Jul 2018 11:34:42 -0400 |
| parents | 66a17c80e035 |
| children | 35ea9b1efc14 |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
188
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
17 # |
|
406
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
393
diff
changeset
|
18 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
19 """Extending hyperdb with types specific to issue-tracking. |
|
406
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
393
diff
changeset
|
20 """ |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
21 __docformat__ = 'restructuredtext' |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
22 |
|
5356
91954be46a66
A real fix for the problem where:
John Rouillard <rouilj@ieee.org>
parents:
5350
diff
changeset
|
23 import re, os, smtplib, socket, time, random |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
24 import cStringIO, base64, mimetypes |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
25 import os.path |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
26 import logging |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
27 from email import Encoders |
|
4983
28a72f125a14
Remove FeedParser shim from anypy.email_
John Kristensen <john@jerrykan.com>
parents:
4969
diff
changeset
|
28 from email.parser import FeedParser |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
29 from email.Utils import formataddr |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
30 from email.Header import Header |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
31 from email.MIMEText import MIMEText |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
32 from email.MIMEBase import MIMEBase |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
33 from email.MIMEMultipart import MIMEMultipart |
|
4426
25085aec7d5a
fix py2.4 compatibility
Richard Jones <richard@users.sourceforge.net>
parents:
4424
diff
changeset
|
34 |
|
1799
071ea6fc803f
Extracted duplicated mail-sending code...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1794
diff
changeset
|
35 from roundup import password, date, hyperdb |
|
3599
f607494f5578
send_message: translate UI strings (patch [SF#1462491])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3515
diff
changeset
|
36 from roundup.i18n import _ |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
37 from roundup.hyperdb import iter_roles |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
38 |
|
4338
94ee533613ac
Attempt to generate more human-readable addresses in email
Richard Jones <richard@users.sourceforge.net>
parents:
4290
diff
changeset
|
39 from roundup.mailer import Mailer, MessageSendError, encode_quopri, \ |
|
94ee533613ac
Attempt to generate more human-readable addresses in email
Richard Jones <richard@users.sourceforge.net>
parents:
4290
diff
changeset
|
40 nice_sender_header |
|
458
fcda73536034
Added ROUNDUPDBSENDMAILDEBUG so one can test the sendmail method...
Richard Jones <richard@users.sourceforge.net>
parents:
453
diff
changeset
|
41 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
42 try: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
43 import pyme, pyme.core |
|
4745
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
44 # gpgme_check_version() must have been called once in a programm |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
45 # to initialise some subsystems of gpgme. |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
46 # See the gpgme documentation (at least from v1.1.6 to 1.3.1, e.g. |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
47 # http://gnupg.org/documentation/manuals/gpgme/Library-Version-Check.html) |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
48 # This is not done by pyme (at least v0.7.0 - 0.8.1). So we do it here. |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
49 # FIXME: Make sure it is done only once (the gpgme documentation does |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
50 # not tell if calling this several times has drawbacks). |
|
ef4f1cefac9c
Fixed OpenPGP support for modern versions of libgpgme.
Bernhard Reiter <bernhard@intevation.de>
parents:
4742
diff
changeset
|
51 pyme.core.check_version(None) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
52 except ImportError: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
53 pyme = None |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
54 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
55 |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 class Database: |
|
2735
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
57 |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
58 # remember the journal uid for the current journaltag so that: |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
59 # a. we don't have to look it up every time we need it, and |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
60 # b. if the journaltag disappears during a transaction, we don't barf |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
61 # (eg. the current user edits their username) |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
62 journal_uid = None |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 def getuid(self): |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 """Return the id of the "user" node associated with the user |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 that owns this connection to the hyperdatabase.""" |
|
1800
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
66 if self.journaltag is None: |
|
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
67 return None |
|
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
68 elif self.journaltag == 'admin': |
|
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
69 # admin user may not exist, but always has ID 1 |
|
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
70 return '1' |
|
a3b1b1dcf639
Use getuid(), not figure_curuserid()
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1799
diff
changeset
|
71 else: |
|
2735
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
72 if (self.journal_uid is None or self.journal_uid[0] != |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
73 self.journaltag): |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
74 uid = self.user.lookup(self.journaltag) |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
75 self.journal_uid = (self.journaltag, uid) |
|
85b9dcf908a2
record journaltag lookup ("fixes" [SF#998140])
Richard Jones <richard@users.sourceforge.net>
parents:
2569
diff
changeset
|
76 return self.journal_uid[1] |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
78 def setCurrentUser(self, username): |
|
3440
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
79 """Set the user that is responsible for current database |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
80 activities. |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
81 """ |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
82 self.journaltag = username |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
83 |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
84 def isCurrentUser(self, username): |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
85 """Check if a given username equals the already active user. |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
86 """ |
|
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2765
diff
changeset
|
87 return self.journaltag == username |
|
3440
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
88 |
|
1402
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
89 def getUserTimezone(self): |
|
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
90 """Return user timezone defined in 'timezone' property of user class. |
|
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
91 If no such property exists return 0 |
|
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
92 """ |
|
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
93 userid = self.getuid() |
|
3621
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
94 timezone = None |
|
1402
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
95 try: |
|
3621
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
96 tz = self.user.get(userid, 'timezone') |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
97 date.get_timezone(tz) |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
98 timezone = tz |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
99 except KeyError: |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
100 pass |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
101 # If there is no class 'user' or current user doesn't have timezone |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
102 # property or that property is not set assume he/she lives in |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
103 # the timezone set in the tracker config. |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
104 if timezone is None: |
|
77ed6c517793
timezone support (patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3601
diff
changeset
|
105 timezone = self.config['TIMEZONE'] |
|
1402
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
106 return timezone |
|
27586da5557c
Added users' timezone support
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1383
diff
changeset
|
107 |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
108 def confirm_registration(self, otk): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
109 props = self.getOTKManager().getall(otk) |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
110 for propname, proptype in self.user.getprops().items(): |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
111 value = props.get(propname, None) |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
112 if value is None: |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
113 pass |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
114 elif isinstance(proptype, hyperdb.Date): |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
115 props[propname] = date.Date(value) |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
116 elif isinstance(proptype, hyperdb.Interval): |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
117 props[propname] = date.Interval(value) |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
118 elif isinstance(proptype, hyperdb.Password): |
|
4480
1613754d2646
Fix first part of Password handling security issue2550688
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4447
diff
changeset
|
119 props[propname] = password.Password(encrypted=value) |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
120 |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
121 # tag new user creation with 'admin' |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
122 self.journaltag = 'admin' |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
123 |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
124 # create the new user |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
125 cl = self.user |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
126 |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
127 props['roles'] = self.config.NEW_WEB_USER_ROLES |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
128 userid = cl.create(**props) |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
129 # clear the props from the otk database |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
130 self.getOTKManager().destroy(otk) |
|
5319
62de601bdf6f
Fix commits although a Reject exception is raised
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5312
diff
changeset
|
131 # commit cl.create (and otk changes) |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
132 self.commit() |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
133 |
|
1790
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
134 return userid |
|
c8614db86be2
Extract confirm_registration() from client to roundupdb...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1622
diff
changeset
|
135 |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
136 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
137 def log_debug(self, msg, *args, **kwargs): |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
138 """Log a message with level DEBUG.""" |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
139 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
140 logger = self.get_logger() |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
141 logger.debug(msg, *args, **kwargs) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
142 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
143 def log_info(self, msg, *args, **kwargs): |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
144 """Log a message with level INFO.""" |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
145 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
146 logger = self.get_logger() |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
147 logger.info(msg, *args, **kwargs) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
148 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
149 def get_logger(self): |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
150 """Return the logger for this database.""" |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
151 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
152 # Because getting a logger requires acquiring a lock, we want |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
153 # to do it only once. |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
154 if not hasattr(self, '__logger'): |
|
4420
9655a1b65974
- more logger fixes -- use correct hierarchical logger names...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4358
diff
changeset
|
155 self.__logger = logging.getLogger('roundup.hyperdb') |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
156 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
157 return self.__logger |
|
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
158 |
|
4652
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
159 def clearCache(self): |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
160 """ Backends may keep a cache. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
161 It must be cleared at end of commit and rollback methods. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
162 We allow to register user-defined cache-clearing routines |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
163 that are called by this routine. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
164 """ |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
165 if getattr (self, 'cache_callbacks', None) : |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
166 for method, param in self.cache_callbacks: |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
167 method(param) |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
168 |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
169 def registerClearCacheCallback(self, method, param = None): |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
170 """ Register a callback method for clearing the cache. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
171 It is called with the given param as the only parameter. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
172 Even if the parameter is not specified, the method has to |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
173 accept a single parameter. |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
174 """ |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
175 if not getattr (self, 'cache_callbacks', None) : |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
176 self.cache_callbacks = [] |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
177 self.cache_callbacks.append ((method, param)) |
|
dfbc0cfa9811
Add an interface to register clearCache callbacks in roundupdb.
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4547
diff
changeset
|
178 |
|
4059
ef0b4396888a
Enhance and simplify logging.
Stefan Seefeld <stefan@seefeld.name>
parents:
3986
diff
changeset
|
179 |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
180 class DetectorError(RuntimeError): |
|
1799
071ea6fc803f
Extracted duplicated mail-sending code...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1794
diff
changeset
|
181 """ Raised by detectors that want to indicate that something's amiss |
|
071ea6fc803f
Extracted duplicated mail-sending code...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1794
diff
changeset
|
182 """ |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
183 pass |
|
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
184 |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1096
diff
changeset
|
185 # deviation from spec - was called IssueClass |
|
858
2dd862af72ee
all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents:
826
diff
changeset
|
186 class IssueClass: |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
187 """This class is intended to be mixed-in with a hyperdb backend |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
188 implementation. The backend should provide a mechanism that |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
189 enforces the title, messages, files, nosy and superseder |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
190 properties: |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
191 |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
192 - title = hyperdb.String(indexme='yes') |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
193 - messages = hyperdb.Multilink("msg") |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
194 - files = hyperdb.Multilink("file") |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
195 - nosy = hyperdb.Multilink("user") |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1949
diff
changeset
|
196 - superseder = hyperdb.Multilink(classname) |
|
858
2dd862af72ee
all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents:
826
diff
changeset
|
197 """ |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
198 |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
199 # The tuple below does not affect the class definition. |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
200 # It just lists all names of all issue properties |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
201 # marked for message extraction tool. |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
202 # |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
203 # XXX is there better way to get property names into message catalog?? |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
204 # |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
205 # Note that this list also includes properties |
|
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
206 # defined in the classic template: |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3892
diff
changeset
|
207 # assignedto, keyword, priority, status. |
|
2545
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
208 ( |
|
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
209 ''"title", ''"messages", ''"files", ''"nosy", ''"superseder", |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3892
diff
changeset
|
210 ''"assignedto", ''"keyword", ''"priority", ''"status", |
|
2545
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
211 # following properties are common for all hyperdb classes |
|
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
212 # they are listed here to keep things in one place |
|
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
213 ''"actor", ''"activity", ''"creator", ''"creation", |
|
f313ea652571
add common audit properties...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2518
diff
changeset
|
214 ) |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
215 |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
216 # New methods: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
217 def addmessage(self, issueid, summary, text): |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
218 """Add a message to an issue's mail spool. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
219 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
220 A new "msg" node is constructed using the current date, the user that |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
221 owns the database connection as the author, and the specified summary |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 text. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
223 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
224 The "files" and "recipients" fields are left empty. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
225 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
226 The given text is saved as the body of the message and the node is |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
227 appended to the "messages" field of the specified issue. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
228 """ |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
229 |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
230 def nosymessage(self, issueid, msgid, oldvalues, whichnosy='nosy', |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
231 from_address=None, cc=[], bcc=[], cc_emails = [], |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
232 bcc_emails = [], subject=None ): |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
233 """Send a message to the members of an issue's nosy list. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
234 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
235 The message is sent only to users on the nosy list who are not |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
236 already on the "recipients" list for the message. |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
237 |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
238 These users are then added to the message's "recipients" list. |
|
1379
98ec0c4ce7ab
missed a fix to the mailing patches
Richard Jones <richard@users.sourceforge.net>
parents:
1360
diff
changeset
|
239 |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
240 If 'msgid' is None, the message gets sent only to the nosy |
|
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
241 list, and it's called a 'System Message'. |
|
2228
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
242 |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
243 The "subject" argument is used as subject for the message. If no |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
244 subject is passed, a subject will be generated from the message. |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
245 Note the subject does not include the item designator [classID] |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
246 prefix that allows proper processing of reply emails. The caller |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
247 needs to include that label in the subject if needed. |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
248 |
|
2228
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
249 The "cc" argument indicates additional recipients to send the |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
250 message to that may not be specified in the message's recipients |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
251 list. |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
252 |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
253 The "bcc" argument also indicates additional recipients to send the |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
254 message to that may not be specified in the message's recipients |
|
1d1362c54c94
Some doc / comment fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
2218
diff
changeset
|
255 list. These recipients will not be included in the To: or Cc: |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
256 address lists. Note that the list of bcc users *is* updated in |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
257 the recipient list of the message, so this field has to be |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
258 protected (using appropriate permissions), otherwise the bcc |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
259 will be deduceable for users who have web access to the tracker. |
|
4497
29576edb45d5
Allow to specify additional cc and bcc emails (not roundup users)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
260 |
|
29576edb45d5
Allow to specify additional cc and bcc emails (not roundup users)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
261 The cc_emails and bcc_emails arguments take a list of additional |
|
29576edb45d5
Allow to specify additional cc and bcc emails (not roundup users)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
262 recipient email addresses (just the mail address not roundup users) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
263 this can be useful for sending to additional email addresses |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
264 which are not roundup users. These arguments are currently not |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
265 used by roundups nosyreaction but can be used by customized |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
266 (nosy-)reactors. |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
267 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
268 A note on encryption: If pgp encryption for outgoing mails is |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
269 turned on in the configuration and no specific pgp roles are |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
270 defined, we try to send encrypted mail to *all* users |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
271 *including* cc, bcc, cc_emails and bcc_emails and this might |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
272 fail if not all the keys are available in roundups keyring. |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
273 """ |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
274 encrypt = self.db.config.PGP_ENABLE and self.db.config.PGP_ENCRYPT |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
275 pgproles = self.db.config.PGP_ROLES |
|
3515
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
276 if msgid: |
|
2737
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
277 authid = self.db.msg.get(msgid, 'author') |
|
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
278 recipients = self.db.msg.get(msgid, 'recipients', []) |
|
3515
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
279 else: |
|
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
280 # "system message" |
|
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
281 authid = None |
|
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
282 recipients = [] |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
283 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
284 sendto = dict (plain = [], crypt = []) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
285 bcc_sendto = dict (plain = [], crypt = []) |
|
1949
3fa6df0d120d
must be backward-compatible to py2.1
Richard Jones <richard@users.sourceforge.net>
parents:
1928
diff
changeset
|
286 seen_message = {} |
|
3fa6df0d120d
must be backward-compatible to py2.1
Richard Jones <richard@users.sourceforge.net>
parents:
1928
diff
changeset
|
287 for recipient in recipients: |
|
3fa6df0d120d
must be backward-compatible to py2.1
Richard Jones <richard@users.sourceforge.net>
parents:
1928
diff
changeset
|
288 seen_message[recipient] = 1 |
|
3fa6df0d120d
must be backward-compatible to py2.1
Richard Jones <richard@users.sourceforge.net>
parents:
1928
diff
changeset
|
289 |
|
2218
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
290 def add_recipient(userid, to): |
|
4289
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
291 """ make sure they have an address """ |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
292 address = self.db.user.get(userid, 'address') |
|
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
293 if address: |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
294 ciphered = encrypt and (not pgproles or |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
295 self.db.user.has_role(userid, *iter_roles(pgproles))) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
296 type = ['plain', 'crypt'][ciphered] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
297 to[type].append(address) |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
298 recipients.append(userid) |
|
2073
261c2e6ceb1e
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2059
diff
changeset
|
299 |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
300 def good_recipient(userid): |
|
4289
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
301 """ Make sure we don't send mail to either the anonymous |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
302 user or a user who has already seen the message. |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
303 Also check permissions on the message if not a system |
|
4290
236939e4137b
- small typo
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4289
diff
changeset
|
304 message: A user must have view permission on content and |
|
4480
1613754d2646
Fix first part of Password handling security issue2550688
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4447
diff
changeset
|
305 files to be on the receiver list. We do *not* check the |
|
4289
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
306 author etc. for now. |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
307 """ |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
308 allowed = True |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
309 if msgid: |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
310 for prop in 'content', 'files': |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
311 if prop in self.db.msg.properties: |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
312 allowed = allowed and self.db.security.hasPermission( |
|
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
313 'View', userid, 'msg', prop, msgid) |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
314 return (userid and |
|
1928
7c1ddebe7589
Small readability improvements.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1927
diff
changeset
|
315 (self.db.user.get(userid, 'username') != 'anonymous') and |
|
4289
7275e3dec0e0
Fix security-problem: If user hasn't permission on a message...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4225
diff
changeset
|
316 allowed and not seen_message.has_key(userid)) |
|
2073
261c2e6ceb1e
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2059
diff
changeset
|
317 |
|
475
a1a44636bace
Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents:
467
diff
changeset
|
318 # possibly send the message to the author, as long as they aren't |
|
a1a44636bace
Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents:
467
diff
changeset
|
319 # anonymous |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
320 if (good_recipient(authid) and |
|
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
321 (self.db.config.MESSAGES_TO_AUTHOR == 'yes' or |
|
4547
d9d7319afffa
Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4542
diff
changeset
|
322 (self.db.config.MESSAGES_TO_AUTHOR == 'new' and not oldvalues) or |
|
d9d7319afffa
Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4542
diff
changeset
|
323 (self.db.config.MESSAGES_TO_AUTHOR == 'nosy' and authid in |
|
d9d7319afffa
Add config-option "nosy" to messages_to_author setting in [nosy] section...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4542
diff
changeset
|
324 self.get(issueid, whichnosy)))): |
|
2218
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
325 add_recipient(authid, sendto) |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
326 |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
327 if authid: |
|
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
328 seen_message[authid] = 1 |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
329 |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
330 # now deal with the nosy and cc people who weren't recipients. |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
331 for userid in cc + self.get(issueid, whichnosy): |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
332 if good_recipient(userid): |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
333 add_recipient(userid, sendto) |
|
5312
a4fe76fba54a
issue2550957: Duplicate emails (with patch).
John Rouillard <rouilj@ieee.org>
parents:
5224
diff
changeset
|
334 seen_message[userid] = 1 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
335 if encrypt and not pgproles: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
336 sendto['crypt'].extend (cc_emails) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
337 else: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
338 sendto['plain'].extend (cc_emails) |
|
2218
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
339 |
|
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
340 # now deal with bcc people. |
|
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
341 for userid in bcc: |
|
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
342 if good_recipient(userid): |
|
5673b24ceb0d
roundupdb nosymessage() takes an optional bcc list
Richard Jones <richard@users.sourceforge.net>
parents:
2183
diff
changeset
|
343 add_recipient(userid, bcc_sendto) |
|
5312
a4fe76fba54a
issue2550957: Duplicate emails (with patch).
John Rouillard <rouilj@ieee.org>
parents:
5224
diff
changeset
|
344 seen_message[userid] = 1 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
345 if encrypt and not pgproles: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
346 bcc_sendto['crypt'].extend (bcc_emails) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
347 else: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
348 bcc_sendto['plain'].extend (bcc_emails) |
| 337 | 349 |
|
753
938edfdeac6e
Sorry about this huge checkin!
Richard Jones <richard@users.sourceforge.net>
parents:
749
diff
changeset
|
350 if oldvalues: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
351 note = self.generateChangeNote(issueid, oldvalues) |
|
753
938edfdeac6e
Sorry about this huge checkin!
Richard Jones <richard@users.sourceforge.net>
parents:
749
diff
changeset
|
352 else: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
353 note = self.generateCreateNote(issueid) |
|
753
938edfdeac6e
Sorry about this huge checkin!
Richard Jones <richard@users.sourceforge.net>
parents:
749
diff
changeset
|
354 |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
355 # If we have new recipients, update the message's recipients |
|
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
356 # and send the mail. |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
357 if sendto['plain'] or sendto['crypt']: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
358 # update msgid and recipients only if non-bcc have changed |
|
2738
3a7039bc2f97
couple more msgid == None fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2737
diff
changeset
|
359 if msgid is not None: |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
360 self.db.msg.set(msgid, recipients=recipients) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
361 if sendto['plain'] or bcc_sendto['plain']: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
362 self.send_message(issueid, msgid, note, sendto['plain'], |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
363 from_address, bcc_sendto['plain'], subject) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
364 if sendto['crypt'] or bcc_sendto['crypt']: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
365 self.send_message(issueid, msgid, note, sendto['crypt'], |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
366 from_address, bcc_sendto['crypt'], subject, crypt=True) |
|
684
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
367 |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1096
diff
changeset
|
368 # backwards compatibility - don't remove |
|
684
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
369 sendmessage = nosymessage |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
370 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
371 def encrypt_to(self, message, sendto): |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
372 """ Encrypt given message to sendto receivers. |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
373 Returns a new RFC 3156 conforming message. |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
374 """ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
375 plain = pyme.core.Data(message.as_string()) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
376 cipher = pyme.core.Data() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
377 ctx = pyme.core.Context() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
378 ctx.set_armor(1) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
379 keys = [] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
380 for adr in sendto: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
381 ctx.op_keylist_start(adr, 0) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
382 # only first key per email |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
383 k = ctx.op_keylist_next() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
384 if k is not None: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
385 keys.append(k) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
386 else: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
387 msg = _('No key for "%(adr)s" in keyring')%locals() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
388 raise MessageSendError, msg |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
389 ctx.op_keylist_end() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
390 ctx.op_encrypt(keys, 1, plain, cipher) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
391 cipher.seek(0,0) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
392 msg = MIMEMultipart('encrypted', boundary=None, _subparts=None, |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
393 protocol="application/pgp-encrypted") |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
394 part = MIMEBase('application', 'pgp-encrypted') |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
395 part.set_payload("Version: 1\r\n") |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
396 msg.attach(part) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
397 part = MIMEBase('application', 'octet-stream') |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
398 part.set_payload(cipher.read()) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
399 msg.attach(part) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
400 return msg |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
401 |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
402 def send_message(self, issueid, msgid, note, sendto, from_address=None, |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
403 bcc_sendto=[], subject=None, crypt=False): |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
404 '''Actually send the nominated message from this issue to the sendto |
|
684
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
405 recipients, with the note appended. |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
406 ''' |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
407 users = self.db.user |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
408 messages = self.db.msg |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
409 files = self.db.file |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
410 |
|
2737
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
411 if msgid is None: |
|
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
412 inreplyto = None |
|
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
413 messageid = None |
|
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
414 else: |
|
2765
3468f74bd7ce
fix copy/paste error made in r1.114
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2738
diff
changeset
|
415 inreplyto = messages.get(msgid, 'inreplyto') |
|
3468f74bd7ce
fix copy/paste error made in r1.114
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2738
diff
changeset
|
416 messageid = messages.get(msgid, 'messageid') |
|
684
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
417 |
|
1927
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
418 # make up a messageid if there isn't one (web edit) |
|
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
419 if not messageid: |
|
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
420 # this is an old message that didn't get a messageid, so |
|
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
421 # create one |
|
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
422 messageid = "<%s.%s.%s%s@%s>"%(time.time(), random.random(), |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
423 self.classname, issueid, |
|
1927
f5e8aeb1382d
Add 'safeget' method to hyperdb, including tests...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1903
diff
changeset
|
424 self.db.config.MAIL_DOMAIN) |
|
2569
eca3383a27a6
fix messageid generated when msgid is None for send_message [SF#987933]
Richard Jones <richard@users.sourceforge.net>
parents:
2545
diff
changeset
|
425 if msgid is not None: |
|
eca3383a27a6
fix messageid generated when msgid is None for send_message [SF#987933]
Richard Jones <richard@users.sourceforge.net>
parents:
2545
diff
changeset
|
426 messages.set(msgid, messageid=messageid) |
|
475
a1a44636bace
Fix breakage caused by transaction changes.
Richard Jones <richard@users.sourceforge.net>
parents:
467
diff
changeset
|
427 |
|
2059
48600089c73d
email charset fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2034
diff
changeset
|
428 # compose title |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
429 cn = self.classname |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
430 title = self.get(issueid, 'title') or '%s message copy'%cn |
|
1903
98b5f2c54dab
Change nosymessage and send_message to accept msgid=None (RFE [SF#707235]).
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1830
diff
changeset
|
431 |
|
2059
48600089c73d
email charset fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2034
diff
changeset
|
432 # figure author information |
|
3515
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
433 if msgid: |
|
2737
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
434 authid = messages.get(msgid, 'author') |
|
3515
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
435 else: |
|
3892
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
436 authid = self.db.getuid() |
|
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
437 authname = users.get(authid, 'realname') |
|
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
438 if not authname: |
|
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
439 authname = users.get(authid, 'username', '') |
|
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
440 authaddr = users.get(authid, 'address', '') |
|
3515
7015c1961013
have "System Messages" be marked as such again [SF#1281907]
Richard Jones <richard@users.sourceforge.net>
parents:
3440
diff
changeset
|
441 |
|
3877
83748b2de465
Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3790
diff
changeset
|
442 if authaddr and self.db.config.MAIL_ADD_AUTHOREMAIL: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
443 authaddr = " <%s>" % formataddr( ('',authaddr) ) |
|
3877
83748b2de465
Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3790
diff
changeset
|
444 elif authaddr: |
|
83748b2de465
Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3790
diff
changeset
|
445 authaddr = "" |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
446 |
|
393
f40388721e40
incorporated patch from Roch'e Compaan implementing attachments in nosy e-mail
Richard Jones <richard@users.sourceforge.net>
parents:
380
diff
changeset
|
447 # make the message body |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
448 m = [''] |
|
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
449 |
|
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
450 # put in roundup's signature |
|
524
dce4c75bef5a
changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents:
509
diff
changeset
|
451 if self.db.config.EMAIL_SIGNATURE_POSITION == 'top': |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
452 m.append(self.email_signature(issueid, msgid)) |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
453 |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
454 # add author information |
|
3877
83748b2de465
Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3790
diff
changeset
|
455 if authid and self.db.config.MAIL_ADD_AUTHORINFO: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
456 if msgid and len(self.get(issueid, 'messages')) == 1: |
|
3599
f607494f5578
send_message: translate UI strings (patch [SF#1462491])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3515
diff
changeset
|
457 m.append(_("New submission from %(authname)s%(authaddr)s:") |
|
f607494f5578
send_message: translate UI strings (patch [SF#1462491])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3515
diff
changeset
|
458 % locals()) |
|
3892
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
459 elif msgid: |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3599
diff
changeset
|
460 m.append(_("%(authname)s%(authaddr)s added the comment:") |
|
3599
f607494f5578
send_message: translate UI strings (patch [SF#1462491])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3515
diff
changeset
|
461 % locals()) |
|
3892
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
462 else: |
|
f762fa13cd8d
Automatically find out author of property-only changes...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3886
diff
changeset
|
463 m.append(_("Change by %(authname)s%(authaddr)s:") % locals()) |
|
3877
83748b2de465
Make addition of line about new submission/comment at top of each message...
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3790
diff
changeset
|
464 m.append('') |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
465 |
|
380
a1331423eb93
Fixed issues with nosy reaction and author copies.
Richard Jones <richard@users.sourceforge.net>
parents:
337
diff
changeset
|
466 # add the content |
|
2737
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
467 if msgid is not None: |
|
37e2b70105f7
removed safeget() from the API [SF#994750]
Richard Jones <richard@users.sourceforge.net>
parents:
2735
diff
changeset
|
468 m.append(messages.get(msgid, 'content', '')) |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
469 |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
470 # get the files for this message |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
471 message_files = [] |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
472 if msgid : |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
473 for fileid in messages.get(msgid, 'files') : |
|
3941
9997b941dd6d
remove some metakit references
Richard Jones <richard@users.sourceforge.net>
parents:
3939
diff
changeset
|
474 # check the attachment size |
|
4347
0e33bf5571dc
make some more memorydb tests pass
Richard Jones <richard@users.sourceforge.net>
parents:
4338
diff
changeset
|
475 filesize = self.db.filesize('file', fileid, None) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
476 if filesize <= self.db.config.NOSY_MAX_ATTACHMENT_SIZE: |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
477 message_files.append(fileid) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
478 else: |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
479 base = self.db.config.TRACKER_WEB |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
480 link = "".join((base, files.classname, fileid)) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
481 filename = files.get(fileid, 'name') |
|
3886
5c4a039aa465
.send_message: fix translation for the "file not attached" message
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3882
diff
changeset
|
482 m.append(_("File '%(filename)s' not attached - " |
|
5c4a039aa465
.send_message: fix translation for the "file not attached" message
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3882
diff
changeset
|
483 "you can download it from %(link)s.") % locals()) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3877
diff
changeset
|
484 |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
485 # add the change note |
|
684
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
486 if note: |
|
5b23ff865f3a
added a "detectors" directory...
Richard Jones <richard@users.sourceforge.net>
parents:
667
diff
changeset
|
487 m.append(note) |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
488 |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
489 # put in roundup's signature |
|
524
dce4c75bef5a
changed all config accesses...
Richard Jones <richard@users.sourceforge.net>
parents:
509
diff
changeset
|
490 if self.db.config.EMAIL_SIGNATURE_POSITION == 'bottom': |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
491 m.append(self.email_signature(issueid, msgid)) |
|
393
f40388721e40
incorporated patch from Roch'e Compaan implementing attachments in nosy e-mail
Richard Jones <richard@users.sourceforge.net>
parents:
380
diff
changeset
|
492 |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
493 # figure the encoding |
|
2059
48600089c73d
email charset fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2034
diff
changeset
|
494 charset = getattr(self.db.config, 'EMAIL_CHARSET', 'utf-8') |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
495 |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
496 # construct the content and convert to unicode object |
|
4225
7baf1925c4c1
fix construction of individual messages to nosy recipents with attachments
Richard Jones <richard@users.sourceforge.net>
parents:
4214
diff
changeset
|
497 body = unicode('\n'.join(m), 'utf-8').encode(charset) |
|
665
9382ad731c1c
All messages sent to the nosy list are now encoded as quoted-printable.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
647
diff
changeset
|
498 |
|
718
e10c37f53efd
fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents:
685
diff
changeset
|
499 # make sure the To line is always the same (for testing mostly) |
|
e10c37f53efd
fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents:
685
diff
changeset
|
500 sendto.sort() |
|
e10c37f53efd
fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents:
685
diff
changeset
|
501 |
|
1360
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
502 # make sure we have a from address |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
503 if from_address is None: |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
504 from_address = self.db.config.TRACKER_EMAIL |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
505 |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
506 # additional bit for after the From: "name" |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
507 from_tag = getattr(self.db.config, 'EMAIL_FROM_TAG', '') |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
508 if from_tag: |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
509 from_tag = ' ' + from_tag |
|
aa7e4e8b14be
allow additional control over the roundupdb email sending...
Richard Jones <richard@users.sourceforge.net>
parents:
1329
diff
changeset
|
510 |
|
5081
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
511 if subject is None: |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
512 subject = '[%s%s] %s'%(cn, issueid, title) |
|
786f0581bc90
issue2109308 add subject argument to nosymessage. Initial patch Frank Niessink. Test and application with slight mods by rouilj
John Rouillard <rouilj@ieee.org>
parents:
5063
diff
changeset
|
513 |
|
2059
48600089c73d
email charset fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2034
diff
changeset
|
514 author = (authname + from_tag, from_address) |
|
1799
071ea6fc803f
Extracted duplicated mail-sending code...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1794
diff
changeset
|
515 |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
516 # send an individual message per recipient? |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
517 if self.db.config.NOSY_EMAIL_SENDING != 'single': |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
518 sendto = [[address] for address in sendto] |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
519 else: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
520 sendto = [sendto] |
|
1799
071ea6fc803f
Extracted duplicated mail-sending code...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1794
diff
changeset
|
521 |
|
4338
94ee533613ac
Attempt to generate more human-readable addresses in email
Richard Jones <richard@users.sourceforge.net>
parents:
4290
diff
changeset
|
522 # tracker sender info |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
523 tracker_name = unicode(self.db.config.TRACKER_NAME, 'utf-8') |
|
4338
94ee533613ac
Attempt to generate more human-readable addresses in email
Richard Jones <richard@users.sourceforge.net>
parents:
4290
diff
changeset
|
524 tracker_name = nice_sender_header(tracker_name, from_address, |
|
94ee533613ac
Attempt to generate more human-readable addresses in email
Richard Jones <richard@users.sourceforge.net>
parents:
4290
diff
changeset
|
525 charset) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
526 |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
527 # now send one or more messages |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
528 # TODO: I believe we have to create a new message each time as we |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
529 # can't fiddle the recipients in the message ... worth testing |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
530 # and/or fixing some day |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
531 first = True |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
532 for sendto in sendto: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
533 # create the message |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
534 mailer = Mailer(self.db.config) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
535 |
|
4541
62239a524beb
PGP support is again working (pyme API has changed significantly)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4497
diff
changeset
|
536 message = mailer.get_standard_message(multipart=message_files) |
|
2059
48600089c73d
email charset fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2034
diff
changeset
|
537 |
|
5098
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
538 # set reply-to as requested by config option TRACKER_REPLYTO_ADDRESS |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
539 replyto_config = self.db.config.TRACKER_REPLYTO_ADDRESS |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
540 if replyto_config: |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
541 if replyto_config == "AUTHOR": |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
542 # note that authaddr at this point is already surrounded by < >, so |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
543 # get the original address from the db as nice_send_header adds < > |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
544 replyto_addr = nice_sender_header(authname, users.get(authid, 'address', ''), charset) |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
545 else: |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
546 replyto_addr = replyto_config |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
547 else: |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
548 replyto_addr = tracker_name |
|
99e289359798
issue2550803: Replying to NOSY mail goes to the tracker through
John Rouillard <rouilj@ieee.org>
parents:
5081
diff
changeset
|
549 message['Reply-To'] = replyto_addr |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
550 |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
551 # message ids |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
552 if messageid: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
553 message['Message-Id'] = messageid |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
554 if inreplyto: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
555 message['In-Reply-To'] = inreplyto |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
556 |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
557 # Generate a header for each link or multilink to |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
558 # a class that has a name attribute |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
559 for propname, prop in self.getprops().items(): |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
560 if not isinstance(prop, (hyperdb.Link, hyperdb.Multilink)): |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
561 continue |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
562 cl = self.db.getclass(prop.classname) |
|
5063
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
563 label = None |
|
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
564 if 'name' in cl.getprops(): |
|
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
565 label = 'name' |
|
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
566 if prop.msg_header_property in cl.getprops(): |
|
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
567 label = prop.msg_header_property |
|
5124
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
568 if prop.msg_header_property == "": |
|
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
569 # if msg_header_property is set to empty string |
|
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
570 # suppress the header entirely. You can't use |
|
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
571 # 'msg_header_property == None'. None is the |
|
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
572 # default value. |
|
a927f9549af0
Fix issue2550751: Email Header Issue.
John Rouillard <rouilj@ieee.org>
parents:
5112
diff
changeset
|
573 label = None |
|
5063
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
574 if not label: |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
575 continue |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
576 if isinstance(prop, hyperdb.Link): |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
577 value = self.get(issueid, propname) |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
578 if value is None: |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
579 continue |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
580 values = [value] |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
581 else: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
582 values = self.get(issueid, propname) |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
583 if not values: |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
584 continue |
|
5063
2840a9e86ef2
New Link/Multilink attribute 'msg_header_property'
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4983
diff
changeset
|
585 values = [cl.get(v, label) for v in values] |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
586 values = ', '.join(values) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
587 header = "X-Roundup-%s-%s"%(self.classname, propname) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
588 try: |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
589 message[header] = values.encode('ascii') |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
590 except UnicodeError: |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
591 message[header] = Header(values, charset) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
592 |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
593 if not inreplyto: |
|
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
594 # Default the reply to the first message |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
595 msgs = self.get(issueid, 'messages') |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
596 # Assume messages are sorted by increasing message number here |
|
3986
68accc7d4b69
indexerror when there are no messages to the issue
Richard Jones <richard@users.sourceforge.net>
parents:
3958
diff
changeset
|
597 # If the issue is just being created, and the submitter didn't |
|
68accc7d4b69
indexerror when there are no messages to the issue
Richard Jones <richard@users.sourceforge.net>
parents:
3958
diff
changeset
|
598 # provide a message, then msgs will be empty. |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
599 if msgs and msgs[0] != msgid: |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
600 inreplyto = messages.get(msgs[0], 'messageid') |
|
3958
642201ee1d75
paranoia from Toby Dickenson
Richard Jones <richard@users.sourceforge.net>
parents:
3957
diff
changeset
|
601 if inreplyto: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
602 message['In-Reply-To'] = inreplyto |
|
3956
bb2722260e47
Fixes from Martin v. Löwis:
Richard Jones <richard@users.sourceforge.net>
parents:
3941
diff
changeset
|
603 |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
604 # attach files |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
605 if message_files: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
606 # first up the text as a part |
|
4225
7baf1925c4c1
fix construction of individual messages to nosy recipents with attachments
Richard Jones <richard@users.sourceforge.net>
parents:
4214
diff
changeset
|
607 part = MIMEText(body) |
|
4423
579802067547
Fix charset of first text-part of outgoing multipart messages...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4420
diff
changeset
|
608 part.set_charset(charset) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
609 encode_quopri(part) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
610 message.attach(part) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
611 |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
612 for fileid in message_files: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
613 name = files.get(fileid, 'name') |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
614 mime_type = files.get(fileid, 'type') |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
615 content = files.get(fileid, 'content') |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
616 if mime_type == 'text/plain': |
|
3440
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
617 try: |
|
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
618 content.decode('ascii') |
|
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
619 except UnicodeError: |
|
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
620 # the content cannot be 7bit-encoded. |
|
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
621 # use quoted printable |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
622 # XXX stuffed if we know the charset though :( |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
623 part = MIMEText(content) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
624 encode_quopri(part) |
|
3440
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
625 else: |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
626 part = MIMEText(content) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
627 part['Content-Transfer-Encoding'] = '7bit' |
|
4424
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
628 elif mime_type == 'message/rfc822': |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
629 main, sub = mime_type.split('/') |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
630 p = FeedParser() |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
631 p.feed(content) |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
632 part = MIMEBase(main, sub) |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
633 part.set_payload([p.close()]) |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
634 else: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
635 # some other type, so encode it |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
636 if not mime_type: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
637 # this should have been done when the file was saved |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
638 mime_type = mimetypes.guess_type(name)[0] |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
639 if mime_type is None: |
|
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
640 mime_type = 'application/octet-stream' |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
641 main, sub = mime_type.split('/') |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
642 part = MIMEBase(main, sub) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
643 part.set_payload(content) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
644 Encoders.encode_base64(part) |
|
4424
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
645 cd = 'Content-Disposition' |
|
f1affb6b7a08
Mail gateway fixes and improvements.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4423
diff
changeset
|
646 part[cd] = 'attachment;\n filename="%s"'%name |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
647 message.attach(part) |
|
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
648 |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
649 else: |
|
4225
7baf1925c4c1
fix construction of individual messages to nosy recipents with attachments
Richard Jones <richard@users.sourceforge.net>
parents:
4214
diff
changeset
|
650 message.set_payload(body) |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
651 encode_quopri(message) |
|
393
f40388721e40
incorporated patch from Roch'e Compaan implementing attachments in nosy e-mail
Richard Jones <richard@users.sourceforge.net>
parents:
380
diff
changeset
|
652 |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
653 if crypt: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
654 send_msg = self.encrypt_to (message, sendto) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
655 else: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
656 send_msg = message |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
657 mailer.set_message_attributes(send_msg, sendto, subject, author) |
|
4969
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
658 if crypt: |
|
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
659 send_msg ['Message-Id'] = message ['Message-Id'] |
|
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
660 send_msg ['Reply-To'] = message ['Reply-To'] |
|
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
661 if message.get ('In-Reply-To'): |
|
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
662 send_msg ['In-Reply-To'] = message ['In-Reply-To'] |
|
010ce624b320
Fixing duplicated email headers message-id, reply-to, in-reply-to. (part of issue2550869).
Bernhard Reiter <bernhard@intevation.de>
parents:
4745
diff
changeset
|
663 |
|
5224
0121b2f1f041
Apply patch attached to issue2550937 traceback/crash due to passing
John Rouillard <rouilj@ieee.org>
parents:
5124
diff
changeset
|
664 if sendto: |
|
0121b2f1f041
Apply patch attached to issue2550937 traceback/crash due to passing
John Rouillard <rouilj@ieee.org>
parents:
5124
diff
changeset
|
665 mailer.smtp_send(sendto, send_msg.as_string()) |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
666 if first: |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
667 if crypt: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
668 # send individual bcc mails, otherwise receivers can |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
669 # deduce bcc recipients from keys in message |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
670 for bcc in bcc_sendto: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
671 send_msg = self.encrypt_to (message, [bcc]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
672 send_msg ['Message-Id'] = message ['Message-Id'] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
673 send_msg ['Reply-To'] = message ['Reply-To'] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
674 if message.get ('In-Reply-To'): |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
675 send_msg ['In-Reply-To'] = message ['In-Reply-To'] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
676 mailer.smtp_send([bcc], send_msg.as_string()) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
677 elif bcc_sendto: |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4541
diff
changeset
|
678 mailer.smtp_send(bcc_sendto, send_msg.as_string()) |
|
3417
07c696890f55
mailgw subject parsing has configurable levels of strictness
Richard Jones <richard@users.sourceforge.net>
parents:
3132
diff
changeset
|
679 first = False |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
680 |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
681 def email_signature(self, issueid, msgid): |
|
411
a6088556e9ba
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
410
diff
changeset
|
682 ''' Add a signature to the e-mail with some useful information |
|
188
1536be43d2fa
Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents:
156
diff
changeset
|
683 ''' |
|
769
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
684 # simplistic check to see if the url is valid, |
|
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
685 # then append a trailing slash if it is missing |
|
2518
cf17ba0a72f9
list IssueClass property names for message extraction tool
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
686 base = self.db.config.TRACKER_WEB |
|
1250
deab62016de7
https URLs from config now recognised as valid [SF#619829]
Richard Jones <richard@users.sourceforge.net>
parents:
1174
diff
changeset
|
687 if (not isinstance(base , type('')) or |
|
1253
fe67477e678f
fixes from changes today
Richard Jones <richard@users.sourceforge.net>
parents:
1252
diff
changeset
|
688 not (base.startswith('http://') or base.startswith('https://'))): |
|
2183
ac24a9c74cca
be paranoid about TRACKER_WEB
Richard Jones <richard@users.sourceforge.net>
parents:
2153
diff
changeset
|
689 web = "Configuration Error: TRACKER_WEB isn't a " \ |
|
858
2dd862af72ee
all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents:
826
diff
changeset
|
690 "fully-qualified URL" |
|
2183
ac24a9c74cca
be paranoid about TRACKER_WEB
Richard Jones <richard@users.sourceforge.net>
parents:
2153
diff
changeset
|
691 else: |
|
ac24a9c74cca
be paranoid about TRACKER_WEB
Richard Jones <richard@users.sourceforge.net>
parents:
2153
diff
changeset
|
692 if not base.endswith('/'): |
|
ac24a9c74cca
be paranoid about TRACKER_WEB
Richard Jones <richard@users.sourceforge.net>
parents:
2153
diff
changeset
|
693 base = base + '/' |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
694 web = base + self.classname + issueid |
|
769
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
695 |
|
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
696 # ensure the email address is properly quoted |
|
4092
4b0ddce43d08
migrate from MimeWriter to email
Richard Jones <richard@users.sourceforge.net>
parents:
4059
diff
changeset
|
697 email = formataddr((self.db.config.TRACKER_NAME, |
|
1096
fa7df238e2d4
More cleaning up of configuration, and the "instance" -> "tracker" renaming.
Richard Jones <richard@users.sourceforge.net>
parents:
1095
diff
changeset
|
698 self.db.config.TRACKER_EMAIL)) |
|
769
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
699 |
|
1586
d1bab419f2a2
web url got longer
Richard Jones <richard@users.sourceforge.net>
parents:
1577
diff
changeset
|
700 line = '_' * max(len(web)+2, len(email)) |
|
2095
7d886a79ab67
make sure email signature starts on a newline [SF#919759]
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
701 return '\n%s\n%s\n<%s>\n%s'%(line, email, web, line) |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
702 |
|
769
17208b487199
[SF#565992] if ISSUE_TRACKER_WEB doesn't have the trailing '/', add it
Derrick Hudson <dman13@users.sourceforge.net>
parents:
758
diff
changeset
|
703 |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
704 def generateCreateNote(self, issueid): |
|
534
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
705 """Generate a create note that lists initial property values |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
706 """ |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
707 cn = self.classname |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
708 cl = self.db.classes[cn] |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
709 props = cl.getprops(protected=0) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
710 |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
711 # list the values |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
712 m = [] |
|
3132
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
713 prop_items = props.items() |
|
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
714 prop_items.sort() |
|
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
715 for propname, prop in prop_items: |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
716 # Omit quiet properties from history/changelog |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
717 if prop.quiet: |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
718 continue |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
719 value = cl.get(issueid, propname, None) |
|
559
bb5ee2f24ee0
Properties in change note are now sorted
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
537
diff
changeset
|
720 # skip boring entries |
|
bb5ee2f24ee0
Properties in change note are now sorted
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
537
diff
changeset
|
721 if not value: |
|
bb5ee2f24ee0
Properties in change note are now sorted
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
537
diff
changeset
|
722 continue |
|
534
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
723 if isinstance(prop, hyperdb.Link): |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
724 link = self.db.classes[prop.classname] |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
725 if value: |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
726 key = link.labelprop(default_to_id=1) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
727 if key: |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
728 value = link.get(value, key) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
729 else: |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
730 value = '' |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
731 elif isinstance(prop, hyperdb.Multilink): |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
732 if value is None: value = [] |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
733 l = [] |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
734 link = self.db.classes[prop.classname] |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
735 key = link.labelprop(default_to_id=1) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
736 if key: |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
737 value = [link.get(entry, key) for entry in value] |
|
718
e10c37f53efd
fixed SCRIPT_NAME in ZRoundup for instances not at top level of Zope
Richard Jones <richard@users.sourceforge.net>
parents:
685
diff
changeset
|
738 value.sort() |
|
534
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
739 value = ', '.join(value) |
|
3740
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
740 else: |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
741 value = str(value) |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
742 if '\n' in value: |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
743 value = '\n'+self.indentChangeNoteValue(value) |
|
534
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
744 m.append('%s: %s'%(propname, value)) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
745 m.insert(0, '----------') |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
746 m.insert(0, '') |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
747 return '\n'.join(m) |
|
d17c60d16f7f
[SF#503353] setting properties in initial email
Richard Jones <richard@users.sourceforge.net>
parents:
524
diff
changeset
|
748 |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
749 def generateChangeNote(self, issueid, oldvalues): |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
750 """Generate a change note that lists property changes |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
751 """ |
|
2514
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2228
diff
changeset
|
752 if not isinstance(oldvalues, type({})): |
|
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2228
diff
changeset
|
753 raise TypeError("'oldvalues' must be dict-like, not %s."% |
|
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2228
diff
changeset
|
754 type(oldvalues)) |
|
772
db5daf396518
Removed temporary workaround.
Derrick Hudson <dman13@users.sourceforge.net>
parents:
770
diff
changeset
|
755 |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
756 cn = self.classname |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
757 cl = self.db.classes[cn] |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
758 changed = {} |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
759 props = cl.getprops(protected=0) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
760 |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
761 # determine what changed |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
762 for key in oldvalues.keys(): |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1112
diff
changeset
|
763 if key in ['files','messages']: |
|
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1112
diff
changeset
|
764 continue |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2073
diff
changeset
|
765 if key in ('actor', 'activity', 'creator', 'creation'): |
|
1174
8e318dfaf479
Verify contents of tracker module when the tracker is opened
Richard Jones <richard@users.sourceforge.net>
parents:
1112
diff
changeset
|
766 continue |
|
1812
6f3b92a817aa
fixed Apply Error that was raised when property was deleted from class...
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1800
diff
changeset
|
767 # not all keys from oldvalues might be available in database |
|
6f3b92a817aa
fixed Apply Error that was raised when property was deleted from class...
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1800
diff
changeset
|
768 # this happens when property was deleted |
|
2514
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2228
diff
changeset
|
769 try: |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
770 new_value = cl.get(issueid, key) |
|
1812
6f3b92a817aa
fixed Apply Error that was raised when property was deleted from class...
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1800
diff
changeset
|
771 except KeyError: |
|
6f3b92a817aa
fixed Apply Error that was raised when property was deleted from class...
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1800
diff
changeset
|
772 continue |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
773 # the old value might be non existent |
|
1812
6f3b92a817aa
fixed Apply Error that was raised when property was deleted from class...
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1800
diff
changeset
|
774 # this happens when property was added |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
775 try: |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
776 old_value = oldvalues[key] |
|
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
777 if type(new_value) is type([]): |
|
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
778 new_value.sort() |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
779 old_value.sort() |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
780 if new_value != old_value: |
|
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
781 changed[key] = old_value |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
782 except: |
|
434
2441743e335b
Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
428
diff
changeset
|
783 changed[key] = new_value |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
784 |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
785 # list the changes |
|
440
de5bf4191f11
Enabled transaction support in the bsddb backend.
Richard Jones <richard@users.sourceforge.net>
parents:
439
diff
changeset
|
786 m = [] |
|
3132
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
787 changed_items = changed.items() |
|
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
788 changed_items.sort() |
|
3475ae520f19
code cleanup (patch [SF#115329] and additional)
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
789 for propname, oldvalue in changed_items: |
|
647
b3b483e0fd5e
Fixed a couple of dodgy bits found by pychekcer.
Richard Jones <richard@users.sourceforge.net>
parents:
644
diff
changeset
|
790 prop = props[propname] |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
791 # Omit quiet properties from history/changelog |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
792 if prop.quiet: |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5098
diff
changeset
|
793 continue |
|
4358
887a153cedec
The email for the first message on an issue...
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
794 value = cl.get(issueid, propname, None) |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
795 if isinstance(prop, hyperdb.Link): |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
796 link = self.db.classes[prop.classname] |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
797 key = link.labelprop(default_to_id=1) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
798 if key: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
799 if value: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
800 value = link.get(value, key) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
801 else: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
802 value = '' |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
803 if oldvalue: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
804 oldvalue = link.get(oldvalue, key) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
805 else: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
806 oldvalue = '' |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
807 change = '%s -> %s'%(oldvalue, value) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
808 elif isinstance(prop, hyperdb.Multilink): |
|
428
7956563d49ae
Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
425
diff
changeset
|
809 change = '' |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
810 if value is None: value = [] |
|
434
2441743e335b
Removed generation of change note from "sendmessage" in roundupdb.py.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
428
diff
changeset
|
811 if oldvalue is None: oldvalue = [] |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
812 l = [] |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
813 link = self.db.classes[prop.classname] |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
814 key = link.labelprop(default_to_id=1) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
815 # check for additions |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
816 for entry in value: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
817 if entry in oldvalue: continue |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
818 if key: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
819 l.append(link.get(entry, key)) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
820 else: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
821 l.append(entry) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
822 if l: |
|
1095
711f2ecee20f
unit tests pass again
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
823 l.sort() |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
824 change = '+%s'%(', '.join(l)) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
825 l = [] |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
826 # check for removals |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
827 for entry in oldvalue: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
828 if entry in value: continue |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
829 if key: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
830 l.append(link.get(entry, key)) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
831 else: |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
832 l.append(entry) |
|
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
833 if l: |
|
1095
711f2ecee20f
unit tests pass again
Richard Jones <richard@users.sourceforge.net>
parents:
1090
diff
changeset
|
834 l.sort() |
|
428
7956563d49ae
Property changes are now completely traceable, whether changes are
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
425
diff
changeset
|
835 change += ' -%s'%(', '.join(l)) |
|
453
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
836 else: |
|
5b422e3bd05d
Performance tuning.
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
445
diff
changeset
|
837 change = '%s -> %s'%(oldvalue, value) |
|
3740
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
838 if '\n' in change: |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
839 value = self.indentChangeNoteValue(str(value)) |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
840 oldvalue = self.indentChangeNoteValue(str(oldvalue)) |
|
3790
9171e01ac932
use named variable slots in translation string
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3750
diff
changeset
|
841 change = _('\nNow:\n%(new)s\nWas:\n%(old)s') % { |
|
9171e01ac932
use named variable slots in translation string
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3750
diff
changeset
|
842 "new": value, "old": oldvalue} |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
843 m.append('%s: %s'%(propname, change)) |
|
439
6e27cb83aacb
only insert the -------- change note marker if there is a change note
Richard Jones <richard@users.sourceforge.net>
parents:
434
diff
changeset
|
844 if m: |
|
442
52b5f53d12f3
fixed the order of the blank line and '-------' line
Richard Jones <richard@users.sourceforge.net>
parents:
440
diff
changeset
|
845 m.insert(0, '----------') |
|
439
6e27cb83aacb
only insert the -------- change note marker if there is a change note
Richard Jones <richard@users.sourceforge.net>
parents:
434
diff
changeset
|
846 m.insert(0, '') |
|
425
fc907b6ef135
Property changes are now listed in emails generated by Roundup
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
416
diff
changeset
|
847 return '\n'.join(m) |
|
188
1536be43d2fa
Roundupdb now appends "mailing list" information to its messages...
Richard Jones <richard@users.sourceforge.net>
parents:
156
diff
changeset
|
848 |
|
3740
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
849 def indentChangeNoteValue(self, text): |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
850 lines = text.rstrip('\n').split('\n') |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
851 lines = [ ' '+line for line in lines ] |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
852 return '\n'.join(lines) |
|
1442ba0c4850
fix email change note rendering of multiline properties (patch [SF#1575223])
Richard Jones <richard@users.sourceforge.net>
parents:
3702
diff
changeset
|
853 |
|
3440
0c78c9bbb542
in nosy messages, use quoted printable encoding for text/plain files...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3417
diff
changeset
|
854 # vim: set filetype=python sts=4 sw=4 et si : |
