Adding a spec with an existing name gives a traceback

Bug #3438 reported by Stuart Bishop
8
Affects Status Importance Assigned to Milestone
Launchpad itself
New
Medium
Unassigned

Bug Description

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)

Curtis Hovey (sinzui)
visibility: private → public
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.