X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=roundup%2Froundupdb.py;h=6cb939a2b988665f5234c97c2eb1b29e47e0d70e;hb=2117a87c051f3d7211f6d361f6ca6bab19d6cf9b;hp=1d15ab4f6b13bcca5aff159f24bacdf06a5b0c7e;hpb=3007241ac461fd3bd0ec04b140046939673c8e80;p=roundup.git diff --git a/roundup/roundupdb.py b/roundup/roundupdb.py index 1d15ab4..6cb939a 100644 --- a/roundup/roundupdb.py +++ b/roundup/roundupdb.py @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: roundupdb.py,v 1.27 2001-12-10 21:02:53 richard Exp $ +# $Id: roundupdb.py,v 1.31 2001-12-15 19:24:39 rochecompaan Exp $ __doc__ = """ Extending hyperdb with types specific to issue-tracking. @@ -268,7 +268,7 @@ class IssueClass(Class): appended to the "messages" field of the specified issue. """ - def sendmessage(self, nodeid, msgid): + def sendmessage(self, nodeid, msgid, change_note): """Send a message to the members of an issue's nosy list. The message is sent only to users on the nosy list who are not @@ -344,6 +344,10 @@ class IssueClass(Class): # add the content m.append(self.db.msg.get(msgid, 'content')) + # add the change note + if change_note: + m.append(change_note) + # put in roundup's signature if self.EMAIL_SIGNATURE_POSITION == 'bottom': m.append(self.email_signature(nodeid, msgid)) @@ -356,8 +360,7 @@ class IssueClass(Class): writer = MimeWriter.MimeWriter(message) writer.addheader('Subject', '[%s%s] %s'%(cn, nodeid, title)) writer.addheader('To', ', '.join(sendto)) - writer.addheader('From', '%s <%s>'%(self.INSTANCE_NAME, - self.ISSUE_TRACKER_EMAIL)) + writer.addheader('From', '%s <%s>'%(authname, self.ISSUE_TRACKER_EMAIL)) writer.addheader('Reply-To', '%s <%s>'%(self.INSTANCE_NAME, self.ISSUE_TRACKER_EMAIL)) writer.addheader('MIME-Version', '1.0') @@ -399,7 +402,9 @@ class IssueClass(Class): # now try to send the message try: smtp = smtplib.SMTP(self.MAILHOST) - smtp.sendmail(self.ISSUE_TRACKER_EMAIL, sendto, message.getvalue()) + # send the message as admin so bounces are sent there instead + # of to roundup + smtp.sendmail(self.ADMIN_EMAIL, sendto, message.getvalue()) except socket.error, value: raise MessageSendError, \ "Couldn't send confirmation email: mailhost %s"%value @@ -415,7 +420,7 @@ class IssueClass(Class): line = '_' * max(len(web), len(email)) return '%s\n%s\n%s\n%s'%(line, email, web, line) - def generateChangeNote(self, nodeid, newvalues): + def generateChangeNote(self, nodeid, oldvalues): """Generate a change note that lists property changes """ cn = self.classname @@ -424,25 +429,25 @@ class IssueClass(Class): props = cl.getprops(protected=0) # determine what changed - for key in newvalues.keys(): + for key in oldvalues.keys(): if key in ['files','messages']: continue - new_value = newvalues[key] + new_value = cl.get(nodeid, key) # the old value might be non existent try: - old_value = cl.get(nodeid, key) - if type(old_value) is type([]): - old_value.sort() + old_value = oldvalues[key] + if type(new_value) is type([]): new_value.sort() - if old_value != new_value: - changed[key] = new_value + old_value.sort() + if new_value != old_value: + changed[key] = old_value except: changed[key] = new_value # list the changes - for propname, value in changed.items(): + m = [] + for propname, oldvalue in changed.items(): prop = cl.properties[propname] - oldvalue = cl.get(nodeid, propname, None) - change = '%s -> %s'%(oldvalue, value) + value = cl.get(nodeid, propname, None) if isinstance(prop, hyperdb.Link): link = self.db.classes[prop.classname] key = link.labelprop(default_to_id=1) @@ -482,14 +487,35 @@ class IssueClass(Class): l.append(entry) if l: change += ' -%s'%(', '.join(l)) + else: + change = '%s -> %s'%(oldvalue, value) m.append('%s: %s'%(propname, change)) if m: - m.insert(0, '') m.insert(0, '----------') + m.insert(0, '') return '\n'.join(m) # # $Log: not supported by cvs2svn $ +# Revision 1.30 2001/12/12 21:47:45 richard +# . Message author's name appears in From: instead of roundup instance name +# (which still appears in the Reply-To:) +# . envelope-from is now set to the roundup-admin and not roundup itself so +# delivery reports aren't sent to roundup (thanks Patrick Ohly) +# +# Revision 1.29 2001/12/11 04:50:49 richard +# fixed the order of the blank line and '-------' line +# +# Revision 1.28 2001/12/10 22:20:01 richard +# Enabled transaction support in the bsddb backend. It uses the anydbm code +# where possible, only replacing methods where the db is opened (it uses the +# btree opener specifically.) +# Also cleaned up some change note generation. +# Made the backends package work with pydoc too. +# +# Revision 1.27 2001/12/10 21:02:53 richard +# only insert the -------- change note marker if there is a change note +# # Revision 1.26 2001/12/05 14:26:44 rochecompaan # Removed generation of change note from "sendmessage" in roundupdb.py. # The change note is now generated when the message is created.