fix: Updates export options for pascalVOC rename (#788)

Adds a check during project load to update the export options if project was using previous pascalVOC name.
Esse commit está contido em:
Wallace Breza
2019-04-29 11:48:27 -07:00
commit 4d02db4215
2 arquivos alterados com 35 adições e 0 exclusões
+20
Ver Arquivo
@@ -12,6 +12,7 @@ import { generateKey } from "../common/crypto";
import { encryptProject, decryptProject } from "../common/utils";
import { ExportAssetState } from "../providers/export/exportProvider";
import { IVottJsonExportProviderOptions } from "../providers/export/vottJson";
import { IPascalVOCExportProviderOptions } from "../providers/export/pascalVOC";
describe("Project Service", () => {
let projectSerivce: IProjectService = null;
@@ -201,4 +202,23 @@ describe("Project Service", () => {
await projectSerivce.delete(testProject);
expect(storageProviderMock.deleteFile.mock.calls).toHaveLength(assets.length + 1);
});
it("Updates export settings to v2.1 supported values", async () => {
testProject = MockFactory.createTestProject("TestProject");
testProject.version = "2.0.0";
testProject.exportFormat = {
providerType: "tensorFlowPascalVOC",
providerOptions: {
assetState: ExportAssetState.All,
exportUnassigned: true,
testTrainSplit: 80,
} as IPascalVOCExportProviderOptions,
};
const encryptedProject = encryptProject(testProject, securityToken);
const decryptedProject = await projectSerivce.load(encryptedProject, securityToken);
expect(decryptedProject.exportFormat.providerType).toEqual("pascalVOC");
expect(decryptedProject.exportFormat.providerOptions).toEqual(testProject.exportFormat.providerOptions);
});
});
+15
Ver Arquivo
@@ -70,6 +70,8 @@ export default class ProjectService implements IProjectService {
loadedProject.exportFormat = defaultExportOptions;
}
this.ensureBackwardsCompatibility(loadedProject);
return Promise.resolve({ ...loadedProject });
} catch (e) {
const error = new AppError(ErrorCode.ProjectInvalidSecurityToken, "Error decrypting project settings");
@@ -163,4 +165,17 @@ export default class ProjectService implements IProjectService {
project.exportFormat.providerOptions = await exportProvider.save(project.exportFormat);
}
/**
* Ensures backwards compatibility with project
* @param project The project to update
*/
private ensureBackwardsCompatibility(project: IProject) {
if (project.version === "2.0.0") {
// Required for backwards compatibility with v2.0.0 release
if (project.exportFormat.providerType === "tensorFlowPascalVOC") {
project.exportFormat.providerType = "pascalVOC";
}
}
}
}