~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/model/bugtracker.py

[r=benji][bug=795573,
 796233] On DistroSeries:+localpackagediffs ensure that the comment
 form is hidden after adding a new comment to a DistroSeriesDifference,
 prevent empty comments from being submitted,
 and add some animations and effects to make the UI less jarring and easier to
 follow.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2009 Canonical Ltd.  This software is licensed under the
 
1
# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
3
3
 
4
4
# pylint: disable-msg=E0611,W0212
271
271
 
272
272
        if component_name is None:
273
273
            return None
 
274
        elif component_name.isdigit():
 
275
            component_id = int(component_name)
 
276
            return Store.of(self).find(
 
277
                BugTrackerComponent,
 
278
                BugTrackerComponent.id == component_id,
 
279
                BugTrackerComponent.component_group == self.id).one()
274
280
        else:
275
281
            return Store.of(self).find(
276
282
                BugTrackerComponent,
277
 
                (BugTrackerComponent.name == component_name)).one()
 
283
                BugTrackerComponent.name == component_name,
 
284
                BugTrackerComponent.component_group == self.id).one()
278
285
 
279
286
    def addCustomComponent(self, component_name):
280
287
        """Adds a component locally that isn't synced from a remote tracker
680
687
        """See `IBugTracker`."""
681
688
        component_group = None
682
689
        store = IStore(BugTrackerComponentGroup)
683
 
        component_group = store.find(
684
 
            BugTrackerComponentGroup,
685
 
            name = component_group_name).one()
 
690
        if component_group_name.isdigit():
 
691
            component_group_id = int(component_group_name)
 
692
            component_group = store.find(
 
693
                BugTrackerComponentGroup,
 
694
                BugTrackerComponentGroup.id == component_group_id).one()
 
695
        else:
 
696
            component_group = store.find(
 
697
                BugTrackerComponentGroup,
 
698
                BugTrackerComponentGroup.name == component_group_name).one()
686
699
        return component_group
687
700
 
 
701
    def getRemoteComponentForDistroSourcePackageName(
 
702
        self, distribution, sourcepackagename):
 
703
        """See `IBugTracker`."""
 
704
        if distribution is None:
 
705
            return None
 
706
        dsp = distribution.getSourcePackage(sourcepackagename)
 
707
        if dsp is None:
 
708
            return None
 
709
        return Store.of(self).find(
 
710
            BugTrackerComponent,
 
711
            BugTrackerComponent.distribution == distribution.id,
 
712
            BugTrackerComponent.source_package_name ==
 
713
                dsp.sourcepackagename.id).one()
 
714
 
688
715
 
689
716
class BugTrackerSet:
690
717
    """Implements IBugTrackerSet for a container or set of BugTrackers,
751
778
        # Without context, cannot tell what store flavour is desirable.
752
779
        store = getUtility(IStoreSelector).get(MAIN_STORE, DEFAULT_FLAVOR)
753
780
        if active is not None:
754
 
            clauses = [BugTracker.active==active]
 
781
            clauses = [BugTracker.active == active]
755
782
        else:
756
783
            clauses = []
757
784
        results = store.find(BugTracker, *clauses)