Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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
    )
Ejemplo n.º 15
0
 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
     )
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
 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)
Ejemplo n.º 19
0
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)