예제 #1
0
    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))
예제 #2
0
    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)