From 6128cac040e1faaeab638982b90b7c3c90f45c6f Mon Sep 17 00:00:00 2001 From: smilerz Date: Fri, 19 Jan 2024 08:13:30 -0600 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 5129ef77c96fb27e08067f72600f3f4a0a76c6c5 Merge: deba96108 8d4cb4f08 Author: vabene1111 Date: Fri Jan 19 17:41:00 2024 +0800 Merge pull request #2715 from nyanSpruk/patch-1 fix: Typo in shopping.md commit deba961085fc39390ca594ee1f695d192c1e76c9 Merge: 92cfd0915 5a6a1787c Author: vabene1111 Date: Fri Jan 19 17:27:18 2024 +0800 Merge pull request #2722 from swnf/bind-ipv6 Make gunicorn and nginx listen to IPv6 commit 92cfd09155c35c49e9fcb3ab6833330faf4334ae Merge: 14b7a8fd8 3adb4c523 Author: vabene1111 Date: Fri Jan 19 17:24:54 2024 +0800 Merge pull request #2785 from axeleroy/patch-1 Add instructions to add the PWA on Firefox for Android commit 14b7a8fd85219dc71425dd9447eea026e7a9197a Merge: ab4bac0d2 8e0bc3acc Author: vabene1111 Date: Fri Jan 19 17:21:30 2024 +0800 Merge pull request #2866 from Colcothar/automation-doc-typo Fix typo in automation doc commit ab4bac0d21adba4fc5777b72d2916d7d96bc54f3 Merge: 838edc5b9 3140480f3 Author: vabene1111 Date: Fri Jan 19 17:17:31 2024 +0800 Merge pull request #2766 from TandoorRecipes/dependabot/pip/cryptography-41.0.7 Bump cryptography from 41.0.6 to 41.0.7 commit 838edc5b9753e9315da2199f886cb93b48771e4f Merge: 8910784cf d131278aa Author: vabene1111 Date: Fri Jan 19 17:15:39 2024 +0800 Merge pull request #2859 from harry48225/touchable-fix Touchable fix commit 8910784cfd53a291fc2ac2da0266f30c4c37f70d Merge: e95149082 8f8147fda Author: vabene1111 Date: Fri Jan 19 17:13:10 2024 +0800 Merge pull request #2657 from TandoorRecipes/dependabot/npm_and_yarn/vue/workbox-background-sync-7.0.0 Bump workbox-background-sync from 6.6.1 to 7.0.0 in /vue commit e951490825d4622156b3da4a891fe2a7829b635c Merge: 0d9e2a8f5 f826f93b0 Author: vabene1111 Date: Fri Jan 19 17:13:00 2024 +0800 Merge pull request #2526 from TandoorRecipes/dependabot/npm_and_yarn/vue/workbox-window-7.0.0 Bump workbox-window from 6.6.1 to 7.0.0 in /vue commit 0d9e2a8f5bd7675f8d5c210559567fdea4268936 Merge: e3445c4c7 bace2f7ba Author: vabene1111 Date: Fri Jan 19 17:09:35 2024 +0800 Merge pull request #2850 from TandoorRecipes/dependabot/github_actions/github/codeql-action-3 Bump github/codeql-action from 2 to 3 commit e3445c4c711d85d984cedf66f5eaea17293adcb1 Merge: 1aa68f14e ccdd67858 Author: vabene1111 Date: Fri Jan 19 17:09:13 2024 +0800 Merge pull request #2849 from TandoorRecipes/dependabot/github_actions/actions/setup-python-5 Bump actions/setup-python from 4 to 5 commit 1aa68f14e18ae781299ccb56cfce9c338b392a25 Merge: a3a2812e3 4e05bc2f6 Author: vabene1111 Date: Fri Jan 19 17:08:29 2024 +0800 Merge pull request #2658 from TandoorRecipes/dependabot/npm_and_yarn/vue/workbox-routing-7.0.0 Bump workbox-routing from 6.6.1 to 7.0.0 in /vue commit ccdd6785824bd23b241d0050781bdd5404ce0577 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Jan 19 09:02:56 2024 +0000 Bump actions/setup-python from 4 to 5 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit a3a2812e3f97c42afc2f51bc3058e0807dbf98a8 Merge: 8ef343c41 537276c62 Author: vabene1111 Date: Fri Jan 19 17:02:07 2024 +0800 Merge pull request #2713 from TandoorRecipes/dependabot/github_actions/actions/checkout-4 Bump actions/checkout from 3 to 4 commit 8ef343c41dfc8d4f421a8f6e492a771cb8def334 Merge: e38b7841f 2397c6621 Author: vabene1111 Date: Fri Jan 19 17:01:39 2024 +0800 Merge pull request #2527 from TandoorRecipes/dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.0.0 Bump workbox-navigation-preload from 6.6.1 to 7.0.0 in /vue commit e38b7841f1489c8bd9597aa30954b1c8bea7a6de Merge: 90eba291a f168fb825 Author: vabene1111 Date: Fri Jan 19 17:01:21 2024 +0800 Merge pull request #2712 from TandoorRecipes/dependabot/github_actions/actions/setup-node-4 Bump actions/setup-node from 3 to 4 commit 90eba291a50042fecdcb966e64063c4548a34acb Merge: 1a262ef56 52cd588b4 Author: vabene1111 Date: Fri Jan 19 16:58:52 2024 +0800 Merge pull request #2765 from TandoorRecipes/dependabot/pip/django-storages-1.14.2 Bump django-storages from 1.13.2 to 1.14.2 commit 1a262ef56f88100daaac7c89fe0c72cf03e92703 Merge: 06ce3606c 517e465d2 Author: vabene1111 Date: Fri Jan 19 16:58:35 2024 +0800 Merge pull request #2764 from TandoorRecipes/dependabot/pip/pytest-factoryboy-2.6.0 Bump pytest-factoryboy from 2.5.1 to 2.6.0 commit 06ce3606cf5ea29cbc7008740876bfd3bb3bcf85 Merge: 0584fc330 8c87e0ace Author: vabene1111 Date: Fri Jan 19 16:58:14 2024 +0800 Merge pull request #2767 from TandoorRecipes/dependabot/pip/django-autocomplete-light-3.9.7 Bump django-autocomplete-light from 3.9.4 to 3.9.7 commit 0584fc3305be06419b839abb47f3d2d9d98c352e Merge: b430476a8 0576337e9 Author: vabene1111 Date: Fri Jan 19 16:57:47 2024 +0800 Merge pull request #2848 from TandoorRecipes/dependabot/pip/pillow-10.1.0 Bump pillow from 10.0.1 to 10.1.0 commit b430476a82549b2b5f948cf808cd5e796725e330 Merge: 72d440466 8ec8d98be Author: vabene1111 Date: Fri Jan 19 16:56:32 2024 +0800 Merge pull request #2884 from ebwinters/ebwinters/fix_mobile_weeks Fix next/prev week on mobile meal plan commit 72d44046652af32a3e5fefec601e5cc308f9437f Merge: 0c94cf1c2 d6d806791 Author: vabene1111 Date: Fri Jan 19 16:53:58 2024 +0800 Merge pull request #2887 from adjokic/patch-1 Add documenation for Docker + Apache + Subfolder commit 0c94cf1c2ed3e0cf449da40bda33500d70971bad Merge: 167325493 da49b6bda Author: vabene1111 Date: Fri Jan 19 16:44:06 2024 +0800 Merge pull request #2870 from TandoorRecipes/dependabot/npm_and_yarn/vue/follow-redirects-1.15.4 Bump follow-redirects from 1.15.2 to 1.15.4 in /vue commit 1673254934944aea6c749593811dcc3b7f4fa02e Merge: 0493ef7e3 45f0413fb Author: vabene1111 Date: Fri Jan 19 16:43:50 2024 +0800 Merge pull request #2873 from TandoorRecipes/dependabot/pip/jinja2-3.1.3 Bump jinja2 from 3.1.2 to 3.1.3 commit 0493ef7e3a2267b9ed4a2c249f189b3f2e7a32a5 Merge: 1fd6a47e9 38c464eba Author: vabene1111 Date: Fri Jan 19 16:13:28 2024 +0800 Merge pull request #2872 from FaySmash/patch-1 Improved the understandability of the postgres upgrade steps commit 1fd6a47e9c45c5669255770c500f8176e47fa057 Author: Tomasz Klimczak Date: Tue Jan 16 23:44:06 2024 +0000 Translated using Weblate (Polish) Currently translated at 100.0% (554 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pl/ commit d6d806791d0f748bb5317f70155ca3cc2069dd94 Author: adjokic <15988225+adjokic@users.noreply.github.com> Date: Tue Jan 16 21:58:21 2024 -0600 Add documenation for Docker + Apache + Subfolder commit bb52f8902dc223275f5913cb05e84b00b58ca968 Author: vabene1111 Date: Mon Jan 15 07:41:51 2024 +0800 added max spaces per user + added custom app name + fixed theming tests commit 8ec8d98be695653895ff556fb603813b5c4f1f02 Author: ebwinters@comcast.net Date: Sun Jan 14 12:29:00 2024 -0800 fix mobile arrows commit 35eff630ffc82e35414e69f85e1c38f3909bd2b0 Author: vabene1111 Date: Sun Jan 14 15:39:02 2024 +0800 updated theming tests commit 8d90fada1da9ffd118583428ae8a70cbbb27876d Author: vabene1111 Date: Sun Jan 14 15:33:14 2024 +0800 fixed theming breaking for users without space commit 2ba2b97f9c5045f37aa8a026ef885e7707982ca0 Author: vabene1111 Date: Sun Jan 14 08:40:05 2024 +0800 moved manifest to use main theming function commit 26408c33f41955ed0e4ead50bb68c2467ad34fa2 Author: vabene1111 Date: Sat Jan 13 07:42:54 2024 +0800 removed debug code commit 72b0bd7f1ee591e9774829b9f2f9d09ab712b186 Author: Cilantro4858 Date: Fri Jan 12 20:35:43 2024 +0000 Translated using Weblate (German) Currently translated at 100.0% (554 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/ commit 45f0413fb98d639a91a767e9e0671e6d4b8fa0e4 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Jan 11 19:51:57 2024 +0000 Bump jinja2 from 3.1.2 to 3.1.3 Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3) --- updated-dependencies: - dependency-name: jinja2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] commit 38c464ebaec35551e66658c4e79a89d3b05892b4 Author: FaySmash <30392780+FaySmash@users.noreply.github.com> Date: Thu Jan 11 17:56:45 2024 +0100 Improved the understandability of the postgres upgrade steps I improved the understandability some parts in the psql examples for someone not familiar with the psql syntax. commit b4f158b913ef8bcdd15ff8da851c9d62980b1455 Author: Jan Kubošek Date: Wed Jan 10 00:54:20 2024 +0000 Translated using Weblate (Czech) Currently translated at 100.0% (554 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit da49b6bda09bd1c20835e5d564d5e8b7ba258bfa Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed Jan 10 08:50:00 2024 +0000 Bump follow-redirects from 1.15.2 to 1.15.4 in /vue Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] commit e7d9d7b7b342080a6b010d9742c67352c9c6b762 Author: Jan Kubošek Date: Tue Jan 9 19:47:05 2024 +0000 Translated using Weblate (Czech) Currently translated at 100.0% (554 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit 5f7a57a258221991b71d5c977468752c3b68aae9 Author: Mára Štěpánek Date: Tue Jan 9 12:11:51 2024 +0000 Translated using Weblate (Czech) Currently translated at 92.0% (510 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit 4b1a80a0ed40f7675c651ff270d42000dc99b0fa Author: Jan Kubošek Date: Tue Jan 9 17:38:44 2024 +0000 Translated using Weblate (Czech) Currently translated at 92.0% (510 of 554 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit 8efc3de11f675371352d348f6c74e232f83d0e32 Author: Mára Štěpánek Date: Tue Jan 9 11:45:32 2024 +0000 Translated using Weblate (Czech) Currently translated at 90.5% (491 of 542 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit 1f3cd11964665f2fa6e1d9ed799884cebebcef8a Author: Jan Kubošek Date: Tue Jan 9 11:48:39 2024 +0000 Translated using Weblate (Czech) Currently translated at 90.5% (491 of 542 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/ commit 94cfc36ed5b0ffad1cfd3aabf3a74706acf3569f Author: Jan Kubošek Date: Tue Jan 9 11:04:57 2024 +0000 Translated using Weblate (Czech) Currently translated at 100.0% (362 of 362 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/cs/ commit 8e0bc3acc7389c0cdf1a837daa39ed9543050a59 Author: Colcothar <33038729+Colcothar@users.noreply.github.com> Date: Sat Jan 6 17:29:43 2024 +0000 Fix typo in automation doc commit d131278aa5a45d8caf43771a6dbc88cc179e7640 Author: harry Date: Wed Jan 3 22:38:10 2024 +0000 Tweak alignment commit d0cbe350a7ee42e9302d3df7b9abca86f28ac307 Author: harry Date: Wed Nov 15 20:35:12 2023 +0000 Adds psuedo selectors to increase touch target commit bace2f7ba4b736eaa7e8f9a0801e0350a479e527 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jan 1 00:44:38 2024 +0000 Bump github/codeql-action from 2 to 3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit 0576337e9c14fd1a47b5b4d2c3c448ee473343b8 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jan 1 00:37:18 2024 +0000 Bump pillow from 10.0.1 to 10.1.0 Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.0.1 to 10.1.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/10.0.1...10.1.0) --- updated-dependencies: - dependency-name: pillow dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] commit 3adb4c52332dfe0255f939a8cc8036578760a674 Author: Axel Leroy <3141536+axeleroy@users.noreply.github.com> Date: Wed Dec 6 10:00:48 2023 +0100 Add instructions to add the PWA on Firefox for Android commit 8c87e0aced7f2ca978eed1c10176fec21b92cf41 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Dec 1 00:59:22 2023 +0000 Bump django-autocomplete-light from 3.9.4 to 3.9.7 Bumps [django-autocomplete-light](https://github.com/yourlabs/django-autocomplete-light) from 3.9.4 to 3.9.7. - [Release notes](https://github.com/yourlabs/django-autocomplete-light/releases) - [Changelog](https://github.com/yourlabs/django-autocomplete-light/blob/master/CHANGELOG) - [Commits](https://github.com/yourlabs/django-autocomplete-light/compare/3.9.4...3.9.7) --- updated-dependencies: - dependency-name: django-autocomplete-light dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] commit 3140480f3602b5bf6606ac4f402480751c8ae151 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Dec 1 00:59:18 2023 +0000 Bump cryptography from 41.0.6 to 41.0.7 Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.6 to 41.0.7. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.6...41.0.7) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] commit 52cd588b45ac767beed462d64fb14297ef929763 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Dec 1 00:59:13 2023 +0000 Bump django-storages from 1.13.2 to 1.14.2 Bumps [django-storages](https://github.com/jschneier/django-storages) from 1.13.2 to 1.14.2. - [Changelog](https://github.com/jschneier/django-storages/blob/master/CHANGELOG.rst) - [Commits](https://github.com/jschneier/django-storages/compare/1.13.2...1.14.2) --- updated-dependencies: - dependency-name: django-storages dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] commit 517e465d2f4611478dd351883f15d02932d86337 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Dec 1 00:59:10 2023 +0000 Bump pytest-factoryboy from 2.5.1 to 2.6.0 Bumps [pytest-factoryboy](https://github.com/pytest-dev/pytest-factoryboy) from 2.5.1 to 2.6.0. - [Changelog](https://github.com/pytest-dev/pytest-factoryboy/blob/master/CHANGES.rst) - [Commits](https://github.com/pytest-dev/pytest-factoryboy/compare/2.5.1...2.6.0) --- updated-dependencies: - dependency-name: pytest-factoryboy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] commit 5a6a1787cf6e0b50a42aba24771380203af73a43 Author: swnf <50806201+swnf@users.noreply.github.com> Date: Mon Nov 6 18:01:53 2023 +0100 Make gunicorn and nginx listen to IPv6 commit 8d4cb4f08d5e35050ebd9b66d85cf9c11ead151b Author: Nik Jan Špruk Date: Thu Nov 2 12:36:20 2023 +0100 fix: Typo in shopping.md Made capital i in the sentence. commit 537276c62f32e8f99135443e44dfa8c7910b1efc Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed Nov 1 00:40:31 2023 +0000 Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit f168fb825f64fc148bebfe914be6a12c09a5a5dc Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed Nov 1 00:40:27 2023 +0000 Bump actions/setup-node from 3 to 4 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit 4e05bc2f6a8e4637e06069de18e8fb6f4993d0ad Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun Oct 1 00:49:42 2023 +0000 Bump workbox-routing from 6.6.1 to 7.0.0 in /vue Bumps [workbox-routing](https://github.com/googlechrome/workbox) from 6.6.1 to 7.0.0. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/commits/v7.0.0) --- updated-dependencies: - dependency-name: workbox-routing dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit 8f8147fda4511380b2fc59d859b0d6bf07b6127f Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun Oct 1 00:49:08 2023 +0000 Bump workbox-background-sync from 6.6.1 to 7.0.0 in /vue Bumps [workbox-background-sync](https://github.com/googlechrome/workbox) from 6.6.1 to 7.0.0. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/commits/v7.0.0) --- updated-dependencies: - dependency-name: workbox-background-sync dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit 2397c66218a4ad1b3700aed8fdde42d0ab0dfc7c Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat Jul 1 00:05:24 2023 +0000 Bump workbox-navigation-preload from 6.6.1 to 7.0.0 in /vue Bumps [workbox-navigation-preload](https://github.com/googlechrome/workbox) from 6.6.1 to 7.0.0. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/commits/v7.0.0) --- updated-dependencies: - dependency-name: workbox-navigation-preload dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] commit f826f93b039dfabdb0bb09524d9dcdb3d244836a Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat Jul 1 00:04:56 2023 +0000 Bump workbox-window from 6.6.1 to 7.0.0 in /vue Bumps [workbox-window](https://github.com/googlechrome/workbox) from 6.6.1 to 7.0.0. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/commits/v7.0.0) --- updated-dependencies: - dependency-name: workbox-window dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 6 +- .github/workflows/docs.yml | 4 +- boot.sh | 2 +- cookbook/locale/cs/LC_MESSAGES/django.po | 8 +- ...pp_name_userpreference_max_owned_spaces.py | 23 +++ cookbook/models.py | 15 +- cookbook/templatetags/theming_tags.py | 51 +++--- cookbook/tests/other/test_theming.py | 68 +++++--- cookbook/views/views.py | 29 ++-- docs/faq.md | 9 +- docs/features/automation.md | 2 +- docs/features/shopping.md | 4 +- docs/install/other.md | 149 ++++++++++++++++++ docs/system/configuration.md | 12 ++ nginx/conf.d/Recipes.conf | 1 + recipes/settings.py | 3 +- requirements.txt | 13 +- vue/package.json | 8 +- vue/src/apps/MealPlanView/MealPlanView.vue | 4 +- vue/src/components/IngredientComponent.vue | 27 +++- vue/src/locales/cs.json | 130 ++++++++++----- vue/src/locales/de.json | 21 ++- vue/src/locales/pl.json | 22 ++- vue/yarn.lock | 49 +++++- 24 files changed, 520 insertions(+), 140 deletions(-) create mode 100644 cookbook/migrations/0208_space_app_name_userpreference_max_owned_spaces.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 183a2e3625..de47f7aad2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,13 +12,13 @@ jobs: python-version: ['3.10'] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.10 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.10' # Build Vue frontend - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: '18' - name: Install Vue dependencies diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 695798bba0..c679b80627 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -12,8 +12,8 @@ jobs: if: github.repository_owner == 'TandoorRecipes' && ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: python-version: 3.x - run: pip install mkdocs-material mkdocs-include-markdown-plugin diff --git a/boot.sh b/boot.sh index 3faacad710..97a94f4776 100644 --- a/boot.sh +++ b/boot.sh @@ -76,4 +76,4 @@ echo "Done" chmod -R 755 /opt/recipes/mediafiles -exec gunicorn -b :$TANDOOR_PORT --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi +exec gunicorn -b "[::]:$TANDOOR_PORT" --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi diff --git a/cookbook/locale/cs/LC_MESSAGES/django.po b/cookbook/locale/cs/LC_MESSAGES/django.po index 513d8c0417..d028da3bc6 100644 --- a/cookbook/locale/cs/LC_MESSAGES/django.po +++ b/cookbook/locale/cs/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-09 18:01+0100\n" -"PO-Revision-Date: 2023-07-31 14:19+0000\n" -"Last-Translator: Mára Štěpánek \n" +"PO-Revision-Date: 2024-01-09 12:07+0000\n" +"Last-Translator: Jan Kubošek \n" "Language-Team: Czech \n" "Language: cs\n" @@ -190,7 +190,7 @@ msgid "" "Leave empty for dropbox and enter only base url for nextcloud " "(/remote.php/webdav/ is added automatically)" msgstr "" -"Pro dropbox ponechejte nevyplňené pole. Pro nextcloud použijte pouze " +"Pro dropbox ponechejte nevyplněné pole. Pro nextcloud použijte pouze " "základní url (/remote.php/webdav/ bude přidán automaticky)." #: .\cookbook\forms.py:263 @@ -529,7 +529,7 @@ msgstr "Dávková úprava receptu" #: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" -msgstr "Přidat štítek ke všem receptům, které obsahují specifické slovo." +msgstr "Přidat štítek ke všem receptům, které obsahují specifické slovo" #: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:66 msgid "Sync" diff --git a/cookbook/migrations/0208_space_app_name_userpreference_max_owned_spaces.py b/cookbook/migrations/0208_space_app_name_userpreference_max_owned_spaces.py new file mode 100644 index 0000000000..44837d4893 --- /dev/null +++ b/cookbook/migrations/0208_space_app_name_userpreference_max_owned_spaces.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.7 on 2024-01-14 23:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0207_space_logo_color_128_space_logo_color_144_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='space', + name='app_name', + field=models.CharField(blank=True, max_length=40, null=True), + ), + migrations.AddField( + model_name='userpreference', + name='max_owned_spaces', + field=models.IntegerField(default=100), + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index 133599fddc..f66ccc5ccf 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -24,7 +24,7 @@ from treebeard.mp_tree import MP_Node, MP_NodeManager from recipes.settings import (COMMENT_PREF_DEFAULT, FRACTION_PREF_DEFAULT, KJ_PREF_DEFAULT, - SORT_TREE_BY_NAME, STICKY_NAV_PREF_DEFAULT) + SORT_TREE_BY_NAME, STICKY_NAV_PREF_DEFAULT, MAX_OWNED_SPACES_PREF_DEFAULT) def get_user_display_name(self): @@ -303,7 +303,7 @@ class Space(ExportModelOperationsMixin('space'), models.Model): nav_logo = models.ForeignKey("UserFile", on_delete=models.SET_NULL, null=True, blank=True, related_name='space_nav_logo') nav_bg_color = models.CharField(max_length=8, default='', blank=True, ) nav_text_color = models.CharField(max_length=16, choices=NAV_TEXT_COLORS, default=BLANK) - + app_name = models.CharField(max_length=40, null=True, blank=True, ) logo_color_32 = models.ForeignKey("UserFile", on_delete=models.SET_NULL, null=True, blank=True, related_name='space_logo_color_32') logo_color_128 = models.ForeignKey("UserFile", on_delete=models.SET_NULL, null=True, blank=True, related_name='space_logo_color_128') logo_color_144 = models.ForeignKey("UserFile", on_delete=models.SET_NULL, null=True, blank=True, related_name='space_logo_color_144') @@ -424,7 +424,7 @@ class UserPreference(models.Model, PermissionModelMixin): nav_text_color = models.CharField(max_length=16, choices=NAV_TEXT_COLORS, default=DARK) nav_show_logo = models.BooleanField(default=True) nav_sticky = models.BooleanField(default=STICKY_NAV_PREF_DEFAULT) - + max_owned_spaces = models.IntegerField(default=MAX_OWNED_SPACES_PREF_DEFAULT) default_unit = models.CharField(max_length=32, default='g') use_fractions = models.BooleanField(default=FRACTION_PREF_DEFAULT) use_kj = models.BooleanField(default=KJ_PREF_DEFAULT) @@ -450,6 +450,15 @@ class UserPreference(models.Model, PermissionModelMixin): created_at = models.DateTimeField(auto_now_add=True) objects = ScopedManager(space='space') + def save(self, *args, **kwargs): + if not self.pk: + self.max_owned_spaces = MAX_OWNED_SPACES_PREF_DEFAULT + self.comments = COMMENT_PREF_DEFAULT + self.nav_sticky = STICKY_NAV_PREF_DEFAULT + self.use_kj = KJ_PREF_DEFAULT + self.use_fractions = FRACTION_PREF_DEFAULT + + return super().save(*args, **kwargs) def __str__(self): return str(self.user) diff --git a/cookbook/templatetags/theming_tags.py b/cookbook/templatetags/theming_tags.py index f35096fd57..d69ae7b039 100644 --- a/cookbook/templatetags/theming_tags.py +++ b/cookbook/templatetags/theming_tags.py @@ -10,17 +10,17 @@ @register.simple_tag def theme_values(request): + return get_theming_values(request) + + +def get_theming_values(request): space = None - if request.space: + if getattr(request,'space',None): space = request.space if not request.user.is_authenticated and UNAUTHENTICATED_THEME_FROM_SPACE > 0: with scopes_disabled(): space = Space.objects.filter(id=UNAUTHENTICATED_THEME_FROM_SPACE).first() - return get_theming_values(space, request.user) - - -def get_theming_values(space, user): themes = { UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css', UserPreference.FLATLY: 'themes/flatly.min.css', @@ -46,31 +46,34 @@ def get_theming_values(space, user): 'nav_bg_color': '#ddbf86', 'nav_text_class': 'navbar-light', 'sticky_nav': 'position: sticky; top: 0; left: 0; z-index: 1000;', + 'app_name': 'Tandoor Recipes', } - - if user.is_authenticated: - if user.userpreference.theme in themes: - tv['theme'] = static(themes[user.userpreference.theme]) - if user.userpreference.nav_bg_color: - tv['nav_bg_color'] = user.userpreference.nav_bg_color - if user.userpreference.nav_text_color and user.userpreference.nav_text_color in nav_text_type_mapping: - tv['nav_text_class'] = nav_text_type_mapping[user.userpreference.nav_text_color] - if not user.userpreference.nav_sticky: + if request.user.is_authenticated: + if request.user.userpreference.theme in themes: + tv['theme'] = static(themes[request.user.userpreference.theme]) + if request.user.userpreference.nav_bg_color: + tv['nav_bg_color'] = request.user.userpreference.nav_bg_color + if request.user.userpreference.nav_text_color and request.user.userpreference.nav_text_color in nav_text_type_mapping: + tv['nav_text_class'] = nav_text_type_mapping[request.user.userpreference.nav_text_color] + if not request.user.userpreference.nav_sticky: tv['sticky_nav'] = '' if space: for logo in list(tv.keys()): if logo.startswith('logo_color_') and getattr(space, logo, None): tv[logo] = getattr(space, logo).file.url - if space.custom_space_theme: - tv['custom_theme'] = space.custom_space_theme.file.url - if space.space_theme in themes: - tv['theme'] = static(themes[space.space_theme]) - if space.nav_logo: - tv['nav_logo'] = space.nav_logo.file.url - if space.nav_bg_color: - tv['nav_bg_color'] = space.nav_bg_color - if space.nav_text_color and space.nav_text_color in nav_text_type_mapping: - tv['nav_text_class'] = nav_text_type_mapping[space.nav_text_color] + + if space.custom_space_theme: + tv['custom_theme'] = space.custom_space_theme.file.url + if space.space_theme in themes: + tv['theme'] = static(themes[space.space_theme]) + if space.nav_logo: + tv['nav_logo'] = space.nav_logo.file.url + if space.nav_bg_color: + tv['nav_bg_color'] = space.nav_bg_color + if space.nav_text_color and space.nav_text_color in nav_text_type_mapping: + tv['nav_text_class'] = nav_text_type_mapping[space.nav_text_color] + if space.app_name: + tv['app_name'] = space.app_name return tv diff --git a/cookbook/tests/other/test_theming.py b/cookbook/tests/other/test_theming.py index d9aa0189bd..7abaccda23 100644 --- a/cookbook/tests/other/test_theming.py +++ b/cookbook/tests/other/test_theming.py @@ -1,36 +1,68 @@ from django.contrib import auth from django.templatetags.static import static +from django.test import RequestFactory +from django_scopes import scopes_disabled from cookbook.models import Space, UserPreference, UserFile from cookbook.templatetags.theming_tags import theme_values, get_theming_values def test_theming_function(space_1, u1_s1): - user = auth.get_user(u1_s1) + # uf = UserFile.objects.create(name='test', space=space_1, created_by=user) #TODO add file tests + user = auth.get_user(u1_s1) + request = RequestFactory() + request.user = auth.get_user(u1_s1) + request.space = space_1 + + # defaults apply without setting anything (user preference is automatically created with these defaults) + assert get_theming_values(request)['theme'] == static('themes/tandoor.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#ddbf86' + assert get_theming_values(request)['nav_text_class'] == 'navbar-light' + assert get_theming_values(request)['nav_logo'] == static('assets/brand_logo.png') + assert get_theming_values(request)['sticky_nav'] == 'position: sticky; top: 0; left: 0; z-index: 1000;' + assert get_theming_values(request)['app_name'] == 'Tandoor Recipes' - assert get_theming_values(space_1, user)['theme'] == static('themes/tandoor.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#ddbf86' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' - assert get_theming_values(space_1, user)['nav_logo'] == static('assets/brand_logo.png') - assert get_theming_values(space_1, user)['sticky_nav'] == 'position: sticky; top: 0; left: 0; z-index: 1000;' + with scopes_disabled(): + up = UserPreference.objects.filter(user=request.user).first() + up.theme = UserPreference.TANDOOR_DARK + up.nav_bg_color = '#ffffff' + up.nav_text_color = UserPreference.LIGHT + up.nav_sticky = False + up.save() - user.userpreference.theme = UserPreference.TANDOOR_DARK - user.userpreference.nav_bg_color = '#ffffff' - user.userpreference.nav_text_color = UserPreference.LIGHT - user.userpreference.nav_sticky = False - user.userpreference.save() + request = RequestFactory() + request.user = auth.get_user(u1_s1) + request.space = space_1 - assert get_theming_values(space_1, user)['theme'] == static('themes/tandoor_dark.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#ffffff' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-dark' - assert get_theming_values(space_1, user)['sticky_nav'] == '' + # user values apply if only those are present + assert get_theming_values(request)['theme'] == static('themes/tandoor_dark.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#ffffff' + assert get_theming_values(request)['nav_text_class'] == 'navbar-dark' + assert get_theming_values(request)['sticky_nav'] == '' + assert get_theming_values(request)['app_name'] == 'Tandoor Recipes' space_1.space_theme = Space.BOOTSTRAP space_1.nav_bg_color = '#000000' space_1.nav_text_color = UserPreference.DARK + space_1.app_name = 'test_app_name' space_1.save() - assert get_theming_values(space_1, user)['theme'] == static('themes/bootstrap.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#000000' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' + request = RequestFactory() + request.user = auth.get_user(u1_s1) + request.space = space_1 + + # space settings apply when set + assert get_theming_values(request)['theme'] == static('themes/bootstrap.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#000000' + assert get_theming_values(request)['nav_text_class'] == 'navbar-light' + assert get_theming_values(request)['app_name'] == 'test_app_name' + + user.userspace_set.all().delete() + request = RequestFactory() + request.user = auth.get_user(u1_s1) + + # default user settings should apply when user has no space + assert get_theming_values(request)['nav_bg_color'] == '#ffffff' + assert get_theming_values(request)['nav_text_class'] == 'navbar-dark' + assert get_theming_values(request)['nav_logo'] == static('assets/brand_logo.png') diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 328ea65ecd..1c12c77d2f 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -31,6 +31,7 @@ from cookbook.models import (Comment, CookLog, InviteLink, SearchFields, SearchPreference, ShareLink, Space, UserSpace, ViewLog) from cookbook.tables import CookLogTable, ViewLogTable +from cookbook.templatetags.theming_tags import get_theming_values from cookbook.version_info import VERSION_INFO from recipes.settings import PLUGINS, BASE_DIR @@ -78,6 +79,11 @@ def space_overview(request): messages.add_message(request, messages.WARNING, _('This feature is not available in the demo version!')) else: if create_form.is_valid(): + if Space.objects.filter(created_by=request.user).count() >= request.user.userpreference.max_owned_spaces: + messages.add_message(request, messages.ERROR, + _('You have the reached the maximum amount of spaces that can be owned by you.') + f' ({request.user.userpreference.max_owned_spaces})') + return HttpResponseRedirect(reverse('view_space_overview')) + created_space = Space.objects.create( name=create_form.cleaned_data['name'], created_by=request.user, @@ -481,29 +487,24 @@ def report_share_abuse(request, token): def web_manifest(request): + theme_values = get_theming_values(request) + icons = [ - {"src": static("/assets/logo_color.svg"), "sizes": "any"}, - {"src": static("/assets/logo_color144.png"), "type": "image/png", "sizes": "144x144"}, - {"src": static("/assets/logo_color512.png"), "type": "image/png", "sizes": "512x512"} + {"src": theme_values['logo_color_svg'], "sizes": "any"}, + {"src": theme_values['logo_color_144'], "type": "image/png", "sizes": "144x144"}, + {"src": theme_values['logo_color_512'], "type": "image/png", "sizes": "512x512"} ] - if request.user.is_authenticated and getattr(request.space, 'logo_color_svg') and getattr(request.space, 'logo_color_144') and getattr(request.space, 'logo_color_512'): - icons = [ - {"src": request.space.logo_color_svg.file.url, "sizes": "any"}, - {"src": request.space.logo_color_144.file.url, "type": "image/png", "sizes": "144x144"}, - {"src": request.space.logo_color_512.file.url, "type": "image/png", "sizes": "512x512"} - ] - manifest_info = { - "name": "Tandoor Recipes", - "short_name": "Tandoor", + "name": theme_values['app_name'], + "short_name": theme_values['app_name'], "description": _("Manage recipes, shopping list, meal plans and more."), "icons": icons, "start_url": "./search", - "background_color": "#ffcb76", + "background_color": theme_values['nav_bg_color'], "display": "standalone", "scope": ".", - "theme_color": "#ffcb76", + "theme_color": theme_values['nav_bg_color'], "shortcuts": [ { "name": _("Plan"), diff --git a/docs/faq.md b/docs/faq.md index 6c8e5aa5e6..1285b2ac2d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -10,9 +10,12 @@ Tandoor can be installed as a progressive web app (PWA) on mobile and desktop de #### Safari (iPhone/iPad) Open Tandoor, click Safari's share button, select `Add to Home Screen` -### Chrome/Chromium +#### Chrome/Chromium Open Tandoor, click the `add Tandoor to the home screen` message that pops up at the bottom of the screen +#### Firefox for Android +Open Tandoor, click on the `⋮` menu icon, then on `Install` + ### Desktop browsers #### Google Chrome @@ -124,13 +127,13 @@ to your dream setup. ## How can I upgrade postgres (major versions)? Postgres requires manual intervention when updating from one major version to another. The steps are roughly -1. use `pg_dumpall` to dump your database into SQL (for Docker `docker-compose exec -T pg_dumpall -U -f /path/to/dump.sql`) +1. use `pg_dumpall` to dump your database into SQL (for Docker `docker-compose exec -T pg_dumpall -U -f /path/to/dump.sql`) 2. stop the DB / down the container 3. move your postgres directory in order to keep it as a backup (e.g. `mv postgres postgres_old`) 4. update postgres to the new major version (for Docker just change the version number and pull) 5. start the db / up the container (do not start tandoor as it will automatically perform the database migrations which will conflict with loading the dump) 6. if not using docker, you might need to create the same postgres user you had in the old database -7. load the postgres dump (for Docker `'/usr/local/bin/docker-compose exec -T psql -U postgres < /path/to/dump.sql`) +7. load the postgres dump (for Docker `'/usr/local/bin/docker-compose exec -T psql -U < /path/to/dump.sql`) If anything fails, go back to the old postgres version and data directory and try again. diff --git a/docs/features/automation.md b/docs/features/automation.md index b89a4a1007..60a984c886 100644 --- a/docs/features/automation.md +++ b/docs/features/automation.md @@ -50,7 +50,7 @@ In order to prevent denial of service attacks on the RegEx engine the number of and the length of the inputs that are processed are limited. Those limits should never be reached during normal usage. -## Instructtion Replace, Title Replace, Food Replace & Unit Replace +## Instruction Replace, Title Replace, Food Replace & Unit Replace These work just like the Description Replace automation. Instruction, Food and Unit Replace will run against every iteration of the object in a recipe during import. diff --git a/docs/features/shopping.md b/docs/features/shopping.md index ca431dbb68..cb1f165442 100644 --- a/docs/features/shopping.md +++ b/docs/features/shopping.md @@ -1,5 +1,5 @@ !!! info "WIP" - While being around for a while there are still a lot of features that i plan on adding to the shopping list. + While being around for a while there are still a lot of features that I plan on adding to the shopping list. You can see an overview of what is still planned on [this](https://github.com/vabene1111/recipes/issues/114) issue. @@ -41,4 +41,4 @@ There are a few more features worth pointing out 1. You can export recipes for use in other applications (Google Keep, etc.) by using the export button 2. In the export popup you can define a prefix to be put before each row in case an external app requires that -3. Marking a shopping list as finished will hide it from the shopping list page \ No newline at end of file +3. Marking a shopping list as finished will hide it from the shopping list page diff --git a/docs/install/other.md b/docs/install/other.md index a6db572e2b..b4829f3e3d 100644 --- a/docs/install/other.md +++ b/docs/install/other.md @@ -59,6 +59,155 @@ I used two paths `` and `` for simplicity. In my case I have I left out the TLS config in this example for simplicity. +## Docker + Apache + Sub-Path + +The following could prove to be useful if you are not using Traefik, but instead run Apache as your reverse proxy to route all calls for a shared (sub)domain to a sub path, e.g. https://mydomain.tld/tandoor + +As a side note, I am using [Blocky](https://0xerr0r.github.io/blocky/) + [Consul](https://hub.docker.com/r/hashicorp/consul) + [Registrator](https://hub.docker.com/r/gliderlabs/registrator) as a DNS solution. + +The relevant Apache config: +``` + + # in case you want to restrict access to specific IP addresses: + Require local + Require forward-dns [myhomedomain.useyourdomain.com] + Require ip [anylocalorremoteipyouwanttowhitelist] + + # The following assumes that tandoor.service.consul.local resolves to the IP address of the Docker container. + ProxyPass http://tandoor.service.consul.local:8080/tandoor + ProxyPassReverse http://tandoor.service.consul.local:8080/tandoor + RequestHeader add X-Script-Name /tandoor + RequestHeader set X-Forwarded-Proto "https" + ProxyPreserveHost On + + + Require local + Require forward-dns [myhomedomain.useyourdomain.com] + Require ip [anylocalorremoteipyouwanttowhitelist] + + ProxyPass http://tandoor.service.consul.local:8080/tandoor/tandoor/static + ProxyPassReverse http://tandoor.service.consul.local:8080/tandoor/static + RequestHeader add X-Script-Name /tandoor + RequestHeader set X-Forwarded-Proto "https" + ProxyPreserveHost On + +``` +and the relevant section from the docker-compose.yml: +``` + tandoor: + restart: always + container_name: tandoor + image: vabene1111/recipes + environment: + - SCRIPT_NAME=/tandoor + - JS_REVERSE_SCRIPT_PREFIX=/tandoor + - STATIC_URL=/tandoor/static/ + - MEDIA_URL=/tandoor/media/ + - GUNICORN_MEDIA=0 + - SECRET_KEY=${YOUR_TANDOOR_SECRET_KEY} + - POSTGRES_HOST=postgres.service.consul.local + - POSTGRES_PORT=${POSTGRES_PORT} + - POSTGRES_USER=${YOUR_TANDOOR_POSTGRES_USER} + - POSTGRES_PASSWORD=${YOUR_TANDOOR_POSTGRES_PASSWORD} + - POSTGRES_DB=${YOUR_TANDOOR_POSTGRES_DB} + labels: + # The following is relevant only if you are using Registrator and Consul + - "SERVICE_NAME=tandoor" + volumes: + - ${YOUR_DOCKER_VOLUME_BASE_DIR}/tandoor/static:/opt/recipes/staticfiles:rw + # Do not make this a bind mount, see https://docs.tandoor.dev/install/docker/#volumes- vs-bind-mounts + - tandoor_nginx_config:/opt/recipes/nginx/conf.d + - ${YOUR_DOCKER_VOLUME_BASE_DIR}}/tandoor/media:/opt/recipes/mediafiles:rw + depends_on: + # You will have to set up postgres accordingly + - postgres +``` + +The relevant docker-compose.yml for Registrator, Consul, and Blocky, and Autoheal: +``` + consul: + image: hashicorp/consul + container_name: consul + command: > + agent -server + -domain consul.local + -advertise=${YOUR_DOCKER_HOST_IP_ON_THE_LAN} + -client=0.0.0.0 + -encrypt=${SOME_SECRET_KEY} + -datacenter=${YOUR_DC_NAME} + -bootstrap-expect=1 + -ui + -log-level=info + environment: + - "CONSUL_LOCAL_CONFIG={\"skip_leave_on_interrupt\": true, \"dns_config\": { \"service_ttl\": { \"*\": \"0s\" } } }" + network_mode: "host" + restart: always + + registrator: + image: gliderlabs/registrator:latest + container_name: registrator + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + command: > + -internal + -cleanup=true + -deregister="always" + -resync=60 + consul://host.docker.internal:8500 + restart: always + + blocky: + image: spx01/blocky + container_name: blocky + restart: unless-stopped + healthcheck: + interval: 30s + timeout: 5s + start_period: 1m + labels: + # The following is only relevant if you use autoheal + autoheal: true + # Optional the instance hostname for logging purpose + hostname: blocky + extra_hosts: + - "host.docker.internal:host-gateway" + ports: + - "1153:53/tcp" + - "1153:53/udp" + - 4000:4000 + environment: + - TZ=YOUR_TIMEZONE # Optional to synchronize the log timestamp with host + volumes: + # Optional to synchronize the log timestamp with host + - /etc/localtime:/etc/localtime:ro + # config file + - ${YOUR_DOCKER_VOLUME_BASE_DIR}/blocky/config.yml:/app/config.yml + networks: + # in case you want to bind Blocky to an IP address + your-docker-network-name: + ipv4_address: 'some-ip-address-in-the-docker-network-subnet' + + autoheal: + image: willfarrell/autoheal + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + environment: + - AUTOHEAL_CONTAINER_LABEL=autoheal + restart: always + container_name: autoheal + +``` +as well as a snippet of the Blocky configuration: +``` +conditional: + fallbackUpstream: false + mapping: + consul.local: tcp+udp:host.docker.internal:8600 +``` + + ## WSL If you want to install Tandoor on the Windows Subsystem for Linux you can find a detailed post here: . diff --git a/docs/system/configuration.md b/docs/system/configuration.md index c235113423..f6e64d2424 100644 --- a/docs/system/configuration.md +++ b/docs/system/configuration.md @@ -524,6 +524,18 @@ The default value for the user preference 'sticky navigation' (always show navba STICKY_NAV_PREF_DEFAULT=1 ``` +#### Max owned spaces + +> default `100` - options: `0-X` + +The default for the number of spaces a user can own. By setting to 0 space creation for users will be disabled. +Superusers can always bypass this limit. + +``` +MAX_OWNED_SPACES_PREF_DEFAULT=100 +``` + + ### Cosmetic / Preferences #### Timezone diff --git a/nginx/conf.d/Recipes.conf b/nginx/conf.d/Recipes.conf index 22829720f0..9cda0f7452 100644 --- a/nginx/conf.d/Recipes.conf +++ b/nginx/conf.d/Recipes.conf @@ -1,5 +1,6 @@ server { listen 80; + listen [::]:80 ipv6only=on; server_name localhost; client_max_body_size 128M; diff --git a/recipes/settings.py b/recipes/settings.py index a22cd39429..4f4328d06f 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -57,7 +57,8 @@ FRACTION_PREF_DEFAULT = bool(int(os.getenv('FRACTION_PREF_DEFAULT', False))) KJ_PREF_DEFAULT = bool(int(os.getenv('KJ_PREF_DEFAULT', False))) STICKY_NAV_PREF_DEFAULT = bool(int(os.getenv('STICKY_NAV_PREF_DEFAULT', True))) -UNAUTHENTICATED_THEME_FROM_SPACE = 2 #int(os.getenv('UNAUTHENTICATED_THEME_FROM_SPACE', 0)) +MAX_OWNED_SPACES_PREF_DEFAULT = int(os.getenv('MAX_OWNED_SPACES_PREF_DEFAULT', 100)) +UNAUTHENTICATED_THEME_FROM_SPACE = int(os.getenv('UNAUTHENTICATED_THEME_FROM_SPACE', 0)) # minimum interval that users can set for automatic sync of shopping lists SHOPPING_MIN_AUTOSYNC_INTERVAL = int( diff --git a/requirements.txt b/requirements.txt index bb8238093e..11daa3757d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ # Production Django==4.2.7 -cryptography===41.0.6 +cryptography===41.0.7 django-annoying==0.10.6 -django-autocomplete-light==3.9.4 +django-autocomplete-light==3.9.7 django-cleanup==8.0.0 django-crispy-forms==2.0 crispy-bootstrap4==2022.1 @@ -15,7 +15,7 @@ bleach==6.0.0 gunicorn==20.1.0 lxml==4.9.3 Markdown==3.5.1 -Pillow==10.0.1 +Pillow==10.1.0 psycopg2-binary==2.9.5 python-dotenv==1.0.0 requests==2.31.0 @@ -27,7 +27,7 @@ pyyaml==6.0.1 uritemplate==4.1.1 beautifulsoup4==4.12.2 microdata==0.8.0 -Jinja2==3.1.2 +Jinja2==3.1.3 django-webpack-loader==1.8.1 git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 django-allauth==0.58.1 @@ -35,12 +35,13 @@ recipe-scrapers==14.52.0 django-scopes==2.0.0 django-treebeard==4.7 django-cors-headers==4.2.0 -django-storages==1.13.2 +django-storages==1.14.2 boto3==1.28.75 django-prometheus==2.2.0 django-hCaptcha==0.2.0 python-ldap==3.4.3 django-auth-ldap==4.4.0 +pytest-factoryboy==2.6.0 pyppeteer==1.0.2 validators==0.20.0 pytube==15.0.0 @@ -49,6 +50,6 @@ pytube==15.0.0 pytest==7.4.3 pytest-django==4.6.0 pytest-cov===4.1.0 -pytest-factoryboy==2.5.1 +pytest-factoryboy==2.6.0 pytest-html==4.1.1 genbadge==1.1.1 diff --git a/vue/package.json b/vue/package.json index f90fbc7ffd..23be9a3f0a 100644 --- a/vue/package.json +++ b/vue/package.json @@ -46,7 +46,7 @@ "vue2-touch-events": "^3.2.2", "vuedraggable": "^2.24.3", "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.4" + "workbox-window": "^7.0.0" }, "devDependencies": { "@kazupon/vue-i18n-loader": "^0.5.0", @@ -65,11 +65,11 @@ "typescript": "~5.1.6", "vue-cli-plugin-i18n": "^2.3.2", "webpack-bundle-tracker": "1.8.1", - "workbox-background-sync": "^6.5.4", + "workbox-background-sync": "^7.0.0", "workbox-expiration": "^6.5.4", - "workbox-navigation-preload": "^6.5.4", + "workbox-navigation-preload": "^7.0.0", "workbox-precaching": "^6.5.4", - "workbox-routing": "^6.5.4", + "workbox-routing": "^7.0.0", "workbox-strategies": "^6.2.4" }, "eslintConfig": { diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index f870ee96d3..9beb8454b9 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -364,7 +364,7 @@ export default { }, mobileSimpleGrid() { let grid = []; - let currentDate = moment(); + let currentDate = moment(this.showDate); for (let x = 0; x < 7; x++) { let moment_date = currentDate.clone().add(x, "d"); grid.push({ @@ -483,7 +483,7 @@ export default { this.setShowDate(ctx.selectedDate) }, setShowDate(d) { - this.showDate = d + this.showDate = d ?? new Date(); }, createEntryClick(data) { this.mealplan_default_date = moment(data).format("YYYY-MM-DD") diff --git a/vue/src/components/IngredientComponent.vue b/vue/src/components/IngredientComponent.vue index 3f4472b084..5c58a1874a 100644 --- a/vue/src/components/IngredientComponent.vue +++ b/vue/src/components/IngredientComponent.vue @@ -7,7 +7,7 @@ - +