diff --git a/wcs/formdef.py b/wcs/formdef.py index 4e21f7e42..10e67464e 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -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', {}):