def _getBranchVisibilityExpression(self, branch_class=Branch):
        """Return the where clauses for visibility.

        :param branch_class: The Branch class to use - permits using
            ClassAliases.
        """
        return get_branch_privacy_filter(self._user, branch_class=branch_class)
    def _getBranchVisibilityExpression(self, branch_class=Branch):
        """Return the where clauses for visibility.

        :param branch_class: The Branch class to use - permits using
            ClassAliases.
        """
        return get_branch_privacy_filter(self._user, branch_class=branch_class)
Beispiel #3
0
    def run(self):
        """See `IRemoveArtifactSubscriptionsJob`."""
        logger = logging.getLogger()
        logger.info(self.getOperationDescription())

        bug_filters = []
        branch_filters = []
        specification_filters = []

        if self.branch_ids:
            branch_filters.append(Branch.id.is_in(self.branch_ids))
        if self.specification_ids:
            specification_filters.append(Specification.id.is_in(self.specification_ids))
        if self.bug_ids:
            bug_filters.append(BugTaskFlat.bug_id.is_in(self.bug_ids))
        else:
            if self.information_types:
                bug_filters.append(BugTaskFlat.information_type.is_in(self.information_types))
                branch_filters.append(Branch.information_type.is_in(self.information_types))
                specification_filters.append(Specification.information_type.is_in(self.information_types))
            if self.product:
                bug_filters.append(BugTaskFlat.product == self.product)
                branch_filters.append(Branch.product == self.product)
                specification_filters.append(Specification.product == self.product)
            if self.distro:
                bug_filters.append(BugTaskFlat.distribution == self.distro)
                branch_filters.append(Branch.distribution == self.distro)
                specification_filters.append(Specification.distribution == self.distro)

        if self.grantee:
            bug_filters.append(
                In(
                    BugSubscription.person_id,
                    Select(TeamParticipation.personID, where=TeamParticipation.team == self.grantee),
                )
            )
            branch_filters.append(
                In(
                    BranchSubscription.personID,
                    Select(TeamParticipation.personID, where=TeamParticipation.team == self.grantee),
                )
            )
            specification_filters.append(
                In(
                    SpecificationSubscription.personID,
                    Select(TeamParticipation.personID, where=TeamParticipation.team == self.grantee),
                )
            )

        if bug_filters:
            bug_filters.append(Not(Or(*get_bug_privacy_filter_terms(BugSubscription.person_id))))
            bug_subscriptions = (
                IStore(BugSubscription)
                .using(BugSubscription, Join(BugTaskFlat, BugTaskFlat.bug_id == BugSubscription.bug_id))
                .find(BugSubscription, *bug_filters)
                .config(distinct=True)
            )
            for sub in bug_subscriptions:
                sub.bug.unsubscribe(sub.person, self.requestor, ignore_permissions=True)
        if branch_filters:
            branch_filters.append(Not(Or(*get_branch_privacy_filter(BranchSubscription.personID))))
            branch_subscriptions = (
                IStore(BranchSubscription)
                .using(BranchSubscription, Join(Branch, Branch.id == BranchSubscription.branchID))
                .find(BranchSubscription, *branch_filters)
                .config(distinct=True)
            )
            for sub in branch_subscriptions:
                sub.branch.unsubscribe(sub.person, self.requestor, ignore_permissions=True)
        if specification_filters:
            specification_filters.append(Not(*get_specification_privacy_filter(SpecificationSubscription.personID)))
            tables = (
                SpecificationSubscription,
                Join(Specification, Specification.id == SpecificationSubscription.specificationID),
            )
            specifications_subscriptions = (
                IStore(SpecificationSubscription)
                .using(*tables)
                .find(SpecificationSubscription, *specification_filters)
                .config(distinct=True)
            )
            for sub in specifications_subscriptions:
                sub.specification.unsubscribe(sub.person, self.requestor, ignore_permissions=True)
 def _getBranchVisibilityExpression(self, branch_class=Branch):
     """Return the where clauses for visibility."""
     return get_branch_privacy_filter(None, branch_class=branch_class)
 def _getBranchVisibilityExpression(self, branch_class=Branch):
     """Return the where clauses for visibility."""
     return get_branch_privacy_filter(None, branch_class=branch_class)
Beispiel #6
0
    def run(self):
        """See `IRemoveArtifactSubscriptionsJob`."""
        logger = logging.getLogger()
        logger.info(self.getOperationDescription())

        bug_filters = []
        branch_filters = []
        specification_filters = []

        if self.branch_ids:
            branch_filters.append(Branch.id.is_in(self.branch_ids))
        if self.specification_ids:
            specification_filters.append(
                Specification.id.is_in(self.specification_ids))
        if self.bug_ids:
            bug_filters.append(BugTaskFlat.bug_id.is_in(self.bug_ids))
        else:
            if self.information_types:
                bug_filters.append(
                    BugTaskFlat.information_type.is_in(self.information_types))
                branch_filters.append(
                    Branch.information_type.is_in(self.information_types))
                specification_filters.append(
                    Specification.information_type.is_in(
                        self.information_types))
            if self.product:
                bug_filters.append(BugTaskFlat.product == self.product)
                branch_filters.append(Branch.product == self.product)
                specification_filters.append(
                    Specification.product == self.product)
            if self.distro:
                bug_filters.append(BugTaskFlat.distribution == self.distro)
                branch_filters.append(Branch.distribution == self.distro)
                specification_filters.append(
                    Specification.distribution == self.distro)

        if self.grantee:
            bug_filters.append(
                In(
                    BugSubscription.person_id,
                    Select(TeamParticipation.personID,
                           where=TeamParticipation.team == self.grantee)))
            branch_filters.append(
                In(
                    BranchSubscription.personID,
                    Select(TeamParticipation.personID,
                           where=TeamParticipation.team == self.grantee)))
            specification_filters.append(
                In(
                    SpecificationSubscription.personID,
                    Select(TeamParticipation.personID,
                           where=TeamParticipation.team == self.grantee)))

        if bug_filters:
            bug_filters.append(
                Not(
                    Or(*get_bug_privacy_filter_terms(
                        BugSubscription.person_id))))
            bug_subscriptions = IStore(BugSubscription).using(
                BugSubscription,
                Join(BugTaskFlat,
                     BugTaskFlat.bug_id == BugSubscription.bug_id)).find(
                         BugSubscription, *bug_filters).config(distinct=True)
            for sub in bug_subscriptions:
                sub.bug.unsubscribe(sub.person,
                                    self.requestor,
                                    ignore_permissions=True)
        if branch_filters:
            branch_filters.append(
                Not(Or(
                    *get_branch_privacy_filter(BranchSubscription.personID))))
            branch_subscriptions = IStore(BranchSubscription).using(
                BranchSubscription,
                Join(Branch, Branch.id == BranchSubscription.branchID)).find(
                    BranchSubscription, *branch_filters).config(distinct=True)
            for sub in branch_subscriptions:
                sub.branch.unsubscribe(sub.person,
                                       self.requestor,
                                       ignore_permissions=True)
        if specification_filters:
            specification_filters.append(
                Not(*get_specification_privacy_filter(
                    SpecificationSubscription.personID)))
            tables = (SpecificationSubscription,
                      Join(
                          Specification, Specification.id ==
                          SpecificationSubscription.specificationID))
            specifications_subscriptions = IStore(
                SpecificationSubscription).using(*tables).find(
                    SpecificationSubscription,
                    *specification_filters).config(distinct=True)
            for sub in specifications_subscriptions:
                sub.specification.unsubscribe(sub.person,
                                              self.requestor,
                                              ignore_permissions=True)