diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index fdbde1270..b3527fbdf 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -32,7 +32,6 @@ jobs: options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 - # Steps steps: #---------------------------------------------- @@ -70,6 +69,7 @@ jobs: poetry install poetry add "psycopg2-binary==2.8.6" if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + #---------------------------------------------- # run test suite #---------------------------------------------- diff --git a/.vscode/settings.json b/.vscode/settings.json index dd7015aad..a8937982d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,11 +5,7 @@ "backend", "code-generation" ], - "cSpell.enableFiletypes": [ - "!javascript", - "!python", - "!yaml" - ], + "cSpell.enableFiletypes": ["!javascript", "!python", "!yaml"], "cSpell.words": [ "chowdown", "compression", @@ -24,9 +20,7 @@ "source.organizeImports": false }, "editor.formatOnSave": true, - "eslint.workingDirectories": [ - "./frontend" - ], + "eslint.workingDirectories": ["./frontend"], "files.exclude": { "**/__pycache__": true, "**/.DS_Store": true, @@ -35,9 +29,7 @@ "**/.svn": true, "**/CVS": true }, - "i18n-ally.enabledFrameworks": [ - "vue" - ], + "i18n-ally.enabledFrameworks": ["vue"], "i18n-ally.keystyle": "nested", "i18n-ally.localesPaths": "frontend/lang/messages", "i18n-ally.sourceLanguage": "en-US", @@ -45,26 +37,14 @@ "python.linting.enabled": true, "python.linting.flake8Enabled": true, "python.linting.pylintEnabled": false, - "python.linting.pylintArgs": [ - "--rcfile=${workspaceFolder}/.pylintrc" - ], + "python.linting.pylintArgs": ["--rcfile=${workspaceFolder}/.pylintrc"], "python.testing.autoTestDiscoverOnSaveEnabled": false, - "python.testing.pytestArgs": [ - "tests" - ], + "python.testing.pytestArgs": ["tests"], "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, - "python.analysis.typeCheckingMode": "basic", + "python.analysis.typeCheckingMode": "off", "python.linting.mypyEnabled": true, "python.sortImports.path": "${workspaceFolder}/.venv/bin/isort", "search.mode": "reuseEditor", - "vetur.validation.template": false, - "coverage-gutters.lcovname": "${workspaceFolder}/.coverage", - "python.testing.unittestArgs": [ - "-v", - "-s", - "./tests", - "-p", - "test_*.py" - ] + "python.testing.unittestArgs": ["-v", "-s", "./tests", "-p", "test_*.py"] } diff --git a/docs/docs/documentation/getting-started/migrating-to-mealie-v1.md b/docs/docs/documentation/getting-started/migrating-to-mealie-v1.md index 76186024a..675b03a73 100644 --- a/docs/docs/documentation/getting-started/migrating-to-mealie-v1.md +++ b/docs/docs/documentation/getting-started/migrating-to-mealie-v1.md @@ -24,7 +24,7 @@ In your instance of Mealie prior to v1, perform an export of your data in the Ad ## Step 3: Using the Migration Tool -In your new v1 instance, navigate to `/group/data/migrations` and select "Mealie" from the dropdown selector. Upload the exported data from your pre-v1 instance. Optionally, you can tag all the recipes you've imported with the `mealie_alpha` tag to help you identify them. Once the upload has finished, submit the form and your migration will begin. This may take some time, but when it's complete you'll be provided a new entry in hte "Previous Migrations" table below. Be sure to review the migration report to make sure everything was successful. There may be instances where some of the recipes were not imported, but the migration will still import all the successful recipes. +In your new v1 instance, navigate to `/group/migrations` and select "Mealie" from the dropdown selector. Upload the exported data from your pre-v1 instance. Optionally, you can tag all the recipes you've imported with the `mealie_alpha` tag to help you identify them. Once the upload has finished, submit the form and your migration will begin. This may take some time, but when it's complete you'll be provided a new entry in hte "Previous Migrations" table below. Be sure to review the migration report to make sure everything was successful. There may be instances where some of the recipes were not imported, but the migration will still import all the successful recipes. In most cases, it's faster to manually migrate the recipes that didn't take instead of trying to identify why the recipes failed to import. If you're experiencing issues with the migration tool, please open an issue on GitHub. diff --git a/frontend/api/class-interfaces/recipe-foods.ts b/frontend/api/class-interfaces/recipe-foods.ts index 293815c5b..12b4b9116 100644 --- a/frontend/api/class-interfaces/recipe-foods.ts +++ b/frontend/api/class-interfaces/recipe-foods.ts @@ -6,9 +6,15 @@ const prefix = "/api"; const routes = { food: `${prefix}/foods`, foodsFood: (tag: string) => `${prefix}/foods/${tag}`, + merge: `${prefix}/foods/merge`, }; export class FoodAPI extends BaseCRUDAPI { baseRoute: string = routes.food; itemRoute = routes.foodsFood; + + merge(fromId: string, toId: string) { + // @ts-ignore TODO: fix this + return this.requests.put(routes.merge, { fromFood: fromId, toFood: toId }); + } } diff --git a/frontend/components/global/ReportTable.vue b/frontend/components/global/ReportTable.vue index 2a352ccd7..117f5de38 100644 --- a/frontend/components/global/ReportTable.vue +++ b/frontend/components/global/ReportTable.vue @@ -48,7 +48,7 @@ export default defineComponent({ ]; function handleRowClick(item: ReportSummary) { - router.push("/group/data/reports/" + item.id); + router.push("/group/reports/" + item.id); } function capitalize(str: string) { @@ -69,5 +69,4 @@ export default defineComponent({ }); - + diff --git a/frontend/layouts/admin.vue b/frontend/layouts/admin.vue index 11a7dce40..5831ae2bc 100644 --- a/frontend/layouts/admin.vue +++ b/frontend/layouts/admin.vue @@ -6,7 +6,8 @@ :top-link="topLinks" :bottom-links="bottomLinks" :user="{ data: true }" - :secondary-header="$t('user.admin')" + secondary-header="Developer" + :secondary-links="developerLinks" /> @@ -49,11 +50,7 @@ export default defineComponent({ to: "/admin/site-settings", title: i18n.t("sidebar.site-settings"), }, - { - icon: $globals.icons.wrench, - to: "/admin/maintenance", - title: "Maintenance", - }, + // { // icon: $globals.icons.chart, // to: "/admin/analytics", @@ -74,6 +71,14 @@ export default defineComponent({ to: "/admin/backups", title: i18n.t("sidebar.backups"), }, + ]; + + const developerLinks: SidebarLinks = [ + { + icon: $globals.icons.wrench, + to: "/admin/maintenance", + title: "Maintenance", + }, { icon: $globals.icons.check, to: "/admin/background-tasks", @@ -98,6 +103,7 @@ export default defineComponent({ sidebar, topLinks, bottomLinks, + developerLinks, }; }, }); diff --git a/frontend/pages/admin/backups.vue b/frontend/pages/admin/backups.vue index 00aca6fae..77464b074 100644 --- a/frontend/pages/admin/backups.vue +++ b/frontend/pages/admin/backups.vue @@ -97,7 +97,7 @@ - Looking For Migrations? + Looking For Migrations? diff --git a/frontend/pages/group/data/foods.vue b/frontend/pages/group/data/foods.vue index 0c83f5dc1..b7fb8588e 100644 --- a/frontend/pages/group/data/foods.vue +++ b/frontend/pages/group/data/foods.vue @@ -1,5 +1,20 @@