formdef: avoid duplicated url_name
This commit is contained in:
parent
ebe3e94fde
commit
69100dd066
|
@ -103,7 +103,7 @@ class FormDef(StorableObject):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
self.url_name = self.id
|
self.url_name = self.id
|
||||||
else:
|
else:
|
||||||
self.url_name = simplify(self.name)
|
self.url_name = self.get_new_url_name()
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
if self.fields and type(self.fields[0]) is dict:
|
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)
|
setattr(sys.modules['wcs.formdef'], self.url_name.title(), cls)
|
||||||
return cls
|
return cls
|
||||||
|
|
||||||
def store(self):
|
def get_new_url_name(self):
|
||||||
new_url_name = simplify(self.name)
|
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:
|
if not self.url_name:
|
||||||
self.url_name = new_url_name
|
self.url_name = new_url_name
|
||||||
if get_publisher().has_site_option('postgresql') and get_cfg('postgresql', {}):
|
if get_publisher().has_site_option('postgresql') and get_cfg('postgresql', {}):
|
||||||
|
|
Loading…
Reference in New Issue