From 70e35e94893791481e4cdb3b8100edd04819928c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Grom?= Date: Mon, 28 Sep 2026 22:23:59 +0100 Subject: [PATCH 1/3] feat: hide affiliation-blocked organizations from org pages and leaderboard links (IN-1399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gašper Grom --- services/libs/tinybird/datasources/organizations.datasource | 2 ++ .../datasources/organizations_populated_slug.datasource | 1 + .../libs/tinybird/pipes/leaderboards_organizations.pipe | 2 +- .../libs/tinybird/pipes/org_page_activities_timeseries.pipe | 4 +++- services/libs/tinybird/pipes/org_page_contributors.pipe | 4 +++- .../tinybird/pipes/org_page_contributors_timeseries.pipe | 4 +++- services/libs/tinybird/pipes/org_page_kpis.pipe | 4 +++- services/libs/tinybird/pipes/org_page_profile.pipe | 4 +++- services/libs/tinybird/pipes/org_page_projects.pipe | 4 +++- services/libs/tinybird/pipes/organizations_filtered.pipe | 1 + services/libs/tinybird/pipes/organizations_leaderboard.pipe | 6 +++--- .../libs/tinybird/pipes/organizations_populate_slug.pipe | 4 ++++ 12 files changed, 30 insertions(+), 10 deletions(-) diff --git a/services/libs/tinybird/datasources/organizations.datasource b/services/libs/tinybird/datasources/organizations.datasource index b942af1cbf..752c106092 100644 --- a/services/libs/tinybird/datasources/organizations.datasource +++ b/services/libs/tinybird/datasources/organizations.datasource @@ -11,6 +11,7 @@ DESCRIPTION > - `employees` is the number of employees in the organization (0 default if unknown). - `createdAt` and `updatedAt` are standard timestamp fields for record lifecycle tracking. - `isTeamOrganization` flag indicates whether this organization is part of the project team (UInt8 boolean, 0 default). + - `isAffiliationBlocked` flag indicates the organization is blocked from affiliations and must not get an Insights page (UInt8 boolean, 0 default). - `type` specifies the organization type (company, nonprofit, government, etc., empty string if not specified). - `size` describes the organization size category: "1-10", "501-1000", "1001-5000", "5001-10000", "10001+" (empty string if not specified). - `headline` is a brief description or tagline for the organization (empty string if not provided). @@ -28,6 +29,7 @@ SCHEMA > `createdAt` DateTime64(3) `json:$.record.createdAt`, `updatedAt` DateTime64(3) `json:$.record.updatedAt`, `isTeamOrganization` UInt8 `json:$.record.isTeamOrganization` DEFAULT 0, + `isAffiliationBlocked` UInt8 `json:$.record.isAffiliationBlocked` DEFAULT 0, `type` String `json:$.record.type` DEFAULT '', `size` String `json:$.record.size` DEFAULT '', `headline` String `json:$.record.headline` DEFAULT '', diff --git a/services/libs/tinybird/datasources/organizations_populated_slug.datasource b/services/libs/tinybird/datasources/organizations_populated_slug.datasource index db296f0081..d597c7ed61 100644 --- a/services/libs/tinybird/datasources/organizations_populated_slug.datasource +++ b/services/libs/tinybird/datasources/organizations_populated_slug.datasource @@ -26,6 +26,7 @@ SCHEMA > `createdAt` DateTime64(3), `updatedAt` DateTime64(3), `isTeamOrganization` UInt8 DEFAULT 0, + `isAffiliationBlocked` UInt8 DEFAULT 0, `type` String DEFAULT '', `size` String DEFAULT '', `headline` String DEFAULT '', diff --git a/services/libs/tinybird/pipes/leaderboards_organizations.pipe b/services/libs/tinybird/pipes/leaderboards_organizations.pipe index 8c8a275a93..1a119173cd 100644 --- a/services/libs/tinybird/pipes/leaderboards_organizations.pipe +++ b/services/libs/tinybird/pipes/leaderboards_organizations.pipe @@ -8,7 +8,7 @@ DESCRIPTION > Retrieves all organizations from the populated datasource, including slug for page links SQL > - SELECT o.id, o.displayName, o.logo, ops.slug + SELECT o.id, o.displayName, o.logo, if(o.isAffiliationBlocked = 1, '', ops.slug) AS slug FROM organizations o FINAL LEFT JOIN organizations_populated_slug ops ON o.id = ops.id diff --git a/services/libs/tinybird/pipes/org_page_activities_timeseries.pipe b/services/libs/tinybird/pipes/org_page_activities_timeseries.pipe index 5cc70a885b..ea3d0185fb 100644 --- a/services/libs/tinybird/pipes/org_page_activities_timeseries.pipe +++ b/services/libs/tinybird/pipes/org_page_activities_timeseries.pipe @@ -8,7 +8,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_activities_timeseries_data SQL > diff --git a/services/libs/tinybird/pipes/org_page_contributors.pipe b/services/libs/tinybird/pipes/org_page_contributors.pipe index 0286049f66..1d63c1785f 100644 --- a/services/libs/tinybird/pipes/org_page_contributors.pipe +++ b/services/libs/tinybird/pipes/org_page_contributors.pipe @@ -13,7 +13,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_contributors_activity_aggregates SQL > diff --git a/services/libs/tinybird/pipes/org_page_contributors_timeseries.pipe b/services/libs/tinybird/pipes/org_page_contributors_timeseries.pipe index f69fbb48a6..607c73bee7 100644 --- a/services/libs/tinybird/pipes/org_page_contributors_timeseries.pipe +++ b/services/libs/tinybird/pipes/org_page_contributors_timeseries.pipe @@ -8,7 +8,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_contributors_timeseries_data SQL > diff --git a/services/libs/tinybird/pipes/org_page_kpis.pipe b/services/libs/tinybird/pipes/org_page_kpis.pipe index 78cd009561..950b654819 100644 --- a/services/libs/tinybird/pipes/org_page_kpis.pipe +++ b/services/libs/tinybird/pipes/org_page_kpis.pipe @@ -9,7 +9,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_kpis_main SQL > diff --git a/services/libs/tinybird/pipes/org_page_profile.pipe b/services/libs/tinybird/pipes/org_page_profile.pipe index fc8d76665a..e9d24b9c65 100644 --- a/services/libs/tinybird/pipes/org_page_profile.pipe +++ b/services/libs/tinybird/pipes/org_page_profile.pipe @@ -9,7 +9,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_profile_base SQL > diff --git a/services/libs/tinybird/pipes/org_page_projects.pipe b/services/libs/tinybird/pipes/org_page_projects.pipe index 8f89a177bd..74d2c548ef 100644 --- a/services/libs/tinybird/pipes/org_page_projects.pipe +++ b/services/libs/tinybird/pipes/org_page_projects.pipe @@ -9,7 +9,9 @@ SQL > % SELECT id FROM organizations_populated_slug - WHERE slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + WHERE + slug = {{ String(orgSlug, '', description="Organization slug", required=True) }} + AND isAffiliationBlocked = 0 NODE org_page_projects_main SQL > diff --git a/services/libs/tinybird/pipes/organizations_filtered.pipe b/services/libs/tinybird/pipes/organizations_filtered.pipe index d6cacba9a7..4e09c9e83e 100644 --- a/services/libs/tinybird/pipes/organizations_filtered.pipe +++ b/services/libs/tinybird/pipes/organizations_filtered.pipe @@ -30,6 +30,7 @@ SQL > ON organizations_populated_slug.id = organizations_code_contributors.organizationId where 1 = 1 + AND organizations_populated_slug.isAffiliationBlocked = 0 {% if defined(slug) %} AND organizations_populated_slug.slug = {{ String(slug, description="Filter organization by slug", required=False) }} diff --git a/services/libs/tinybird/pipes/organizations_leaderboard.pipe b/services/libs/tinybird/pipes/organizations_leaderboard.pipe index c4ea670d92..d46ff8cf51 100644 --- a/services/libs/tinybird/pipes/organizations_leaderboard.pipe +++ b/services/libs/tinybird/pipes/organizations_leaderboard.pipe @@ -18,7 +18,7 @@ DESCRIPTION > - `offset`: Optional integer for result pagination, defaults to 0 - Response: - Count mode (`count=true`): `count` (total number of organizations) - - Data mode (default): `id`, `slug`, `logo`, `displayName`, `contributionCount`, `contributionPercentage` + - Data mode (default): `id`, `slug` (empty string for affiliation-blocked organizations), `logo`, `displayName`, `contributionCount`, `contributionPercentage` NODE organizations_leaderboard_paginated SQL > @@ -28,14 +28,14 @@ SQL > {% else %} SELECT org.id AS id, - org.slug AS slug, + if(org.isAffiliationBlocked = 1, '', org.slug) AS slug, org.logo AS logo, org.displayName AS displayName, COUNT(af.id) AS contributionCount, ROUND(COUNT(af.id) * 100.0 / SUM(COUNT(af.id)) OVER (), 2) AS contributionPercentage FROM activities_filtered af JOIN organizations_populated_slug org ON org.id = af.organizationId - GROUP BY org.id, org.slug, org.logo, org.displayName + GROUP BY org.id, org.slug, org.isAffiliationBlocked, org.logo, org.displayName ORDER BY contributionCount DESC, id desc LIMIT {{ Int32(limit, 10) }} OFFSET {{ Int32(offset, 0) }} diff --git a/services/libs/tinybird/pipes/organizations_populate_slug.pipe b/services/libs/tinybird/pipes/organizations_populate_slug.pipe index b9e01ae54d..11cd1c67d6 100644 --- a/services/libs/tinybird/pipes/organizations_populate_slug.pipe +++ b/services/libs/tinybird/pipes/organizations_populate_slug.pipe @@ -29,6 +29,7 @@ SQL > org.createdAt AS createdAt, org.updatedAt AS updatedAt, org.isTeamOrganization AS isTeamOrganization, + org.isAffiliationBlocked AS isAffiliationBlocked, org.type AS type, org.size AS size, org.headline AS headline, @@ -56,6 +57,7 @@ SQL > createdAt, updatedAt, isTeamOrganization, + isAffiliationBlocked, type, size, headline, @@ -84,6 +86,7 @@ SQL > createdAt, updatedAt, isTeamOrganization, + isAffiliationBlocked, type, size, headline, @@ -103,6 +106,7 @@ SQL > createdAt, updatedAt, isTeamOrganization, + isAffiliationBlocked, type, size, headline, From f37ff0ddd83ee27f84cdab5d4f4835a6f4878310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Grom?= Date: Mon, 28 Sep 2026 23:12:39 +0100 Subject: [PATCH 2/3] feat: hide affiliation-blocked organizations from org dashboard pipes (IN-1399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gašper Grom --- services/libs/tinybird/pipes/org_dash_activities_count.pipe | 1 + services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe | 1 + services/libs/tinybird/pipes/org_dash_contributors.pipe | 1 + services/libs/tinybird/pipes/org_dash_maintainers.pipe | 1 + services/libs/tinybird/pipes/org_dash_metrics.pipe | 1 + 5 files changed, 5 insertions(+) diff --git a/services/libs/tinybird/pipes/org_dash_activities_count.pipe b/services/libs/tinybird/pipes/org_dash_activities_count.pipe index 037423f99d..22476fa628 100644 --- a/services/libs/tinybird/pipes/org_dash_activities_count.pipe +++ b/services/libs/tinybird/pipes/org_dash_activities_count.pipe @@ -19,6 +19,7 @@ SQL > required=True, ) }} + AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgActivityCount" FROM generate_timeseries ds LEFT JOIN diff --git a/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe b/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe index 620fa76659..f7011bd321 100644 --- a/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe +++ b/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe @@ -20,6 +20,7 @@ SQL > required=True, ) }} + AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) ) as "orgAverageMergeTimeSeconds" FROM generate_timeseries ds diff --git a/services/libs/tinybird/pipes/org_dash_contributors.pipe b/services/libs/tinybird/pipes/org_dash_contributors.pipe index af72a0a940..50a999a51e 100644 --- a/services/libs/tinybird/pipes/org_dash_contributors.pipe +++ b/services/libs/tinybird/pipes/org_dash_contributors.pipe @@ -19,6 +19,7 @@ SQL > required=True, ) }} + AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgContributorCount" FROM generate_timeseries ds LEFT JOIN diff --git a/services/libs/tinybird/pipes/org_dash_maintainers.pipe b/services/libs/tinybird/pipes/org_dash_maintainers.pipe index 30afd6993e..0e0cbfe5c1 100644 --- a/services/libs/tinybird/pipes/org_dash_maintainers.pipe +++ b/services/libs/tinybird/pipes/org_dash_maintainers.pipe @@ -35,6 +35,7 @@ SQL > required=True, ) }} + AND m.organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgMaintainersCount" FROM generate_timeseries ds CROSS JOIN org_dash_maintainers_roles_filtered m diff --git a/services/libs/tinybird/pipes/org_dash_metrics.pipe b/services/libs/tinybird/pipes/org_dash_metrics.pipe index 7ef2971f4a..663fee2357 100644 --- a/services/libs/tinybird/pipes/org_dash_metrics.pipe +++ b/services/libs/tinybird/pipes/org_dash_metrics.pipe @@ -18,6 +18,7 @@ SQL > FROM org_dash_metric_copy_ds WHERE 1 = 1 + AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) {% if defined(organizationIds) %} AND organizationId in From c6a9c67b283dce95014b5c89576a54536881bbe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C5=A1per=20Grom?= Date: Tue, 29 Sep 2026 00:02:44 +0100 Subject: [PATCH 3/3] style: format tinybird pipes with tb fmt (IN-1399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gašper Grom --- services/libs/tinybird/pipes/org_dash_activities_count.pipe | 3 ++- services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe | 3 ++- services/libs/tinybird/pipes/org_dash_contributors.pipe | 3 ++- services/libs/tinybird/pipes/org_dash_maintainers.pipe | 3 ++- services/libs/tinybird/pipes/organizations_filtered.pipe | 3 +-- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/services/libs/tinybird/pipes/org_dash_activities_count.pipe b/services/libs/tinybird/pipes/org_dash_activities_count.pipe index 22476fa628..eccdaefaa8 100644 --- a/services/libs/tinybird/pipes/org_dash_activities_count.pipe +++ b/services/libs/tinybird/pipes/org_dash_activities_count.pipe @@ -19,7 +19,8 @@ SQL > required=True, ) }} - AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) + AND organizationId + NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgActivityCount" FROM generate_timeseries ds LEFT JOIN diff --git a/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe b/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe index f7011bd321..75cb3bcf74 100644 --- a/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe +++ b/services/libs/tinybird/pipes/org_dash_avg_merge_time.pipe @@ -20,7 +20,8 @@ SQL > required=True, ) }} - AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) + AND organizationId + NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) ) as "orgAverageMergeTimeSeconds" FROM generate_timeseries ds diff --git a/services/libs/tinybird/pipes/org_dash_contributors.pipe b/services/libs/tinybird/pipes/org_dash_contributors.pipe index 50a999a51e..aec0ba02af 100644 --- a/services/libs/tinybird/pipes/org_dash_contributors.pipe +++ b/services/libs/tinybird/pipes/org_dash_contributors.pipe @@ -19,7 +19,8 @@ SQL > required=True, ) }} - AND organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) + AND organizationId + NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgContributorCount" FROM generate_timeseries ds LEFT JOIN diff --git a/services/libs/tinybird/pipes/org_dash_maintainers.pipe b/services/libs/tinybird/pipes/org_dash_maintainers.pipe index 0e0cbfe5c1..cae96c559a 100644 --- a/services/libs/tinybird/pipes/org_dash_maintainers.pipe +++ b/services/libs/tinybird/pipes/org_dash_maintainers.pipe @@ -35,7 +35,8 @@ SQL > required=True, ) }} - AND m.organizationId NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) + AND m.organizationId + NOT IN (SELECT id FROM organizations FINAL WHERE isAffiliationBlocked = 1) ) as "orgMaintainersCount" FROM generate_timeseries ds CROSS JOIN org_dash_maintainers_roles_filtered m diff --git a/services/libs/tinybird/pipes/organizations_filtered.pipe b/services/libs/tinybird/pipes/organizations_filtered.pipe index 4e09c9e83e..603eb923fd 100644 --- a/services/libs/tinybird/pipes/organizations_filtered.pipe +++ b/services/libs/tinybird/pipes/organizations_filtered.pipe @@ -29,8 +29,7 @@ SQL > organizations_code_contributors ON organizations_populated_slug.id = organizations_code_contributors.organizationId where - 1 = 1 - AND organizations_populated_slug.isAffiliationBlocked = 0 + 1 = 1 AND organizations_populated_slug.isAffiliationBlocked = 0 {% if defined(slug) %} AND organizations_populated_slug.slug = {{ String(slug, description="Filter organization by slug", required=False) }}