Exemplo n.º 1
0
    def test_with_foreign_keys_parameter(
        self,
        session,
        User,
        Article,
        BlogPost
    ):
        user = User(first_name=u'John')
        objects = [
            Article(author=user),
            Article(),
            Article(owner=user),
            Article(author=user, owner=user),
            BlogPost(owner=user)
        ]
        session.add_all(objects)
        session.commit()

        deps = list(
            dependent_objects(
                user,
                (
                    fk for fk in get_referencing_foreign_keys(User)
                    if fk.ondelete == 'RESTRICT' or fk.ondelete is None
                )
            ).limit(5)
        )
        assert len(deps) == 2
        assert objects[0] in deps
        assert objects[3] in deps
    def test_with_foreign_keys_parameter(self):
        user = self.User(first_name=u"John")
        objects = [
            self.Article(author=user),
            self.Article(),
            self.Article(owner=user),
            self.Article(author=user, owner=user),
            self.BlogPost(owner=user),
        ]
        self.session.add_all(objects)
        self.session.commit()

        deps = list(
            dependent_objects(
                user,
                (
                    fk
                    for fk in get_referencing_foreign_keys(self.User)
                    if fk.ondelete == "RESTRICT" or fk.ondelete is None
                ),
            ).limit(5)
        )
        assert len(deps) == 2
        assert objects[0] in deps
        assert objects[3] in deps
 def test_with_many_dependencies(self):
     user = self.User(first_name=u"John")
     objects = [self.Article(author=user), self.BlogPost(author=user)]
     self.session.add_all(objects)
     self.session.commit()
     deps = list(dependent_objects(user))
     assert len(deps) == 2
 def test_with_many_dependencies(self, session, User, Article, BlogPost):
     user = User(first_name=u'John')
     objects = [Article(author=user), BlogPost(author=user)]
     session.add_all(objects)
     session.commit()
     deps = list(dependent_objects(user))
     assert len(deps) == 2
Exemplo n.º 5
0
    def output(self):
        # Tasks can only have one database target output. Sorry!
        if self.output_pk is None:
            return None

        for instance in dependent_objects(self.output_interface):
            if not isinstance(instance, self.__class__):
                return instance
    def test_returns_all_dependent_objects(self):
        user = self.User(first_name=u"John", last_name=u"Smith")
        articles = [self.Article(author=user), self.Article(), self.Article(), self.Article(author=user)]
        self.session.add_all(articles)
        self.session.commit()

        deps = list(dependent_objects(user))
        assert len(deps) == 2
        assert articles[0] in deps
        assert articles[3] in deps
    def test_returns_all_dependent_objects(self, session, User, Article):
        user = User(first_name=u"John")
        articles = [Article(author=user), Article(), Article(owner=user), Article(author=user, owner=user)]
        session.add_all(articles)
        session.commit()

        deps = list(dependent_objects(user))
        assert len(deps) == 3
        assert articles[0] in deps
        assert articles[2] in deps
        assert articles[3] in deps
    def test_returns_all_dependent_objects(self, session, User, Article):
        user = User(first_name=u'John', last_name=u'Smith')
        articles = [
            Article(author=user),
            Article(),
            Article(),
            Article(author=user)
        ]
        session.add_all(articles)
        session.commit()

        deps = list(dependent_objects(user))
        assert len(deps) == 2
        assert articles[0] in deps
        assert articles[3] in deps
    def test_returns_all_dependent_objects(self):
        category1 = self.Category(name=u'Category #1')
        category2 = self.Category(name=u'Category #2')
        articles = [
            self.Article(category=category1),
            self.Article(category=category1),
            self.Article(category=category2),
            self.Article(category=category2),
        ]
        self.session.add_all(articles)
        self.session.commit()

        deps = list(dependent_objects(category1))
        assert len(deps) == 2
        assert articles[0] in deps
        assert articles[1] in deps
Exemplo n.º 10
0
    def test_returns_all_dependent_objects(self):
        user = self.User(first_name=u'John')
        articles = [
            self.Article(author=user),
            self.Article(),
            self.Article(owner=user),
            self.Article(author=user, owner=user)
        ]
        self.session.add_all(articles)
        self.session.commit()

        deps = list(dependent_objects(user))
        assert len(deps) == 3
        assert articles[0] in deps
        assert articles[2] in deps
        assert articles[3] in deps
    def test_returns_all_dependent_objects(self, session, Category, Article):
        category1 = Category(name=u'Category #1')
        category2 = Category(name=u'Category #2')
        articles = [
            Article(category=category1),
            Article(category=category1),
            Article(category=category2),
            Article(category=category2),
        ]
        session.add_all(articles)
        session.commit()

        deps = list(dependent_objects(category1))
        assert len(deps) == 2
        assert articles[0] in deps
        assert articles[1] in deps
    def test_returns_all_dependent_objects(self, session, Category, Article):
        category1 = Category(name=u"Category #1")
        category2 = Category(name=u"Category #2")
        articles = [
            Article(category=category1),
            Article(category=category1),
            Article(category=category2),
            Article(category=category2),
        ]
        session.add_all(articles)
        session.commit()

        deps = list(dependent_objects(category1))
        assert len(deps) == 2
        assert articles[0] in deps
        assert articles[1] in deps
Exemplo n.º 13
0
    def can_be_deleted(self) -> bool:
        """
        Simple helper to check if the instance has entities
        that will prevent this from being deleted via a protected foreign key.
        """

        deps = list(
            dependent_objects(
                self,
                (
                    fk for fk in get_referencing_foreign_keys(self.__class__)
                    # On most databases RESTRICT is the default mode hence we
                    # check for None values also
                    if fk.ondelete == "RESTRICT" or fk.ondelete is None),
            ).limit(1))

        return not deps
Exemplo n.º 14
0
 def serialize(self):
     Dependents = list(dependent.serialize
                       for dependent in dependent_objects(self))
     print(Dependents)
     return {'name': self.name, 'id': self.id, 'menu': Dependents}
 def test_with_bad_foreign_keys(self, session, Article, BlogPost):
     post = BlogPost()
     with pytest.raises(ValueError):
         dependent_objects(post,
                           foreign_keys=Article.__table__.foreign_keys)
Exemplo n.º 16
0
 def referenced_task_instances(self):
     """ A generator that yields tasks that point to this database output. """
     for instance in dependent_objects(self):
         if isinstance(instance, TaskInstance):
             yield instance
Exemplo n.º 17
0
 def _output_dependent_objects(self):
     if self.output_interface is not None:
         yield from dependent_objects(self.output_interface)
Exemplo n.º 18
0
def get_hard_dependencies(element, model, limit):
    return list(dependent_objects(element).limit(DEPS_LIMIT))