From d621e4e58013d6299c6f893825be58a040ecc00f Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 20 Mar 2021 13:52:38 -0800 Subject: [PATCH 1/2] Fix Docker/Dev ENV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * basic crud NOT SECURE * refactor/database init on startup * added scratch.py * tests/user CRUD routes * password hashing * change app_config location * bump python version * formatting * login ui starter * change import from url design * move components * remove old snackbar * refactor/Componenet folder structure rework * refactor/remove old code * refactor/rename componenets/js files * remove console.logs * refactor/ models to schema and sql to models * new header styling for imports * token request * fix url scrapper * refactor/rename schema files * split routes file * redesigned admin page * enable relative imports for vue components * refactor/switch to pages view * add CamelCase package * majors settings rework * user management second pass * super user CRUD * refactor/consistent models names * refactor/consistent model names * password reset * store refactor * dependency update * abstract button props * profile page refactor * basic password validation * login form refactor/split v-container * remo unused code * hide editor buttons when not logged in * mkdocs dev dependency * v0.4.0 docs update * profile image upload * additional token routes * Smaller recipe cards for smaller viewports * fix admin sidebar * add users * change to outlined * theme card starter * code cleanup * signups * signup pages * fix #194 * fix #193 * clarify mealie_port * fix #184 * fixes #178 * fix blank card error on meal-plan creator * admin signup * formatting * improved search bar * improved search bar * refresh token on page refresh * allow mealplan with no categories * fix card layout * remove cdn dependencies * start on groups * Fixes #196 * recipe databse refactor * changelog draft * database refactoring * refactor recipe schema/model * site settings refactor * continued model refactor * merge docs changes from master * site-settings work * cleanup + tag models * notes * typo * user table * sign up data validation * package updates * group store init * Fix home page settings * group admin init * group dashboard init * update deps * formatting * bug / added libffi-dev * pages refactor * fix mealplan * docs update * multi group supporot for job scheduler * formatting * formatting * home-page redesign * set background for docs darkmode * code cleanup * docs refactor * v0.4.0 image * mkdocs port change * formatting * Fix Meal-Plan Today * fix webhook bug * fix meal plan this week * export users * 📦 Proper Package + Black Config * formatting * delete old files * fix ci * fix failing builds * package/makefile docs update * add docs server to tasks * uncomment docker-compose * reload in dev env Co-authored-by: hay-kot --- Dockerfile.dev | 2 +- docker-compose.dev.yml | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 693dc8a2d..8f3d38ffa 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -18,4 +18,4 @@ RUN poetry install COPY ./mealie /app/mealie -CMD ["uvicorn", "mealie.app:app", "--host", "0.0.0.0", "--port", "9000"] \ No newline at end of file +CMD ["uvicorn", "mealie.app:app", "--host", "0.0.0.0", "--port", "9000", "--reload"] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index f1b6acc36..eb1b33251 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -2,19 +2,19 @@ version: "3.1" services: # Vue Frontend - # mealie-frontend: - # image: mealie-frontend:dev - # build: - # context: ./frontend - # dockerfile: frontend.Dockerfile - # restart: always - # ports: - # - 9920:8080 - # environment: - # VUE_APP_API_BASE_URL: "http://mealie-api:9000" - # volumes: - # - ./frontend/:/app - # - /app/node_modules + mealie-frontend: + image: mealie-frontend:dev + build: + context: ./frontend + dockerfile: frontend.Dockerfile + restart: always + ports: + - 9920:8080 + environment: + VUE_APP_API_BASE_URL: "http://mealie-api:9000" + volumes: + - ./frontend/:/app + - /app/node_modules # Fast API mealie-api: @@ -32,11 +32,11 @@ services: - ./app_data:/app_data - ./mealie:/app - # mealie-docs: - # image: squidfunk/mkdocs-material - # restart: always - # ports: - # - 9922:8000 - # volumes: - # - ./docs:/docs - + # Mkdocs + mealie-docs: + image: squidfunk/mkdocs-material + restart: always + ports: + - 9922:8000 + volumes: + - ./docs:/docs From 6bb1e4202686aac56b746ba89c0b0ffbd54239f7 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sun, 21 Mar 2021 17:09:29 -0800 Subject: [PATCH 2/2] Import/Export Overhall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * basic crud NOT SECURE * refactor/database init on startup * added scratch.py * tests/user CRUD routes * password hashing * change app_config location * bump python version * formatting * login ui starter * change import from url design * move components * remove old snackbar * refactor/Componenet folder structure rework * refactor/remove old code * refactor/rename componenets/js files * remove console.logs * refactor/ models to schema and sql to models * new header styling for imports * token request * fix url scrapper * refactor/rename schema files * split routes file * redesigned admin page * enable relative imports for vue components * refactor/switch to pages view * add CamelCase package * majors settings rework * user management second pass * super user CRUD * refactor/consistent models names * refactor/consistent model names * password reset * store refactor * dependency update * abstract button props * profile page refactor * basic password validation * login form refactor/split v-container * remo unused code * hide editor buttons when not logged in * mkdocs dev dependency * v0.4.0 docs update * profile image upload * additional token routes * Smaller recipe cards for smaller viewports * fix admin sidebar * add users * change to outlined * theme card starter * code cleanup * signups * signup pages * fix #194 * fix #193 * clarify mealie_port * fix #184 * fixes #178 * fix blank card error on meal-plan creator * admin signup * formatting * improved search bar * improved search bar * refresh token on page refresh * allow mealplan with no categories * fix card layout * remove cdn dependencies * start on groups * Fixes #196 * recipe databse refactor * changelog draft * database refactoring * refactor recipe schema/model * site settings refactor * continued model refactor * merge docs changes from master * site-settings work * cleanup + tag models * notes * typo * user table * sign up data validation * package updates * group store init * Fix home page settings * group admin init * group dashboard init * update deps * formatting * bug / added libffi-dev * pages refactor * fix mealplan * docs update * multi group supporot for job scheduler * formatting * formatting * home-page redesign * set background for docs darkmode * code cleanup * docs refactor * v0.4.0 image * mkdocs port change * formatting * Fix Meal-Plan Today * fix webhook bug * fix meal plan this week * export users * 📦 Proper Package + Black Config * formatting * delete old files * fix ci * fix failing builds * package/makefile docs update * add docs server to tasks * uncomment docker-compose * reload in dev env * move developer data * fix upload issue * run init_db before startup * import groups and users * fix themes * fix theme * potentially fixes #216 * unlink test db * potentially fix #217 * localization * fix import errors on no group * fix hacky lxml error * fix import error Co-authored-by: hay-kot --- .gitignore | 22 +- .vscode/tasks.json | 4 +- Dockerfile | 3 +- {app_data => dev/data}/backups/.gitkeep | 0 .../backups/dev_sample_data_2021-Feb-13.zip | Bin {app_data => dev/data}/debug/.gitkeep | 0 {app_data => dev/data}/img/.gitkeep | 0 {app_data => dev/data}/migration/.gitkeep | 0 {app_data => dev/data}/templates/recipes.md | 0 .../components/Admin/Backup/ImportDialog.vue | 85 ++--- .../components/Admin/Backup/ImportOptions.vue | 62 ++++ .../Backup/ImportSummaryDialog/index.vue | 125 ++++---- .../components/Admin/Backup/NewBackupCard.vue | 80 +++-- frontend/src/components/UI/UploadBtn.vue | 5 +- frontend/src/locales/messages/en.json | 4 +- frontend/src/store/modules/userSettings.js | 2 +- makefile | 15 +- mealie/app.py | 25 +- mealie/core/config.py | 2 +- mealie/db/database.py | 18 +- mealie/db/db_base.py | 6 +- mealie/db/init_db.py | 16 +- mealie/db/models/group.py | 12 +- mealie/db/models/recipe/recipe.py | 14 +- mealie/db/models/users.py | 10 +- mealie/routes/backup_routes.py | 17 +- mealie/run.sh | 7 +- mealie/schema/backup.py | 39 ++- mealie/schema/restore.py | 31 +- mealie/services/backups/imports.py | 295 +++++++++++++----- poetry.lock | 76 +++-- tests/conftest.py | 2 +- tests/test_migrations/__init__.py | 0 tests/test_migrations/test_nextcloud.py | 45 --- tests/test_routes/test_meal_routes.py | 12 +- tests/test_routes/test_recipe_routes.py | 19 +- tests/test_routes/test_user_routes.py | 29 +- 37 files changed, 574 insertions(+), 508 deletions(-) rename {app_data => dev/data}/backups/.gitkeep (100%) rename {app_data => dev/data}/backups/dev_sample_data_2021-Feb-13.zip (100%) rename {app_data => dev/data}/debug/.gitkeep (100%) rename {app_data => dev/data}/img/.gitkeep (100%) rename {app_data => dev/data}/migration/.gitkeep (100%) rename {app_data => dev/data}/templates/recipes.md (100%) create mode 100644 frontend/src/components/Admin/Backup/ImportOptions.vue mode change 100644 => 100755 mealie/run.sh delete mode 100644 tests/test_migrations/__init__.py delete mode 100644 tests/test_migrations/test_nextcloud.py diff --git a/.gitignore b/.gitignore index 338786e21..4fcab0443 100644 --- a/.gitignore +++ b/.gitignore @@ -10,19 +10,19 @@ mealie/temp/api.html .temp/ -app_data/backups/* -app_data/debug/* -app_data/img/* -app_data/migration/* -app_data/users/* +dev/data/backups/* +dev/data/debug/* +dev/data/img/* +dev/data/migration/* +dev/data/users/* #Exception to keep folders !mealie/dist/.gitkeep -!app_data/backups/.gitkeep -!app_data/backups/dev_sample_data* -!app_data/debug/.gitkeep -!app_data/migration/.gitkeep -!app_data/img/.gitkeep +!dev/data/backups/.gitkeep +!dev/data/backups/dev_sample_data* +!dev/data/debug/.gitkeep +!dev/data/migration/.gitkeep +!dev/data/img/.gitkeep .DS_Store node_modules @@ -153,5 +153,5 @@ ENV/ node_modules/ mealie/data/debug/last_recipe.json *.sqlite -app_data/db/test.db +dev/data/db/test.db scratch.py diff --git a/.vscode/tasks.json b/.vscode/tasks.json index df56f017d..9b7582bd1 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -35,7 +35,7 @@ }, { "label": "Dev: Start Frontend", - "command": "make vue", + "command": "make frontend", "type": "shell", "presentation": { "reveal": "always", @@ -45,7 +45,7 @@ }, { "label": "Dev: Start Docs Server", - "command": "make mdocs", + "command": "make docs", "type": "shell", "presentation": { "reveal": "always", diff --git a/Dockerfile b/Dockerfile index 42ebf796c..4b6df2a0c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,8 +31,9 @@ RUN apk add --update --no-cache --virtual .build-deps \ COPY ./mealie /app/mealie +RUN poetry install --no-dev COPY ./Caddyfile /app -COPY ./app_data/templates /app/data/templates +COPY ./dev/data/templates /app/data/templates COPY --from=build-stage /app/dist /app/dist VOLUME [ "/app/data/" ] diff --git a/app_data/backups/.gitkeep b/dev/data/backups/.gitkeep similarity index 100% rename from app_data/backups/.gitkeep rename to dev/data/backups/.gitkeep diff --git a/app_data/backups/dev_sample_data_2021-Feb-13.zip b/dev/data/backups/dev_sample_data_2021-Feb-13.zip similarity index 100% rename from app_data/backups/dev_sample_data_2021-Feb-13.zip rename to dev/data/backups/dev_sample_data_2021-Feb-13.zip diff --git a/app_data/debug/.gitkeep b/dev/data/debug/.gitkeep similarity index 100% rename from app_data/debug/.gitkeep rename to dev/data/debug/.gitkeep diff --git a/app_data/img/.gitkeep b/dev/data/img/.gitkeep similarity index 100% rename from app_data/img/.gitkeep rename to dev/data/img/.gitkeep diff --git a/app_data/migration/.gitkeep b/dev/data/migration/.gitkeep similarity index 100% rename from app_data/migration/.gitkeep rename to dev/data/migration/.gitkeep diff --git a/app_data/templates/recipes.md b/dev/data/templates/recipes.md similarity index 100% rename from app_data/templates/recipes.md rename to dev/data/templates/recipes.md diff --git a/frontend/src/components/Admin/Backup/ImportDialog.vue b/frontend/src/components/Admin/Backup/ImportDialog.vue index 0749a5aab..497d77404 100644 --- a/frontend/src/components/Admin/Backup/ImportDialog.vue +++ b/frontend/src/components/Admin/Backup/ImportDialog.vue @@ -23,59 +23,15 @@ - - - - - - - - + + + + + @@ -104,7 +60,9 @@ + + \ No newline at end of file diff --git a/frontend/src/components/Admin/Backup/ImportSummaryDialog/index.vue b/frontend/src/components/Admin/Backup/ImportSummaryDialog/index.vue index 5ba5b0926..a0bdfb9ae 100644 --- a/frontend/src/components/Admin/Backup/ImportSummaryDialog/index.vue +++ b/frontend/src/components/Admin/Backup/ImportSummaryDialog/index.vue @@ -13,73 +13,55 @@ -
+
-

