formdef: avoid duplicated url_name
This commit is contained in:
parent
ebe3e94fde
commit
69100dd066
|
@ -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', {}):
|
||||
|
|
Loading…
Reference in New Issue