Compare commits

..

431 Commits

Author SHA1 Message Date
vabene1111
a0c8b39f0c Merge branch 'develop' 2025-02-01 08:08:55 +01:00
Neuri Jr
87561943f9 Translated using Weblate (Portuguese)
Currently translated at 53.8% (307 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt/
2025-01-31 01:58:38 +00:00
Vinicius José Fritzen
eb6d0d7922 Translated using Weblate (Portuguese (Brazil))
Currently translated at 57.5% (281 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-01-29 13:44:16 +00:00
Ángel
d3dd9099f6 Translated using Weblate (Spanish)
Currently translated at 52.8% (258 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/es/
2025-01-29 13:44:16 +00:00
Vinicius José Fritzen
a112b23d07 Translated using Weblate (Portuguese (Brazil))
Currently translated at 48.3% (236 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-01-28 23:17:34 +00:00
Vinicius José Fritzen
4c591f3827 Translated using Weblate (Spanish)
Currently translated at 52.6% (257 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/es/
2025-01-28 23:17:34 +00:00
Ángel
62a28f57f6 Translated using Weblate (Spanish)
Currently translated at 52.6% (257 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/es/
2025-01-28 23:17:34 +00:00
Vinicius José Fritzen
ef689b0857 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.2% (566 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2025-01-28 19:08:20 +00:00
vabene1111
aa903da042 fixed file type check case sensitivity 2025-01-28 07:37:37 +01:00
Anders
9587d8832d Translated using Weblate (Norwegian Bokmål)
Currently translated at 70.5% (402 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nb_NO/
2025-01-28 02:08:22 +00:00
Ole Martin Ruud
f125be1347 Translated using Weblate (Norwegian Bokmål)
Currently translated at 65.9% (376 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nb_NO/
2025-01-26 05:58:39 +00:00
Dominik Ruczajewski
269301852a Translated using Weblate (Polish)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pl/
2025-01-26 05:58:39 +00:00
Ole Martin Ruud
8e5dcd57ce Translated using Weblate (Norwegian Bokmål)
Currently translated at 31.3% (153 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nb_NO/
2025-01-26 05:58:39 +00:00
Dominik Ruczajewski
920273197d Translated using Weblate (Polish)
Currently translated at 56.9% (278 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pl/
2025-01-26 05:58:39 +00:00
vabene1111
1be2e9fbb2 Merge branch 'develop' 2025-01-21 16:34:26 +01:00
vabene1111
7c93eededf fixed RecipeImageSerializer 2025-01-20 09:43:43 +01:00
Yigit
1b17031523 Translated using Weblate (Turkish)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/tr/
2025-01-20 05:20:47 +00:00
Yigit
2d76c3e84c Translated using Weblate (Turkish)
Currently translated at 13.7% (67 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/tr/
2025-01-20 05:20:47 +00:00
vabene1111
03dd4370b9 update nextcloud import docs 2025-01-19 18:44:09 +01:00
smilerz
157af15a2a added (',', ';', ':') to notes tokenization in ingredient_parser.py 2025-01-18 09:29:09 -06:00
vabene1111
b930ecdcd0 Merge branch 'develop' 2025-01-18 12:49:49 +01:00
vabene1111
100242f0a6 Merge pull request #3498 from TandoorRecipes/dependabot/pip/pytubefix-8.12.0
Bump pytubefix from 8.9.0 to 8.12.0
2025-01-18 12:48:23 +01:00
vabene1111
d695f71d36 Merge pull request #3497 from mitcdh/develop
Prevent paprika.py from importing empty image_url content
2025-01-18 12:47:53 +01:00
dependabot[bot]
5d60b7a67c Bump pytubefix from 8.9.0 to 8.12.0
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 8.9.0 to 8.12.0.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v8.9.0...v8.12.0)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-18 11:47:22 +00:00
vabene1111
5d5d89dab9 Merge pull request #3477 from TandoorRecipes/dependabot/pip/pytubefix-8.9.0
Bump pytubefix from 8.5.1 to 8.9.0
2025-01-18 12:46:53 +01:00
vabene1111
35a625e04b Merge pull request #3476 from TandoorRecipes/dependabot/pip/django-tables2-2.7.4
Bump django-tables2 from 2.7.0 to 2.7.4
2025-01-18 12:46:45 +01:00
vabene1111
1a2d3bb441 Merge pull request #3474 from TandoorRecipes/dependabot/pip/whitenoise-6.8.2
Bump whitenoise from 6.7.0 to 6.8.2
2025-01-18 12:46:35 +01:00
vabene1111
2e3ac02afb Merge pull request #3473 from TandoorRecipes/dependabot/pip/redis-5.2.1
Bump redis from 5.2.0 to 5.2.1
2025-01-18 12:46:29 +01:00
vabene1111
a5b8a65b7d actually fixed test 2025-01-18 11:33:51 +01:00
vabene1111
dc320f2e6d Merge branch 'develop' 2025-01-18 09:30:51 +01:00
vabene1111
acbca83553 fixed test to reflect new permission 2025-01-18 09:30:43 +01:00
vabene1111
cb26c5dfc8 allow gif 2025-01-18 09:23:56 +01:00
vabene1111
b5c4174700 default mediafiles content disposition header attatchement 2025-01-18 09:22:46 +01:00
vabene1111
3e37d11c6a restrict file upload to certain types 2025-01-18 09:22:29 +01:00
vabene1111
36e83a9d01 restrict local external recipes to superusers and restrict file path/type 2025-01-18 08:57:46 +01:00
vabene1111
efcd759869 Merge pull request #3496 from TandoorRecipes/dependabot/pip/django-4.2.18
Bump django from 4.2.17 to 4.2.18
2025-01-18 08:11:35 +01:00
Mitchell Hewes
9f8830b341 Prevent paprika.py from importing empty image_url content 2025-01-17 15:04:28 +01:00
dependabot[bot]
7c81396ec5 Bump django from 4.2.17 to 4.2.18
Bumps [django](https://github.com/django/django) from 4.2.17 to 4.2.18.
- [Commits](https://github.com/django/django/compare/4.2.17...4.2.18)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 13:58:22 +00:00
smilerz
9b50665375 bump recipe-scrapers
fixes #3495
2025-01-17 07:57:30 -06:00
Anton Shevtsov
83795581e6 Translated using Weblate (Ukrainian)
Currently translated at 44.3% (253 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/uk/
2025-01-16 18:58:38 +00:00
Anton Shevtsov
af51524109 Translated using Weblate (Ukrainian)
Currently translated at 2.8% (14 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/uk/
2025-01-16 18:58:38 +00:00
vabene1111
738aa12243 Merge branch 'develop' 2025-01-05 11:38:52 +01:00
vabene1111
f25de4b4ce remove healthcheck 2025-01-05 11:38:35 +01:00
vabene1111
698aa5a753 Merge branch 'develop' 2025-01-01 09:24:51 +01:00
vabene1111
6444680e06 Merge pull request #3475 from TandoorRecipes/dependabot/pip/cryptography-44.0.0
Bump cryptography from 43.0.1 to 44.0.0
2025-01-01 08:16:19 +01:00
dependabot[bot]
38e1db9c53 Bump pytubefix from 8.5.1 to 8.9.0
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 8.5.1 to 8.9.0.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v8.5.1...v8.9.0)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 00:33:54 +00:00
dependabot[bot]
d71c929ba8 Bump django-tables2 from 2.7.0 to 2.7.4
Bumps [django-tables2](https://github.com/jieter/django-tables2) from 2.7.0 to 2.7.4.
- [Changelog](https://github.com/jieter/django-tables2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jieter/django-tables2/compare/v2.7.0...v2.7.4)

---
updated-dependencies:
- dependency-name: django-tables2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 00:33:51 +00:00
dependabot[bot]
c604369e86 Bump cryptography from 43.0.1 to 44.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 43.0.1 to 44.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/43.0.1...44.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 00:33:49 +00:00
dependabot[bot]
4865b742c7 Bump whitenoise from 6.7.0 to 6.8.2
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.7.0 to 6.8.2.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.7.0...6.8.2)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 00:33:45 +00:00
dependabot[bot]
1246549f4b Bump redis from 5.2.0 to 5.2.1
Bumps [redis](https://github.com/redis/redis-py) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.2.0...v5.2.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 00:33:42 +00:00
vabene1111
79abb8bf8f Merge branch 'develop' 2024-12-29 13:46:24 +01:00
vabene1111
fd4236672e update gitignore like vue3 branch 2024-12-29 13:46:17 +01:00
vabene1111
00148a2993 made shopping list compatible with SLR entries without a recipe 2024-12-29 13:44:43 +01:00
vabene1111
359fcb24cf fixed social signup form 2024-12-29 13:42:12 +01:00
vabene1111
f5d7919f72 Merge pull request #3448 from igorsantos07/patch-1
Update system.html: Django Recipes > Tandoor
2024-12-28 08:26:53 +01:00
vabene1111
86c4278553 Merge pull request #3454 from TandoorRecipes/dependabot/pip/jinja2-3.1.5
Bump jinja2 from 3.1.4 to 3.1.5
2024-12-28 08:26:44 +01:00
dependabot[bot]
2a5c0bb740 Bump jinja2 from 3.1.4 to 3.1.5
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
- [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.4...3.1.5)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-28 07:25:33 +00:00
Igor Santos
432dfa9e86 Update system.html: Django Recipes > Tandoor 2024-12-24 02:28:21 -03:00
vabene1111
f61a8371f4 Revert "added user filkes to recipe and added is_image flag to user file"
This reverts commit 0bcdf5e0a3.
2024-12-22 12:12:37 +01:00
vabene1111
0bcdf5e0a3 added user filkes to recipe and added is_image flag to user file 2024-12-22 12:05:47 +01:00
vabene1111
169f799a23 Merge pull request #3428 from hawthorc/develop
Add note about Python 3.12 dependency to manual.md
2024-12-11 15:19:59 +01:00
vabene1111
942d1130a1 Merge pull request #3416 from zodac/develop
Adding healthcheck to docker image
2024-12-11 15:17:28 +01:00
vabene1111
64cc20aed2 Merge pull request #3426 from TandoorRecipes/dependabot/pip/icalendar-6.1.0
Bump icalendar from 5.0.11 to 6.1.0
2024-12-11 15:12:09 +01:00
vabene1111
3a6731ec8d Merge pull request #3425 from TandoorRecipes/dependabot/pip/pytest-factoryboy-2.7.0
Bump pytest-factoryboy from 2.6.0 to 2.7.0
2024-12-11 15:11:32 +01:00
vabene1111
e6f11a17b9 Merge pull request #3423 from TandoorRecipes/dependabot/pip/pytest-django-4.9.0
Bump pytest-django from 4.8.0 to 4.9.0
2024-12-11 15:11:17 +01:00
vabene1111
cc1cd610e7 Merge pull request #3424 from TandoorRecipes/dependabot/pip/crispy-bootstrap4-2024.10
Bump crispy-bootstrap4 from 2024.1 to 2024.10
2024-12-11 15:10:19 +01:00
vabene1111
6a3b5ee844 Merge pull request #3431 from TandoorRecipes/dependabot/pip/django-4.2.17
Bump django from 4.2.16 to 4.2.17
2024-12-11 15:09:46 +01:00
Matjaž T
49b119571e Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-12-10 07:58:36 +00:00
Vincenzo Reale
e024e3deb0 Translated using Weblate (Italian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-12-09 00:58:36 +00:00
dependabot[bot]
7ccedb559d Bump django from 4.2.16 to 4.2.17
Bumps [django](https://github.com/django/django) from 4.2.16 to 4.2.17.
- [Commits](https://github.com/django/django/compare/4.2.16...4.2.17)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-06 18:57:23 +00:00
zodac
103daf000d Using --spider for healthcheck, which performs a HEAD request instead of a GET request 2024-12-02 20:44:12 +13:00
Vincenzo Reale
70df456307 Translated using Weblate (Italian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-12-02 04:53:51 +00:00
Carter Hawthorne
375174ee41 Add note about Python 3.12 dependency to manual.md 2024-12-01 18:38:38 -08:00
dependabot[bot]
f19beba014 Bump icalendar from 5.0.11 to 6.1.0
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.11 to 6.1.0.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/main/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.11...v6.1.0)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 00:39:31 +00:00
dependabot[bot]
865756e4b2 Bump pytest-factoryboy from 2.6.0 to 2.7.0
Bumps [pytest-factoryboy](https://github.com/pytest-dev/pytest-factoryboy) from 2.6.0 to 2.7.0.
- [Changelog](https://github.com/pytest-dev/pytest-factoryboy/blob/master/CHANGES.rst)
- [Commits](https://github.com/pytest-dev/pytest-factoryboy/compare/2.6.0...2.7.0)

---
updated-dependencies:
- dependency-name: pytest-factoryboy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 00:39:28 +00:00
dependabot[bot]
41f834db08 Bump crispy-bootstrap4 from 2024.1 to 2024.10
Bumps [crispy-bootstrap4](https://github.com/django-crispy-forms/crispy-bootstrap4) from 2024.1 to 2024.10.
- [Release notes](https://github.com/django-crispy-forms/crispy-bootstrap4/releases)
- [Changelog](https://github.com/django-crispy-forms/crispy-bootstrap4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/crispy-bootstrap4/compare/2024.1...2024.10)

---
updated-dependencies:
- dependency-name: crispy-bootstrap4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 00:39:26 +00:00
dependabot[bot]
2c94753a5a Bump pytest-django from 4.8.0 to 4.9.0
Bumps [pytest-django](https://github.com/pytest-dev/pytest-django) from 4.8.0 to 4.9.0.
- [Release notes](https://github.com/pytest-dev/pytest-django/releases)
- [Changelog](https://github.com/pytest-dev/pytest-django/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pytest-dev/pytest-django/compare/v4.8.0...v4.9.0)

---
updated-dependencies:
- dependency-name: pytest-django
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-01 00:39:23 +00:00
zodac
0e05c77fa7 Adding healthcheck to docker image 2024-11-29 14:15:24 +13:00
vabene1111
793c152b26 Merge pull request #3412 from lavanyamehn/duplicate_urls
Display a warning message when duplicate recipe is imported
2024-11-27 15:50:54 +01:00
Lavanya Mehndiratta
9df75f551c Changed functionality to only display a warning message 2024-11-26 18:09:55 -05:00
vabene1111
da49280ef2 Merge branch 'develop' 2024-11-26 17:29:57 +01:00
vabene1111
e6087d5129 use Sandbox Environment to render templates 2024-11-26 17:18:47 +01:00
vabene1111
4f9bff20c8 Merge pull request #3411 from bishtawi/bishtawi/secret-files
Support reading more secrets from files
2024-11-25 16:46:56 +01:00
Anders Obro
683f1ac10a Translated using Weblate (Danish)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/da/
2024-11-25 12:45:13 +00:00
Bishtawi
e844d2995a Support reading secrets from files 2024-11-24 12:31:17 -08:00
vabene1111
c0af3d19cd Merge branch 'develop' 2024-11-23 21:59:46 +01:00
vabene1111
78d20e8340 removed log 2024-11-23 21:59:40 +01:00
vabene1111
6a90caee04 removed log 2024-11-23 21:58:57 +01:00
vabene1111
98c95a94bc fixed youtube importer 2024-11-23 21:56:32 +01:00
vabene1111
d4dc4a30b8 fixed system page 2024-11-23 13:26:12 +01:00
Oleh Hudyma
70d2dc089c Translated using Weblate (Ukrainian)
Currently translated at 2.2% (11 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/uk/
2024-11-22 07:58:36 +00:00
Matjaž T
8698ad3054 Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-22 07:58:36 +00:00
Daniel Legin
6188f175ae Translated using Weblate (Croatian)
Currently translated at 30.9% (151 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/hr/
2024-11-19 06:58:39 +00:00
Daniel Legin
189fab2401 Translated using Weblate (Croatian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/hr/
2024-11-19 06:58:39 +00:00
Anders Obro
a3adba1941 Translated using Weblate (Danish)
Currently translated at 94.5% (539 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/da/
2024-11-19 06:58:39 +00:00
Mario Dvorsek
cea41af1b8 Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-19 06:58:39 +00:00
Matjaž T
a325070f7f Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-19 06:58:39 +00:00
Matjaž T
d782c54c2c Translated using Weblate (Slovenian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-19 06:58:39 +00:00
vabene1111
58917fbc4d Merge pull request #3403 from TandoorRecipes/dependabot/pip/aiohttp-3.10.11
Bump aiohttp from 3.10.2 to 3.10.11
2024-11-19 07:11:06 +01:00
dependabot[bot]
8b0547aeb9 Bump aiohttp from 3.10.2 to 3.10.11
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-19 06:10:25 +00:00
Daniel Legin
9efc101161 Added translation using Weblate (Croatian) 2024-11-18 19:04:53 +00:00
Daniel Legin
691e8a940b Added translation using Weblate (Croatian) 2024-11-18 11:13:47 +00:00
Matjaž T
bee7623eaf Translated using Weblate (Slovenian)
Currently translated at 71.7% (409 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-17 16:58:38 +00:00
Matjaž T
430697879f Translated using Weblate (Slovenian)
Currently translated at 84.0% (410 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-17 16:58:38 +00:00
Vincenzo Reale
749974654a Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-11-17 16:58:36 +00:00
Matjaž T
f31a661aaf Translated using Weblate (Slovenian)
Currently translated at 71.7% (409 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-16 14:09:25 +00:00
Matjaž T
70ea3acb05 Translated using Weblate (Slovenian)
Currently translated at 15.3% (75 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-16 14:09:25 +00:00
vabene1111
81547563c6 Merge branch 'develop' 2024-11-14 16:07:51 +01:00
vabene1111
c107f2f497 fixed system view 2024-11-14 16:06:58 +01:00
Владислав
5fea2131cd Translated using Weblate (Russian)
Currently translated at 5.5% (27 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ru/
2024-11-12 17:58:38 +00:00
Владислав
d671df30a3 Translated using Weblate (Russian)
Currently translated at 82.9% (473 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-11-12 17:58:38 +00:00
vabene1111
100b75a5d2 Merge branch 'develop' 2024-11-12 16:15:31 +01:00
vabene1111
7dba36d210 switched to space stats 2024-11-12 16:15:01 +01:00
vabene1111
0dea5c9877 api stats 2024-11-12 15:53:13 +01:00
vabene1111
1777dfe821 Revert "Merge pull request #3334 from TandoorRecipes/dependabot/pip/pytest-asyncio-0.24.0"
This reverts commit c30e1bb43a, reversing
changes made to 31051086ba.
2024-11-11 18:10:14 +01:00
vabene1111
2b6edfb96d fixed import_export docs format 2024-11-11 18:06:29 +01:00
vabene1111
faa3c99965 Merge pull request #3280 from vitoller/feature/import-gourmet
import of gourmet files
2024-11-11 18:04:55 +01:00
vabene1111
1cc5a0a094 Merge pull request #3382 from TandoorRecipes/dependabot/pip/django-cors-headers-4.6.0
Bump django-cors-headers from 4.3.1 to 4.6.0
2024-11-11 17:58:58 +01:00
vabene1111
cbafbd44a4 Merge pull request #3337 from TandoorRecipes/dependabot/pip/flake8-7.1.1
Bump flake8 from 6.1.0 to 7.1.1
2024-11-11 17:58:52 +01:00
vabene1111
f16a804758 Merge pull request #3335 from TandoorRecipes/dependabot/pip/lxml-5.3.0
Bump lxml from 5.1.0 to 5.3.0
2024-11-11 17:58:36 +01:00
vabene1111
c30e1bb43a Merge pull request #3334 from TandoorRecipes/dependabot/pip/pytest-asyncio-0.24.0
Bump pytest-asyncio from 0.23.5 to 0.24.0
2024-11-11 17:58:29 +01:00
vabene1111
31051086ba Merge pull request #3333 from TandoorRecipes/dependabot/pip/requests-2.32.3
Bump requests from 2.32.0 to 2.32.3
2024-11-11 17:58:22 +01:00
vabene1111
67d3c852dd Merge pull request #3381 from TandoorRecipes/dependabot/npm_and_yarn/vue/elliptic-6.6.0
Bump elliptic from 6.5.7 to 6.6.0 in /vue
2024-11-11 17:57:18 +01:00
Aija Kozlovska
4ea9b10fc4 Translated using Weblate (Latvian)
Currently translated at 2.8% (16 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/lv/
2024-11-05 10:58:36 +00:00
Aija Kozlovska
e609f4e0e0 Translated using Weblate (Latvian)
Currently translated at 67.6% (330 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/lv/
2024-11-05 10:58:36 +00:00
Dragan
b9ee2611a3 Translated using Weblate (Slovenian)
Currently translated at 54.0% (308 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-04 10:29:24 +00:00
Johnny Ip
8de3c41958 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-04 10:29:24 +00:00
Johnny Ip
2a350a9bbe Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hant/
2024-11-04 10:29:23 +00:00
Johnny Ip
89c4c09481 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-11-04 10:29:23 +00:00
Aija Kozlovska
a97b023504 Translated using Weblate (Latvian)
Currently translated at 45.9% (224 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/lv/
2024-11-04 10:29:23 +00:00
Aija Kozlovska
4aa7152ab4 Added translation using Weblate (Latvian) 2024-11-04 08:31:40 +00:00
Johnny Ip
80ff8ddb12 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-03 16:34:45 +00:00
Johnny Ip
45aeeaa069 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-03 16:32:49 +00:00
Vincenzo Reale
0c24db72c6 Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-11-01 06:58:36 +00:00
Vincenzo Reale
95c4d72b74 Translated using Weblate (Italian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-11-01 06:58:36 +00:00
dependabot[bot]
1330c0e7a3 Bump django-cors-headers from 4.3.1 to 4.6.0
Bumps [django-cors-headers](https://github.com/adamchainz/django-cors-headers) from 4.3.1 to 4.6.0.
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.3.1...4.6.0)

---
updated-dependencies:
- dependency-name: django-cors-headers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 00:03:14 +00:00
Vincenzo Reale
9af22bcf9f Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-31 06:00:00 +00:00
Vincenzo Reale
d24214c463 Translated using Weblate (Italian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-10-31 06:00:00 +00:00
dependabot[bot]
e8101dd433 Bump elliptic from 6.5.7 to 6.6.0 in /vue
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.7 to 6.6.0.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.7...v6.6.0)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 02:20:39 +00:00
Vincenzo Reale
94bd343eed Translated using Weblate (Italian)
Currently translated at 96.6% (551 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-30 16:02:55 +00:00
Vincenzo Reale
f409633ade Translated using Weblate (Italian)
Currently translated at 93.4% (456 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-10-30 16:02:55 +00:00
Vincenzo Reale
e927418535 Translated using Weblate (Italian)
Currently translated at 82.6% (471 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-30 13:30:42 +00:00
Vincenzo Reale
be9f9d68db Translated using Weblate (Italian)
Currently translated at 89.3% (436 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-10-30 13:30:42 +00:00
vabene1111
3a002cce9e Merge pull request #3359 from Chronophylos/mealie-import
Fix null-constrait errors in mealie import
2024-10-14 08:25:11 +02:00
vabene1111
416ddf3d34 Merge pull request #3361 from tlambertz/paprika-fix
Fix Paprika Import Images when not downloading from URL.
2024-10-14 08:22:19 +02:00
vabene1111
8b0a19c6a2 Merge pull request #3357 from TandoorRecipes/dependabot/npm_and_yarn/vue/elliptic-6.5.7
Bump elliptic from 6.5.4 to 6.5.7 in /vue
2024-10-13 12:30:59 +02:00
Thomas Lambertz
757fa1b768 Fix Paprika Import Images when not downloading from URL.
Previously, the code only tried to use the cropped image from paprika when downloading actively failed.
But if a user takes an image himself, the url will be empty, thus downloading won't be attempted and won't fail.
This change makes it so that the download is tried first, but the photo_data is always tried if no image exists for whatever reason.
2024-10-12 21:15:37 +02:00
Chronophylos
736d829bd0 Fix null-constrait errors in mealie import 2024-10-12 16:01:32 +02:00
dependabot[bot]
6829d5351d Bump elliptic from 6.5.4 to 6.5.7 in /vue
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.4 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.4...v6.5.7)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-12 03:18:39 +00:00
vabene1111
805eb87754 Merge pull request #3353 from TandoorRecipes/dependabot/pip/django-4.2.16
Bump django from 4.2.15 to 4.2.16
2024-10-10 13:07:43 +02:00
dependabot[bot]
e910ec4a51 Bump django from 4.2.15 to 4.2.16
Bumps [django](https://github.com/django/django) from 4.2.15 to 4.2.16.
- [Commits](https://github.com/django/django/compare/4.2.15...4.2.16)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 21:29:14 +00:00
vabene1111
4c0ace1d84 Merge branch 'develop' 2024-10-08 18:25:17 +02:00
vabene1111
cae26e7fe0 updated recipe scrapers 2024-10-08 18:22:03 +02:00
supaeasy
8d070349a6 Translated using Weblate (German)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-10-02 23:58:36 +00:00
vabene1111
166697d791 Merge pull request #3340 from TandoorRecipes/revert-3326-develop
Revert "Update connectors.md"
2024-10-02 14:29:36 +02:00
vabene1111
90d93b733d Revert "Update connectors.md" 2024-10-02 14:29:24 +02:00
vabene1111
272d2e94a1 Merge pull request #3327 from IkkiOcean/patch-1
Update manual.md with required python version
2024-10-02 09:24:46 +02:00
vabene1111
f84a401714 Merge pull request #3326 from supaeasy/develop
Update connectors.md
2024-10-02 09:23:01 +02:00
Jorge Martinez
f6b19d40b1 Translated using Weblate (Spanish)
Currently translated at 99.2% (566 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/es/
2024-10-01 18:58:35 +00:00
dependabot[bot]
969b7ba492 Bump flake8 from 6.1.0 to 7.1.1
Bumps [flake8](https://github.com/pycqa/flake8) from 6.1.0 to 7.1.1.
- [Commits](https://github.com/pycqa/flake8/compare/6.1.0...7.1.1)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:42 +00:00
dependabot[bot]
c9edec6308 Bump lxml from 5.1.0 to 5.3.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.1.0 to 5.3.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.3.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:37 +00:00
dependabot[bot]
9f0ff1348c Bump pytest-asyncio from 0.23.5 to 0.24.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.23.5 to 0.24.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.5...v0.24.0)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:31 +00:00
dependabot[bot]
c85d62fc66 Bump requests from 2.32.0 to 2.32.3
Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.3.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.0...v2.32.3)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:28 +00:00
Vivek Prakash
dae51a8d3e Update manual.md with required python version
The code written in https://github.com/TandoorRecipes/recipes/blob/develop/cookbook/connectors/connector_manager.py makes use of features introduced in Python 3.10, such as the structural pattern matching (match and case) and the union types with the pipe operator (|) which are not compatible with Python 3.9. That's why the minimum required python version for the manual installation should be python version 3.10.
2024-10-01 00:53:04 +05:30
supaeasy
d522534a12 Update connectors.md
Fixed errors in description:
- add / after api
- omit 'todo.' when adding HA-Entity
2024-09-30 14:17:18 +02:00
supaeasy
a38308a24a Translated using Weblate (German)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-09-27 13:58:36 +00:00
supaeasy
b981960221 Translated using Weblate (German)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-09-27 13:58:35 +00:00
nenormalniy
7d1461a752 Translated using Weblate (Russian)
Currently translated at 63.3% (361 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-26 03:58:35 +00:00
Emmker
24a589fe41 Translated using Weblate (Greek)
Currently translated at 46.3% (226 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/el/
2024-09-23 21:58:37 +00:00
supaeasy
b1d28a46c3 Translated using Weblate (German)
Currently translated at 98.9% (483 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-09-23 21:58:37 +00:00
vabene1111
6b376fbfbb Merge pull request #3302 from mikhail5555/dont-log-sensitive-headers-in-err
Allow HomeAssistant Connector to work with Debug=False (and logging improvements)
2024-09-23 07:44:01 +02:00
vabene1111
c532b1f94f Merge branch 'develop' into dont-log-sensitive-headers-in-err 2024-09-23 07:43:55 +02:00
vabene1111
26ab7f5580 Merge pull request #3305 from ehowe/develop
Make HomeAssistant description field optional
2024-09-23 07:37:34 +02:00
Emmker
72c638ca6f Translated using Weblate (Greek)
Currently translated at 99.8% (569 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/el/
2024-09-22 21:31:53 +00:00
Georgii Bogdanov
5478b7d550 Translated using Weblate (Russian)
Currently translated at 62.9% (359 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-22 21:31:52 +00:00
Mikhail Epifanov
e6eacc48d6 update code so it also works in DEBUG=false 2024-09-17 22:25:08 +02:00
Bebbe K
0259e000e3 Translated using Weblate (Swedish)
Currently translated at 61.4% (300 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sv/
2024-09-17 11:58:35 +00:00
Eugene Howe
eb0a95f594 Make HomeAssistant description field optional 2024-09-15 10:44:30 -04:00
Muck Péter
41ee8cf66f Translated using Weblate (Hungarian)
Currently translated at 81.5% (465 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/hu/
2024-09-14 12:44:44 +00:00
Mikhail Epifanov
8c8834e6aa dont log err.headers which can contain sensitive info 2024-09-13 22:36:05 +02:00
Tomer Alcavi
145abfa344 Translated using Weblate (Hebrew)
Currently translated at 18.2% (89 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/he/
2024-09-08 12:58:37 +00:00
Jaan
f60e61e331 Translated using Weblate (Russian)
Currently translated at 62.4% (356 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-08 12:58:37 +00:00
Sergei
fd534aba95 Translated using Weblate (Russian)
Currently translated at 62.4% (356 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-08 12:58:37 +00:00
vabene1111
f23c99f5ea Merge pull request #3293 from TandoorRecipes/dependabot/pip/cryptography-43.0.1
Bump cryptography from 42.0.5 to 43.0.1
2024-09-06 07:32:00 +02:00
dependabot[bot]
1a14cc9513 Bump cryptography from 42.0.5 to 43.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.5 to 43.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.5...43.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-04 00:11:21 +00:00
S. v.d. Gevel
e98131ce7a Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-03 19:58:35 +00:00
S. v.d. Gevel
7cff47efab Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-09-03 19:58:35 +00:00
Stefan van der Gevel
1dcc3e06d4 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-02 19:31:07 +00:00
S. v.d. Gevel
9125921038 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-02 19:31:07 +00:00
vabene1111
eea2a2c252 Merge pull request #3287 from TandoorRecipes/dependabot/pip/pyyaml-6.0.2
Bump pyyaml from 6.0.1 to 6.0.2
2024-09-02 16:39:46 +02:00
vabene1111
9554c69a39 Merge pull request #3288 from TandoorRecipes/dependabot/pip/django-crispy-forms-2.3
Bump django-crispy-forms from 2.1 to 2.3
2024-09-02 16:39:21 +02:00
vabene1111
506ab0f0c7 Merge pull request #3290 from TandoorRecipes/dependabot/pip/pillow-10.4.0
Bump pillow from 10.3.0 to 10.4.0
2024-09-02 16:39:03 +02:00
vabene1111
3e26ca5c68 Merge pull request #3291 from TandoorRecipes/dependabot/pip/whitenoise-6.7.0
Bump whitenoise from 6.6.0 to 6.7.0
2024-09-02 16:38:51 +02:00
dependabot[bot]
3fa8a9f27e Bump whitenoise from 6.6.0 to 6.7.0
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.6.0 to 6.7.0.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.6.0...6.7.0)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:14 +00:00
dependabot[bot]
0cdff07e4b Bump pillow from 10.3.0 to 10.4.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.3.0 to 10.4.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.3.0...10.4.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:11 +00:00
dependabot[bot]
8a142c3b11 Bump django-crispy-forms from 2.1 to 2.3
Bumps [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) from 2.1 to 2.3.
- [Release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases)
- [Changelog](https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/django-crispy-forms/compare/2.1...2.3)

---
updated-dependencies:
- dependency-name: django-crispy-forms
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:05 +00:00
dependabot[bot]
20ca7151d1 Bump pyyaml from 6.0.1 to 6.0.2
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/main/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:02 +00:00
Horst
15abe9f24b import of gourmet files
* in gourmet export as html and zip folder
* 'menus' are not imported

Note: it appears that the native format '.grmt' does not include the unit for ingredients
2024-08-30 10:05:19 +02:00
vabene1111
754b7c3376 Merge pull request #3278 from Priyanshu1035/fixtypo
Fixed the typo in the base.html file
2024-08-29 17:28:04 +02:00
Stefan van der Gevel
00b02248d3 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-28 18:49:54 +00:00
Priyanshu1035
fda302ebb6 fixedtypo 2024-08-28 23:29:41 +05:30
Stefan van der Gevel
70cd675aa1 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-28 12:58:35 +00:00
Stefan van der Gevel
960db5aaab Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-28 12:58:35 +00:00
Known Rabbit
8daf43d6e8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-27 07:58:35 +00:00
Stefan van der Gevel
114ca55b26 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-27 07:58:35 +00:00
Known Rabbit
59f5219c0b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-27 07:58:35 +00:00
Stefan van der Gevel
bc465c7b2f Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-27 07:58:35 +00:00
Known Rabbit
bf1b2db415 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-26 06:47:13 +00:00
Known Rabbit
9085756fca Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-26 06:47:13 +00:00
Known Rabbit
db43bd1962 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-24 14:58:37 +00:00
Known Rabbit
3c13c06ce1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-24 14:58:37 +00:00
vabene1111
beb1823a57 Merge pull request #3268 from smilerz/source_import_fix
set URL when none provided
2024-08-23 08:06:33 +02:00
smilerz
b6fa74c601 text 2024-08-22 12:45:49 -05:00
Matjaž T
596b6c6f98 Translated using Weblate (Slovenian)
Currently translated at 15.1% (74 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-08-21 16:58:36 +00:00
vabene1111
1bfe5bb6a0 Merge branch 'develop' 2024-08-20 12:21:11 +02:00
vabene1111
f6f6754669 removed validators library and improved url validation 2024-08-20 11:45:23 +02:00
vabene1111
752a25b1f8 fixed comma 2024-08-18 14:41:17 +02:00
vabene1111
8e8e4bb8bb added us_cup as base unit 2024-08-18 14:26:10 +02:00
vabene1111
06dc02d6b2 Merge pull request #3260 from yuekaim/patch-1
Update unit_conversion_helper.py
2024-08-18 14:24:17 +02:00
vabene1111
540daf2a38 fixed test 2024-08-18 14:20:09 +02:00
vabene1111
9e671d93cb added guest read only permission to keyword/api/space endpoint 2024-08-18 12:59:34 +02:00
Stefan van der Gevel
269be4e31a Translated using Weblate (Dutch)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-17 12:58:35 +00:00
Stefan van der Gevel
5969edc0b8 Translated using Weblate (Dutch)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-16 11:58:37 +00:00
Stefan van der Gevel
42176f42ed Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-16 11:58:37 +00:00
cleo miao
8c8bb159ea Update unit_conversion_helper.py
added us cup as a volume measurement
2024-08-14 02:43:19 +02:00
vabene1111
b9cf29a0ec Merge pull request #3259 from TandoorRecipes/dependabot/pip/django-4.2.15
Bump django from 4.2.14 to 4.2.15
2024-08-13 13:04:44 +02:00
dependabot[bot]
5db9f33723 Bump django from 4.2.14 to 4.2.15
Bumps [django](https://github.com/django/django) from 4.2.14 to 4.2.15.
- [Commits](https://github.com/django/django/compare/4.2.14...4.2.15)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-13 11:04:28 +00:00
vabene1111
1ba09cc119 Merge pull request #3248 from TandoorRecipes/dependabot/pip/aiohttp-3.10.2
Bump aiohttp from 3.10.0 to 3.10.2
2024-08-13 13:03:29 +02:00
dependabot[bot]
02bbe3fa13 Bump aiohttp from 3.10.0 to 3.10.2
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.0 to 3.10.2.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.0...v3.10.2)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 16:52:46 +00:00
vabene1111
0c77ca91c1 updated translations 2024-08-01 15:04:19 +02:00
vabene1111
fbadf14b58 Merge pull request #3238 from TandoorRecipes/dependabot/pip/crispy-bootstrap4-2024.1
Bump crispy-bootstrap4 from 2022.1 to 2024.1
2024-08-01 13:58:55 +02:00
vabene1111
2558fe6c2b Merge pull request #3237 from TandoorRecipes/dependabot/pip/aiohttp-3.10.0
Bump aiohttp from 3.9.4 to 3.10.0
2024-08-01 13:58:27 +02:00
vabene1111
10fca9b5ae Merge pull request #3235 from TandoorRecipes/dependabot/pip/pytest-xdist-3.6.1
Bump pytest-xdist from 3.5.0 to 3.6.1
2024-08-01 13:58:11 +02:00
dependabot[bot]
01f338e58b Bump aiohttp from 3.9.4 to 3.10.0
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.4 to 3.10.0.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.4...v3.10.0)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 11:58:10 +00:00
vabene1111
5e998796ab Merge pull request #3236 from TandoorRecipes/dependabot/pip/django-oauth-toolkit-2.4.0
Bump django-oauth-toolkit from 2.3.0 to 2.4.0
2024-08-01 13:57:51 +02:00
vabene1111
40231f45f6 Merge pull request #3239 from TandoorRecipes/dependabot/pip/validators-0.33.0
Bump validators from 0.20.0 to 0.33.0
2024-08-01 13:57:00 +02:00
vabene1111
b19b51c275 Merge pull request #3215 from mikhail5555/enable-global-logging-and-more-connector-logging
enable logging for whole project and add more logging to connectors
2024-08-01 13:52:20 +02:00
vabene1111
854877e685 Merge pull request #3226 from jknndy/Contribute-readme
Update link in Contributing section of readme
2024-08-01 13:49:30 +02:00
vabene1111
028a8ddbda Merge pull request #3227 from smilerz/scraper-updates
Scraper updates
2024-08-01 13:48:38 +02:00
dependabot[bot]
abb81209af Bump validators from 0.20.0 to 0.33.0
Bumps [validators](https://github.com/python-validators/validators) from 0.20.0 to 0.33.0.
- [Release notes](https://github.com/python-validators/validators/releases)
- [Changelog](https://github.com/python-validators/validators/blob/master/CHANGES.md)
- [Commits](https://github.com/python-validators/validators/compare/0.20.0...0.33.0)

---
updated-dependencies:
- dependency-name: validators
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:21 +00:00
dependabot[bot]
578201c519 Bump crispy-bootstrap4 from 2022.1 to 2024.1
Bumps [crispy-bootstrap4](https://github.com/django-crispy-forms/crispy-bootstrap4) from 2022.1 to 2024.1.
- [Release notes](https://github.com/django-crispy-forms/crispy-bootstrap4/releases)
- [Changelog](https://github.com/django-crispy-forms/crispy-bootstrap4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/crispy-bootstrap4/compare/2022.1...2024.1)

---
updated-dependencies:
- dependency-name: crispy-bootstrap4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:19 +00:00
dependabot[bot]
a5a23b366e Bump django-oauth-toolkit from 2.3.0 to 2.4.0
Bumps [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/jazzband/django-oauth-toolkit/releases)
- [Changelog](https://github.com/jazzband/django-oauth-toolkit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jazzband/django-oauth-toolkit/compare/2.3.0...2.4.0)

---
updated-dependencies:
- dependency-name: django-oauth-toolkit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:10 +00:00
dependabot[bot]
ac57837f53 Bump pytest-xdist from 3.5.0 to 3.6.1
Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.5.0...v3.6.1)

---
updated-dependencies:
- dependency-name: pytest-xdist
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:08 +00:00
vabene1111
5cdc8302bb Translated using Weblate (German)
Currently translated at 98.3% (480 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-07-31 13:05:41 +00:00
smilerz
b095718545 add user-agent to URL import html request 2024-07-30 14:03:12 -05:00
smilerz
0b53285b89 bump recipe scrapers to 15.0.0 2024-07-29 10:01:31 -05:00
dudu dor
d1ea4360ca Translated using Weblate (Hebrew)
Currently translated at 4.7% (23 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/he/
2024-07-28 08:38:59 +00:00
dudu dor
257372db5a Translated using Weblate (Hebrew)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/he/
2024-07-28 08:38:58 +00:00
Joey
855f20f2da Update README.md 2024-07-25 16:54:17 -04:00
Adam Krivanek
4f73e57ab2 Translated using Weblate (Czech)
Currently translated at 98.2% (559 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/
2024-07-16 21:58:40 +00:00
Mikhail Epifanov
1b529bba10 update variable name and change default to warning, add docs 2024-07-13 22:41:08 +02:00
vabene1111
072cd00e59 Merge pull request #3216 from TandoorRecipes/dependabot/pip/django-4.2.14
Bump django from 4.2.11 to 4.2.14
2024-07-12 17:48:07 +02:00
dependabot[bot]
4b03c1a8dd Bump django from 4.2.11 to 4.2.14
Bumps [django](https://github.com/django/django) from 4.2.11 to 4.2.14.
- [Commits](https://github.com/django/django/compare/4.2.11...4.2.14)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-10 22:10:20 +00:00
Mikhail Epifanov
f614413fb1 use self._logger everywhere 2024-07-10 11:17:06 +02:00
Mikhail Epifanov
74153d79b8 add process and thread name aswell 2024-07-10 10:56:39 +02:00
Mikhail Epifanov
edf06944e0 enable logging for whole project and add more logging to connectors 2024-07-10 10:54:41 +02:00
smilerz
a02582e9f8 rebase 2024-07-09 08:01:39 -05:00
vabene1111
c4ff29beda added missing requirement for openapi endpoint 2024-07-09 07:20:49 +02:00
vabene1111
cc839a1ae9 Merge branch 'develop' 2024-07-08 20:32:15 +02:00
vabene1111
af9a95651d test respect new validation logic 2024-07-08 18:13:49 +02:00
vabene1111
45106ae99a Merge branch 'develop' of https://github.com/TandoorRecipes/recipes into develop 2024-07-08 18:02:50 +02:00
vabene1111
0ac3c55180 update translations 2024-07-08 18:02:44 +02:00
vabene1111
a289fd427b Merge pull request #3204 from AlD/develop
Gracefully handle lookup errors in resolveDjangoUrl
2024-07-08 17:44:00 +02:00
smilerz
6385866e98 url import fixes 2024-07-08 08:35:59 -05:00
smilerz
c2176305db fix invalid syntax in admin/step 2024-07-08 08:28:49 -05:00
Jean-Félix ALLARD
fd3760198b Translated using Weblate (French)
Currently translated at 96.8% (551 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fr/
2024-07-05 16:38:58 +00:00
Taylan TATLI
826ddddd5d Translated using Weblate (Turkish)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/tr/
2024-07-03 16:39:00 +00:00
Taylan TATLI
93613c9781 Translated using Weblate (Turkish)
Currently translated at 6.8% (33 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/tr/
2024-07-03 16:39:00 +00:00
Daniel Albers
818ca0b2e4 Gracefully handle lookup errors in resolveDjangoUrl 2024-07-03 13:45:33 +02:00
vabene1111
17d34c5ca7 improved allowed hosts docs, default config and added a system warning 2024-06-27 13:48:11 +02:00
vabene1111
965f7c04d8 Merge pull request #3188 from TandoorRecipes/dependabot/npm_and_yarn/vue/ws-7.5.10
Bump ws from 7.5.9 to 7.5.10 in /vue
2024-06-27 13:26:40 +02:00
vabene1111
0e1e312f7c Merge pull request #3196 from TandoorRecipes/dependabot/pip/djangorestframework-3.15.2
Bump djangorestframework from 3.14.0 to 3.15.2
2024-06-27 13:26:09 +02:00
dependabot[bot]
202d8afa10 Bump djangorestframework from 3.14.0 to 3.15.2
Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.14.0 to 3.15.2.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.14.0...3.15.2)

---
updated-dependencies:
- dependency-name: djangorestframework
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-26 19:05:46 +00:00
Renato
769561349f Translated using Weblate (Portuguese (Brazil))
Currently translated at 89.2% (508 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2024-06-21 14:38:58 +00:00
dependabot[bot]
0cb415f70d Bump ws from 7.5.9 to 7.5.10 in /vue
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 17:23:52 +00:00
tarek EL SOL
6d4dbc26a4 Translated using Weblate (French)
Currently translated at 87.2% (423 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/
2024-05-28 00:57:11 +00:00
vabene1111
63759c985f Merge pull request #3160 from TandoorRecipes/dependabot/pip/requests-2.32.0
Bump requests from 2.31.0 to 2.32.0
2024-05-21 16:11:16 +02:00
dependabot[bot]
98d4ce5ff8 ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:30:33 +00:00
only
2cf9c288be Translated using Weblate (Chinese (Traditional))
Currently translated at 8.2% (47 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-05-19 13:38:57 +00:00
only
9254a36636 Translated using Weblate (Chinese (Traditional))
Currently translated at 11.3% (55 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hant/
2024-05-19 13:38:57 +00:00
Jakob Priesner
3f258fbd87 Translated using Weblate (German)
Currently translated at 98.7% (479 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-05-11 00:33:05 +00:00
vabene1111
7100f4eb8b Merge pull request #3147 from bhagerty/patch-1
Remove obsolete "version: 3" to eliminate warning message
2024-05-07 07:56:00 +02:00
vabene1111
7285d8b01c Merge pull request #3150 from bhagerty/develop
Delete obsolete "version" entry from last two compose.yml files
2024-05-07 07:55:23 +02:00
vabene1111
78da168a2e Merge pull request #3149 from bhagerty/patch-2
Remove obsolete "version:" entry
2024-05-07 07:55:02 +02:00
vabene1111
f54009ae00 Merge pull request #3151 from TandoorRecipes/dependabot/pip/jinja2-3.1.4
Bump jinja2 from 3.1.3 to 3.1.4
2024-05-07 07:53:34 +02:00
dependabot[bot]
f92f18ecb2 Bump jinja2 from 3.1.3 to 3.1.4
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [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.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 20:55:38 +00:00
Brian Hagerty
44832f7c11 Delete obsolete "version" entry from compose.yml
Per my other PR, "version" is obsolete
2024-05-06 12:38:13 -05:00
Brian Hagerty
e475115b6a Delete obsolete "version" entry
Per my first PR, "version" is obsolete and throws a warning.
2024-05-06 12:36:53 -05:00
Brian Hagerty
b32a7a9134 Remove obsolete "version:" entry
Per my other PR, "version" is obsolete and throws a warning.
2024-05-06 12:31:35 -05:00
Brian Hagerty
381adb2a5b Merge pull request #1 from TandoorRecipes/develop
Translated using Weblate (German)
2024-05-06 12:29:48 -05:00
Carsten Docktor
d976fafd45 Translated using Weblate (German)
Currently translated at 95.6% (464 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-05-04 19:10:19 +00:00
Brian Hagerty
7e7657e444 Remove obsolete "version: 3" to eliminate warning message
The "version: 3" entry is obsolete and throws a warning: 'version' is obsolete. AFAIK, there's no reason to keep it. There's a lengthy discussion of this issue in a different repo: https://github.com/jasonacox/Powerwall-Dashboard/issues/453

They got rid of "version" in that project. It seems like it should be removed here too.
2024-05-04 11:00:08 -05:00
vabene1111
4b551c595a MealPlan from/to date to datetime, added time to MealType 2024-05-01 13:45:12 +02:00
vabene1111
c87964f6d0 Merge pull request #3132 from smilerz/collectstatic_fix
removing pre-cached staticfiles from Docker & boot.sh
2024-04-30 17:55:41 +02:00
Fymyte
353b2d6d21 Translated using Weblate (French)
Currently translated at 96.8% (551 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fr/
2024-04-30 14:59:33 +00:00
smilerz
1d58f318ca removing pre-cached staticfiles from Docker & boot.sh 2024-04-30 07:21:30 -05:00
vabene1111
771375b40b added missing doctype attribute 2024-04-27 09:28:19 +02:00
vabene1111
1e4f6d243c Merge pull request #3120 from ellezhu1/planToEat
Fix #2982 - PlantoEat Importer
2024-04-22 08:03:43 +02:00
vabene1111
717c989ae9 Merge pull request #3121 from ellezhu1/nextCloud
Fix #3060 Next Cloud handle special ingredients ##
2024-04-22 08:03:00 +02:00
ellezhu1
4933726b79 made some changes 2024-04-21 21:23:40 +00:00
ellezhu1
d81e7f6c2b remove ##ingredients 2024-04-21 11:28:51 +00:00
ellezhu1
f1ab60bcd1 Merge branch 'develop' into planToEat 2024-04-21 06:18:51 -05:00
ellezhu1
68e6ab4be5 get step name 2024-04-21 08:31:29 +00:00
ellezhu1
7ea9592398 tested 2024-04-21 06:25:02 +00:00
ellezhu1
52d8e8d9ba issue2982 - plantToEat 2024-04-21 06:09:55 +00:00
vabene1111
b7e23df4c2 Merge pull request #3115 from TandoorRecipes/dependabot/pip/aiohttp-3.9.4
Bump aiohttp from 3.9.3 to 3.9.4
2024-04-19 07:31:52 +02:00
dependabot[bot]
fce57f7f03 Bump aiohttp from 3.9.3 to 3.9.4
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.3 to 3.9.4.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.3...v3.9.4)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-18 16:18:46 +00:00
vabene1111
7eaa33ac69 Merge pull request #3113 from TandoorRecipes/dependabot/pip/gunicorn-22.0.0
Bump gunicorn from 21.2.0 to 22.0.0
2024-04-18 09:38:53 +02:00
dependabot[bot]
7ce2c042c3 Bump gunicorn from 21.2.0 to 22.0.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 21.2.0 to 22.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-17 02:51:06 +00:00
vabene1111
371d8a76b8 added flake8 watcher 2024-04-14 18:58:52 +02:00
vabene1111
7f63451b9a Merge pull request #3095 from Manon-ds/fixRounding
fix: rounding units
2024-04-14 18:21:28 +02:00
vabene1111
ee8237d493 Merge pull request #3101 from tooboredtocode/develop
improve docker run speed
2024-04-14 18:20:06 +02:00
vabene1111
91d3c43422 Merge pull request #3109 from smilerz/recipe_scrapers
Compatible with recipe_scrapers v15
2024-04-14 18:15:20 +02:00
smilerz
1700b9c531 change test_automations to use scrape_html
remove reliance on custom text_scraper class
changed url on test case to generic wildmode vs specific site
2024-04-12 09:20:56 -05:00
smilerz
7133249f4b update recipe_scrapers to use scrape_html
scrape_me has been deprecated
2024-04-12 08:11:59 -05:00
smilerz
ab9ea87549 upgrade recipe-scrapers 2024-04-12 08:11:58 -05:00
smilerz
975ad34672 Revert "tests for pk only nested serializer"
This reverts commit 714242b6df.
2024-04-12 07:02:57 -05:00
smilerz
6cb6861228 Revert "Revert "moved prettier configuration to .prettierrc""
This reverts commit cc24964368.
2024-04-12 07:02:42 -05:00
smilerz
cc24964368 Revert "moved prettier configuration to .prettierrc"
This reverts commit c33c4ed79b.
2024-04-11 18:24:44 -05:00
smilerz
714242b6df tests for pk only nested serializer 2024-04-11 17:36:24 -05:00
smilerz
c33c4ed79b moved prettier configuration to .prettierrc 2024-04-11 07:27:22 -05:00
vabene1111
971f8f3dad Merge pull request #3102 from smilerz/yapf_prettier
Yapf prettier
2024-04-11 07:46:12 +02:00
vabene1111
ca5fda7927 added property type delete admin 2024-04-10 20:04:17 +02:00
smilerz
2e6cc3e58e document configurations required for formatting and linting 2024-04-08 19:16:18 -05:00
tooboredtocode
42b7d1afcb fix: image not working in docker compose environments 2024-04-08 23:58:10 +02:00
tooboredtocode
99868e4e80 Reapply "Merge pull request #3055 from tooboredtocode/develop"
This reverts commit f14acc371d.
2024-04-08 23:56:49 +02:00
smilerz
38b22f3a56 setup project level linting with flake8
project level formatting with prettier
project level formatting with yapf
2024-04-08 10:49:53 -05:00
Manon Brun
b70a3bce9f Merge branch 'develop' into fixRounding 2024-04-08 09:13:57 +01:00
vabene1111
fb821ba0ef Merge branch 'develop' 2024-04-08 07:21:09 +02:00
vabene1111
f14acc371d Revert "Merge pull request #3055 from tooboredtocode/develop"
This reverts commit d7669279ff, reversing
changes made to 4293ec77c0.
2024-04-08 07:20:41 +02:00
vabene1111
c031db9019 downgraded recipe scrapers to pass tests for now 2024-04-05 21:18:01 +02:00
Manon Brun
78686faad3 fix: rounding units 2024-04-05 15:57:09 +01:00
vabene1111
b9e806b818 Merge branch 'develop' 2024-04-04 20:57:53 +02:00
vabene1111
d7669279ff Merge pull request #3055 from tooboredtocode/develop
Improve docker run speeds
2024-04-04 20:52:48 +02:00
vabene1111
4293ec77c0 fixed changing categories of shopping items 2024-04-04 20:49:48 +02:00
vabene1111
0a30c39add Merge pull request #3082 from TandoorRecipes/dependabot/github_actions/awalsh128/cache-apt-pkgs-action-1.4.2
Bump awalsh128/cache-apt-pkgs-action from 1.4.1 to 1.4.2
2024-04-04 20:42:52 +02:00
vabene1111
1b6449270b Merge pull request #3081 from TandoorRecipes/dependabot/pip/beautifulsoup4-4.12.3
Bump beautifulsoup4 from 4.12.2 to 4.12.3
2024-04-04 20:42:41 +02:00
vabene1111
3ae264eea7 Merge pull request #3080 from TandoorRecipes/dependabot/pip/django-debug-toolbar-4.3.0
Bump django-debug-toolbar from 4.2.0 to 4.3.0
2024-04-04 20:42:35 +02:00
vabene1111
c9dc7164f5 Merge pull request #3078 from TandoorRecipes/dependabot/pip/pytest-cov-5.0.0
Bump pytest-cov from 4.1.0 to 5.0.0
2024-04-04 20:42:22 +02:00
vabene1111
5751ba1ec5 Merge pull request #3079 from TandoorRecipes/dependabot/pip/django-crispy-forms-2.1
Bump django-crispy-forms from 2.0 to 2.1
2024-04-04 20:42:16 +02:00
vabene1111
3eca8c6db4 Merge pull request #3077 from TandoorRecipes/dependabot/pip/recipe-scrapers-14.55.0
Bump recipe-scrapers from 14.52.0 to 14.55.0
2024-04-04 20:42:03 +02:00
vabene1111
5cccbb8e5c Merge pull request #3092 from TandoorRecipes/dependabot/pip/pillow-10.3.0
Bump pillow from 10.2.0 to 10.3.0
2024-04-04 15:56:09 +02:00
dependabot[bot]
4390703c0c Bump pillow from 10.2.0 to 10.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.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.2.0...10.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 16:22:02 +00:00
smilerz
47bc3cfbe7 Update backup.md
update compose configuration for pgbackup to include .env file
2024-04-03 09:07:09 -05:00
atom karinca
30a2012e90 Translated using Weblate (Turkish)
Currently translated at 5.9% (29 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/tr/
2024-04-01 22:04:36 +00:00
dependabot[bot]
b38ea866b4 Bump awalsh128/cache-apt-pkgs-action from 1.4.1 to 1.4.2
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases)
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: awalsh128/cache-apt-pkgs-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 01:02:35 +00:00
dependabot[bot]
5a0b9e14d2 Bump beautifulsoup4 from 4.12.2 to 4.12.3
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.12.2 to 4.12.3.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:28 +00:00
dependabot[bot]
4f0f59a55c Bump django-debug-toolbar from 4.2.0 to 4.3.0
Bumps [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/jazzband/django-debug-toolbar/releases)
- [Changelog](https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/jazzband/django-debug-toolbar/compare/4.2...4.3)

---
updated-dependencies:
- dependency-name: django-debug-toolbar
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:25 +00:00
dependabot[bot]
768b678c93 Bump django-crispy-forms from 2.0 to 2.1
Bumps [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) from 2.0 to 2.1.
- [Release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases)
- [Changelog](https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/django-crispy-forms/compare/2.0...2.1)

---
updated-dependencies:
- dependency-name: django-crispy-forms
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:19 +00:00
dependabot[bot]
10373b6ac5 Bump pytest-cov from 4.1.0 to 5.0.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.1.0 to 5.0.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:12 +00:00
dependabot[bot]
4e0780d512 Bump recipe-scrapers from 14.52.0 to 14.55.0
Bumps [recipe-scrapers](https://github.com/hhursev/recipe-scrapers) from 14.52.0 to 14.55.0.
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/14.52.0...14.55.0)

---
updated-dependencies:
- dependency-name: recipe-scrapers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:06 +00:00
atom karinca
959ad2a45c Translated using Weblate (Turkish)
Currently translated at 33.7% (192 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/tr/
2024-03-31 20:08:43 +00:00
vabene1111
94045905d3 Merge pull request #3069 from TandoorRecipes/dependabot/npm_and_yarn/vue/express-4.19.2
Bump express from 4.18.2 to 4.19.2 in /vue
2024-03-28 07:40:49 +01:00
dependabot[bot]
ad8d8daf79 Bump express from 4.18.2 to 4.19.2 in /vue
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 06:40:03 +00:00
vabene1111
b623abf81e Merge pull request #3067 from Mikhail5555/move-away-from-homeassistant-api
use normal async client for api calls
2024-03-28 07:38:43 +01:00
tooboredtocode
f8b8d3f199 Merge branch 'TandoorRecipes:develop' into develop 2024-03-27 23:31:44 +01:00
Axel Breiterman
be388b0d10 Translated using Weblate (Spanish)
Currently translated at 53.1% (258 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/es/
2024-03-27 19:02:41 +00:00
Mikhail Epifanov
41a448578a extra check if we arent accidently doing a query 2024-03-26 23:21:23 +01:00
Mikhail Epifanov
441c55936d use normal async client for api calls 2024-03-26 22:46:04 +01:00
vabene1111
b67281bbc8 fixed property helper calculation 2024-03-25 20:27:33 +01:00
vabene1111
5a1a5f3c4d Merge pull request #3057 from TandoorRecipes/dependabot/npm_and_yarn/vue/webpack-dev-middleware-5.3.4
Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /vue
2024-03-25 07:43:18 +01:00
vabene1111
30e2fc4895 Merge pull request #3052 from smilerz/test_performance
Test performance
2024-03-25 07:33:39 +01:00
vabene1111
57304f9c6c Merge pull request #3059 from richid/fix-system-issue-3503
bug: Fix TypeError at /system due to invalid PostgreSQL values [Closes #3053]
2024-03-25 07:31:28 +01:00
jorge Teixeira
87327b0959 Translated using Weblate (Portuguese (Brazil))
Currently translated at 84.5% (481 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2024-03-24 16:02:39 +00:00
Rich Schumacher
7957413ca0 bug: Fix TypeError at /system due to invalid PostgreSQL values [Closes #3053]
The bug was a missing tuple index introduced in #3027. Added the index
and also wrapped everything in a try/catch to prevent future issues.
2024-03-23 15:31:44 -04:00
dependabot[bot]
d99a157416 Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /vue
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-23 06:40:34 +00:00
tooboredtocode
20b812c2cc feat: re-add venv 2024-03-22 19:04:29 +01:00
tooboredtocode
7bfa23b953 feat: better messages 2024-03-22 11:32:30 +01:00
tooboredtocode
ae37abf8b2 fix: fix modified the wrong file 2024-03-22 11:26:26 +01:00
tooboredtocode
5f211e420e fix: moving into exisiting files 2024-03-22 02:50:18 +01:00
tooboredtocode
1235cb8da5 feat: improve docker run speeds 2024-03-22 00:50:02 +01:00
smilerz
5e3a5eb8f5 fix errant IF statement 2024-03-21 09:18:38 -05:00
smilerz
b6a42e8e81 enable parallel test execution 2024-03-21 09:13:11 -05:00
smilerz
49539ef3ba add TEST_DATABASE env parameters 2024-03-21 09:11:57 -05:00
Johannes Jandke
db310c4076 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-21 14:02:41 +00:00
vabene1111
0248e1c500 Merge pull request #3006 from TandoorRecipes/dependabot/pip/django-cors-headers-4.3.1
Bump django-cors-headers from 4.2.0 to 4.3.1
2024-03-21 14:59:33 +01:00
vabene1111
db04386997 Merge pull request #3008 from TandoorRecipes/dependabot/pip/cryptography-42.0.5
Bump cryptography from 42.0.4 to 42.0.5
2024-03-21 14:59:16 +01:00
vabene1111
54f0b2b036 Merge pull request #3009 from TandoorRecipes/dependabot/pip/gunicorn-21.2.0
Bump gunicorn from 20.1.0 to 21.2.0
2024-03-21 14:59:04 +01:00
smilerz
33b23b299d removed unused docs/coverage/ reports 2024-03-21 08:58:32 -05:00
smilerz
a047613edb enabled entire test_recipe_full_text_search unit tests 2024-03-21 08:56:45 -05:00
smilerz
149cf93618 removed unused CustomTestRunner 2024-03-21 08:56:21 -05:00
vabene1111
20e0c948c4 Merge branch 'develop' 2024-03-21 14:40:23 +01:00
vabene1111
ceb68af503 compiled and made messages 2024-03-21 14:40:13 +01:00
vabene1111
d8c86a4bb8 Merge pull request #3048 from smilerz/shoppinglist_fix
Shoppinglist fix
2024-03-21 14:08:23 +01:00
dependabot[bot]
a9dcc7261c Bump cryptography from 42.0.4 to 42.0.5
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.4 to 42.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.4...42.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-21 13:04:03 +00:00
vabene1111
341c6abc02 Merge pull request #3046 from TandoorRecipes/dependabot/pip/django-4.2.11
Bump django from 4.2.10 to 4.2.11
2024-03-21 14:03:09 +01:00
Tomasz Klimczak
5c2d92103b Translated using Weblate (Polish)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pl/
2024-03-19 23:47:14 +00:00
Johannes Jandke
7b9bd5bc2a Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 23:47:13 +00:00
Thomas
e242412ec4 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 23:47:13 +00:00
Bastian
6aaec29c8a Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 23:47:13 +00:00
Tomasz Klimczak
854af133c4 Translated using Weblate (Polish)
Currently translated at 46.8% (227 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pl/
2024-03-19 23:47:13 +00:00
Johannes Jandke
ac961ef7d2 Translated using Weblate (German)
Currently translated at 91.5% (444 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-03-19 23:47:13 +00:00
smilerz
b6f3ed6bd9 handle auto_onhand on bulkShoppingListEntry api 2024-03-19 09:12:31 -05:00
Johannes Jandke
ccf56e24be Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 13:59:35 +00:00
Anthony BARRIER
5298b69d83 Translated using Weblate (French)
Currently translated at 95.6% (544 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fr/
2024-03-19 13:59:35 +00:00
Lukas B
f2f004db87 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 13:59:35 +00:00
Johannes Jandke
9416406732 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 13:59:35 +00:00
Jan
eeae2c1740 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-19 13:59:35 +00:00
Anthony BARRIER
45d3fd34be Translated using Weblate (French)
Currently translated at 87.2% (423 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/
2024-03-19 13:59:35 +00:00
smilerz
bd61906aa4 counting delayed unchecked should check if null or in past 2024-03-18 18:09:56 -05:00
dependabot[bot]
c322782e89 Bump django from 4.2.10 to 4.2.11
Bumps [django](https://github.com/django/django) from 4.2.10 to 4.2.11.
- [Commits](https://github.com/django/django/compare/4.2.10...4.2.11)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 20:53:10 +00:00
vabene1111
2e6becb73d Merge pull request #3041 from TandoorRecipes/dependabot/npm_and_yarn/vue/follow-redirects-1.15.6
Bump follow-redirects from 1.15.5 to 1.15.6 in /vue
2024-03-17 10:10:50 +01:00
dependabot[bot]
d2aeef7e63 Bump follow-redirects from 1.15.5 to 1.15.6 in /vue
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-17 00:25:33 +00:00
Miguel
8e700ba53c Translated using Weblate (Spanish)
Currently translated at 99.4% (566 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/es/
2024-03-16 09:02:46 +00:00
vabene1111
2f203d7786 reverted api plan ical having optional parameters 2024-03-15 19:11:11 +01:00
smilerz
2d021a83cf Update launch.json
adding .vscode configuration to the project broke/changed a bunch of stuff.  this fixes the ability to debug pytest
2024-03-13 08:25:22 -05:00
Tor Stokka
dda2cc16e7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 65.2% (371 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nb_NO/
2024-03-11 13:02:39 +00:00
Kn
07957814f9 Translated using Weblate (Swedish)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sv/
2024-03-11 13:02:39 +00:00
Kn
658bc5ca54 Translated using Weblate (Swedish)
Currently translated at 55.2% (268 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sv/
2024-03-11 13:02:39 +00:00
vabene1111
539eb8e612 make and compile all messages 2024-03-10 07:25:13 +01:00
Kn
ba54a44e04 Translated using Weblate (Finnish)
Currently translated at 37.1% (211 of 568 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fi/
2024-03-10 06:12:01 +00:00
Kn
5ecddaf02f Translated using Weblate (Finnish)
Currently translated at 4.4% (22 of 493 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fi/
2024-03-10 06:12:01 +00:00
Kn
a6c0dba684 Translated using Weblate (Swedish)
Currently translated at 100.0% (568 of 568 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sv/
2024-03-10 06:12:01 +00:00
Kn
7986d9c8f3 Translated using Weblate (Swedish)
Currently translated at 100.0% (371 of 371 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sv/
2024-03-10 06:12:01 +00:00
vabene1111
02523f5325 fixed duplicate operation ID for plan-ical endpoint 2024-03-09 12:54:49 +01:00
vabene1111
36887b3488 added open data slug to shopping category form 2024-03-09 12:36:24 +01:00
vabene1111
bb77f80abf fixed shopping category headers showing when only containing delayed entries 2024-03-09 07:56:22 +01:00
vabene1111
9c92e0f4c0 fixed deleteting the selected supermarket in shopping breaking page 2024-03-09 07:47:33 +01:00
vabene1111
a6e8fa8ddf Merge branch 'develop' of https://github.com/TandoorRecipes/recipes into develop 2024-03-09 07:44:36 +01:00
vabene1111
37fb0418ac fixed default page setting and made PWA respect that setting 2024-03-09 07:44:32 +01:00
vabene1111
2264050d40 Merge pull request #3027 from richid/system-pg-version-fix
bug: Fix decimal.InvalidOperation on /system for some PG versions
2024-03-09 07:32:23 +01:00
vabene1111
aebc4a45ff fixed boot script for systems that dont support ipv6 2024-03-09 07:31:28 +01:00
Enric Bergadà
f061e02a95 Translated using Weblate (Catalan)
Currently translated at 14.0% (80 of 568 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2024-03-08 23:19:57 +00:00
Enric Bergadà
952d50d8dd Translated using Weblate (Catalan)
Currently translated at 85.5% (419 of 490 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2024-03-08 23:19:56 +00:00
Rich Schumacher
3489216daf bug: Fix decimal.InvalidOperation on /system for some PG versions
In https://github.com/TandoorRecipes/recipes/pull/2730 the /system page was improved to warn the user if the version of Postgres they are using is out of date and should be updated. The current code attempts to determine the major versions by replacing `00` with `.` and then converting to a `Decimal`. Unfortunately, it appears the only value this method _does not_ work for are initial releases of major versions, like `16.0.0`.

For reference, either Postgres or the PsyCog driver represents the semver values but without the dots, so `16.0.0` becomes `1600000`.

This change removes the string replace and Decimal conversion in favor of using the divmod() function. In this application it will return a tuple with the first element being the major version of Postgres. This is then used as before to compare against deprecated versions.
2024-03-07 20:47:40 -05:00
Enric Bergadà
8e9285a24e Added translation using Weblate (Catalan) 2024-03-07 22:49:50 +00:00
Michel Blankenstein
8f55e15767 Translated using Weblate (Dutch)
Currently translated at 91.3% (518 of 567 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-03-05 22:19:58 +00:00
Jan
f2ce164a1e Translated using Weblate (German)
Currently translated at 99.1% (562 of 567 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-05 22:19:58 +00:00
Jocelin Lebreton
bfdd5a8bfc Translated using Weblate (French)
Currently translated at 96.5% (473 of 490 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/
2024-03-05 22:19:58 +00:00
dependabot[bot]
cf61de0dba Bump gunicorn from 20.1.0 to 21.2.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 20.1.0 to 21.2.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/20.1.0...21.2.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 00:05:19 +00:00
dependabot[bot]
29a937c44d Bump django-cors-headers from 4.2.0 to 4.3.1
Bumps [django-cors-headers](https://github.com/adamchainz/django-cors-headers) from 4.2.0 to 4.3.1.
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.2.0...4.3.1)

---
updated-dependencies:
- dependency-name: django-cors-headers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 00:04:56 +00:00
342 changed files with 53332 additions and 61746 deletions

View File

@@ -6,6 +6,9 @@
# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one
SECRET_KEY=
# allowed hosts (see documentation), should be set to your hostname(s) but might be * (default) for some proxies/providers
# ALLOWED_HOSTS=recipes.mydomain.com
# add only a database password if you want to run with the default postgres, otherwise change settings accordingly
DB_ENGINE=django.db.backends.postgresql
POSTGRES_HOST=db_recipes

22
.flake8 Normal file
View File

@@ -0,0 +1,22 @@
[flake8]
extend-ignore =
# Whitespace before ':' - Required for black compatibility
E203,
# Line break occurred before a binary operator - Required for black compatibility
W503,
# Comparison to False should be 'if cond is False:' or 'if not cond:'
E712
exclude =
.git,
**/__pycache__,
**/.git,
**/.svn,
**/.hg,
**/CVS,
**/.DS_Store,
.vscode,
**/*.pyc
per-file-ignores=
cookbook/apps.py:F401
max-line-length = 179

View File

@@ -14,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: awalsh128/cache-apt-pkgs-action@v1.4.1
- uses: awalsh128/cache-apt-pkgs-action@v1.4.2
with:
packages: libsasl2-dev python3-dev libldap2-dev libssl-dev
version: 1.0

30
.gitignore vendored
View File

@@ -47,6 +47,11 @@ docs/reports/**
# Django stuff:
*.log
mediafiles/
*.sqlite3*
staticfiles/
postgresql/
data/
# Sphinx documentation
docs/_build/
@@ -59,32 +64,25 @@ target/
\.idea/dataSources\.local\.xml
venv/
mediafiles/
*.sqlite3*
\.idea/workspace\.xml
\.idea/misc\.xml
# Deployment
\.env
staticfiles/
postgresql/
data/
cookbook/static/vue
vue/webpack-stats.json
/docker-compose.override.yml
vue/node_modules
plugins
vetur.config.js
cookbook/static/vue
vue/webpack-stats.json
vue3/node_modules
cookbook/templates/sw.js
.prettierignore
vue/.yarn
vue3/.vite
vue3/node_modules
# Configs
vetur.config.js
venv/
.idea/easy-i18n.xml
cookbook/static/vue3

31
.idea/watcherTasks.xml generated Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectTasksOptions">
<TaskOptions isEnabled="false">
<option name="arguments" value="-m flake8 $FilePath$ --config $ContentRoot$\.flake8" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ALWAYS" />
<option name="fileExtension" value="py" />
<option name="immediateSync" value="false" />
<option name="name" value="Flake8 Watcher" />
<option name="output" value="$FilePath$" />
<option name="outputFilters">
<array>
<FilterInfo>
<option name="description" value="" />
<option name="name" value="" />
<option name="regExp" value="$FILE_PATH$:$LINE$:$COLUMN$: $MESSAGE$" />
</FilterInfo>
</array>
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="$PyInterpreterDirectory$/python" />
<option name="runOnExternalChanges" value="false" />
<option name="scopeName" value="Current File" />
<option name="trackOnlyRoot" value="false" />
<option name="workingDir" value="" />
<envs />
</TaskOptions>
</component>
</project>

13
.prettierignore Normal file
View File

@@ -0,0 +1,13 @@
# generated files
api.ts
vue/src/apps/*.js
vue/node_modules
staticfiles/
docs/reports/
/vue3/src/openapi/
# ignored files - prettier interferes with django templates and github actions
*.html
*.yml
*.yaml

7
.prettierrc Normal file
View File

@@ -0,0 +1,7 @@
{
"printWidth": 179,
"trailingComma": "es5",
"tabWidth": 2,
"semi": false,
"experimentalTernaries": true
}

21
.vscode/launch.json vendored
View File

@@ -4,7 +4,6 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Django",
"type": "debugpy",
@@ -13,6 +12,22 @@
"args": ["runserver"],
"django": true,
"justMyCode": true
}
},
{
"name": "Python: Debug Tests",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"purpose": [
"debug-test"
],
"console": "integratedTerminal",
"env": {
// coverage and pytest can't both be running at the same time
"PYTEST_ADDOPTS": "--no-cov"
},
"django": true,
"justMyCode": true
},
]
}
}

11
.vscode/settings.json vendored
View File

@@ -3,5 +3,12 @@
"cookbook/tests"
],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true
}
"python.testing.pytestEnabled": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[python]": {
"editor.defaultFormatter": "eeyore.yapf",
},
"yapf.args": [],
"isort.args": []
}

View File

@@ -6,6 +6,8 @@ RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg li
#Print all logs without buffering it.
ENV PYTHONUNBUFFERED 1
ENV DOCKER true
#This port will be used by gunicorn.
EXPOSE 8080
@@ -33,6 +35,13 @@ RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-de
#Copy project and execute it.
COPY . ./
# commented for now https://github.com/TandoorRecipes/recipes/issues/3478
#HEALTHCHECK --interval=30s \
# --timeout=5s \
# --start-period=10s \
# --retries=3 \
# CMD [ "/usr/bin/wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8080/openapi" ]
# collect information from git repositories
RUN /opt/recipes/venv/bin/python version.py
# delete git repositories to reduce image size

View File

@@ -71,7 +71,7 @@ Because of that there are several ways you can support us
- **Let us host for you** We are offering a [hosted version](https://app.tandoor.dev) where all profits support us and the development of tandoor (currently only available in germany).
## Contributing
Contributions are welcome but please read [this](https://docs.tandoor.dev/contribute/#contributing-code) **BEFORE** contributing anything!
Contributions are welcome but please read [this](https://docs.tandoor.dev/contribute/guidelines/) **BEFORE** contributing anything!
## Your Feedback

23
boot.sh
View File

@@ -29,6 +29,18 @@ if [ -z "${SECRET_KEY}" ]; then
display_warning "The environment variable 'SECRET_KEY' (or 'SECRET_KEY_FILE' that points to an existing file) is not set but REQUIRED for running Tandoor!"
fi
if [ -f "${AUTH_LDAP_BIND_PASSWORD_FILE}" ]; then
export AUTH_LDAP_BIND_PASSWORD=$(cat "$AUTH_LDAP_BIND_PASSWORD_FILE")
fi
if [ -f "${EMAIL_HOST_PASSWORD_FILE}" ]; then
export EMAIL_HOST_PASSWORD=$(cat "$EMAIL_HOST_PASSWORD_FILE")
fi
if [ -f "${SOCIALACCOUNT_PROVIDERS_FILE}" ]; then
export SOCIALACCOUNT_PROVIDERS=$(cat "$SOCIALACCOUNT_PROVIDERS_FILE")
fi
echo "Waiting for database to be ready..."
@@ -67,7 +79,7 @@ echo "Migrating database"
python manage.py migrate
echo "Generating static files"
echo "Collecting static files, this may take a while..."
python manage.py collectstatic_js_reverse
python manage.py collectstatic --noinput
@@ -76,4 +88,11 @@ 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
ipv6_disable=$(cat /sys/module/ipv6/parameters/disable)
# Check if IPv6 is enabled, only then run gunicorn with ipv6 support
if [ "$ipv6_disable" -eq 0 ]; then
exec gunicorn -b "[::]:$TANDOOR_PORT" --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi
else
exec gunicorn -b ":$TANDOOR_PORT" --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi
fi

View File

@@ -185,7 +185,7 @@ class StepAdmin(admin.ModelAdmin):
@admin.display(description="Name")
def recipe_and_name(obj):
if not obj.recipe_set.exists():
return f"Orphaned Step{'':s if not obj.name else f': {obj.name}'}"
return "Orphaned Step" + ('' if not obj.name else f': {obj.name}')
return f"{obj.recipe_set.first().name}: {obj.name}" if obj.name else obj.recipe_set.first().name
@@ -376,10 +376,17 @@ class ShareLinkAdmin(admin.ModelAdmin):
admin.site.register(ShareLink, ShareLinkAdmin)
@admin.action(description='Delete all properties with type')
def delete_properties_with_type(modeladmin, request, queryset):
for pt in queryset:
Property.objects.filter(property_type=pt).delete()
class PropertyTypeAdmin(admin.ModelAdmin):
search_fields = ('space',)
search_fields = ('name',)
list_display = ('id', 'space', 'name', 'fdc_id')
actions = [delete_properties_with_type]
admin.site.register(PropertyType, PropertyTypeAdmin)

View File

@@ -16,15 +16,11 @@ class CookbookConfig(AppConfig):
import cookbook.signals # noqa
if not settings.DISABLE_EXTERNAL_CONNECTORS:
try:
from cookbook.connectors.connector_manager import ConnectorManager # Needs to be here to prevent loading race condition of oauth2 modules in models.py
handler = ConnectorManager()
post_save.connect(handler, dispatch_uid="connector_manager")
post_delete.connect(handler, dispatch_uid="connector_manager")
except Exception as e:
traceback.print_exc()
print('Failed to initialize connectors')
pass
from cookbook.connectors.connector_manager import ConnectorManager # Needs to be here to prevent loading race condition of oauth2 modules in models.py
handler = ConnectorManager()
post_save.connect(handler, dispatch_uid="post_save-connector_manager")
post_delete.connect(handler, dispatch_uid="post_delete-connector_manager")
# if not settings.DISABLE_TREE_FIX_STARTUP:
# # when starting up run fix_tree to:
# # a) make sure that nodes are sorted when switching between sort modes
@@ -45,4 +41,4 @@ class CookbookConfig(AppConfig):
# except Exception:
# if DEBUG:
# traceback.print_exc()
# pass # dont break startup just because fix could not run, need to investigate cases when this happens
# pass # dont break startup just because fix could not run, need to investigate cases when this happens

View File

@@ -5,6 +5,7 @@ import threading
from asyncio import Task
from dataclasses import dataclass
from enum import Enum
from logging import Logger
from types import UnionType
from typing import List, Any, Dict, Optional, Type
@@ -30,6 +31,15 @@ class Work:
actionType: ActionType
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
# The way ConnectionManager works is as follows:
# 1. On init, it starts a worker & creates a queue for 'Work'
# 2. Then any time its called, it verifies the type of action (create/update/delete) and if the item is of interest, pushes the Work (non-blocking) to the queue.
@@ -38,11 +48,14 @@ class Work:
# 3.2 If work is of type REGISTERED_CLASSES, it asynchronously fires of all connectors and wait for them to finish (runtime should depend on the 'slowest' connector)
# 4. Work is marked as consumed, and next entry of the queue is consumed.
# Each 'Work' is processed in sequential by the worker, so the throughput is about [workers * the slowest connector]
class ConnectorManager:
# The Singleton class is used for ConnectorManager to have a self-reference and so Python does not garbage collect it
class ConnectorManager(metaclass=Singleton):
_logger: Logger
_queue: queue.Queue
_listening_to_classes = REGISTERED_CLASSES | ConnectorConfig
def __init__(self):
self._logger = logging.getLogger("recipes.connector")
self._queue = queue.Queue(maxsize=settings.EXTERNAL_CONNECTORS_QUEUE_SIZE)
self._worker = threading.Thread(target=self.worker, args=(0, self._queue,), daemon=True)
self._worker.start()
@@ -65,7 +78,7 @@ class ConnectorManager:
try:
self._queue.put_nowait(Work(instance, action_type))
except queue.Full:
logging.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
self._logger.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
return
def stop(self):
@@ -74,10 +87,12 @@ class ConnectorManager:
@staticmethod
def worker(worker_id: int, worker_queue: queue.Queue):
logger = logging.getLogger("recipes.connector.worker")
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
logging.info(f"started ConnectionManager worker {worker_id}")
logger.info(f"started ConnectionManager worker {worker_id}")
# When multiple workers are used, please make sure the cache is shared across all threads, otherwise it might lead to un-expected behavior.
_connectors_cache: Dict[int, List[Connector]] = dict()
@@ -91,6 +106,8 @@ class ConnectorManager:
if item is None:
break
logger.debug(f"received {item.instance=} with {item.actionType=}")
# If a Connector was changed/updated, refresh connector from the database for said space
refresh_connector_cache = isinstance(item.instance, ConnectorConfig)
@@ -111,7 +128,7 @@ class ConnectorManager:
try:
connector: Optional[Connector] = ConnectorManager.get_connected_for_config(config)
except BaseException:
logging.exception(f"failed to initialize {config.name}")
logger.exception(f"failed to initialize {config.name}")
continue
if connector is not None:
@@ -123,10 +140,12 @@ class ConnectorManager:
worker_queue.task_done()
continue
logger.debug(f"running {len(connectors)} connectors for {item.instance=} with {item.actionType=}")
loop.run_until_complete(run_connectors(connectors, space, item.instance, item.actionType))
worker_queue.task_done()
logging.info(f"terminating ConnectionManager worker {worker_id}")
logger.info(f"terminating ConnectionManager worker {worker_id}")
asyncio.set_event_loop(None)
loop.close()

View File

@@ -1,26 +1,38 @@
import logging
from logging import Logger
from typing import Dict, Tuple
from urllib.parse import urljoin
from homeassistant_api import Client, HomeassistantAPIError, Domain
from aiohttp import request, ClientResponseError
from cookbook.connectors.connector import Connector
from cookbook.models import ShoppingListEntry, ConnectorConfig, Space
class HomeAssistant(Connector):
_domains_cache: dict[str, Domain]
_config: ConnectorConfig
_logger: Logger
_client: Client
_required_foreign_keys = ("food", "unit", "created_by")
def __init__(self, config: ConnectorConfig):
if not config.token or not config.url or not config.todo_entity:
raise ValueError("config for HomeAssistantConnector in incomplete")
self._domains_cache = dict()
self._logger = logging.getLogger(f"recipes.connector.homeassistant.{config.name}")
if config.url[-1] != "/":
config.url += "/"
self._config = config
self._logger = logging.getLogger("connector.HomeAssistant")
self._client = Client(self._config.url, self._config.token, async_cache_session=False, use_async=True)
async def homeassistant_api_call(self, method: str, path: str, data: Dict) -> str:
headers = {
"Authorization": f"Bearer {self._config.token}",
"Content-Type": "application/json"
}
async with request(method, urljoin(self._config.url, path), headers=headers, json=data) as response:
response.raise_for_status()
return await response.json()
async def on_shopping_list_entry_created(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
if not self._config.on_shopping_list_entry_created_enabled:
@@ -28,16 +40,20 @@ class HomeAssistant(Connector):
item, description = _format_shopping_list_entry(shopping_list_entry)
todo_domain = self._domains_cache.get('todo')
try:
if todo_domain is None:
todo_domain = await self._client.async_get_domain('todo')
self._domains_cache['todo'] = todo_domain
self._logger.debug(f"adding {item=} with {description=} to {self._config.todo_entity}")
logging.debug(f"pushing {item} to {self._config.name}")
await todo_domain.add_item(entity_id=self._config.todo_entity, item=item)
except HomeassistantAPIError as err:
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
data = {
"entity_id": self._config.todo_entity,
"item": item,
}
if self._config.supports_description_field:
data["description"] = description
try:
await self.homeassistant_api_call("POST", "services/todo/add_item", data)
except ClientResponseError as err:
self._logger.warning(f"received an exception from the api: {err.request_info.url=}, {err.request_info.method=}, {err.status=}, {err.message=}, {type(err)=}")
async def on_shopping_list_entry_updated(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
if not self._config.on_shopping_list_entry_updated_enabled:
@@ -48,24 +64,31 @@ class HomeAssistant(Connector):
if not self._config.on_shopping_list_entry_deleted_enabled:
return
item, description = _format_shopping_list_entry(shopping_list_entry)
if not all(k in shopping_list_entry._state.fields_cache for k in self._required_foreign_keys):
# Sometimes the food foreign key is not loaded, and we cant load it from an async process
self._logger.debug("required property was not present in ShoppingListEntry")
return
item, _ = _format_shopping_list_entry(shopping_list_entry)
self._logger.debug(f"removing {item=} from {self._config.todo_entity}")
data = {
"entity_id": self._config.todo_entity,
"item": item,
}
todo_domain = self._domains_cache.get('todo')
try:
if todo_domain is None:
todo_domain = await self._client.async_get_domain('todo')
self._domains_cache['todo'] = todo_domain
logging.debug(f"deleting {item} from {self._config.name}")
await todo_domain.remove_item(entity_id=self._config.todo_entity, item=item)
except HomeassistantAPIError as err:
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
await self.homeassistant_api_call("POST", "services/todo/remove_item", data)
except ClientResponseError as err:
# This error will always trigger if the item is not present/found
self._logger.debug(f"received an exception from the api: {err.request_info.url=}, {err.request_info.method=}, {err.status=}, {err.message=}, {type(err)=}")
async def close(self) -> None:
await self._client.async_cache_session.close()
pass
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry):
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry) -> Tuple[str, str]:
item = shopping_list_entry.food.name
if shopping_list_entry.amount > 0:
item += f" ({shopping_list_entry.amount:.2f}".rstrip('0').rstrip('.')
@@ -76,10 +99,10 @@ def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry):
else:
item += ")"
description = "Imported by TandoorRecipes"
description = "From TandoorRecipes"
if shopping_list_entry.created_by.first_name and len(shopping_list_entry.created_by.first_name) > 0:
description += f", created by {shopping_list_entry.created_by.first_name}"
description += f", by {shopping_list_entry.created_by.first_name}"
else:
description += f", created by {shopping_list_entry.created_by.username}"
description += f", by {shopping_list_entry.created_by.username}"
return item, description

View File

@@ -1,6 +1,8 @@
from datetime import datetime
from allauth.account.forms import ResetPasswordForm, SignupForm
from allauth.socialaccount.forms import SignupForm as SocialSignupForm
from django import forms
from django.conf import settings
from django.core.exceptions import ValidationError
@@ -14,15 +16,13 @@ from .models import Comment, InviteLink, Keyword, Recipe, SearchPreference, Spac
class SelectWidget(widgets.Select):
class Media:
js = ('custom/js/form_select.js', )
js = ('custom/js/form_select.js',)
class MultiSelectWidget(widgets.SelectMultiple):
class Media:
js = ('custom/js/form_multiselect.js', )
js = ('custom/js/form_multiselect.js',)
# Yes there are some stupid browsers that still dont support this but
@@ -89,12 +89,13 @@ class ImportExportBase(forms.Form):
COOKMATE = 'COOKMATE'
REZEPTSUITEDE = 'REZEPTSUITEDE'
PDF = 'PDF'
GOURMET = 'GOURMET'
type = forms.ChoiceField(choices=((DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'),
(SAFFRON, 'Saffron'), (CHEFTAP, 'ChefTap'), (PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'),
(DOMESTICA, 'Domestica'), (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), (RECIPEKEEPER, 'Recipe Keeper'),
(PLANTOEAT, 'Plantoeat'), (COOKBOOKAPP, 'CookBookApp'), (COPYMETHAT, 'CopyMeThat'), (PDF, 'PDF'), (MELARECIPES, 'Melarecipes'),
(COOKMATE, 'Cookmate'), (REZEPTSUITEDE, 'Recipesuite.de')))
(COOKMATE, 'Cookmate'), (REZEPTSUITEDE, 'Recipesuite.de'), (GOURMET, 'Gourmet')))
class MultipleFileInput(forms.ClearableFileInput):
@@ -138,7 +139,7 @@ class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('text', )
fields = ('text',)
labels = {'text': _('Add your comment: '), }
widgets = {'text': forms.Textarea(attrs={'rows': 2, 'cols': 15}), }
@@ -160,7 +161,6 @@ class StorageForm(forms.ModelForm):
help_texts = {'url': _('Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'), }
class ConnectorConfigForm(forms.ModelForm):
enabled = forms.BooleanField(
help_text="Is the connector enabled",
@@ -182,6 +182,12 @@ class ConnectorConfigForm(forms.ModelForm):
required=False,
)
supports_description_field = forms.BooleanField(
help_text="Does the connector todo entity support the description field",
initial=True,
required=False,
)
update_token = forms.CharField(
widget=forms.TextInput(attrs={'autocomplete': 'update-token', 'type': 'password'}),
required=False,
@@ -198,7 +204,7 @@ class ConnectorConfigForm(forms.ModelForm):
fields = (
'name', 'type', 'enabled', 'on_shopping_list_entry_created_enabled', 'on_shopping_list_entry_updated_enabled',
'on_shopping_list_entry_deleted_enabled', 'url', 'todo_entity',
'on_shopping_list_entry_deleted_enabled', 'supports_description_field', 'url', 'todo_entity',
)
help_texts = {
@@ -308,6 +314,18 @@ class AllAuthSignupForm(SignupForm):
pass
class AllAuthSocialSignupForm(SocialSignupForm):
terms = forms.BooleanField(label=_('Accept Terms and Privacy'))
def __init__(self, **kwargs):
super().__init__(**kwargs)
if settings.PRIVACY_URL == '' and settings.TERMS_URL == '':
self.fields.pop('terms')
def signup(self, request, user):
pass
class CustomPasswordResetForm(ResetPasswordForm):
captcha = hCaptchaField()
@@ -338,12 +356,13 @@ class SearchPreferenceForm(forms.ModelForm):
help_texts = {
'search': _('Select type method of search. Click <a href="/docs/search/">here</a> for full description of choices.'), 'lookup':
_('Use fuzzy matching on units, keywords and ingredients when editing and importing recipes.'), 'unaccent':
_('Fields to search ignoring accents. Selecting this option can improve or degrade search quality depending on language'), 'icontains':
_("Fields to search for partial matches. (e.g. searching for 'Pie' will return 'pie' and 'piece' and 'soapie')"), 'istartswith':
_("Fields to search for beginning of word matches. (e.g. searching for 'sa' will return 'salad' and 'sandwich')"), 'trigram':
_("Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) Note: this option will conflict with 'web' and 'raw' methods of search."), 'fulltext':
_("Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods only function with fulltext fields."),
_('Use fuzzy matching on units, keywords and ingredients when editing and importing recipes.'), 'unaccent':
_('Fields to search ignoring accents. Selecting this option can improve or degrade search quality depending on language'), 'icontains':
_("Fields to search for partial matches. (e.g. searching for 'Pie' will return 'pie' and 'piece' and 'soapie')"), 'istartswith':
_("Fields to search for beginning of word matches. (e.g. searching for 'sa' will return 'salad' and 'sandwich')"), 'trigram':
_("Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) Note: this option will conflict with 'web' and 'raw' methods of search."),
'fulltext':
_("Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods only function with fulltext fields."),
}
labels = {
@@ -353,5 +372,5 @@ class SearchPreferenceForm(forms.ModelForm):
widgets = {
'search': SelectWidget, 'unaccent': MultiSelectWidget, 'icontains': MultiSelectWidget, 'istartswith': MultiSelectWidget, 'trigram': MultiSelectWidget, 'fulltext':
MultiSelectWidget,
MultiSelectWidget,
}

View File

@@ -1,8 +0,0 @@
from django.test.runner import DiscoverRunner
from django_scopes import scopes_disabled
class CustomTestRunner(DiscoverRunner):
def run_tests(self, *args, **kwargs):
with scopes_disabled():
return super().run_tests(*args, **kwargs)

View File

@@ -1,4 +1,12 @@
import socket
from urllib.parse import urlparse
from django.core.exceptions import ValidationError
from django.core.validators import URLValidator
from django.db.models import Func
from ipaddress import ip_address
from recipes import settings
class Round(Func):
@@ -11,3 +19,30 @@ def str2bool(v):
return v
else:
return v.lower() in ("yes", "true", "1")
"""
validates an url that is supposed to be imported
checks that the protocol used is http(s) and that no local address is accessed
@:param url to test
@:return true if url is valid, false otherwise
"""
def validate_import_url(url):
try:
validator = URLValidator(schemes=['http', 'https'])
validator(url)
except ValidationError:
# if schema is not http or https, consider url invalid
return False
# resolve IP address of url
try:
url_ip_address = ip_address(str(socket.gethostbyname(urlparse(url).hostname)))
except (ValueError, AttributeError, TypeError, Exception) as e:
# if ip cannot be parsed, consider url invalid
return False
# validate that IP is neither private nor any other special address
return not any([url_ip_address.is_private, url_ip_address.is_reserved, url_ip_address.is_loopback, url_ip_address.is_multicast, url_ip_address.is_link_local, ])

View File

@@ -35,6 +35,20 @@ def get_filetype(name):
return '.jpeg'
def is_file_type_allowed(filename, image_only=False):
is_file_allowed = False
allowed_file_types = ['.pdf','.docx', '.xlsx']
allowed_image_types = ['.png', '.jpg', '.jpeg', '.gif']
check_list = allowed_image_types
if not image_only:
check_list += allowed_file_types
for file_type in check_list:
if filename.lower().endswith(file_type):
is_file_allowed = True
return is_file_allowed
# TODO this whole file needs proper documentation, refactoring, and testing
# TODO also add env variable to define which images sizes should be compressed
# filetype argument can not be optional, otherwise this function will treat all images as if they were a jpeg

View File

@@ -118,7 +118,7 @@ class IngredientParser:
note = ''
start = 0
# search for first occurrence of an argument ending in a comma
while start < len(tokens) and not tokens[start].endswith(','):
while start < len(tokens) and not tokens[start].endswith((',', ';', ':')):
start += 1
if start == len(tokens):
# no token ending in a comma found -> use everything as food

View File

@@ -71,7 +71,7 @@ class FoodPropertyHelper:
# TODO move to central helper ? --> use defaultdict
@staticmethod
def add_or_create(d, key, value, food):
if key in d:
if key in d and d[key]['value']:
d[key]['value'] += value
else:
d[key] = {'id': food.id, 'food': food.name, 'value': value}

View File

@@ -6,7 +6,7 @@ from django.utils.dateparse import parse_duration
from django.utils.translation import gettext as _
from isodate import parse_duration as iso_parse_duration
from isodate.isoerror import ISO8601Error
from pytube import YouTube
from pytubefix import YouTube
from recipe_scrapers._utils import get_host_name, get_minutes
from cookbook.helper.automation_helper import AutomationEngine
@@ -15,12 +15,9 @@ from cookbook.models import Automation, Keyword, PropertyType
def get_from_scraper(scrape, request):
# converting the scrape_me object to the existing json format based on ld+json
# converting the scrape_html object to the existing json format based on ld+json
recipe_json = {
'steps': [],
'internal': True
}
recipe_json = {'steps': [], 'internal': True}
keywords = []
# assign source URL
@@ -31,7 +28,9 @@ def get_from_scraper(scrape, request):
source_url = scrape.url
except Exception:
pass
if source_url:
if source_url == "https://urlnotfound.none" or not source_url:
recipe_json['source_url'] = ''
else:
recipe_json['source_url'] = source_url
try:
keywords.append(source_url.replace('http://', '').replace('https://', '').split('/')[0])
@@ -157,11 +156,18 @@ def get_from_scraper(scrape, request):
# assign steps
try:
for i in parse_instructions(scrape.instructions()):
recipe_json['steps'].append({'instruction': i, 'ingredients': [], 'show_ingredients_table': request.user.userpreference.show_step_ingredients, })
recipe_json['steps'].append({
'instruction': i,
'ingredients': [],
'show_ingredients_table': request.user.userpreference.show_step_ingredients,
})
except Exception:
pass
if len(recipe_json['steps']) == 0:
recipe_json['steps'].append({'instruction': '', 'ingredients': [], })
recipe_json['steps'].append({
'instruction': '',
'ingredients': [],
})
recipe_json['description'] = recipe_json['description'][:512]
if len(recipe_json['description']) > 256: # split at 256 as long descriptions don't look good on recipe cards
@@ -182,20 +188,20 @@ def get_from_scraper(scrape, request):
'original_text': x
}
if unit:
ingredient['unit'] = {'name': unit, }
ingredient['unit'] = {
'name': unit,
}
recipe_json['steps'][0]['ingredients'].append(ingredient)
except Exception:
recipe_json['steps'][0]['ingredients'].append(
{
'amount': 0,
'unit': None,
'food': {
'name': x,
},
'note': '',
'original_text': x
}
)
recipe_json['steps'][0]['ingredients'].append({
'amount': 0,
'unit': None,
'food': {
'name': x,
},
'note': '',
'original_text': x
})
except Exception:
pass
@@ -248,14 +254,16 @@ def get_from_youtube_scraper(url, request):
'working_time': 0,
'waiting_time': 0,
'image': "",
'keywords': [{'name': kw.name, 'label': kw.name, 'id': kw.pk}],
'keywords': [{
'name': kw.name,
'label': kw.name,
'id': kw.pk
}],
'source_url': url,
'steps': [
{
'ingredients': [],
'instruction': ''
}
]
'steps': [{
'ingredients': [],
'instruction': ''
}]
}
try:
@@ -266,9 +274,8 @@ def get_from_youtube_scraper(url, request):
default_recipe_json['image'] = video.thumbnail_url
if video.description:
default_recipe_json['steps'][0]['instruction'] = automation_engine.apply_regex_replace_automation(video.description, Automation.INSTRUCTION_REPLACE)
except Exception:
pass
traceback.print_exc()
return default_recipe_json
@@ -367,8 +374,8 @@ def parse_servings(servings):
servings = 1
elif isinstance(servings, list):
try:
servings = int(re.findall(r'\b\d+\b', servings[0])[0])
except KeyError:
servings = int(re.findall(r'\b\d+\b', str(servings[0]))[0])
except (KeyError, IndexError):
servings = 1
return servings
@@ -452,10 +459,7 @@ def normalize_string(string):
def iso_duration_to_minutes(string):
match = re.match(
r'P((?P<years>\d+)Y)?((?P<months>\d+)M)?((?P<weeks>\d+)W)?((?P<days>\d+)D)?T((?P<hours>\d+)H)?((?P<minutes>\d+)M)?((?P<seconds>\d+)S)?',
string
).groupdict()
match = re.match(r'P((?P<years>\d+)Y)?((?P<months>\d+)M)?((?P<weeks>\d+)W)?((?P<days>\d+)D)?T((?P<hours>\d+)H)?((?P<minutes>\d+)M)?((?P<seconds>\d+)S)?', string).groupdict()
return int(match['days'] or 0) * 24 * 60 + int(match['hours'] or 0) * 60 + int(match['minutes'] or 0)

View File

@@ -1,68 +0,0 @@
import json
from recipe_scrapers._abstract import AbstractScraper
class CooksIllustrated(AbstractScraper):
@classmethod
def host(cls, site='cooksillustrated'):
return {
'cooksillustrated': f"{site}.com",
'americastestkitchen': f"{site}.com",
'cookscountry': f"{site}.com",
}.get(site)
def title(self):
return self.schema.title()
def image(self):
return self.schema.image()
def total_time(self):
if not self.recipe:
self.get_recipe()
return self.recipe['recipeTimeNote']
def yields(self):
if not self.recipe:
self.get_recipe()
return self.recipe['yields']
def ingredients(self):
if not self.recipe:
self.get_recipe()
ingredients = []
for group in self.recipe['ingredientGroups']:
ingredients += group['fields']['recipeIngredientItems']
return [
"{} {} {}{}".format(
i['fields']['qty'] or '',
i['fields']['measurement'] or '',
i['fields']['ingredient']['fields']['title'] or '',
i['fields']['postText'] or ''
)
for i in ingredients
]
def instructions(self):
if not self.recipe:
self.get_recipe()
if self.recipe.get('headnote', False):
i = ['Note: ' + self.recipe.get('headnote', '')]
else:
i = []
return "\n".join(
i
+ [self.recipe.get('whyThisWorks', '')]
+ [
instruction['fields']['content']
for instruction in self.recipe['instructions']
]
)
def nutrients(self):
raise NotImplementedError("This should be implemented.")
def get_recipe(self):
j = json.loads(self.soup.find(type='application/json').string)
name = list(j['props']['initialState']['content']['documents'])[0]
self.recipe = j['props']['initialState']['content']['documents'][name]

View File

@@ -1,43 +0,0 @@
from json import JSONDecodeError
from bs4 import BeautifulSoup
from recipe_scrapers import SCRAPERS, get_host_name
from recipe_scrapers._factory import SchemaScraperFactory
from recipe_scrapers._schemaorg import SchemaOrg
from .cooksillustrated import CooksIllustrated
CUSTOM_SCRAPERS = {
CooksIllustrated.host(site="cooksillustrated"): CooksIllustrated,
CooksIllustrated.host(site="americastestkitchen"): CooksIllustrated,
CooksIllustrated.host(site="cookscountry"): CooksIllustrated,
}
SCRAPERS.update(CUSTOM_SCRAPERS)
def text_scraper(text, url=None):
domain = None
if url:
domain = get_host_name(url)
if domain in SCRAPERS:
scraper_class = SCRAPERS[domain]
else:
scraper_class = SchemaScraperFactory.SchemaScraper
class TextScraper(scraper_class):
def __init__(
self,
html=None,
url=None,
):
self.wild_mode = False
self.meta_http_equiv = False
self.soup = BeautifulSoup(html, "html.parser")
self.url = url
self.recipe = None
try:
self.schema = SchemaOrg(html)
except (JSONDecodeError, AttributeError):
pass
return TextScraper(url=url, html=text)

View File

@@ -3,6 +3,8 @@ from gettext import gettext as _
import bleach
import markdown as md
from jinja2 import Template, TemplateSyntaxError, UndefinedError
from jinja2.exceptions import SecurityError
from jinja2.sandbox import SandboxedEnvironment
from markdown.extensions.tables import TableExtension
from cookbook.helper.mdx_attributes import MarkdownFormatExtension
@@ -89,11 +91,13 @@ def render_instructions(step): # TODO deduplicate markdown cleanup code
return f"<scalable-number v-bind:number='{bleach.clean(str(number))}' v-bind:factor='ingredient_factor'></scalable-number>"
try:
template = Template(instructions)
instructions = template.render(ingredients=ingredients, scale=scale)
env = SandboxedEnvironment()
instructions = env.from_string(instructions).render(ingredients=ingredients, scale=scale)
except TemplateSyntaxError:
return _('Could not parse template code.') + ' Error: Template Syntax broken'
except UndefinedError:
return _('Could not parse template code.') + ' Error: Undefined Error'
except SecurityError:
return _('Could not parse template code.') + ' Error: Security Error'
return instructions

View File

@@ -20,6 +20,7 @@ CONVERSION_TABLE = {
'gallon': 0.264172,
'tbsp': 67.628,
'tsp': 202.884,
'us_cup': 4.22675,
'imperial_fluid_ounce': 35.1951,
'imperial_pint': 1.75975,
'imperial_quart': 0.879877,

View File

@@ -2,12 +2,12 @@ import re
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import (get_from_scraper, get_images_from_soup,
iso_duration_to_minutes)
from cookbook.helper.scrapers.scrapers import text_scraper
from recipe_scrapers import scrape_html
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Recipe, Step
@@ -20,7 +20,7 @@ class CookBookApp(Integration):
def get_recipe_from_file(self, file):
recipe_html = file.getvalue().decode("utf-8")
scrape = text_scraper(text=recipe_html)
scrape = scrape_html(html=recipe_html, org_url="https://cookbookapp.import", supported_only=False)
recipe_json = get_from_scraper(scrape, self.request)
images = list(dict.fromkeys(get_images_from_soup(scrape.soup, None)))
@@ -63,7 +63,7 @@ class CookBookApp(Integration):
if len(images) > 0:
try:
url = images[0]
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -1,8 +1,8 @@
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
@@ -69,7 +69,7 @@ class Cookmate(Integration):
if recipe_xml.find('imageurl') is not None:
try:
url = recipe_xml.find('imageurl').text.strip()
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -0,0 +1,211 @@
import base64
from io import BytesIO
from lxml import etree
import requests
from pathlib import Path
from bs4 import BeautifulSoup, Tag
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time, iso_duration_to_minutes
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Recipe, Step, Keyword
from recipe_scrapers import scrape_html
class Gourmet(Integration):
def split_recipe_file(self, file):
encoding = 'utf-8'
byte_string = file.read()
text_obj = byte_string.decode(encoding, errors="ignore")
soup = BeautifulSoup(text_obj, "html.parser")
return soup.find_all("div", {"class": "recipe"})
def get_ingredients_recursive(self, step, ingredients, ingredient_parser):
if isinstance(ingredients, Tag):
for ingredient in ingredients.children:
if not isinstance(ingredient, Tag):
continue
if ingredient.name in ["li"]:
step_name = "".join(ingredient.findAll(text=True, recursive=False)).strip().rstrip(":")
step.ingredients.add(Ingredient.objects.create(
is_header=True,
note=step_name[:256],
original_text=step_name,
space=self.request.space,
))
next_ingrediets = ingredient.find("ul", {"class": "ing"})
self.get_ingredients_recursive(step, next_ingrediets, ingredient_parser)
else:
try:
amount, unit, food, note = ingredient_parser.parse(ingredient.text.strip())
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(
Ingredient.objects.create(
food=f,
unit=u,
amount=amount,
note=note,
original_text=ingredient.text.strip(),
space=self.request.space,
)
)
except ValueError:
pass
def get_recipe_from_file(self, file):
# 'file' comes is as a beautifulsoup object
source_url = None
for item in file.find_all('a'):
if item.has_attr('href'):
source_url = item.get("href")
break
name = file.find("p", {"class": "title"}).find("span", {"itemprop": "name"}).text.strip()
recipe = Recipe.objects.create(
name=name[:128],
source_url=source_url,
created_by=self.request.user,
internal=True,
space=self.request.space,
)
for category in file.find_all("span", {"itemprop": "recipeCategory"}):
keyword, created = Keyword.objects.get_or_create(name=category.text, space=self.request.space)
recipe.keywords.add(keyword)
try:
recipe.servings = parse_servings(file.find("span", {"itemprop": "recipeYield"}).text.strip())
except AttributeError:
pass
try:
prep_time = file.find("span", {"itemprop": "prepTime"}).text.strip().split()
prep_time[0] = prep_time[0].replace(',', '.')
if prep_time[1].lower() in ['stunde', 'stunden', 'hour', 'hours']:
prep_time_min = int(float(prep_time[0]) * 60)
elif prep_time[1].lower() in ['tag', 'tage', 'day', 'days']:
prep_time_min = int(float(prep_time[0]) * 60 * 24)
else:
prep_time_min = int(prep_time[0])
recipe.waiting_time = prep_time_min
except AttributeError:
pass
try:
cook_time = file.find("span", {"itemprop": "cookTime"}).text.strip().split()
cook_time[0] = cook_time[0].replace(',', '.')
if cook_time[1].lower() in ['stunde', 'stunden', 'hour', 'hours']:
cook_time_min = int(float(cook_time[0]) * 60)
elif cook_time[1].lower() in ['tag', 'tage', 'day', 'days']:
cook_time_min = int(float(cook_time[0]) * 60 * 24)
else:
cook_time_min = int(cook_time[0])
recipe.working_time = cook_time_min
except AttributeError:
pass
for cuisine in file.find_all('span', {'itemprop': 'recipeCuisine'}):
cuisine_name = cuisine.text
keyword = Keyword.objects.get_or_create(space=self.request.space, name=cuisine_name)
if len(keyword):
recipe.keywords.add(keyword[0])
for category in file.find_all('span', {'itemprop': 'recipeCategory'}):
category_name = category.text
keyword = Keyword.objects.get_or_create(space=self.request.space, name=category_name)
if len(keyword):
recipe.keywords.add(keyword[0])
step = Step.objects.create(
instruction='',
space=self.request.space,
show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
)
ingredient_parser = IngredientParser(self.request, True)
ingredients = file.find("ul", {"class": "ing"})
self.get_ingredients_recursive(step, ingredients, ingredient_parser)
instructions = file.find("div", {"class": "instructions"})
if isinstance(instructions, Tag):
for instruction in instructions.children:
if not isinstance(instruction, Tag) or instruction.text == "":
continue
if instruction.name == "h3":
if step.instruction:
step.save()
recipe.steps.add(step)
step = Step.objects.create(
instruction='',
space=self.request.space,
)
step.name = instruction.text.strip()[:128]
else:
if instruction.name == "div":
for instruction_step in instruction.children:
for br in instruction_step.find_all("br"):
br.replace_with("\n")
step.instruction += instruction_step.text.strip() + ' \n\n'
notes = file.find("div", {"class": "modifications"})
if notes:
for n in notes.children:
if n.text == "":
continue
if n.name == "h3":
step.instruction += f'*{n.text.strip()}:* \n\n'
else:
for br in n.find_all("br"):
br.replace_with("\n")
step.instruction += '*' + n.text.strip() + '* \n\n'
description = ''
try:
description = file.find("div", {"id": "description"}).text.strip()
except AttributeError:
pass
if len(description) <= 512:
recipe.description = description
else:
recipe.description = description[:480] + ' ... (full description below)'
step.instruction += '*Description:* \n\n*' + description + '* \n\n'
step.save()
recipe.steps.add(step)
# import the Primary recipe image that is stored in the Zip
try:
image_path = file.find("img").get("src")
image_filename = image_path.split("\\")[1]
for f in self.import_zip.filelist:
zip_file_name = Path(f.filename).name
if image_filename == zip_file_name:
image_file = self.import_zip.read(f)
image_bytes = BytesIO(image_file)
self.import_recipe_image(recipe, image_bytes, filetype='.jpeg')
break
except Exception as e:
print(recipe.name, ': failed to import image ', str(e))
recipe.save()
return recipe
def get_files_from_recipes(self, recipes, el, cookie):
raise NotImplementedError('Method not implemented in storage integration')
def get_file_from_recipe(self, recipe):
raise NotImplementedError('Method not implemented in storage integration')

View File

@@ -153,6 +153,19 @@ class Integration:
il.total_recipes = len(new_file_list)
file_list = new_file_list
if isinstance(self, cookbook.integration.gourmet.Gourmet):
self.import_zip = import_zip
new_file_list = []
for file in file_list:
if file.file_size == 0:
next
if file.filename.startswith("index.htm"):
next
if file.filename.endswith(".htm"):
new_file_list += self.split_recipe_file(BytesIO(import_zip.read(file.filename)))
il.total_recipes = len(new_file_list)
file_list = new_file_list
for z in file_list:
try:
if not hasattr(z, 'filename') or isinstance(z, Tag):

View File

@@ -72,14 +72,14 @@ class Mealie(Integration):
)
recipe.steps.add(step)
if 'recipe_yield' in recipe_json:
if 'recipe_yield' in recipe_json and recipe_json['recipe_yield'] is not None:
recipe.servings = parse_servings(recipe_json['recipe_yield'])
recipe.servings_text = parse_servings_text(recipe_json['recipe_yield'])
if 'total_time' in recipe_json and recipe_json['total_time'] is not None:
recipe.working_time = parse_time(recipe_json['total_time'])
if 'org_url' in recipe_json:
if 'org_url' in recipe_json and recipe_json['org_url'] is not None:
recipe.source_url = recipe_json['org_url']
recipe.save()

View File

@@ -60,20 +60,20 @@ class NextcloudCookbook(Integration):
step = Step.objects.create(
instruction=s, space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
)
if not ingredients_added:
if len(recipe_json['description'].strip()) > 500:
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
ingredients_added = True
ingredient_parser = IngredientParser(self.request, True)
ingredient_parser = IngredientParser(self.request, True)
if ingredients_added == False:
for ingredient in recipe_json['recipeIngredient']:
amount, unit, food, note = ingredient_parser.parse(ingredient)
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(Ingredient.objects.create(
food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space,
))
ingredients_added = True
if ingredient.startswith('##'):
subheader = ingredient.replace('##', '', 1)
step.ingredients.add(Ingredient.objects.create(note=subheader, is_header=True, no_amount=True, space=self.request.space))
else:
amount, unit, food, note = ingredient_parser.parse(ingredient)
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(Ingredient.objects.create(
food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space,))
recipe.steps.add(step)
if 'nutrition' in recipe_json:

View File

@@ -6,8 +6,8 @@ from gettext import gettext as _
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text
from cookbook.integration.integration import Integration
@@ -84,13 +84,23 @@ class Paprika(Integration):
recipe.steps.add(step)
# Paprika exports can have images in either of image_url, or photo_data.
# If a user takes an image himself, only photo_data will be set.
# If a user imports an image, both will be set. But the photo_data will be a center-cropped square resized version, so the image_url is preferred.
# Try to download image if possible
try:
if recipe_json.get("image_url", None):
url = recipe_json.get("image_url", None)
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
if response.status_code == 200 and len(response.content) > 0:
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception:
pass
# If no image downloaded, try to extract from photo_data
if not recipe.image:
if recipe_json.get("photo_data", None):
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])), filetype='.jpeg')

View File

@@ -1,9 +1,10 @@
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Keyword, Recipe, Step
@@ -18,32 +19,38 @@ class Plantoeat(Integration):
tags = None
ingredients = []
directions = []
description = ''
fields = {}
for line in file.replace('\r', '').split('\n'):
if line.strip() != '':
if 'Title:' in line:
title = line.replace('Title:', '').replace('"', '').strip()
fields['name'] = line.replace('Title:', '').replace('"', '').strip()
if 'Description:' in line:
description = line.replace('Description:', '').strip()
if 'Source:' in line or 'Serves:' in line or 'Prep Time:' in line or 'Cook Time:' in line:
directions.append(line.strip() + '\n')
fields['description'] = line.replace('Description:', '').strip()
if 'Serves:' in line:
fields['servings'] = parse_servings(line.replace('Serves:', '').strip())
if 'Source:' in line:
fields['source_url'] = line.replace('Source:', '').strip()
if 'Photo Url:' in line:
image_url = line.replace('Photo Url:', '').strip()
if 'Prep Time:' in line:
fields['working_time'] = parse_time(line.replace('Prep Time:', '').strip())
if 'Cook Time:' in line:
fields['waiting_time'] = parse_time(line.replace('Cook Time:', '').strip())
if 'Tags:' in line:
tags = line.replace('Tags:', '').strip()
if ingredient_mode:
if len(line) > 2 and 'Instructions:' not in line:
ingredients.append(line.strip())
if direction_mode:
if len(line) > 2:
directions.append(line.strip() + '\n')
if 'Ingredients:' in line:
ingredient_mode = True
if 'Directions:' in line:
ingredient_mode = False
direction_mode = True
if ingredient_mode:
if len(line) > 2 and 'Ingredients:' not in line:
ingredients.append(line.strip())
if direction_mode:
if len(line) > 2:
directions.append(line.strip() + '\n')
recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space)
recipe = Recipe.objects.create(**fields, created_by=self.request.user, internal=True, space=self.request.space)
step = Step.objects.create(
instruction='\n'.join(directions) + '\n\n', space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
@@ -68,7 +75,7 @@ class Plantoeat(Integration):
if image_url:
try:
if validators.url(image_url, public=True):
if validate_import_url(image_url):
response = requests.get(image_url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -5,9 +5,10 @@ from io import BytesIO
from zipfile import ZipFile
import requests
import validators
from django.utils.translation import gettext as _
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.image_processing import get_filetype
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.integration.integration import Integration
@@ -125,7 +126,7 @@ class RecetteTek(Integration):
else:
if file['originalPicture'] != '':
url = file['originalPicture']
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
if imghdr.what(BytesIO(response.content)) is not None:
self.import_recipe_image(recipe, BytesIO(response.content), filetype=get_filetype(file['originalPicture']))

View File

@@ -2,8 +2,8 @@ import json
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
@@ -56,7 +56,7 @@ class RecipeSage(Integration):
if len(file['image']) > 0:
try:
url = file['image'][0]
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More