formdef: avoid duplicated url_name

This commit is contained in:
Frédéric Péters 2013-02-22 11:30:08 +01:00 committed by Thomas NOEL
parent ebe3e94fde
commit 69100dd066
1 changed files with 17 additions and 2 deletions

View File

@ -103,7 +103,7 @@ class FormDef(StorableObject):
except ValueError:
self.url_name = self.id
else:
self.url_name = simplify(self.name)
self.url_name = self.get_new_url_name()
changed = True
if self.fields and type(self.fields[0]) is dict:
@ -153,8 +153,23 @@ class FormDef(StorableObject):
setattr(sys.modules['wcs.formdef'], self.url_name.title(), cls)
return cls
def store(self):
def get_new_url_name(self):
new_url_name = simplify(self.name)
base_new_url_name = new_url_name
suffix_no = 0
while True:
try:
formdef = self.get_by_urlname(new_url_name)
except KeyError:
break
if formdef.id == self.id:
break
suffix_no += 1
new_url_name = '%s-%s' % (base_new_url_name, suffix_no)
return new_url_name
def store(self):
new_url_name = self.get_new_url_name()
if not self.url_name:
self.url_name = new_url_name
if get_publisher().has_site_option('postgresql') and get_cfg('postgresql', {}):