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
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
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
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
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)
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
def _output_dependent_objects(self): if self.output_interface is not None: yield from dependent_objects(self.output_interface)
def get_hard_dependencies(element, model, limit): return list(dependent_objects(element).limit(DEPS_LIMIT))