Code

Fixed CGI client change messages so they actually include the properties
authorrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Wed, 29 Aug 2001 04:47:18 +0000 (04:47 +0000)
committerrichard <richard@57a73879-2fb5-44c3-a270-3262357dd7e2>
Wed, 29 Aug 2001 04:47:18 +0000 (04:47 +0000)
changed (again).

git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@243 57a73879-2fb5-44c3-a270-3262357dd7e2

CHANGES.txt
INSTALL.txt
roundup/cgi_client.py
roundup/hyperdb.py

index 728b289ba69c7ad1fa75b9864d09d1ba464911b4..542044fe9a8ded9bbb95bbf095d1661ea2437680 100644 (file)
@@ -13,7 +13,7 @@ Fixed:
  . Missed some isFooType usages (thanks Mikhail Sobolev for spotting them)
  . Reverted back to sending change messages to the web editor of a node so
    that the change note message is actually genrated.
-
+ . CGI interface wasn't generating correct change messages.
 
 2001-08-08 - 0.2.6
 Note:
index 14f0ebf31fdb210981a0210c850644bbb1f88b97..f0d4eaa8416811aff7dd802ebb80635b5c23bdeb 100644 (file)
@@ -72,6 +72,12 @@ The email addresses used by the system by default are:
   roundup-admin@MAIL_DOMAIN  - roundup's internal use (problems, etc)
 
 
+Note:
+We run the instance as group "issue_tracker" and add the mail and web user
+("mail" and "apache" on our RedHat 7.1 system) to that group, as well as
+any admin people.
+
+
 Mail
 ----
 Set up a mail alias called "issue_tracker" as:
index c9ebcefb88e3c537a5c6d9eaa3c6c9d86c5ffc10..0e70d9564a5510a0fffc35d1281c89740147306f 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: cgi_client.py,v 1.22 2001-08-17 00:08:10 richard Exp $
+# $Id: cgi_client.py,v 1.23 2001-08-29 04:47:18 richard Exp $
 
 import os, cgi, pprint, StringIO, urlparse, re, traceback, mimetypes
 
@@ -199,7 +199,7 @@ class Client:
         num_re = re.compile('^\d+$')
         if keys:
             try:
-                props, changed = parsePropsFromForm(cl, self.form)
+                props, changed = parsePropsFromForm(cl, self.form, self.nodeid)
                 cl.set(self.nodeid, **props)
                 self._post_editnode(self.nodeid, changed)
                 # and some nice feedback for the user
@@ -276,14 +276,10 @@ class Client:
                     link = self.db.classes[link]
                     link.set(nodeid, **{property: nid})
 
-        # TODO: this should be an auditor
-        # see if we want to send a message to the nosy list...
+        # generate an edit message - nosyreactor will send it
+        # don't bother if there's no messages or nosy list
         props = cl.getprops()
-        # don't do the message thing if there's no nosy list
-        nosy = 0
-        if props.has_key('nosy'):
-            nosy = cl.get(nid, 'nosy')
-            nosy = len(nosy)
+        nosy = len(cl.get(nid, 'nosy', []))
         if (nosy and props.has_key('messages') and
                 isinstance(props['messages'], hyperdb.Multilink) and
                 props['messages'].classname == 'msg'):
@@ -303,7 +299,6 @@ class Client:
                 summary = 'This %s has been edited through the web.\n'%cn
                 m = [summary]
 
-            # generate an edit message - nosyreactor will send it
             first = 1
             for name, prop in props.items():
                 if changes is not None and name not in changes: continue
@@ -333,7 +328,7 @@ class Client:
 
             # now create the message
             content = '\n'.join(m)
-            message_id = self.db.msg.create(author=self.getuid(),
+            message_id = self.db.msg.create(author='admin', #self.getuid(),
                 recipients=[], date=date.Date('.'), summary=summary,
                 content=content)
             messages = cl.get(nid, 'messages')
@@ -463,7 +458,7 @@ class Client:
     def __del__(self):
         self.db.close()
 
-def parsePropsFromForm(cl, form, note_changed=0):
+def parsePropsFromForm(cl, form, nodeid=0):
     '''Pull properties for the given class out of the form.
     '''
     props = {}
@@ -511,13 +506,17 @@ def parsePropsFromForm(cl, form, note_changed=0):
             value = l
         props[key] = value
         # if changed, set it
-        if note_changed and value != cl.get(self.nodeid, key):
+        if nodeid and value != cl.get(nodeid, key):
             changed.append(key)
             props[key] = value
     return props, changed
 
 #
 # $Log: not supported by cvs2svn $
+# Revision 1.22  2001/08/17 00:08:10  richard
+# reverted back to sending messages always regardless of who is doing the web
+# edit. change notes weren't being saved. bleah. hackish.
+#
 # Revision 1.21  2001/08/15 23:43:18  richard
 # Fixed some isFooTypes that I missed.
 # Refactored some code in the CGI code.
index 3cb774a7635cb935b5217e7e98db54bb49108306..57a95b17a5bd7123e4e8af5f7c373745ee5f09e4 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: hyperdb.py,v 1.18 2001-08-16 07:34:59 richard Exp $
+# $Id: hyperdb.py,v 1.19 2001-08-29 04:47:18 richard Exp $
 
 # standard python modules
 import cPickle, re, string
@@ -265,7 +265,8 @@ class Class:
             if not node.has_key(key):
                 raise KeyError, key
 
-            if key == self.key:
+            # check to make sure we're not duplicating an existing key
+            if key == self.key and node[key] != value:
                 try:
                     self.lookup(value)
                 except KeyError:
@@ -794,6 +795,9 @@ def Choice(name, *options):
 
 #
 # $Log: not supported by cvs2svn $
+# Revision 1.18  2001/08/16 07:34:59  richard
+# better CGI text searching - but hidden filter fields are disappearing...
+#
 # Revision 1.17  2001/08/16 06:59:58  richard
 # all searches use re now - and they're all case insensitive
 #