Recipes

-
-
- Success: {{ recipeNumbers.success }} -
-
- Failed: {{ recipeNumbers.failure }} -
-
-
-
- -
-

Themes

-
-
- Success: {{ themeNumbers.success }} -
-
- Failed: {{ themeNumbers.failure }} -
-
-
-
- -
-

Settings

-
-
- Success: {{ settingsNumbers.success }} -
-
- Failed: {{ settingsNumbers.failure }} +

{{ values.title }}

+
Success: {{ values.success }}
+
Failed: {{ values.failure }}
- Recipes - Themes - Settings + {{ $t("general.recipes") }} + {{ $t("general.themes") }} + {{ $t("general.settings") }} + {{ $t("general.users") }} + {{ $t("general.groups") }} - + + + + + + + + + @@ -98,7 +80,9 @@ export default { recipeData: [], themeData: [], settingsData: [], - recipeHeaders: [ + userData: [], + groupData: [], + importHeaders: [ { text: "Status", value: "status", @@ -117,39 +101,52 @@ export default { computed: { recipeNumbers() { - let numbers = { success: 0, failure: 0 }; - this.recipeData.forEach(element => { - if (element.status) { - numbers.success++; - } else numbers.failure++; - }); - return numbers; + return this.calculateNumbers(this.$t("general.recipes"), this.recipeData); }, settingsNumbers() { - let numbers = { success: 0, failure: 0 }; - this.settingsData.forEach(element => { - if (element.status) { - numbers.success++; - } else numbers.failure++; - }); - return numbers; + return this.calculateNumbers( + this.$t("general.settings"), + this.settingsData + ); }, themeNumbers() { - let numbers = { success: 0, failure: 0 }; - this.themeData.forEach(element => { - if (element.status) { - numbers.success++; - } else numbers.failure++; - }); - return numbers; + return this.calculateNumbers(this.$t("general.themes"), this.themeData); + }, + userNumbers() { + return this.calculateNumbers(this.$t("general.users"), this.userData); + }, + groupNumbers() { + return this.calculateNumbers(this.$t("general.groups"), this.groupData); + }, + allNumbers() { + return [ + this.recipeNumbers, + this.settingsNumbers, + this.themeNumbers, + this.userNumbers, + this.groupNumbers, + ]; }, }, methods: { + calculateNumbers(title, list_array) { + if (!list_array) return; + let numbers = { title: title, success: 0, failure: 0 }; + list_array.forEach(element => { + if (element.status) { + numbers.success++; + } else numbers.failure++; + }); + return numbers; + }, open(importData) { + console.log(importData); this.recipeData = importData.recipeImports; - this.themeData = importData.themeReport; - this.settingsData = importData.settingsReport; + this.themeData = importData.themeImports; + this.settingsData = importData.settingsImports; + this.userData = importData.userImports; + this.groupData = importData.groupImports; this.dialog = true; }, }, diff --git a/frontend/src/components/Admin/Backup/NewBackupCard.vue b/frontend/src/components/Admin/Backup/NewBackupCard.vue index 0abbd9125..1a51e77f3 100644 --- a/frontend/src/components/Admin/Backup/NewBackupCard.vue +++ b/frontend/src/components/Admin/Backup/NewBackupCard.vue @@ -15,57 +15,48 @@ {{ $t("general.create") }} - - - - -

{{ $t("general.options") }}:

- -
- -

{{ $t("general.templates") }}:

- -
-
-
+ +
+ + + +

{{ $t("general.options") }}:

+ +
+ +

{{ $t("general.templates") }}:

+ +
+
+
+
+