I get a traceback instead of a validation error when I try to add a spec with the same name as an existing one:
Traceback (innermost last):
* Module zope.publisher.publish, line 138, in publish
result = publication.callObject(request, object)
* Module zope.app.publication.zopepublication, line 161, in callObject
return mapply(ob, request.getPositionalArguments(), request)
* Module zope.publisher.publish, line 113, in mapply
return debug_call(object, args)
__traceback_info__: <security proxied zope.app.pagetemplate.simpleviewclass.SimpleViewClass from /srv/launchpad.net/production/launchpad/lib/canonical/launchpad/templates/specification-add.pt instance at 0x8558910>
* Module zope.publisher.publish, line 119, in debug_call
return object(*args)
* Module zope.app.pagetemplate.simpleviewclass, line 45, in __call__
return self.index(*args, **kw)
* Module zope.app.pagetemplate.viewpagetemplatefile, line 80, in __call__
return self.im_func(im_self, *args, **kw)
* Module zope.app.pagetemplate.viewpagetemplatefile, line 49, in __call__
sourceAnnotations=debug_flags.sourceAnnotations)
* Module zope.pagetemplate.pagetemplate, line 120, in pt_render
strictinsert=0, sourceAnnotations=sourceAnnotations)()
* Module zope.tal.talinterpreter, line 236, in __call__
self.interpret(self.program)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 788, in do_useMacro
self.interpret(macro)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 484, in do_optTag_tal
self.do_optTag(stuff)
* Module zope.tal.talinterpreter, line 469, in do_optTag
return self.no_tag(start, program)
* Module zope.tal.talinterpreter, line 464, in no_tag
self.interpret(program)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 813, in do_defineSlot
self.interpret(slot)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 788, in do_useMacro
self.interpret(macro)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 762, in do_defineMacro
self.interpret(macro)
* Module zope.tal.talinterpreter, line 311, in interpret
handlers[opcode](self, args)
* Module zope.tal.talinterpreter, line 534, in do_setLocal_tal
self.engine.setLocal(name, self.engine.evaluateValue(expr))
* Module zope.tales.tales, line 698, in evaluate
return expression(self)
/srv/launchpad.net/production/launchpad/lib/canonical/launchpad/templates/launchpad-addform.pt
Line 38, Column 8
Expression: <PathExpr standard:'view/update'>
- Names:
{'args': (),
'context': <Product at 0x8558a50>,
'default': <object object at 0x2a955c01d0>,
'loop': {},
'nothing': None,
'options': {},
'repeat': {},
'request': <canonical.launchpad.webapp.servers.LaunchpadBrowserRequest instance URL=https://launchpad.net/products/launchpad/+addspec>,
'template': <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object at 0x2a9f6275d0>,
'usage': <zope.pagetemplate.pagetemplate.TemplateUsage object at 0x9b7a550>,
'view': <zope.app.pagetemplate.simpleviewclass.SimpleViewClass from /srv/launchpad.net/production/launchpad/lib/canonical/launchpad/templates/specification-add.pt object at 0x8558910>,
'views': <zope.app.pagetemplate.viewpagetemplatefile.ViewMapper object at 0x9b7a750>}
* Module zope.tales.expressions, line 204, in __call__
return self._eval(econtext)
* Module zope.tales.expressions, line 198, in _eval
return ob()
* Module zope.app.form.browser.add, line 59, in update
self.createAndAdd(data)
* Module canonical.launchpad.browser.addview, line 55, in createAndAdd
content = self.create(*args, **kw)
* Module canonical.launchpad.browser.specification, line 206, in create
approver=approver)
* Module canonical.launchpad.database.specification, line 248, in new
whiteboard=whiteboard)
* Module sqlobject.main, line 912, in __init__
self._create(id, **kw)
* Module sqlobject.main, line 945, in _create
self._SO_finishCreate(id)
* Module sqlobject.main, line 969, in _SO_finishCreate
id, names, values)
* Module sqlobject.dbconnection, line 629, in queryInsertID
return self._dbConnection._queryInsertID(
* Module sqlobject.postgres.pgconnection, line 93, in _queryInsertID
c.execute(q)
* Module zope.app.rdb, line 283, in execute
return self.cursor.execute(operation)
* Module canonical.database.adapter, line 134, in execute
return self._cur.execute(*args, **kwargs)
IntegrityError: ERROR: duplicate key violates unique constraint "specification_product_name_uniq" INSERT INTO Specification (id, status, productseries, assignee, distribution, approver, specurl, owner, datecreated, product, name, drafter, title, distrorelease, whiteboard, summary, priority, milestone) VALUES (199, 40, NULL, NULL, NULL, NULL, 'https://wiki.launchpad.canonical.com/PersonNameBlacklist', 78, DEFAULT, 205, 'person-name-blacklist', 78, 'Person Name Blacklist', NULL, NULL, 'Ubuntites are getting $<email address hidden> email addresses. We need a list of illegal names to stop social attacks and to reserve legacy email addresses.', 50, NULL)