Skip to content

Commit 3fd9948

Browse files
author
Richard Jones
committed
fixed some problems with web editing and change detection
1 parent b05ee17 commit 3fd9948

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ are given with the most recent entry first.
55
Fixed:
66
. #495392 ] empty nosy -patch
77
. #500574 ] messageid must have format <part1@part2>
8+
. fixed some problems with web editing and change detection
89

910
2002-01-08 - 0.4.0b1
1011
Feature:

roundup/cgi_client.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: cgi_client.py,v 1.94 2002-01-09 13:54:21 grubert Exp $
18+
# $Id: cgi_client.py,v 1.95 2002-01-10 03:39:45 richard Exp $
1919

2020
__doc__ = """
2121
WWW request handler (also used in the stand-alone server).
@@ -312,16 +312,15 @@ def shownode(self, message=None):
312312
# don't try to set properties if the user has just logged in
313313
if keys and not self.form.has_key('__login_name'):
314314
try:
315-
props, changed = parsePropsFromForm(self.db, cl, self.form,
316-
self.nodeid)
315+
props = parsePropsFromForm(self.db, cl, self.form, self.nodeid)
317316
# make changes to the node
318317
self._changenode(props)
319318
# handle linked nodes
320319
self._post_editnode(self.nodeid)
321320
# and some nice feedback for the user
322-
if changed:
321+
if props:
323322
message = _('%(changes)s edited ok')%{'changes':
324-
', '.join(changed.keys())}
323+
', '.join(props.keys())}
325324
elif self.form.has_key('__note') and self.form['__note'].value:
326325
message = _('note added')
327326
elif self.form.has_key('__file'):
@@ -393,6 +392,7 @@ def _changenode(self, props):
393392
props['messages'] = cl.get(self.nodeid, 'messages') + [message]
394393
if files:
395394
props['files'] = cl.get(self.nodeid, 'files') + files
395+
396396
# make the changes
397397
cl.set(self.nodeid, **props)
398398

@@ -594,7 +594,8 @@ def newuser(self, message=None):
594594
keys = self.form.keys()
595595
if [i for i in keys if i[0] != ':']:
596596
try:
597-
props, dummy = parsePropsFromForm(self.db, cl, self.form)
597+
props = parsePropsFromForm(self.db, cl, self.form)
598+
print props
598599
nid = cl.create(**props)
599600
# handle linked nodes
600601
self._post_editnode(nid)
@@ -674,21 +675,21 @@ def showuser(self, message=None):
674675
num_re = re.compile('^\d+$')
675676
if keys:
676677
try:
677-
props, changed = parsePropsFromForm(self.db, user, self.form,
678+
props = parsePropsFromForm(self.db, user, self.form,
678679
self.nodeid)
679680
set_cookie = 0
680-
if self.nodeid == self.getuid() and changed.has_key('password'):
681+
if props.has_key('password'):
681682
password = self.form['password'].value.strip()
682-
if password:
683-
set_cookie = password
684-
else:
683+
if not password:
685684
# no password was supplied - don't change it
686685
del props['password']
687-
del changed['password']
686+
elif self.nodeid == self.getuid():
687+
# this is the logged-in user's password
688+
set_cookie = password
688689
user.set(self.nodeid, **props)
689690
# and some feedback for the user
690691
message = _('%(changes)s edited ok')%{'changes':
691-
', '.join(changed.keys())}
692+
', '.join(props.keys())}
692693
except:
693694
self.db.rollback()
694695
s = StringIO.StringIO()
@@ -845,7 +846,7 @@ def newuser_action(self, message=None):
845846
# TODO: pre-check the required fields and username key property
846847
cl = self.db.user
847848
try:
848-
props, dummy = parsePropsFromForm(self.db, cl, self.form)
849+
props = parsePropsFromForm(self.db, cl, self.form)
849850
uid = cl.create(**props)
850851
except ValueError, message:
851852
action = self.form['__destination_url'].value
@@ -887,7 +888,6 @@ def logout(self, message=None):
887888
path)})
888889
self.login()
889890

890-
891891
def main(self):
892892
'''Wrap the database accesses so we can close the database cleanly
893893
'''
@@ -1110,7 +1110,6 @@ def parsePropsFromForm(db, cl, form, nodeid=0):
11101110
'''Pull properties for the given class out of the form.
11111111
'''
11121112
props = {}
1113-
changed = {}
11141113
keys = form.keys()
11151114
num_re = re.compile('^\d+$')
11161115
for key in keys:
@@ -1161,7 +1160,6 @@ def parsePropsFromForm(db, cl, form, nodeid=0):
11611160
l.append(entry)
11621161
l.sort()
11631162
value = l
1164-
props[key] = value
11651163

11661164
# get the old value
11671165
if nodeid:
@@ -1172,14 +1170,18 @@ def parsePropsFromForm(db, cl, form, nodeid=0):
11721170
# value
11731171
if not cl.properties.has_key(key): raise
11741172

1175-
# if changed, set it
1176-
if nodeid and value != existing:
1177-
changed[key] = value
1173+
# if changed, set it
1174+
if value != existing:
1175+
props[key] = value
1176+
else:
11781177
props[key] = value
1179-
return props, changed
1178+
return props
11801179

11811180
#
11821181
# $Log: not supported by cvs2svn $
1182+
# Revision 1.94 2002/01/09 13:54:21 grubert
1183+
# _add_assignedto_to_nosy did set nosy to assignedto only, no adding.
1184+
#
11831185
# Revision 1.93 2002/01/08 11:57:12 richard
11841186
# crying out for real configuration handling... :(
11851187
#

0 commit comments

Comments
 (0)