Untitled

 avatar
unknown
plain_text
5 months ago
2.0 kB
4
Indexable
stmt = (
    info.context.session.query(Product)

    # Joining related tables based on your view logic
    .join(ProductCountry, Product.id == ProductCountry.id)
    .join(UsersCountry, ProductCountry.country_id == UsersCountry.country_id)
    .join(UsersTherapeutic, Product.th_area == UsersTherapeutic.ta_id)

    # Filter to ensure data consistency for the current user
    .filter(UsersCountry.user_id == info.context.current_user.id)
    .filter(UsersTherapeutic.user_id == info.context.current_user.id)

    # Checking active records and non-deleted status
    .filter(Product.is_deleted == 0)
    .filter(Product.last_active == 1)

    # Apply the downstream view filters for publishing and record state
    .outerjoin(DownstreamRecordView, Product.mdm_id == DownstreamRecordView.mdm_id_2)
    .outerjoin(DownstreamPublish, Product.record_id == DownstreamPublish.record_id)

    .filter(
        or_(
            Product.last_active > 0,
            Product.current_record == 1,
            Product.is_deleted == 1,
        )
    )

    # Project specific columns into the query based on view
    .add_columns(
        Product.record_id.label('RECORD_ID'),
        Product.mdm_id.label('MDM_ID'),
        Product.series_id.label('SERIES_ID'),
        Product.reltio_id.label('RELTIO_ID'),
        Product.country_id.label('COUNTRY_ID'),
        Product.product_name.label('PRODUCT_NAME'),
        Product.group_type.label('GROUP_TYPE'),
        Product.janssen_mstr_prdct_nm.label('JANSSEN_MSTR_PRDCT_NM'),
        Product.product_phase.label('PRODUCT_PHASE'),
        Product.generic_name.label('GENERIC_NAME'),
        Product.jnj_flag.label('JNJ_FLAG'),
        Product.th_area.label('TH_AREA'),
        Product.product_status.label('PRODUCT_STATUS'),
        Product.ta_name.label('TA_NAME'),
        DownstreamRecordView.dwn_7.label('DWN_7'),
        DownstreamRecordView.dwn_8.label('DWN_8'),
        case(
            [(DownstreamPublish.record_id.isnot(None), 'Yes')],
            else_='No'
        ).label('PUBLISHED'),
    )
)
Editor is loading...
Leave a Comment