def validateStep(self, data): if data.get('product'): try: validate_new_target(self.context.bug, data.get('product')) except IllegalTarget as e: self.setFieldError('product', e[0]) return entered_product = self.request.form.get(self.widgets['product'].name) if not entered_product: return # The user has entered a product name but we couldn't find it. # Tell the user to search for it using the popup widget as it'll allow # the user to register a new product if the one he is looking for is # not yet registered. widget_link_id = self.widgets['product'].show_widget_id self.setFieldError( 'product', structured(""" There is no project in Launchpad named "%s". Please <a href="/projects" onclick="LPJS.use('event').Event.simulate( document.getElementById('%s'), 'click'); return false;" >search for it</a> as it may be registered with a different name.""", entered_product, widget_link_id))
def validateStep(self, data): """Check that 1. there's no bug_url if the target uses malone; 2. there is a package with the given name; 3. it's possible to create a new task for the given package/distro. """ target = self.getTarget(data) bug_url = data.get('bug_url') if bug_url and target.bug_tracking_usage == ServiceUsage.LAUNCHPAD: self.addError( "Bug watches can not be added for %s, as it uses Launchpad" " as its official bug tracker. Alternatives are to add a" " watch for another project, or a comment containing a" " URL to the related bug report." % target.displayname) distribution = data.get('distribution') sourcepackagename = data.get('sourcepackagename') entered_package = self.request.form.get( self.widgets['sourcepackagename'].name) if sourcepackagename is None and entered_package: # The entered package doesn't exist. if distribution.has_published_binaries: binary_tracking = '' else: binary_tracking = structured( ' Launchpad does not track binary package names ' 'in %s.', distribution.displayname) error = structured( 'There is no package in %s named "%s".%s', distribution.displayname, entered_package, binary_tracking) self.setFieldError('sourcepackagename', error) elif not IDistributionSourcePackage.providedBy(sourcepackagename): try: target = distribution if sourcepackagename: target = target.getSourcePackage(sourcepackagename) # The validity of the source package has already been checked # by the bug target widget. validate_new_target( self.context.bug, target, check_source_package=False) if sourcepackagename: data['sourcepackagename'] = target except IllegalTarget as e: if sourcepackagename: self.setFieldError('sourcepackagename', e[0]) else: self.setFieldError('distribution', e[0]) super(DistroBugTaskCreationStep, self).validateStep(data)