diff roundup/cgi/actions.py @ 3518:7fb8cfe3c737

enable editing of public queries [SF#966144]
author Richard Jones <richard@users.sourceforge.net>
date Fri, 27 Jan 2006 03:30:39 +0000
parents 230fb5d49c19
children 61d48244e7a8
line wrap: on
line diff
--- a/roundup/cgi/actions.py	Fri Jan 27 02:41:18 2006 +0000
+++ b/roundup/cgi/actions.py	Fri Jan 27 03:30:39 2006 +0000
@@ -1,4 +1,4 @@
-#$Id: actions.py,v 1.55 2006-01-25 03:14:40 richard Exp $
+#$Id: actions.py,v 1.56 2006-01-27 03:30:38 richard Exp $
 
 import re, cgi, StringIO, urllib, Cookie, time, random, csv, codecs
 
@@ -148,6 +148,12 @@
         """
         self.fakeFilterVars()
         queryname = self.getQueryName()
+    
+        # editing existing query name?
+        old_queryname = ''
+        for key in ('@old-queryname', ':old-queryname'):
+            if self.form.has_key(key):
+                old_queryname = self.form[key].value.strip()
 
         # handle saving the query params
         if queryname:
@@ -162,7 +168,7 @@
             if key:
                 # edit the old way, only one query per name
                 try:
-                    qid = self.db.query.lookup(queryname)
+                    qid = self.db.query.lookup(old_queryname)
                     if not self.hasPermission('Edit', 'query', itemid=qid):
                         raise exceptions.Unauthorised, self._(
                             "You do not have permission to edit queries")
@@ -178,23 +184,24 @@
                 # edit the new way, query name not a key any more
                 # see if we match an existing private query
                 uid = self.db.getuid()
-                qids = self.db.query.filter(None, {'name': queryname,
+                qids = self.db.query.filter(None, {'name': old_queryname,
                         'private_for': uid})
                 if not qids:
                     # ok, so there's not a private query for the current user
-                    # - see if there's a public one created by them
-                    qids = self.db.query.filter(None, {'name': queryname,
-                        'private_for': -1, 'creator': uid})
+                    # - see if there's one created by them
+                    qids = self.db.query.filter(None, {'name': old_queryname,
+                        'creator': uid})
 
                 if qids:
                     # edit query - make sure we get an exact match on the name
                     for qid in qids:
-                        if queryname != self.db.query.get(qid, 'name'):
+                        if old_queryname != self.db.query.get(qid, 'name'):
                             continue
                         if not self.hasPermission('Edit', 'query', itemid=qid):
                             raise exceptions.Unauthorised, self._(
                             "You do not have permission to edit queries")
-                        self.db.query.set(qid, klass=self.classname, url=url)
+                        self.db.query.set(qid, klass=self.classname,
+                            url=url, name=queryname)
                 else:
                     # create a query
                     if not self.hasPermission('Create', 'query'):
@@ -239,10 +246,9 @@
 
             self.form.value.append(cgi.MiniFieldStorage('@filter', key))
 
-    FV_QUERYNAME = re.compile(r'[@:]queryname')
     def getQueryName(self):
-        for key in self.form.keys():
-            if self.FV_QUERYNAME.match(key):
+        for key in ('@queryname', ':queryname'):
+            if self.form.has_key(key):
                 return self.form[key].value.strip()
         return ''
 

Roundup Issue Tracker: http://roundup-tracker.org/