def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): ref_columns = referred_cls.__table__.columns if direction is ONETOMANY and 'created_at' in ref_columns: kw['order_by'] = ref_columns.created_at return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction is interfaces.ONETOMANY: kw["cascade"] = "all, delete-orphan" # Add cascade behaviour on deletion return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction is ONETOMANY: kw['order_by'] = referred_cls.__table__.columns.created_at return generate_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(self, base, direction, return_fn, attrname, local_cls, referred_cls, **kw): kw["lazy"] = "noload" kw["cascade"] = "all" kw["post_update"] = True return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw): mock(base, direction, attrname) return generate_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): # Disable type check for many-to-many relationships if direction is MANYTOMANY: kw['enable_typechecks'] = False return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction is interfaces.ONETOMANY: kw["cascade"] = "all, delete-orphan" kw["passive_deletes"] = True # make use of the built-in function to actually # return # the result. return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction is interfaces.ONETOMANY: kw['cascade'] = '' kw['passive_deletes'] = False # make use of the built-in function to actually return # the result. return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def custom_generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): # NOTE: Not in use at the moment if direction is interfaces.ONETOMANY: kw["cascade"] = "all, delete-orphan" kw["passive_deletes"] = True return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kwargs): """ Maps relationship between tables. This override force the ORM to follow the Postgres ON DELETE behavior: ORM policy will be reflected from the database schema level. """ if direction is interfaces.ONETOMANY: kwargs['cascade'] = 'all, delete-orphan' # delete orphan element in current session kwargs['passive_deletes'] = True # follow postgres policy for ON DELETE events return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kwargs)
def custom_generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): """ Skips creating backwards relations to avoid adding instances twice with session.merge """ # disabling type checks on all relations, allowing to flush subclasses instead of abstract classes in relations # without requiring to configure polymorphism kw["enable_typechecks"] = False return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): #Disable type check for many-to-many relationships if direction is MANYTOMANY: kw['enable_typechecks'] = False elif direction is ONETOMANY: kw['cascade'] = 'all, delete-orphan' return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw ): support_schemas = ["vocabulary", "core_view"] if ( local_cls.__table__.schema in support_schemas and referred_cls.__table__.schema is None ): # Don't create relationships on vocabulary and core_view models back to the main schema return return generate_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw )
def _gen_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw ): mock(base, direction, attrname) return generate_relationship( base, direction, return_fn, attrname, local_cls, referred_cls, **kw )
def _generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): ''' 用于生成 relationship、backref 的函数。 目前因为全部采用dynamic 的方式惰性求值,所以需要重载many to many 的连接,增加lazy=dynamic 的属性 #todo: 考虑之后添加更多的order_by 属性 :param base: :param direction: :param return_fn: :param attrname: :param local_cls: :param referred_cls: :param kw: :return: ''' if direction is MANYTOMANY: kw.update(lazy='dynamic') return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction not in (interfaces.MANYTOONE,): kw['lazy'] = 'dynamic' return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def custom_generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): rnd = get_random_string(4) attrname = attrname + '_jet_ref' + rnd return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)
def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if direction not in (interfaces.MANYTOONE, ): kw['lazy'] = 'dynamic' return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw)