From f3a87e77a58e31528ff6eff574f39af9e13c1cc1 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 3 May 2023 16:28:45 +0800 Subject: [PATCH 1/3] fix(nocodb): allow gallery to access hm / mm list --- .../src/services/public-datas.service.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/nocodb-nest/src/services/public-datas.service.ts b/packages/nocodb-nest/src/services/public-datas.service.ts index 07b5653f5e..fd9adcbd01 100644 --- a/packages/nocodb-nest/src/services/public-datas.service.ts +++ b/packages/nocodb-nest/src/services/public-datas.service.ts @@ -305,7 +305,9 @@ export class PublicDatasService { if (!view) NcError.notFound('Not found'); - if (view.type !== ViewTypes.FORM) NcError.notFound('Not found'); + if (view.type !== ViewTypes.FORM && view.type !== ViewTypes.GALLERY) { + NcError.notFound('Not found'); + } if (view.password && view.password !== param.password) { NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); @@ -360,8 +362,13 @@ export class PublicDatasService { const view = await View.getByUUID(param.sharedViewUuid); if (!view) NcError.notFound('Not found'); - if (view.type !== ViewTypes.GRID && view.type !== ViewTypes.KANBAN) + if ( + view.type !== ViewTypes.GRID && + view.type !== ViewTypes.KANBAN && + view.type !== ViewTypes.GALLERY + ) { NcError.notFound('Not found'); + } if (view.password && view.password !== param.password) { NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); @@ -426,8 +433,13 @@ export class PublicDatasService { const view = await View.getByUUID(param.sharedViewUuid); if (!view) NcError.notFound('Not found'); - if (view.type !== ViewTypes.GRID && view.type !== ViewTypes.KANBAN) + if ( + view.type !== ViewTypes.GRID && + view.type !== ViewTypes.KANBAN && + view.type !== ViewTypes.GALLERY + ) { NcError.notFound('Not found'); + } if (view.password && view.password !== param.password) { NcError.forbidden(ErrorMessages.INVALID_SHARED_VIEW_PASSWORD); From 0afe1aea094098f514d656c4b0849106c2922b55 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 3 May 2023 19:43:03 +0800 Subject: [PATCH 2/3] fix(nocodb): shouldSkipField logic --- packages/nocodb-nest/src/db/BaseModelSqlv2.ts | 50 +++++++++++++++---- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/packages/nocodb-nest/src/db/BaseModelSqlv2.ts b/packages/nocodb-nest/src/db/BaseModelSqlv2.ts index a5bd653825..2060bedbcf 100644 --- a/packages/nocodb-nest/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb-nest/src/db/BaseModelSqlv2.ts @@ -1601,17 +1601,16 @@ class BaseModelSqlv2 { // hide if column marked as hidden in view // of if column is system field and system field is hidden if ( - fieldsSet - ? !fieldsSet.has(column.title) - : !extractPkAndPv && - !(viewOrTableColumn instanceof Column) && - (!(viewOrTableColumn as GridViewColumn)?.show || - (!view?.show_system_fields && - column.uidt !== UITypes.ForeignKey && - !column.pk && - isSystemColumn(column))) - ) + shouldSkipField( + fieldsSet, + viewOrTableColumn, + view, + column, + extractPkAndPv, + ) + ) { continue; + } if (!checkColumnRequired(column, fields, extractPkAndPv)) continue; @@ -3347,4 +3346,35 @@ function haveFormulaColumn(columns: Column[]) { return columns.some((c) => c.uidt === UITypes.Formula); } +function shouldSkipField( + fieldsSet, + viewOrTableColumn, + view, + column, + extractPkAndPv, +) { + if (fieldsSet) { + return !fieldsSet.has(column.title); + } else { + if (!extractPkAndPv) { + if (!(viewOrTableColumn instanceof Column)) { + if ( + !(viewOrTableColumn as GridViewColumn)?.show && + !(column.rqd && !column.cdf && !column.ai) && + !column.pk + ) + return true; + if ( + !view?.show_system_fields && + column.uidt !== UITypes.ForeignKey && + !column.pk && + isSystemColumn(column) + ) + return true; + } + } + return false; + } +} + export { BaseModelSqlv2 }; From 9e937d1cc6419e13ed12a6b6d2c5f046982f7c5a Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Thu, 4 May 2023 16:20:10 +0800 Subject: [PATCH 3/3] fix(nocodb): allow foreign key --- packages/nocodb-nest/src/db/BaseModelSqlv2.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nocodb-nest/src/db/BaseModelSqlv2.ts b/packages/nocodb-nest/src/db/BaseModelSqlv2.ts index 2060bedbcf..846a95f9c1 100644 --- a/packages/nocodb-nest/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb-nest/src/db/BaseModelSqlv2.ts @@ -3361,7 +3361,8 @@ function shouldSkipField( if ( !(viewOrTableColumn as GridViewColumn)?.show && !(column.rqd && !column.cdf && !column.ai) && - !column.pk + !column.pk && + column.uidt !== UITypes.ForeignKey ) return true; if (