Browse Source

feat: allow virtual column duplication(except LTAR and Links)

pull/8708/head
Pranav C 4 months ago
parent
commit
4a308757de
  1. 2
      packages/nc-gui/components/smartsheet/header/Menu.vue
  2. 21
      packages/nocodb/src/modules/jobs/jobs/export-import/duplicate.controller.ts

2
packages/nc-gui/components/smartsheet/header/Menu.vue

@ -393,7 +393,7 @@ const isColumnCRUDAllowed = computed(() => {
</div>
</NcMenuItem>
<NcMenuItem
v-if="isUIAllowed('duplicateColumn') && isExpandedForm && !column?.pk"
v-if="isUIAllowed('duplicateColumn') && isExpandedForm && !column?.pk && isColumnCRUDAllowed"
:disabled="!isDuplicateAllowed"
@click="openDuplicateDlg"
>

21
packages/nocodb/src/modules/jobs/jobs/export-import/duplicate.controller.ts

@ -8,7 +8,12 @@ import {
Req,
UseGuards,
} from '@nestjs/common';
import { ProjectStatus, SourceRestriction } from 'nocodb-sdk';
import {
ProjectStatus,
readonlyMetaAllowedTypes,
SourceRestriction,
} from 'nocodb-sdk';
import type { UITypes } from 'nocodb-sdk';
import { GlobalGuard } from '~/guards/global/global.guard';
import { Acl } from '~/middlewares/extract-ids/extract-ids.middleware';
import { BasesService } from '~/services/bases.service';
@ -287,12 +292,14 @@ export class DuplicateController {
const source = await Source.get(context, model.source_id);
// if data/schema is readonly, then restrict duplication
if (source.is_schema_readonly) {
NcError.sourceMetaReadOnly(source.alias);
}
if (source.is_data_readonly) {
NcError.sourceDataReadOnly(source.alias);
// check if source is readonly and column type is not allowed
if (!readonlyMetaAllowedTypes.includes(column.uidt as UITypes)) {
if (source.is_schema_readonly) {
NcError.sourceMetaReadOnly(source.alias);
}
if (source.is_data_readonly) {
NcError.sourceDataReadOnly(source.alias);
}
}
const job = await this.jobsService.add(JobTypes.DuplicateColumn, {

Loading…
Cancel
Save