Compare commits

..

850 Commits

Author SHA1 Message Date
smilerz
762b83934a Remove unsupported platform from Docker build 2025-12-12 09:26:52 -06:00
smilerz
ae820877d5 Merge pull request #4308 from smilerz/upstream-pr-20251212-043308
Sync 7 commits from fork: chore(deps): bump boto3 from 1.42.4 to 1.42.5 in the pip-patches group
2025-12-12 08:33:21 -06:00
GitHub Action
0d1b37997a Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-12-12 04:33:08 +00:00
dependabot[bot]
8990f4bbcb chore(deps): bump boto3 from 1.42.4 to 1.42.5 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.42.4 to 1.42.5
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.42.4...1.42.5)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.42.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 04:26:07 +00:00
dependabot[bot]
c265b9a729 chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.10.0 to 15.11.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.10.0...15.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-11 04:33:49 +00:00
dependabot[bot]
6625943701 chore(deps): bump pytubefix in the pip-patches group
Bumps the pip-patches group with 1 update: [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `pytubefix` from 10.3.5 to 10.3.6
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v10.3.5...v10.3.6)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 10.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-11 04:28:08 +00:00
dependabot[bot]
788c2088f8 chore(deps): bump pytest from 9.0.0 to 9.0.2 in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest](https://github.com/pytest-dev/pytest).


Updates `pytest` from 9.0.0 to 9.0.2
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.0...9.0.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 04:30:34 +00:00
dependabot[bot]
629e9dc881 chore(deps): bump django-treebeard in the pip-minors group
Bumps the pip-minors group with 1 update: [django-treebeard](https://github.com/django-treebeard/django-treebeard).


Updates `django-treebeard` from 4.7.1 to 4.8.0
- [Changelog](https://github.com/django-treebeard/django-treebeard/blob/master/CHANGES.md)
- [Commits](https://github.com/django-treebeard/django-treebeard/compare/4.7.1...4.8.0)

---
updated-dependencies:
- dependency-name: django-treebeard
  dependency-version: 4.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 04:25:58 +00:00
dependabot[bot]
ec2ee2bfad chore(deps): bump boto3 from 1.42.0 to 1.42.4 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.42.0 to 1.42.4
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.42.0...1.42.4)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.42.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 04:31:50 +00:00
dependabot[bot]
b24f1da8b5 chore(deps): bump pytest from 8.4.2 to 9.0.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.2 to 9.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 04:26:28 +00:00
smilerz
88a1099f06 Merge pull request #4293 from smilerz/upstream-pr-20251208-043911
Sync 4 commits from fork: chore(deps): bump boto3 from 1.41.5 to 1.42.0 in the pip-minors group
2025-12-08 08:06:42 -06:00
GitHub Action
bf574c16f4 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-12-08 04:39:11 +00:00
dependabot[bot]
6cac9a71ed chore(deps): bump boto3 from 1.41.5 to 1.42.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.41.5 to 1.42.0
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.41.5...1.42.0)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 04:32:24 +00:00
dependabot[bot]
6858a60fb1 chore(deps): bump django from 4.2.26 to 4.2.27 in the pip-patches group
Bumps the pip-patches group with 1 update: [django](https://github.com/django/django).


Updates `django` from 4.2.26 to 4.2.27
- [Commits](https://github.com/django/django/compare/4.2.26...4.2.27)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 4.2.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 04:27:00 +00:00
dependabot[bot]
01f1c8c5c8 chore(deps): bump beautifulsoup4 in the pip-patches group
Bumps the pip-patches group with 1 update: [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/).


Updates `beautifulsoup4` from 4.14.2 to 4.14.3

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-04 04:23:22 +00:00
smilerz
e45d25beb4 Merge pull request #4278 from smilerz/upstream-pr-20251202-002017
Sync 20 commits from fork: regenerate yarn.lock
2025-12-01 18:27:14 -06:00
smilerz
bec1580991 Merge pull request #324 from smilerz/dependabot/npm_and_yarn/vue/codemirror/autocomplete-6.20.0
chore(deps): bump @codemirror/autocomplete from 6.19.1 to 6.20.0 in /vue
2025-12-01 18:22:41 -06:00
GitHub Action
f453995aa3 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-12-02 00:20:17 +00:00
dependabot[bot]
cfe163d5a6 chore(deps): bump @codemirror/autocomplete from 6.19.1 to 6.20.0 in /vue
Bumps [@codemirror/autocomplete](https://github.com/codemirror/autocomplete) from 6.19.1 to 6.20.0.
- [Changelog](https://github.com/codemirror/autocomplete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/autocomplete/compare/6.19.1...6.20.0)

---
updated-dependencies:
- dependency-name: "@codemirror/autocomplete"
  dependency-version: 6.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 00:19:32 +00:00
smilerz
51c3ce4c56 regenerate yarn.lock 2025-12-01 18:13:43 -06:00
smilerz
77fd354a22 update yarn.lock 2025-12-01 18:13:00 -06:00
dependabot[bot]
c2a42c572c chore(deps-dev): bump workbox-webpack-plugin from 7.3.0 to 7.4.0 in /vue
Bumps [workbox-webpack-plugin](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-webpack-plugin
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 18:13:00 -06:00
smilerz
0bd53daed7 Merge pull request #328 from smilerz/dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.4.0
chore(deps-dev): bump workbox-navigation-preload from 7.3.0 to 7.4.0 in /vue
2025-12-01 16:50:04 -06:00
smilerz
6358ac8b18 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.4.0 2025-12-01 16:46:58 -06:00
smilerz
02eca7a50c updated lock file 2025-12-01 16:37:17 -06:00
smilerz
f45e847ad2 Merge pull request #320 from smilerz/dependabot/npm_and_yarn/vue/workbox-window-7.4.0
chore(deps): bump workbox-window from 7.3.0 to 7.4.0 in /vue
2025-12-01 15:24:27 -06:00
smilerz
5555c48bcb Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-window-7.4.0 2025-12-01 15:21:03 -06:00
smilerz
295e0a12e7 Merge pull request #329 from smilerz/dependabot/npm_and_yarn/vue/workbox-background-sync-7.4.0
chore(deps-dev): bump workbox-background-sync from 7.3.0 to 7.4.0 in /vue
2025-12-01 15:19:43 -06:00
smilerz
b2402acccf Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.4.0 2025-12-01 15:17:53 -06:00
smilerz
167cf1b693 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-background-sync-7.4.0 2025-12-01 15:16:28 -06:00
smilerz
606ba1fa45 Merge pull request #339 from smilerz/dependabot/npm_and_yarn/vue/node-forge-1.3.2
chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /vue
2025-12-01 15:16:08 -06:00
dependabot[bot]
c4ec9c9b0f chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /vue
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.1 to 1.3.2.
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-version: 1.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 20:45:10 +00:00
smilerz
c2ec3b94a9 Merge pull request #327 from smilerz/dependabot/npm_and_yarn/vue/workbox-precaching-7.4.0
chore(deps-dev): bump workbox-precaching from 7.3.0 to 7.4.0 in /vue
2025-12-01 14:13:46 -06:00
smilerz
163deaff28 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-window-7.4.0 2025-12-01 14:11:04 -06:00
smilerz
cf14bf2f68 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-precaching-7.4.0 2025-12-01 14:10:22 -06:00
smilerz
12facb53e4 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.4.0 2025-12-01 14:09:59 -06:00
smilerz
89b8598cd7 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-background-sync-7.4.0 2025-12-01 14:09:16 -06:00
smilerz
33db1e49a1 Merge pull request #319 from smilerz/dependabot/npm_and_yarn/vue/prettier-3.7.1
chore(deps-dev): bump prettier from 3.6.2 to 3.7.1 in /vue
2025-12-01 13:18:37 -06:00
dependabot[bot]
96c89f7def chore(deps-dev): bump prettier from 3.6.2 to 3.7.1 in /vue
Bumps [prettier](https://github.com/prettier/prettier) from 3.6.2 to 3.7.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.6.2...3.7.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.7.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 19:15:13 +00:00
smilerz
a536f58daa Merge pull request #318 from smilerz/dependabot/npm_and_yarn/vue/npm-patches-34df835779
chore(deps): bump the npm-patches group in /vue with 4 updates
2025-12-01 13:11:59 -06:00
dependabot[bot]
cb0372343f chore(deps): bump the npm-patches group in /vue with 4 updates
Bumps the npm-patches group in /vue with 4 updates: [@codemirror/view](https://github.com/codemirror/view), [axios](https://github.com/axios/axios), [@vue/compiler-sfc](https://github.com/vuejs/core/tree/HEAD/packages/compiler-sfc) and [webpack-bundle-tracker](https://github.com/django-webpack/webpack-bundle-tracker).


Updates `@codemirror/view` from 6.38.6 to 6.38.8
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/compare/6.38.6...6.38.8)

Updates `axios` from 1.13.1 to 1.13.2
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.1...v1.13.2)

Updates `@vue/compiler-sfc` from 3.5.22 to 3.5.25
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.5.25/packages/compiler-sfc)

Updates `webpack-bundle-tracker` from 3.2.1 to 3.2.2
- [Release notes](https://github.com/django-webpack/webpack-bundle-tracker/releases)
- [Commits](https://github.com/django-webpack/webpack-bundle-tracker/compare/v3.2.1...v3.2.2)

---
updated-dependencies:
- dependency-name: "@codemirror/view"
  dependency-version: 6.38.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: axios
  dependency-version: 1.13.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/compiler-sfc"
  dependency-version: 3.5.25
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: webpack-bundle-tracker
  dependency-version: 3.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 19:08:39 +00:00
smilerz
748377b11c Merge pull request #321 from smilerz/dependabot/npm_and_yarn/vue/workbox-expiration-7.4.0
chore(deps-dev): bump workbox-expiration from 7.3.0 to 7.4.0 in /vue
2025-12-01 12:47:08 -06:00
smilerz
714d4f799b Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-expiration-7.4.0 2025-12-01 12:43:59 -06:00
smilerz
218d591f35 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-window-7.4.0 2025-12-01 12:43:54 -06:00
smilerz
1bb92428a7 Merge pull request #322 from smilerz/dependabot/npm_and_yarn/vue/core-js-3.47.0
chore(deps): bump core-js from 3.46.0 to 3.47.0 in /vue
2025-12-01 12:33:22 -06:00
smilerz
ccf29db1d3 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-background-sync-7.4.0 2025-12-01 12:30:25 -06:00
smilerz
de19818429 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-navigation-preload-7.4.0 2025-12-01 12:30:21 -06:00
smilerz
01e736bccc Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-precaching-7.4.0 2025-12-01 12:30:18 -06:00
smilerz
5f717d4e70 Merge branch 'working' into dependabot/npm_and_yarn/vue/core-js-3.47.0 2025-12-01 12:30:07 -06:00
smilerz
f79fb4dbc1 Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-expiration-7.4.0 2025-12-01 12:30:03 -06:00
smilerz
bd1926c57b Merge branch 'working' into dependabot/npm_and_yarn/vue/workbox-window-7.4.0 2025-12-01 12:30:01 -06:00
dependabot[bot]
6bebb04015 chore(deps): bump django-tables2 in the pip-minors group
Bumps the pip-minors group with 1 update: [django-tables2](https://github.com/jieter/django-tables2).


Updates `django-tables2` from 2.7.5 to 2.8.0
- [Changelog](https://github.com/jieter/django-tables2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jieter/django-tables2/compare/v2.7.5...v2.8.0)

---
updated-dependencies:
- dependency-name: django-tables2
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 05:19:57 +00:00
dependabot[bot]
a72bc2ddd6 chore(deps): bump boto3 from 1.41.3 to 1.41.5 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.41.3 to 1.41.5
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.41.3...1.41.5)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.41.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 05:09:31 +00:00
dependabot[bot]
44951bf648 chore(deps-dev): bump workbox-background-sync in /vue
Bumps [workbox-background-sync](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-background-sync
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:59:40 +00:00
dependabot[bot]
b1fc780f44 chore(deps-dev): bump workbox-navigation-preload in /vue
Bumps [workbox-navigation-preload](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-navigation-preload
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:59:31 +00:00
dependabot[bot]
cfb20edb9f chore(deps-dev): bump workbox-precaching from 7.3.0 to 7.4.0 in /vue
Bumps [workbox-precaching](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-precaching
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:59:24 +00:00
dependabot[bot]
0753be9d12 chore(deps): bump core-js from 3.46.0 to 3.47.0 in /vue
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.46.0 to 3.47.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.47.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:58:26 +00:00
dependabot[bot]
db05479cbe chore(deps-dev): bump workbox-expiration from 7.3.0 to 7.4.0 in /vue
Bumps [workbox-expiration](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-expiration
  dependency-version: 7.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:58:06 +00:00
dependabot[bot]
c850737d24 chore(deps): bump workbox-window from 7.3.0 to 7.4.0 in /vue
Bumps [workbox-window](https://github.com/googlechrome/workbox) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.3.0...v7.4.0)

---
updated-dependencies:
- dependency-name: workbox-window
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 04:57:59 +00:00
dependabot[bot]
333ba1b3f0 chore(deps): bump boto3 from 1.41.0 to 1.41.3 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.41.0 to 1.41.3
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.41.0...1.41.3)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.41.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-28 04:25:10 +00:00
dependabot[bot]
cf31d3aea4 chore(deps): bump the pip-minors group with 2 updates
Bumps the pip-minors group with 2 updates: [boto3](https://github.com/boto/boto3) and [redis](https://github.com/redis/redis-py).


Updates `boto3` from 1.40.76 to 1.41.0
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.76...1.41.0)

Updates `redis` from 7.0.1 to 7.1.0
- [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/v7.0.1...v7.1.0)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
- dependency-name: redis
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 04:27:04 +00:00
dependabot[bot]
27ad2b5a85 chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [pytubefix](https://github.com/juanbindez/pytubefix) and [redis](https://github.com/redis/redis-py).


Updates `pytubefix` from 10.3.4 to 10.3.5
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v10.3.4...v10.3.5)

Updates `redis` from 7.0.0 to 7.0.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/v7.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 10.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: redis
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 04:28:25 +00:00
dependabot[bot]
c76dfeefe4 chore(deps): bump redis from 6.4.0 to 7.0.0
Bumps [redis](https://github.com/redis/redis-py) from 6.4.0 to 7.0.0.
- [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/v6.4.0...v7.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 04:48:43 +00:00
dependabot[bot]
9caf1d4029 chore(deps): bump the pip-patches group with 3 updates
Bumps the pip-patches group with 3 updates: [boto3](https://github.com/boto/boto3), [django-allauth](https://github.com/sponsors/pennersr) and [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `boto3` from 1.40.75 to 1.40.76
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.75...1.40.76)

Updates `django-allauth` from 65.13.0 to 65.13.1
- [Commits](https://github.com/sponsors/pennersr/commits)

Updates `pytubefix` from 10.3.3 to 10.3.4
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v10.3.3...v10.3.4)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.76
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django-allauth
  dependency-version: 65.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: pytubefix
  dependency-version: 10.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 04:34:19 +00:00
smilerz
e432f6a625 Merge pull request #4244 from smilerz/upstream-pr-20251121-044244
Upstream pr 20251121 044244
2025-11-21 08:21:44 -06:00
smilerz
ade2c8c63a Merge branch 'tandoor-1' into upstream-pr-20251121-044244 2025-11-21 08:21:36 -06:00
GitHub Action
9c13a20cda Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-11-21 04:42:44 +00:00
dependabot[bot]
f9f0aed2d8 chore(deps): bump pytubefix in the pip-minors group
Bumps the pip-minors group with 1 update: [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `pytubefix` from 10.2.1 to 10.3.3
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v10.2.1...v10.3.3)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 10.3.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 04:36:11 +00:00
dependabot[bot]
1b4b2f401d chore(deps): bump boto3 from 1.40.74 to 1.40.75 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.74 to 1.40.75
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.74...1.40.75)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.75
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 04:30:15 +00:00
dependabot[bot]
a7bf8e452a chore(deps): bump pytest-asyncio in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).


Updates `pytest-asyncio` from 1.2.0 to 1.3.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.2.0...v1.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 04:33:07 +00:00
dependabot[bot]
c00fe4ac68 chore(deps): bump boto3 from 1.40.73 to 1.40.74 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.73 to 1.40.74
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.73...1.40.74)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.74
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 04:28:18 +00:00
dependabot[bot]
14c439b8e7 chore(deps): bump pillow from 11.3.0 to 12.0.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.3.0 to 12.0.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/11.3.0...12.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 04:34:42 +00:00
dependabot[bot]
2c03451597 chore(deps): bump boto3 from 1.40.70 to 1.40.73 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.70 to 1.40.73
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.70...1.40.73)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.73
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 04:28:37 +00:00
dependabot[bot]
e85ebc0cab chore(deps): bump django-crispy-forms in the pip-minors group
Bumps the pip-minors group with 1 update: [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms).


Updates `django-crispy-forms` from 2.4 to 2.5
- [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.4...2.5)

---
updated-dependencies:
- dependency-name: django-crispy-forms
  dependency-version: '2.5'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 04:30:25 +00:00
dependabot[bot]
ea10333b23 chore(deps): bump boto3 from 1.40.69 to 1.40.70 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.69 to 1.40.70
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.69...1.40.70)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.70
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 04:25:02 +00:00
smilerz
e773cffa76 Merge pull request #4230 from smilerz/upstream-pr-20251113-043248
Sync 3 commits from fork: chore(deps): bump recipe-scrapers in the pip-minors group
2025-11-13 07:56:39 -06:00
GitHub Action
b795d72e39 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-11-13 04:32:48 +00:00
dependabot[bot]
be6c548ac1 chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.9.0 to 15.10.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.9.0...15.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-13 04:26:12 +00:00
dependabot[bot]
23396821db chore(deps): bump markdown from 3.9 to 3.10 in the pip-minors group
Bumps the pip-minors group with 1 update: [markdown](https://github.com/Python-Markdown/markdown).


Updates `markdown` from 3.9 to 3.10
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.9.0...3.10.0)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.10'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 04:32:59 +00:00
dependabot[bot]
78c04e4b2d chore(deps): bump boto3 from 1.40.68 to 1.40.69 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.68 to 1.40.69
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.68...1.40.69)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.69
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 04:27:28 +00:00
smilerz
61a1d72d7e Merge pull request #4221 from smilerz/upstream-pr-20251110-045354
Sync 2 commits from fork: chore(deps): bump the pip-patches group with 4 updates
2025-11-10 12:55:46 -06:00
GitHub Action
ede6c52d63 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-11-10 04:53:54 +00:00
dependabot[bot]
372c904a96 chore(deps): bump the pip-patches group with 4 updates
Bumps the pip-patches group with 4 updates: [boto3](https://github.com/boto/boto3), [django](https://github.com/django/django), [django-webpack-loader](https://github.com/django-webpack/django-webpack-loader) and [icalendar](https://github.com/collective/icalendar).


Updates `boto3` from 1.40.65 to 1.40.68
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.65...1.40.68)

Updates `django` from 4.2.25 to 4.2.26
- [Commits](https://github.com/django/django/compare/4.2.25...4.2.26)

Updates `django-webpack-loader` from 3.2.1 to 3.2.2
- [Release notes](https://github.com/django-webpack/django-webpack-loader/releases)
- [Changelog](https://github.com/django-webpack/django-webpack-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/django-webpack/django-webpack-loader/compare/3.2.1...3.2.2)

Updates `icalendar` from 6.3.1 to 6.3.2
- [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/v6.3.1...v6.3.2)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.68
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django
  dependency-version: 4.2.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django-webpack-loader
  dependency-version: 3.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: icalendar
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 04:47:06 +00:00
dependabot[bot]
b500c97440 chore(deps): bump the pip-minors group with 2 updates
Bumps the pip-minors group with 2 updates: [django-allauth](https://github.com/sponsors/pennersr) and [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `django-allauth` from 65.12.1 to 65.13.0
- [Commits](https://github.com/sponsors/pennersr/commits)

Updates `pytubefix` from 10.0.0 to 10.2.1
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v10.0.0...v10.2.1)

---
updated-dependencies:
- dependency-name: django-allauth
  dependency-version: 65.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
- dependency-name: pytubefix
  dependency-version: 10.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-10 04:38:32 +00:00
smilerz
daaf55c50f Merge pull request #4214 from smilerz/upstream-pr-20251107-043533
Sync 6 commits from fork: chore(deps): bump pytubefix from 9.5.1 to 10.0.0
2025-11-07 07:32:07 -06:00
GitHub Action
79358f0e58 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-11-07 04:35:33 +00:00
dependabot[bot]
e3fa6c656e chore(deps): bump pytubefix from 9.5.1 to 10.0.0
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 9.5.1 to 10.0.0.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v9.5.1...v10.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-07 04:29:05 +00:00
dependabot[bot]
1521810537 chore(deps): bump boto3 from 1.40.64 to 1.40.65 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.64 to 1.40.65
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.64...1.40.65)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.65
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-07 04:24:37 +00:00
dependabot[bot]
67e8a2a835 chore(deps): bump bleach from 6.2.0 to 6.3.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [bleach](https://github.com/mozilla/bleach).


Updates `bleach` from 6.2.0 to 6.3.0
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: bleach
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 04:54:40 +00:00
dependabot[bot]
f770048c99 chore(deps): bump boto3 from 1.40.63 to 1.40.64 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.63 to 1.40.64
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.63...1.40.64)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.64
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-04 04:49:17 +00:00
dependabot[bot]
4d2db238cb chore(deps): bump python-dotenv in the pip-minors group
Bumps the pip-minors group with 1 update: [python-dotenv](https://github.com/theskumar/python-dotenv).


Updates `python-dotenv` from 1.1.1 to 1.2.1
- [Release notes](https://github.com/theskumar/python-dotenv/releases)
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md)
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.1)

---
updated-dependencies:
- dependency-name: python-dotenv
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 04:46:14 +00:00
dependabot[bot]
4e21d46120 chore(deps): bump the pip-patches group with 2 updates
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: boto3
  dependency-version: 1.40.63
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 04:36:59 +00:00
smilerz
1c5c69ba5c Merge pull request #4208 from smilerz/upstream-pr-20251102-203440
Sync 8 commits from fork: chore(deps): bump axios from 1.12.2 to 1.13.1 in /vue
2025-11-02 15:09:20 -06:00
GitHub Action
ebc7e3c6ac Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-11-02 20:34:40 +00:00
smilerz
f260f3ffcb Merge pull request #268 from smilerz/dependabot/npm_and_yarn/vue/core-js-3.46.0
chore(deps): bump core-js from 3.45.1 to 3.46.0 in /vue
2025-11-02 14:28:54 -06:00
smilerz
ef12579ee8 Merge branch 'working' into dependabot/npm_and_yarn/vue/core-js-3.46.0 2025-11-02 14:25:48 -06:00
dependabot[bot]
82e70c39d3 chore(deps): bump axios from 1.12.2 to 1.13.1 in /vue
Bumps [axios](https://github.com/axios/axios) from 1.12.2 to 1.13.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.12.2...v1.13.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-02 20:05:35 +00:00
smilerz
7174a611ac Merge branch 'working' into dependabot/npm_and_yarn/vue/core-js-3.46.0 2025-11-02 14:03:44 -06:00
dependabot[bot]
75607c7835 chore(deps): bump @codemirror/commands from 6.8.1 to 6.10.0 in /vue
Bumps [@codemirror/commands](https://github.com/codemirror/commands) from 6.8.1 to 6.10.0.
- [Changelog](https://github.com/codemirror/commands/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/commands/compare/6.8.1...6.10.0)

---
updated-dependencies:
- dependency-name: "@codemirror/commands"
  dependency-version: 6.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-02 20:00:24 +00:00
smilerz
dc58f00106 Merge branch 'working' into dependabot/npm_and_yarn/vue/core-js-3.46.0 2025-11-02 13:55:28 -06:00
smilerz
74774b917a Merge pull request #267 from smilerz/dependabot/npm_and_yarn/vue/codemirror/lang-markdown-6.5.0
chore(deps): bump @codemirror/lang-markdown from 6.3.4 to 6.5.0 in /vue
2025-11-02 13:55:18 -06:00
dependabot[bot]
e9a0b5216d chore(deps): bump core-js from 3.45.1 to 3.46.0 in /vue
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.45.1 to 3.46.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.46.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-02 19:46:44 +00:00
dependabot[bot]
79997c5dd0 chore(deps): bump @codemirror/lang-markdown from 6.3.4 to 6.5.0 in /vue
Bumps [@codemirror/lang-markdown](https://github.com/codemirror/lang-markdown) from 6.3.4 to 6.5.0.
- [Changelog](https://github.com/codemirror/lang-markdown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/lang-markdown/compare/6.3.4...6.5.0)

---
updated-dependencies:
- dependency-name: "@codemirror/lang-markdown"
  dependency-version: 6.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-02 19:46:41 +00:00
smilerz
d866e1e7e1 Merge pull request #266 from smilerz/dependabot/npm_and_yarn/vue/npm-patches-56ed010613
chore(deps): bump the npm-patches group in /vue with 4 updates
2025-11-02 13:44:36 -06:00
smilerz
46fdee0acb Merge branch 'working' into dependabot/npm_and_yarn/vue/npm-patches-56ed010613 2025-11-02 13:33:39 -06:00
smilerz
4829b9fe62 Merge pull request #244 from smilerz/dependabot/docker/python-3.12.12-alpine3.21
chore(deps): bump python from 3.12-alpine3.21 to 3.12.12-alpine3.21
2025-11-02 13:30:51 -06:00
smilerz
7b437a0383 Merge branch 'working' into dependabot/docker/python-3.12.12-alpine3.21 2025-11-02 13:27:20 -06:00
dependabot[bot]
d7def5a37a chore(deps): bump the npm-patches group in /vue with 4 updates
Bumps the npm-patches group in /vue with 4 updates: [@codemirror/autocomplete](https://github.com/codemirror/autocomplete), [@codemirror/view](https://github.com/codemirror/view), [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) and [typescript](https://github.com/microsoft/TypeScript).


Updates `@codemirror/autocomplete` from 6.19.0 to 6.19.1
- [Changelog](https://github.com/codemirror/autocomplete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/autocomplete/compare/6.19.0...6.19.1)

Updates `@codemirror/view` from 6.38.4 to 6.38.6
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/compare/6.38.4...6.38.6)

Updates `@babel/eslint-parser` from 7.28.4 to 7.28.5
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.5/eslint/babel-eslint-parser)

Updates `typescript` from 5.9.2 to 5.9.3
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.9.2...v5.9.3)

---
updated-dependencies:
- dependency-name: "@codemirror/autocomplete"
  dependency-version: 6.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@codemirror/view"
  dependency-version: 6.38.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@babel/eslint-parser"
  dependency-version: 7.28.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-02 19:20:01 +00:00
smilerz
13bb916c85 fixes syntax error in service worker file 2025-11-02 13:15:07 -06:00
smilerz
169522f401 updated sw.js to handle script_name correctly 2025-11-02 13:01:21 -06:00
smilerz
8774e7c2f0 Merge branch 'working' into dependabot/docker/python-3.12.12-alpine3.21 2025-11-02 12:59:14 -06:00
smilerz
7440a433ba Merge pull request #4207 from smilerz/upstream-pr-20251031-043335
Sync 7 commits from fork: chore(deps): bump boto3 from 1.40.59 to 1.40.60 in the pip-patches group
2025-11-02 12:58:07 -06:00
GitHub Action
72b9728540 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-10-31 04:33:35 +00:00
dependabot[bot]
d6224ac2e4 chore(deps): bump boto3 from 1.40.59 to 1.40.60 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.59 to 1.40.60
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.59...1.40.60)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.60
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 04:26:19 +00:00
smilerz
f8ddf6af72 Merge branch 'working' into dependabot/docker/python-3.12.12-alpine3.21 2025-10-28 07:56:10 -05:00
dependabot[bot]
665e208932 chore(deps): bump boto3 from 1.40.58 to 1.40.59 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.58 to 1.40.59
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.58...1.40.59)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.59
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 04:29:03 +00:00
dependabot[bot]
48616ebbcf chore(deps): bump boto3 from 1.40.55 to 1.40.58 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.55 to 1.40.58
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.55...1.40.58)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.58
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 04:47:47 +00:00
dependabot[bot]
4b0734c988 chore(deps): bump the pip-patches group with 2 updates
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: boto3
  dependency-version: 1.40.55
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 04:34:23 +00:00
dependabot[bot]
28e7103dae chore(deps): bump the pip-patches group with 3 updates
Bumps the pip-patches group with 3 updates: [boto3](https://github.com/boto/boto3), [cryptography](https://github.com/pyca/cryptography) and [django-allauth](https://github.com/sponsors/pennersr).


Updates `boto3` from 1.40.51 to 1.40.54
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.51...1.40.54)

Updates `cryptography` from 46.0.1 to 46.0.3
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.1...46.0.3)

Updates `django-allauth` from 65.12.0 to 65.12.1
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.54
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: cryptography
  dependency-version: 46.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django-allauth
  dependency-version: 65.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 04:52:15 +00:00
dependabot[bot]
990e86f717 chore(deps): bump cryptography from 45.0.7 to 46.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 45.0.7 to 46.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/45.0.7...46.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 04:42:38 +00:00
dependabot[bot]
85e93169b5 chore(deps): bump boto3 from 1.40.50 to 1.40.51 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.50 to 1.40.51
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.50...1.40.51)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.51
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 04:38:04 +00:00
smilerz
0e3a5611c6 Merge pull request #4164 from smilerz/upstream-pr-20251014-045347
Sync 4 commits from fork: chore(deps): bump aiohttp from 3.12.15 to 3.13.0 in the pip-minors group
2025-10-14 16:00:13 -05:00
GitHub Action
31b9fe1605 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-10-14 04:53:47 +00:00
dependabot[bot]
7963342574 chore(deps): bump aiohttp from 3.12.15 to 3.13.0 in the pip-minors group
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 04:47:10 +00:00
dependabot[bot]
80264c2822 chore(deps): bump the pip-patches group with 3 updates
Bumps the pip-patches group with 3 updates: [boto3](https://github.com/boto/boto3), [psycopg2-binary](https://github.com/psycopg/psycopg2) and [python-ldap](https://github.com/python-ldap/python-ldap).


Updates `boto3` from 1.40.49 to 1.40.50
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.49...1.40.50)

Updates `psycopg2-binary` from 2.9.10 to 2.9.11
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11)

Updates `python-ldap` from 3.4.4 to 3.4.5
- [Release notes](https://github.com/python-ldap/python-ldap/releases)
- [Changelog](https://github.com/python-ldap/python-ldap/blob/python-ldap-3.4.5/CHANGES)
- [Commits](https://github.com/python-ldap/python-ldap/compare/python-ldap-3.4.4...python-ldap-3.4.5)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.50
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: psycopg2-binary
  dependency-version: 2.9.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: python-ldap
  dependency-version: 3.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 04:41:35 +00:00
dependabot[bot]
9be9c5874f chore(deps): bump the pip-minors group with 2 updates
Bumps the pip-minors group with 2 updates: [django-allauth](https://github.com/sponsors/pennersr) and [django-oauth-toolkit](https://github.com/django-oauth/django-oauth-toolkit).


Updates `django-allauth` from 65.11.2 to 65.12.0
- [Commits](https://github.com/sponsors/pennersr/commits)

Updates `django-oauth-toolkit` from 3.0.1 to 3.1.0
- [Release notes](https://github.com/django-oauth/django-oauth-toolkit/releases)
- [Changelog](https://github.com/django-oauth/django-oauth-toolkit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/django-oauth/django-oauth-toolkit/compare/3.0.1...3.1.0)

---
updated-dependencies:
- dependency-name: django-allauth
  dependency-version: 65.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
- dependency-name: django-oauth-toolkit
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 04:52:04 +00:00
dependabot[bot]
8115ed383b chore(deps): bump boto3 from 1.40.46 to 1.40.49 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.46 to 1.40.49
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.46...1.40.49)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.49
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 04:46:25 +00:00
dependabot[bot]
81152f626e chore(deps): bump python from 3.12-alpine3.21 to 3.12.12-alpine3.21
Bumps python from 3.12-alpine3.21 to 3.12.12-alpine3.21.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.12.12-alpine3.21
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 04:34:19 +00:00
smilerz
4f7c480a8a Merge pull request #4144 from smilerz/upstream-pr-20251010-045056
Sync 7 commits from fork: chore(deps): bump pytest-cov from 6.3.0 to 7.0.0
2025-10-10 07:40:54 -05:00
GitHub Action
9d30664c14 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-10-10 04:50:56 +00:00
dependabot[bot]
cca86956cd chore(deps): bump pytest-cov from 6.3.0 to 7.0.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 6.3.0 to 7.0.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.3.0...v7.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 04:43:46 +00:00
dependabot[bot]
bd0e06bdd6 chore(deps): bump boto3 from 1.40.45 to 1.40.46 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.45 to 1.40.46
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.45...1.40.46)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.46
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-10 04:39:24 +00:00
dependabot[bot]
e2581a3276 chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) and [boto3](https://github.com/boto/boto3).


Updates `beautifulsoup4` from 4.14.0 to 4.14.2

Updates `boto3` from 1.40.44 to 1.40.45
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.44...1.40.45)

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: boto3
  dependency-version: 1.40.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 04:32:26 +00:00
dependabot[bot]
eef8d8d1be chore(deps): bump beautifulsoup4 in the pip-minors group
Bumps the pip-minors group with 1 update: [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/).


Updates `beautifulsoup4` from 4.13.5 to 4.14.0

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:50:48 +00:00
dependabot[bot]
5fce383bb3 chore(deps): bump boto3 from 1.40.41 to 1.40.44 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.41 to 1.40.44
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.41...1.40.44)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 04:45:24 +00:00
dependabot[bot]
317c67d01c chore(deps): bump boto3 from 1.40.40 to 1.40.41 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.40 to 1.40.41
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.40...1.40.41)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-03 04:40:05 +00:00
smilerz
03e4904506 Merge pull request #4107 from smilerz/upstream-pr-20251002-002024
Sync 4 commits from fork: chore(deps): bump django in the pip group across 1 directory
2025-10-01 19:25:04 -05:00
smilerz
0461155b5d Merge pull request #225 from smilerz/dependabot/npm_and_yarn/vue/npm-patches-47266e4737
chore(deps): bump the npm-patches group in /vue with 4 updates
2025-10-01 19:21:39 -05:00
GitHub Action
cd3d3d3389 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-10-02 00:20:24 +00:00
dependabot[bot]
fde96522e8 chore(deps): bump the npm-patches group in /vue with 4 updates
Bumps the npm-patches group in /vue with 4 updates: [@codemirror/view](https://github.com/codemirror/view), [axios](https://github.com/axios/axios), [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) and [@vue/compiler-sfc](https://github.com/vuejs/core/tree/HEAD/packages/compiler-sfc).


Updates `@codemirror/view` from 6.38.1 to 6.38.3
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/compare/6.38.1...6.38.3)

Updates `axios` from 1.12.0 to 1.12.2
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.12.0...v1.12.2)

Updates `@babel/eslint-parser` from 7.28.0 to 7.28.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.4/eslint/babel-eslint-parser)

Updates `@vue/compiler-sfc` from 3.5.20 to 3.5.22
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.5.22/packages/compiler-sfc)

---
updated-dependencies:
- dependency-name: "@codemirror/view"
  dependency-version: 6.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: axios
  dependency-version: 1.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@babel/eslint-parser"
  dependency-version: 7.28.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/compiler-sfc"
  dependency-version: 3.5.22
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-02 00:18:25 +00:00
smilerz
9ccfa6732a Merge pull request #226 from smilerz/dependabot/npm_and_yarn/vue/codemirror/autocomplete-6.19.0
chore(deps): bump @codemirror/autocomplete from 6.18.6 to 6.19.0 in /vue
2025-10-01 19:14:47 -05:00
smilerz
244f63c07c Merge branch 'working' into dependabot/npm_and_yarn/vue/codemirror/autocomplete-6.19.0 2025-10-01 19:11:32 -05:00
dependabot[bot]
f3df30a727 chore(deps): bump django in the pip group across 1 directory
Bumps the pip group with 1 update in the / directory: [django](https://github.com/django/django).


Updates `django` from 4.2.24 to 4.2.25
- [Commits](https://github.com/django/django/compare/4.2.24...4.2.25)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 4.2.25
  dependency-type: direct:production
  dependency-group: pip
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 23:04:42 +00:00
dependabot[bot]
de377e30b0 chore(deps): bump @codemirror/autocomplete from 6.18.6 to 6.19.0 in /vue
Bumps [@codemirror/autocomplete](https://github.com/codemirror/autocomplete) from 6.18.6 to 6.19.0.
- [Changelog](https://github.com/codemirror/autocomplete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/autocomplete/compare/6.18.6...6.19.0)

---
updated-dependencies:
- dependency-name: "@codemirror/autocomplete"
  dependency-version: 6.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 04:26:02 +00:00
dependabot[bot]
ded9fd4223 chore(deps): bump boto3 from 1.40.39 to 1.40.40 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.39 to 1.40.40
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.39...1.40.40)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.40
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 04:33:27 +00:00
dependabot[bot]
b8e77668aa chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [boto3](https://github.com/boto/boto3) and [pyyaml](https://github.com/yaml/pyyaml).


Updates `boto3` from 1.40.36 to 1.40.39
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.36...1.40.39)

Updates `pyyaml` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.39
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: pyyaml
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 05:29:41 +00:00
smilerz
1f0eea5789 Merge pull request #4075 from smilerz/upstream-pr-20250926-045524
Sync 6 commits from fork: chore(deps): bump whitenoise from 6.10.0 to 6.11.0
2025-09-26 07:35:20 -05:00
GitHub Action
49e50c2834 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-26 04:55:24 +00:00
dependabot[bot]
176172c262 chore(deps): bump whitenoise from 6.10.0 to 6.11.0
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.10.0 to 6.11.0.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.10.0...6.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 04:48:32 +00:00
dependabot[bot]
ec1a32f126 chore(deps): bump django-cors-headers from 4.8.0 to 4.9.0
Bumps [django-cors-headers](https://github.com/adamchainz/django-cors-headers) from 4.8.0 to 4.9.0.
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.8.0...4.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 04:44:11 +00:00
dependabot[bot]
8c5c19fa81 chore(deps): bump boto3 from 1.40.35 to 1.40.36 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.35 to 1.40.36
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.35...1.40.36)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.36
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-26 04:39:35 +00:00
dependabot[bot]
d6ccec99b0 chore(deps): bump lxml from 6.0.1 to 6.0.2 in the pip-patches group
Bumps the pip-patches group with 1 update: [lxml](https://github.com/lxml/lxml).


Updates `lxml` from 6.0.1 to 6.0.2
- [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-6.0.1...lxml-6.0.2)

---
updated-dependencies:
- dependency-name: lxml
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-25 04:35:22 +00:00
dependabot[bot]
102a0976e5 chore(deps): bump boto3 from 1.40.34 to 1.40.35 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.34 to 1.40.35
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.34...1.40.35)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-23 04:34:40 +00:00
smilerz
1082f65e75 Merge pull request #4061 from smilerz/upstream-pr-20250922-044204
Sync 2 commits from fork: chore(deps): bump pytest-asyncio in the pip-pytest group
2025-09-22 07:24:30 -05:00
dependabot[bot]
a187331b6d chore(deps): bump boto3 from 1.40.31 to 1.40.34 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.31 to 1.40.34
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.31...1.40.34)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 12:22:45 +00:00
GitHub Action
9a5fb5cb80 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-22 04:42:04 +00:00
dependabot[bot]
42e4fe24b9 chore(deps): bump pytest-asyncio in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).


Updates `pytest-asyncio` from 1.1.1 to 1.2.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.1.1...v1.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-22 04:36:00 +00:00
dependabot[bot]
fa33819414 chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [boto3](https://github.com/boto/boto3) and [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `boto3` from 1.40.30 to 1.40.31
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.30...1.40.31)

Updates `pytubefix` from 9.5.0 to 9.5.1
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v9.5.0...v9.5.1)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.31
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: pytubefix
  dependency-version: 9.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 04:35:53 +00:00
smilerz
06351b0c16 Merge pull request #4049 from smilerz/upstream-pr-20250917-044956
Sync 1 commit from fork: chore(deps): bump whitenoise in the pip-minors group
2025-09-17 06:58:53 -05:00
GitHub Action
5285e6424f Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-17 04:49:56 +00:00
dependabot[bot]
3202a290dc chore(deps): bump whitenoise in the pip-minors group
Bumps the pip-minors group with 1 update: [whitenoise](https://github.com/evansd/whitenoise).


Updates `whitenoise` from 6.9.0 to 6.10.0
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.9.0...6.10.0)

---
updated-dependencies:
- dependency-name: whitenoise
  dependency-version: 6.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 04:43:01 +00:00
smilerz
b70617eada Merge pull request #4045 from smilerz/upstream-pr-20250916-135127
Sync 4 commits from fork: chore(deps): bump pytest-asyncio in the pip-pytest group
2025-09-16 08:55:11 -05:00
GitHub Action
9ce924ce1f Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-16 13:51:27 +00:00
dependabot[bot]
60c85832d6 chore(deps): bump pytest-asyncio in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).


Updates `pytest-asyncio` from 1.1.0 to 1.1.1
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-version: 1.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16 13:50:35 +00:00
dependabot[bot]
0d96c6a380 chore(deps): bump django-cors-headers in the pip-minors group
Bumps the pip-minors group with 1 update: [django-cors-headers](https://github.com/adamchainz/django-cors-headers).


Updates `django-cors-headers` from 4.7.0 to 4.8.0
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.7.0...4.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16 13:44:29 +00:00
dependabot[bot]
7225cbdd61 chore(deps): bump boto3 from 1.40.29 to 1.40.30 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.29 to 1.40.30
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.29...1.40.30)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16 04:39:52 +00:00
smilerz
098d29deeb Merge pull request #196 from smilerz/dependabot/npm_and_yarn/vue/npm_and_yarn-16c0b19af7
chore(deps): bump axios from 1.11.0 to 1.12.0 in /vue in the npm_and_yarn group across 1 directory
2025-09-15 08:34:35 -05:00
dependabot[bot]
4ce8e0c6a1 chore(deps): bump axios
Bumps the npm_and_yarn group with 1 update in the /vue directory: [axios](https://github.com/axios/axios).


Updates `axios` from 1.11.0 to 1.12.0
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.11.0...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 13:31:18 +00:00
smilerz
8d770217a2 Merge pull request #4037 from smilerz/upstream-pr-20250915-045713
Sync 2 commits from fork: chore(deps): bump pytest-cov from 6.2.1 to 6.3.0 in the pip-pytest group
2025-09-15 08:26:00 -05:00
GitHub Action
462f2aa10a Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-15 04:57:13 +00:00
dependabot[bot]
1d5af4e48a chore(deps): bump pytest-cov from 6.2.1 to 6.3.0 in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest-cov](https://github.com/pytest-dev/pytest-cov).


Updates `pytest-cov` from 6.2.1 to 6.3.0
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.2.1...v6.3.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 04:51:09 +00:00
dependabot[bot]
e62d392eee chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [boto3](https://github.com/boto/boto3) and [django-allauth](https://github.com/sponsors/pennersr).


Updates `boto3` from 1.40.26 to 1.40.29
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.26...1.40.29)

Updates `django-allauth` from 65.11.1 to 65.11.2
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django-allauth
  dependency-version: 65.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15 04:46:13 +00:00
smilerz
e0473b748d Merge pull request #4028 from smilerz/upstream-pr-20250912-132527
Sync 2 commits from fork: chore(deps): bump markdown from 3.8.2 to 3.9 in the pip-minors group
2025-09-12 08:46:53 -05:00
GitHub Action
1da214a53f Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-12 13:25:27 +00:00
smilerz
86f46297c6 fixed wildcard in dependabot config 2025-09-12 08:20:01 -05:00
smilerz
136bd9d848 add vue and vue* to ignore rule in dependabot 2025-09-12 08:20:00 -05:00
dependabot[bot]
4b7ddc263c chore(deps): bump markdown from 3.8.2 to 3.9 in the pip-minors group
Bumps the pip-minors group with 1 update: [markdown](https://github.com/Python-Markdown/markdown).


Updates `markdown` from 3.8.2 to 3.9
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.8.2...3.9.0)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.9'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 04:37:47 +00:00
dependabot[bot]
f1f4e5f1a6 chore(deps): bump boto3 from 1.40.25 to 1.40.26 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.25 to 1.40.26
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.25...1.40.26)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 04:32:14 +00:00
smilerz
2a8c57ba10 Merge pull request #4020 from smilerz/upstream-pr-20250909-044442
Sync 1 commit from fork: chore(deps): bump boto3 from 1.40.24 to 1.40.25 in the pip-patches group
2025-09-09 08:15:34 -05:00
GitHub Action
280f8776c5 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-09 04:44:43 +00:00
dependabot[bot]
82d3f45090 chore(deps): bump boto3 from 1.40.24 to 1.40.25 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.24 to 1.40.25
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.24...1.40.25)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 04:37:08 +00:00
smilerz
edeb9b062a Merge pull request #4015 from smilerz/upstream-pr-20250908-150858
Sync 3 commits from fork: chore(deps): bump pytest from 8.4.1 to 8.4.2 in the pip-pytest group
2025-09-08 10:38:51 -05:00
GitHub Action
3b717664b8 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-08 15:08:58 +00:00
dependabot[bot]
bf3d5a8835 chore(deps): bump pytest from 8.4.1 to 8.4.2 in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest](https://github.com/pytest-dev/pytest).


Updates `pytest` from 8.4.1 to 8.4.2
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 15:02:10 +00:00
dependabot[bot]
5cf061af30 chore(deps): bump django from 4.2.23 to 4.2.24
Bumps [django](https://github.com/django/django) from 4.2.23 to 4.2.24.
- [Commits](https://github.com/django/django/compare/4.2.23...4.2.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 14:57:25 +00:00
dependabot[bot]
f3c72dc102 chore(deps): bump boto3 from 1.40.21 to 1.40.24 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.21 to 1.40.24
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.21...1.40.24)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 14:52:49 +00:00
smilerz
0b771f49fd Merge pull request #175 from smilerz/smilerz-patch-1
Remove comments from CodeQL analysis configuration
2025-09-08 09:49:27 -05:00
smilerz
b072aa4f9a Merge branch 'working' into smilerz-patch-1 2025-09-08 09:44:40 -05:00
smilerz
3a782d8114 Refactor CodeQL analysis configuration
Removed paths-ignore configuration and updated query options for CodeQL analysis.
2025-09-08 09:35:47 -05:00
smilerz
81eccea140 Update codeql-analysis.yml 2025-09-08 09:30:05 -05:00
smilerz
0f33ee5052 Re-add security-extended queries for CodeQL analysis 2025-09-08 09:21:03 -05:00
smilerz
825efd4eb9 Add security-extended queries to CodeQL workflow 2025-09-08 09:15:43 -05:00
smilerz
3d2758c6ad Update CodeQL queries format in workflow 2025-09-08 09:11:18 -05:00
smilerz
2f52413a7c Update queries format in CodeQL workflow 2025-09-08 09:09:54 -05:00
smilerz
b1d3159bd8 Simplify queries configuration in CodeQL workflow 2025-09-08 09:07:00 -05:00
smilerz
fcdf564d2b Remove comments from CodeQL analysis configuration 2025-09-08 08:41:32 -05:00
smilerz
823efe5050 Fix syntax for using security-extended query 2025-09-08 08:36:06 -05:00
smilerz
b88e012759 Update syntax in codeql-analysis.yml 2025-09-08 08:23:51 -05:00
smilerz
82a00bd388 Merge pull request #4008 from smilerz/upstream-pr-20250905-044308
Sync 1 commit from fork: chore(deps): bump cryptography in the pip-patches group
2025-09-05 07:57:08 -05:00
smilerz
a187fa2c8c Merge branch 'tandoor-1' into upstream-pr-20250905-044308 2025-09-05 07:56:54 -05:00
GitHub Action
d8b786a25a Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-05 04:43:08 +00:00
dependabot[bot]
55485e105e chore(deps): bump cryptography in the pip-patches group
Bumps the pip-patches group with 1 update: [cryptography](https://github.com/pyca/cryptography).


Updates `cryptography` from 45.0.6 to 45.0.7
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/45.0.6...45.0.7)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 45.0.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 04:36:25 +00:00
smilerz
293d8d6680 Merge pull request #4001 from smilerz/upstream-pr-20250904-141319
Sync 4 commits from fork: chore(deps): bump boto3 from 1.40.20 to 1.40.21 in the pip-patches group
2025-09-04 09:17:21 -05:00
GitHub Action
2eacacb021 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-09-04 14:13:19 +00:00
smilerz
459586ff77 Merge pull request #163 from smilerz/dependabot/npm_and_yarn/vue/npm-patches-287502959c
chore(deps): bump the npm-patches group in /vue with 8 updates
2025-09-04 09:10:23 -05:00
smilerz
3ed8d8ae98 Merge branch 'working' into dependabot/npm_and_yarn/vue/npm-patches-287502959c 2025-09-04 09:06:59 -05:00
dependabot[bot]
d77d62e806 chore(deps): bump boto3 from 1.40.20 to 1.40.21 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.20 to 1.40.21
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.20...1.40.21)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 14:05:52 +00:00
dependabot[bot]
eab8db2734 chore(deps): bump pytubefix from 9.4.1 to 9.5.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `pytubefix` from 9.4.1 to 9.5.0
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v9.4.1...v9.5.0)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 9.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 01:07:01 +00:00
dependabot[bot]
623ce16801 chore(deps): bump the npm-patches group in /vue with 8 updates
Bumps the npm-patches group in /vue with 8 updates:

| Package | From | To |
| --- | --- | --- |
| [@codemirror/lang-markdown](https://github.com/codemirror/lang-markdown) | `6.3.3` | `6.3.4` |
| [@vue/cli](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli) | `5.0.8` | `5.0.9` |
| [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) | `5.0.8` | `5.0.9` |
| [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) | `5.0.8` | `5.0.9` |
| [@vue/cli-plugin-pwa](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-pwa) | `5.0.8` | `5.0.9` |
| [@vue/cli-plugin-typescript](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-typescript) | `5.0.8` | `5.0.9` |
| [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) | `5.0.8` | `5.0.9` |
| [@vue/compiler-sfc](https://github.com/vuejs/core/tree/HEAD/packages/compiler-sfc) | `3.5.18` | `3.5.20` |


Updates `@codemirror/lang-markdown` from 6.3.3 to 6.3.4
- [Changelog](https://github.com/codemirror/lang-markdown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/lang-markdown/compare/6.3.3...6.3.4)

Updates `@vue/cli` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli)

Updates `@vue/cli-plugin-babel` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli-plugin-babel)

Updates `@vue/cli-plugin-eslint` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli-plugin-eslint)

Updates `@vue/cli-plugin-pwa` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli-plugin-pwa)

Updates `@vue/cli-plugin-typescript` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli-plugin-typescript)

Updates `@vue/cli-service` from 5.0.8 to 5.0.9
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.9/packages/@vue/cli-service)

Updates `@vue/compiler-sfc` from 3.5.18 to 3.5.20
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.5.20/packages/compiler-sfc)

---
updated-dependencies:
- dependency-name: "@codemirror/lang-markdown"
  dependency-version: 6.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli-plugin-babel"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli-plugin-eslint"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli-plugin-pwa"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli-plugin-typescript"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/cli-service"
  dependency-version: 5.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/compiler-sfc"
  dependency-version: 3.5.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 11:21:23 +00:00
dependabot[bot]
dfac02cc53 chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [boto3](https://github.com/boto/boto3) and [django-allauth](https://github.com/sponsors/pennersr).


Updates `boto3` from 1.40.17 to 1.40.20
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.17...1.40.20)

Updates `django-allauth` from 65.11.0 to 65.11.1
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: django-allauth
  dependency-version: 65.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 08:33:26 +00:00
smilerz
b99e461e10 Merge pull request #3979 from smilerz/upstream-pr-20250829-045007
Sync 2 commits from fork: chore(deps): bump django-allauth in the pip-minors group
2025-08-29 08:18:15 -05:00
GitHub Action
9f66ca34d9 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-29 04:50:07 +00:00
dependabot[bot]
53e075953d chore(deps): bump django-allauth in the pip-minors group
Bumps the pip-minors group with 1 update: [django-allauth](https://github.com/sponsors/pennersr).


Updates `django-allauth` from 65.10.0 to 65.11.0
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: django-allauth
  dependency-version: 65.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-29 04:43:29 +00:00
dependabot[bot]
d060629477 chore(deps): bump boto3 from 1.40.16 to 1.40.17 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.16 to 1.40.17
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.16...1.40.17)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-29 04:38:01 +00:00
smilerz
b7b34c775c Merge pull request #3976 from smilerz/upstream-pr-20250828-163118
Sync 7 commits from fork: chore(deps): bump the npm-minors group in /vue with 2 updates
2025-08-28 11:48:32 -05:00
GitHub Action
2f2b07cb4c Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-28 16:31:18 +00:00
smilerz
900e6abc6d Merge pull request #147 from smilerz/dependabot/npm_and_yarn/vue/npm-minors-010af39555
chore(deps): bump the npm-minors group in /vue with 2 updates
2025-08-28 11:26:02 -05:00
dependabot[bot]
63458261a8 chore(deps): bump the npm-minors group in /vue with 2 updates
Bumps the npm-minors group in /vue with 2 updates: [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) and [typescript](https://github.com/microsoft/TypeScript).


Updates `core-js` from 3.44.0 to 3.45.1
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.45.1/packages/core-js)

Updates `typescript` from 5.8.3 to 5.9.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.2)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.45.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minors
- dependency-name: typescript
  dependency-version: 5.9.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 16:18:50 +00:00
smilerz
65776080a6 updated brace-expansion 2025-08-28 11:05:32 -05:00
dependabot[bot]
1016a9b9dc chore(deps): bump the pip-patches group across 1 directory with 3 updates
Bumps the pip-patches group with 3 updates in the / directory: [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/), [boto3](https://github.com/boto/boto3) and [lxml](https://github.com/lxml/lxml).


Updates `beautifulsoup4` from 4.13.4 to 4.13.5

Updates `boto3` from 1.40.15 to 1.40.16
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.15...1.40.16)

Updates `lxml` from 6.0.0 to 6.0.1
- [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-6.0.0...lxml-6.0.1)

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-version: 4.13.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: boto3
  dependency-version: 1.40.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: lxml
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 15:25:30 +00:00
smilerz
c518bcde8f use freezegun to freeze time so that date based searches work consistently 2025-08-28 10:19:14 -05:00
smilerz
17f49c3827 Merge pull request #152 from smilerz/smilerz-patch-1
Disable warnings in Django testing step
2025-08-28 08:35:26 -05:00
smilerz
48e0cb6588 Disable warnings in Django testing step 2025-08-28 08:31:18 -05:00
smilerz
bb09928d73 supress warnings during CI 2025-08-28 08:27:41 -05:00
smilerz
2b8f10a2a7 Refactor test_search_date to use fixed UTC reference date
Because:
- Timezone-dependent tests caused inconsistent results
- CI and local runs could differ near day boundaries
- Workflow concurrency settings needed cleanup

Refactors test_search_date and found_recipe to use a fixed UTC reference date for all recipe creation and queries, eliminating timezone issues. Removes concurrency blocks from workflows for clarity and reliability. Affects .github/workflows/dependabot-automerge.yml, docker-publish.yml, push-orchestrator.yml, and test_recipe_full_text_search.py. No breaking changes, but test results now deterministic across environments.
2025-08-28 07:28:20 -05:00
smilerz
db0ddf2a60 added concurrency to workflows 2025-08-27 22:04:57 -05:00
smilerz
51849937bb added debug message to test 2025-08-27 21:50:58 -05:00
smilerz
e640ccb603 Merge pull request #3973 from smilerz/upstream-pr-20250828-023533
Sync 1 commit from fork: Refactor connector hooks to use DTOs, update manager and tests
2025-08-27 21:44:22 -05:00
GitHub Action
1e812a8ef5 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-28 02:35:33 +00:00
smilerz
2c186ab72e Refactor connector hooks to use DTOs, update manager and tests
Because:
- Connector hooks needed safe, serializable DTOs
- Manager and tests required updates for new DTO interface
- Code style and clarity improvements were needed
- Redundant date test logic removed

Refactors connector interface and manager to use UserDTO and ShoppingListEntryDTO.
Updates connector manager logic and tests to match new DTO signatures.
Improves code style in test_recipe_full_text_search.py and removes unnecessary date test block.
Breaking change: downstream connectors must update hook signatures.
2025-08-27 20:58:47 -05:00
smilerz
a6aa162527 Merge pull request #3969 from smilerz/upstream-pr-20250825-124428
Sync 3 commits from fork: chore(deps): bump django-allauth in the pip-minors group
2025-08-25 07:47:17 -05:00
GitHub Action
fd2be921d0 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-25 12:44:29 +00:00
dependabot[bot]
5710dcc85f chore(deps): bump django-allauth in the pip-minors group
Bumps the pip-minors group with 1 update: [django-allauth](https://github.com/sponsors/pennersr).


Updates `django-allauth` from 65.10.0 to 65.11.0
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: django-allauth
  dependency-version: 65.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 12:38:03 +00:00
dependabot[bot]
64bfd89225 chore(deps): bump django-debug-toolbar from 5.2.0 to 6.0.0
Bumps [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) from 5.2.0 to 6.0.0.
- [Release notes](https://github.com/django-commons/django-debug-toolbar/releases)
- [Changelog](https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/django-commons/django-debug-toolbar/compare/5.2.0...6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 12:30:55 +00:00
dependabot[bot]
41fd7334dc chore(deps): bump boto3 from 1.40.12 to 1.40.15 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.12 to 1.40.15
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.12...1.40.15)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-25 09:03:03 +00:00
smilerz
1afae2b77c Merge pull request #3958 from smilerz/upstream-pr-20250822-053647
Sync 2 commits from fork: chore(deps): bump the pip-patches group with 2 updates
2025-08-22 06:46:07 -05:00
GitHub Action
9b1ff9fd6e Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-22 05:36:47 +00:00
dependabot[bot]
64b4f8c1d1 chore(deps): bump the pip-patches group with 2 updates
Bumps the pip-patches group with 2 updates: [boto3](https://github.com/boto/boto3) and [requests](https://github.com/psf/requests).


Updates `boto3` from 1.40.11 to 1.40.12
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.11...1.40.12)

Updates `requests` from 2.32.4 to 2.32.5
- [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.4...v2.32.5)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: requests
  dependency-version: 2.32.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 05:30:22 +00:00
dependabot[bot]
d03e991cdc chore(deps): bump boto3 from 1.40.10 to 1.40.11 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.10 to 1.40.11
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.10...1.40.11)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 17:16:01 +00:00
smilerz
dfe73d2f95 Merge pull request #3945 from smilerz/upstream-pr-20250818-081648
Sync 1 commit from fork: chore(deps): bump boto3 from 1.40.7 to 1.40.10 in the pip-patches group
2025-08-18 08:26:32 -05:00
GitHub Action
dfb0aa9609 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-18 08:16:48 +00:00
dependabot[bot]
79805cea66 chore(deps): bump boto3 from 1.40.7 to 1.40.10 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.7 to 1.40.10
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.7...1.40.10)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 08:10:11 +00:00
smilerz
89130998a4 Merge pull request #3939 from smilerz/upstream-pr-20250815-052458
Sync 2 commits from fork: chore(deps): bump redis from 6.3.0 to 6.4.0 in the pip-minors group
2025-08-15 08:14:15 -05:00
GitHub Action
ec11a81d1e Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-15 05:24:58 +00:00
dependabot[bot]
92d7993137 chore(deps): bump redis from 6.3.0 to 6.4.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [redis](https://github.com/redis/redis-py).


Updates `redis` from 6.3.0 to 6.4.0
- [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/v6.3.0...v6.4.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 05:18:12 +00:00
dependabot[bot]
2ea8792568 chore(deps): bump boto3 from 1.40.6 to 1.40.7 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.6 to 1.40.7
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.6...1.40.7)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 05:12:39 +00:00
smilerz
4148fe6d28 Merge pull request #3936 from smilerz/upstream-pr-20250813-135943
Sync 3 commits from fork: chore(deps): bump the npm-patches group in /vue with 2 updates (#104)
2025-08-13 09:27:04 -05:00
GitHub Action
7aea9e2927 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-13 13:59:43 +00:00
dependabot[bot]
37df1ddccd chore(deps): bump the npm-patches group in /vue with 2 updates (#104)
Bumps the npm-patches group in /vue with 2 updates: [@codemirror/view](https://github.com/codemirror/view) and [@vue/compiler-sfc](https://github.com/vuejs/core/tree/HEAD/packages/compiler-sfc).


Updates `@codemirror/view` from 6.38.0 to 6.38.1
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/compare/6.38.0...6.38.1)

Updates `@vue/compiler-sfc` from 3.5.17 to 3.5.18
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.5.18/packages/compiler-sfc)

---
updated-dependencies:
- dependency-name: "@codemirror/view"
  dependency-version: 6.38.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-patches
- dependency-name: "@vue/compiler-sfc"
  dependency-version: 3.5.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smilerz <smilerz@gmail.com>
2025-08-13 08:54:07 -05:00
dependabot[bot]
df64277c7f chore(deps): bump the npm-minors group in /vue with 2 updates (#105)
Bumps the npm-minors group in /vue with 2 updates: [axios](https://github.com/axios/axios) and [typescript](https://github.com/microsoft/TypeScript).


Updates `axios` from 1.10.0 to 1.11.0
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.10.0...v1.11.0)

Updates `typescript` from 5.1.6 to 5.8.3
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.1.6...v5.8.3)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minors
- dependency-name: typescript
  dependency-version: 5.8.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smilerz <smilerz@gmail.com>
2025-08-13 13:05:10 +00:00
dependabot[bot]
0505da4f83 chore(deps): bump redis from 6.2.0 to 6.3.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [redis](https://github.com/redis/redis-py).


Updates `redis` from 6.2.0 to 6.3.0
- [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/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 05:15:34 +00:00
smilerz
b268ccedd8 Merge pull request #3934 from smilerz/upstream-pr-20250812-125815
Sync 1 commit from fork: chore(deps): bump boto3 from 1.40.5 to 1.40.6 in the pip-patches group
2025-08-12 07:59:11 -05:00
GitHub Action
80a60a5b13 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-12 12:58:15 +00:00
dependabot[bot]
46ace24f53 chore(deps): bump boto3 from 1.40.5 to 1.40.6 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.40.5 to 1.40.6
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.5...1.40.6)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 12:52:00 +00:00
smilerz
d0542d02da Merge pull request #3931 from smilerz/upstream-pr-20250811-130526
Sync 1 commit from fork: chore(deps): bump recipe-scrapers in the pip-minors group
2025-08-11 08:07:36 -05:00
GitHub Action
b050ca7714 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-11 13:05:26 +00:00
dependabot[bot]
b0684d679c chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.8.0 to 15.9.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.8.0...15.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 12:58:42 +00:00
smilerz
76c642239f Merge pull request #3930 from smilerz/upstream-pr-20250811-072606
Sync 1 commit from fork: chore(deps): bump the pip-patches group with 3 updates
2025-08-11 07:50:18 -05:00
GitHub Action
2542a0c6f8 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-11 07:26:07 +00:00
dependabot[bot]
dbacb315da chore(deps): bump the pip-patches group with 3 updates
Bumps the pip-patches group with 3 updates: [boto3](https://github.com/boto/boto3), [cryptography](https://github.com/pyca/cryptography) and [djangorestframework](https://github.com/encode/django-rest-framework).


Updates `boto3` from 1.40.0 to 1.40.5
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.40.0...1.40.5)

Updates `cryptography` from 45.0.5 to 45.0.6
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/45.0.5...45.0.6)

Updates `djangorestframework` from 3.16.0 to 3.16.1
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.16.0...3.16.1)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: cryptography
  dependency-version: 45.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: djangorestframework
  dependency-version: 3.16.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 07:19:44 +00:00
smilerz
66ec659354 Merge pull request #3918 from smilerz/upstream-pr-20250808-051522
Sync 1 commit from fork: chore(deps): bump boto3 from 1.39.17 to 1.40.0 in the pip-minors group
2025-08-08 07:18:36 -05:00
GitHub Action
25f9188fc1 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-08 05:15:22 +00:00
dependabot[bot]
aaf297e63f chore(deps): bump boto3 from 1.39.17 to 1.40.0 in the pip-minors group
Bumps the pip-minors group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.17 to 1.40.0
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.17...1.40.0)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 05:08:51 +00:00
smilerz
03a74ec5ec Merge pull request #3900 from smilerz/upstream-pr-20250804-065404
Sync 2 commits from fork: chore(deps): bump the pip-patches group with 2 updates
2025-08-04 07:49:34 -05:00
GitHub Action
83f3c4f657 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-08-04 06:54:04 +00:00
dependabot[bot]
3725f4ea0e chore(deps): bump the pip-patches group with 2 updates
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.12.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: boto3
  dependency-version: 1.39.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-04 06:47:38 +00:00
dependabot[bot]
debc8aef69 chore(deps): bump boto3 from 1.39.14 to 1.39.15 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.14 to 1.39.15
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.14...1.39.15)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-01 04:50:08 +00:00
smilerz
b3e0235a9e Merge pull request #3857 from smilerz/upstream-pr-20250730-052740
Sync 4 commits from fork: chore(deps): bump pytubefix from 9.3.0 to 9.4.1 in the pip-minors group
2025-07-31 11:27:21 -05:00
GitHub Action
c0972dd390 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-07-30 05:27:40 +00:00
dependabot[bot]
d90cadcb9c chore(deps): bump pytubefix from 9.3.0 to 9.4.1 in the pip-minors group
Bumps the pip-minors group with 1 update: [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `pytubefix` from 9.3.0 to 9.4.1
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v9.3.0...v9.4.1)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-30 05:21:26 +00:00
dependabot[bot]
e40d61c7ef chore(deps): bump lxml from 5.4.0 to 6.0.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.4.0 to 6.0.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.4.0...lxml-6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 06:36:04 +00:00
dependabot[bot]
6aaac55017 chore(deps): bump boto3 from 1.39.13 to 1.39.14 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.13 to 1.39.14
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.13...1.39.14)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 06:31:46 +00:00
dependabot[bot]
d28a4ef3a0 chore(deps): bump boto3 from 1.39.10 to 1.39.13 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.10 to 1.39.13
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.10...1.39.13)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 06:22:21 +00:00
smilerz
09c8271289 include body in PR link 2025-07-25 17:02:52 -05:00
smilerz
57fea5698e Merge pull request #3850 from smilerz/upstream-pr-20250725-215052
Sync 1 commit from fork: Refactor requirements.txt and workflow automation
2025-07-25 16:56:20 -05:00
GitHub Action
30930734d8 Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-07-25 21:50:52 +00:00
smilerz
50db2e31cf fixed link for PR 2025-07-25 16:45:26 -05:00
smilerz
ec5b8e93a9 Rename workflow to Stage Branch for PR and update file name
Because:
- Workflow now stages a branch and opens an issue for manual PR
- Name and file should reflect current function

Renames workflow to 'Stage Branch for PR' and file to stage-branch-for-pr.yml. No breaking changes. Affects: .github/workflows/stage-branch-for-pr.yml
2025-07-25 16:34:19 -05:00
smilerz
8f0ff70813 Refactor requirements.txt and workflow automation
Because:
- requirements.txt was unsorted, making review and maintenance harder
- Workflow PR instructions were manual and unclear

Alphabetized requirements.txt main and dev sections, preserving all version pins and comments. Updated .github/workflows/create-upstream-pr.yml to open a GitHub issue for manual PR tracking, replacing console instructions. No breaking changes. requirements.txt, .github/workflows/create-upstream-pr.yml.
2025-07-25 16:18:15 -05:00
smilerz
99c5b22745 Fix: filter infra files and skip PR if no code changes or commits
Because:
- Infra-only changes should not trigger PRs
- PRs should only be created for real code changes

Filters infra files from file count and summary. Skips PR creation if no code files or commits. Affects create-upstream-pr.yml. No breaking changes.
2025-07-25 11:01:35 -05:00
smilerz
6678b3ccfe Fix multi-line output for changes_summary in workflow
Because:
- GitHub Actions requires heredoc for multi-line outputs
- Previous output format caused file command errors

Uses heredoc for changes_summary in summarize_changes step. Affects create-upstream-pr.yml. No breaking changes.
2025-07-25 10:40:52 -05:00
smilerz
41d95bc0f5 Update PR summary to list changed files
Because:
- PR summary did not enumerate changed files
- Improved clarity for reviewers

Adds formatted file list to changes summary in create-upstream-pr.yml. Removes redundant separator in PR body. No breaking changes. Affects only workflow file.
2025-07-25 10:20:35 -05:00
smilerz
d58a2a2823 Merge pull request #3849 from smilerz/upstream-pr-20250725-130828
Sync 26 commits from fork: chore(deps): bump boto3 from 1.39.9 to 1.39.10 in the pip-patches group
2025-07-25 08:24:34 -05:00
GitHub Action
47569858fb Restore upstream infrastructure files for PR
- Removed fork-specific .gitattributes
- Restored upstream .github/workflows/
- Restored upstream cookbook/version_info.py
2025-07-25 13:08:28 +00:00
smilerz
33c161c836 Update upstream PR workflow to filter infra-only commits
Because:
- Commits touching only infra files (all .github, cookbook/version_info.py, .gitattributes) should not be included in PR content
- Only commits with non-infra file changes still different from upstream should be included

Affects .github/workflows/create-upstream-pr.yml. No breaking changes. No test code affected.
2025-07-25 08:02:28 -05:00
dependabot[bot]
8f568c0425 chore(deps): bump boto3 from 1.39.9 to 1.39.10 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.9 to 1.39.10
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.9...1.39.10)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-25 04:36:50 +00:00
smilerz
2e36378f2d use github app token everywhere 2025-07-24 16:32:54 -05:00
smilerz
143bfa97b6 fix syntax error in create-upstream-pr.yml 2025-07-24 16:08:18 -05:00
smilerz
70285d8b14 Update streamline upstream PR workflow and remove file filter
Because:
- Infra file restore must occur before merge to avoid conflicts
- Redundant code file filtering step was unnecessary after infra reset

Moves infra file restore before merge in .github/workflows/create-upstream-pr.yml.
Removes filter step and updates downstream logic to use all changed files.
Improves comments and step clarity. No breaking changes.
2025-07-24 15:57:57 -05:00
smilerz
7fb6379d71 Update create-upstream-pr workflow for correct branch and infra sync
Because:
- Previous workflow had duplicate and out-of-order steps
- Needed to ensure correct branch creation, upstream merge, and infra file reset

Refactors workflow to:
- Create branch and push to fork
- Merge upstream/tandoor-1 into new branch
- Restore infra files from upstream and push again
- Removes duplicate and redundant steps

Affects: .github/workflows/create-upstream-pr.yml
No breaking changes. No test code affected.
2025-07-24 13:51:51 -05:00
smilerz
a4aff4551f dewubgging output added 2025-07-24 11:36:41 -05:00
dependabot[bot]
000395fbd2 chore(deps): bump form-data in /vue in the npm_and_yarn group (#89)
Bumps the npm_and_yarn group in /vue with 1 update: [form-data](https://github.com/form-data/form-data).


Updates `form-data` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: smilerz <smilerz@gmail.com>
2025-07-24 16:25:12 +00:00
smilerz
339032de14 disable fine grained permissions for troubleshooting 2025-07-24 11:04:45 -05:00
smilerz
30f5071e37 force actions to run 2025-07-24 10:50:15 -05:00
smilerz
701a74b68c Update PR workflow to use GitHub App token for branch push
Because:
- GitHub Actions cannot push workflow file changes with default GITHUB_TOKEN
- GitHub App token is required for workflow file updates

Adds a step to generate a GitHub App token and uses it for pushing the branch. Follows the pattern from dependabot-automerge.yml. Affects create-upstream-pr.yml. No breaking changes. All PRs will now be able to push workflow file changes if needed.
2025-07-24 10:23:05 -05:00
smilerz
6a6ef9b13e update actions permissions to write 2025-07-24 10:03:09 -05:00
smilerz
8c333063be add workflow write permissions to create-upstream-pr.yml 2025-07-24 08:27:02 -05:00
smilerz
1ea59a76c2 Refactor PR workflow to exclude infra files
Because:
- PRs must never add, modify, or delete infrastructure files
- Infra file logic, counting, and removal is not needed
- Reset infra files to upstream state before push

Removes all logic for infra file tracking, counting, and removal. Now only code files are included in PRs. Infra files are always reset to upstream/tandoor-1 before push. Affects create-upstream-pr.yml. No breaking changes. All PRs will now be infra-clean by construction.
2025-07-24 07:31:42 -05:00
dependabot[bot]
dcfbb71d89 chore(deps): bump pytest-asyncio in the pip-pytest group
Bumps the pip-pytest group with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).


Updates `pytest-asyncio` from 1.0.0 to 1.1.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.0.0...v1.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 05:10:38 +00:00
dependabot[bot]
74a0650f11 chore(deps): bump boto3 from 1.39.8 to 1.39.9 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.8 to 1.39.9
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.8...1.39.9)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 06:07:42 +00:00
dependabot[bot]
a870cafd2c chore(deps): bump boto3 from 1.39.4 to 1.39.8 in the pip-patches group
Bumps the pip-patches group with 1 update: [boto3](https://github.com/boto/boto3).


Updates `boto3` from 1.39.4 to 1.39.8
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.39.4...1.39.8)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 05:56:50 +00:00
smilerz
7b856e4556 fixed syntax error 2025-07-20 11:22:46 -05:00
smilerz
d28918df94 Fix PR title/body output propagation in workflow
Because:
- PR title and body were not set as outputs in github-script step
- Downstream steps require outputs for correct PR instructions
- Each line under 72 chars

Adds core.setOutput for prTitle and prBody in build_pr_content. Affects .github/workflows/create-upstream-pr.yml. No breaking changes.
2025-07-20 11:06:12 -05:00
smilerz
5d3a93e4c4 Refactor PR title and body generation in workflow
Because:
- Old logic tried to find a PR for the triggering commit, which never exists
- Upstream maintainers need a summary of all commits in the branch
- Each line under 72 chars

Removes get_trigger_pr step and builds PR title/body from commit list. Affects .github/workflows/create-upstream-pr.yml. No breaking changes.
2025-07-20 10:36:18 -05:00
smilerz
9703d9db35 Update workflow to guide manual PR creation after branch push
Because:
- Automated PR creation from forks is blocked by GitHub permissions
- Users need clear, actionable instructions to open PRs manually

Removes automated PR creation and related steps. Adds a step to print a direct PR link and suggested title/body after branch push. Only .github/workflows/create-upstream-pr.yml affected. No breaking changes.
2025-07-18 14:43:00 -05:00
smilerz
c6ff2e3c58 Fix jq array output in file filter step
Because:
- Downstream steps require valid JSON arrays for code/infrastructure files
- Previous jq usage could produce malformed output

Updates .github/workflows/create-upstream-pr.yml to use 'jq -sc' for correct array output in code/infrastructure file filtering. No breaking changes. No follow-up required.
2025-07-18 14:01:58 -05:00
smilerz
813aa85554 Fix: Output code_files and infra_files as JSON arrays
Because:
- GitHub Actions scripts require valid JSON for file lists
- Prevents JSON.parse errors in github-script steps

Now uses jq to emit code_files and infra_files as JSON arrays in filter_files step. Affects .github/workflows/create-upstream-pr.yml. No breaking changes.
2025-07-18 12:56:57 -05:00
smilerz
61b18c9442 Update workflow to remove infrastructure files before fork push
Because:
- GitHub Actions cannot push workflow files from forks due to permission restrictions
- Prevents workflow errors and keeps upstream infrastructure intact

Adds a step to remove .github, cookbook/version_info.py, and .gitattributes before pushing to fork. Only code changes are pushed for upstream PR. Affects .github/workflows/create-upstream-pr.yml. No breaking changes.
2025-07-18 12:31:15 -05:00
smilerz
d4d968f399 Remove legacy upstream-pr workflow
Because:
- Only create-upstream-pr.yml should be used for upstream PR automation
- upstream-pr.yml enforced divergence checks and manual sync, causing confusion

Deletes .github/workflows/upstream-pr.yml. Ensures only the updated workflow logic is used. No breaking changes. No impact on code or tests.
2025-07-18 11:32:03 -05:00
smilerz
d22669272a Fix workflow to only block on merge conflicts
Because:
- Diverged branches are not a blocker if merge is clean
- Previous logic blocked on divergence, not actual conflicts

Updates .github/workflows/create-upstream-pr.yml to only fail if a merge conflict occurs during upstream merge. No longer blocks or warns on branch divergence alone. No breaking changes. Workflow now matches real merge safety requirements.
2025-07-18 11:16:35 -05:00
smilerz
871074ef45 Fix workflow: restore infra files before merge
Because:
- Merge conflicts in infrastructure files caused manual intervention
- Upstream infra files must always be preferred to avoid drift

Moves 'Restore upstream infrastructure files' step before 'Merge upstream branch' in create-upstream-pr.yml. Ensures .github/workflows/ and cookbook/version_info.py are always restored from upstream before merging. No breaking changes. Affects .github/workflows/create-upstream-pr.yml only.
2025-07-18 11:00:08 -05:00
smilerz
2954334e1f refactored: update create-upstream-pr workflow 2025-07-18 07:45:07 -05:00
dependabot[bot]
1879cb20bc chore(deps): bump django-allauth in the pip-minors group
Bumps the pip-minors group with 1 update: [django-allauth](https://github.com/sponsors/pennersr).


Updates `django-allauth` from 65.9.0 to 65.10.0
- [Commits](https://github.com/sponsors/pennersr/commits)

---
updated-dependencies:
- dependency-name: django-allauth
  dependency-version: 65.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 05:51:13 +00:00
smilerz
42b36e4bee add ingredient context setting to UserPreferenceStore 2025-07-14 19:15:53 -05:00
smilerz
4370232031 reverted updated pluralization on DRF Autoschema 2025-07-14 18:40:34 -05:00
smilerz
4bbf408a68 Fix infra-only divergence detection in workflow
Because:
- Previous logic did not strictly list files ahead in upstream
- Needed accurate detection for infra-only divergence

Updates .github/workflows/create-upstream-pr.yml to use git log --name-only refs/remotes/upstream/tandoor-1 ^working for correct file listing. No breaking changes. Infra-only divergence now correctly detected.
2025-07-14 14:32:37 -05:00
smilerz
cb06de7f89 Update infra divergence logic and sync dependencies
Because:
- Divergence in infra files should not block PRs
- Dependency tree needed deduplication and updates
- Each line under 72 chars

.github/workflows/create-upstream-pr.yml: Adds logic to skip divergence errors if only infrastructure files differ. vue/package.json, vue/yarn.lock: Adds/updates several dependencies and synchronizes lockfile. No breaking changes. No test code affected.
2025-07-14 14:07:54 -05:00
smilerz
763f53f579 update accidentally changed files during rebase 2025-07-14 12:33:13 -05:00
smilerz
69fb501b37 rebase fixes 2025-07-14 12:03:46 -05:00
smilerz
ee027863ed Update upgrade for body-parser, brace-expansion, lodash.template
Because:
- Security advisories for these packages
- Vue 2 compatibility limits further upgrades

Upgrades body-parser to 1.20.3, brace-expansion to 1.1.12, lodash.template to 4.5.0
in vue/package.json and vue/yarn.lock. No breaking changes. Remaining advisories
require major upgrades incompatible with Vue 2.
2025-07-14 11:58:17 -05:00
smilerz
7e9abcc3ee update create-upstream-pr.yml workflow 2025-07-14 11:58:17 -05:00
smilerz
f5fe770991 Update Node.js to 20 in CI and Docker workflows
Because:
- Node.js 18 is deprecated and no longer supported
- Ensures CI and Docker builds use the latest LTS version

Updates .github/workflows/ci.yml and docker-publish.yml to use only Node.js 20. Removes Node.js 18 from matrix and build steps. No breaking changes expected. All CI and container builds now standardized on Node.js 20.
2025-07-14 11:58:16 -05:00
smilerz
91921d2179 refine upstream PR workflow 2025-07-14 11:58:16 -05:00
dependabot[bot]
cba0ad2862 chore(deps): bump the pip-patches group with 2 updates
---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.39.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
- dependency-name: aiohttp
  dependency-version: 3.12.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: pip-patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:58:16 -05:00
dependabot[bot]
d613e8c5d2 chore(deps): bump pytubefix from 9.2.2 to 9.3.0 in the pip-minors group
---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:58:15 -05:00
smilerz
92b06c47d5 Merge upstream changes while preserving custom workflows and version info
- Updated all upstream changes from tandoor-1
- Preserved custom GitHub workflows and version_info.py
- Comprehensive sync excluding only protected files
2025-07-14 11:58:15 -05:00
smilerz
d547607feb Update .gitattributes with custom merge driver for complete file protection 2025-07-14 11:58:14 -05:00
smilerz
400f025169 Add .gitattributes for selective merge control 2025-07-14 11:58:14 -05:00
smilerz
7372f7513c WIP: build workflow to create upstream PR on docker publish 2025-07-14 11:58:13 -05:00
smilerz
de509aca9f Update auto-merge workflow to use official actions/create-github-app-token
Because:
- Primary GitHub action is preferred over 3rd party for token generation
- actions/create-github-app-token is not deprecated and is the recommended approach

Replaces tibdex/github-app-token with actions/create-github-app-token in dependabot-automerge.yml. Updates input keys to match official action. No breaking changes. Only .github/workflows/dependabot-automerge.yml affected.
2025-07-14 11:58:12 -05:00
smilerz
46abee647f remove devcontainer updates in dependabot.yml 2025-07-14 11:58:12 -05:00
smilerz
378e503ea4 update offical github actions to pinned versions 2025-07-14 11:58:11 -05:00
smilerz
a7c54c4b96 remvoe labels from npm-patches 2025-07-14 11:58:10 -05:00
smilerz
71b64f61d0 update github workflow permissions 2025-07-14 11:58:10 -05:00
smilerz
6ae3245a79 Update GitHub Actions security with SHA pinning and minimal permissions
Because:
- Actions used version tags vulnerable to supply chain attacks
- Workflows lacked minimal permission scoping for security
- Required immutable references per security best practices

Pins all GitHub Actions to latest SHA commits with version comments across 5 workflow files. Adds minimal permissions at workflow and job levels following principle of least privilege. Updates ci.yml, codeql-analysis.yml, dependabot-automerge.yml, docker-publish.yml, push-orchestrator.yml. Enhances dependabot.yml with automerge labels for npm patches. No breaking changes.
2025-07-14 11:58:08 -05:00
smilerz
e2c058db1c update dependabot configuration 2025-07-14 11:58:06 -05:00
dependabot[bot]
7aa476f822 chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.7.0 to 15.8.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.7.0...15.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:58:06 -05:00
smilerz
77e60643f9 update dependabot 2025-07-14 11:58:05 -05:00
smilerz
85e5613254 fixed tibdex/github-app-token@v2.1.0 2025-07-14 11:58:05 -05:00
smilerz
04f5fe02d5 Refactor GitHub Actions workflow architecture
Because:
- Push events triggered CI on every push causing redundant runs
- Docker builds ran unnecessarily when CI failed
- Dependabot automerge lacked proper validation and security
- Workflow files had inconsistent naming and structure

Restructures CI/CD pipeline with push orchestrator controlling workflow execution.
Adds conditional CI execution based on PR merge detection. Updates dependabot
automerge with enhanced validation, bot token usage, and security restrictions.
Renames docker-publish-fork.yml to docker-publish.yml for clarity. Removes
duplicate validate-pr-labels.yml logic now handled in dependabot workflow.
Downgrades recipe-scrapers to 15.7.0 for compatibility. Affects all GitHub
Actions workflows and requirements.txt.
2025-07-14 11:58:02 -05:00
dependabot[bot]
b0b773fe44 chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.7.0 to 15.8.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.7.0...15.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:58:01 -05:00
smilerz
75f884161e Update requirements.txt 2025-07-14 11:58:01 -05:00
smilerz
658f9e0c7b downgrade to python 3.12 2025-07-14 11:58:00 -05:00
dependabot[bot]
2e15a91c08 chore(deps): bump recipe-scrapers in the pip-minors group
Bumps the pip-minors group with 1 update: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers).


Updates `recipe-scrapers` from 15.7.0 to 15.8.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.7.0...15.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:58:00 -05:00
smilerz
29b463fa4a testing 2025-07-14 11:58:00 -05:00
dependabot[bot]
eea53c71ab chore(deps): bump the pip-minors group with 2 updates
Bumps the pip-minors group with 2 updates: [recipe-scrapers](https://github.com/hhursev/recipe-scrapers) and [pytubefix](https://github.com/juanbindez/pytubefix).


Updates `recipe-scrapers` from 15.7.0 to 15.8.0
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/15.7.0...15.8.0)

Updates `pytubefix` from 9.1.1 to 9.2.2
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v9.1.1...v9.2.2)

---
updated-dependencies:
- dependency-name: recipe-scrapers
  dependency-version: 15.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
- dependency-name: pytubefix
  dependency-version: 9.2.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-minors
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:59 -05:00
smilerz
a6ca6075ad troubleshooting tasks 2025-07-14 11:57:59 -05:00
smilerz
811c5e51ba test behavior of push trigger with file filter 2025-07-14 11:57:58 -05:00
dependabot[bot]
e4e2da8790 chore(deps)(deps): bump python from 3.12-alpine3.21 to 3.13-alpine3.21
Bumps python from 3.12-alpine3.21 to 3.13-alpine3.21.

---
updated-dependencies:
- dependency-name: python
  dependency-version: 3.13-alpine3.21
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:58 -05:00
smilerz
a3c3740805 Update dependabot.yml 2025-07-14 11:57:57 -05:00
smilerz
abf203db7e Add push trigger for Dependabot Docker builds
Because:
- Dependabot dependency updates need immediate Docker builds
- Workflow_run trigger has delays and complexity
- Direct push events are more reliable for automation

Adds push trigger on working branch for dependency files and workflows. Updates conditional logic to handle push events from dependabot[bot]. Removes comment header from dependabot.yml and adds dependencies label.
2025-07-14 11:57:57 -05:00
dependabot[bot]
b824b1112c chore(deps): bump peter-evans/create-or-update-comment
Bumps [peter-evans/create-or-update-comment](https://github.com/peter-evans/create-or-update-comment) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/peter-evans/create-or-update-comment/releases)
- [Commits](23ff15729e...71345be026)

---
updated-dependencies:
- dependency-name: peter-evans/create-or-update-comment
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:56 -05:00
smilerz
d75e568ad6 Fix Dependabot workflow trigger events
Because:
- Workflow only ran on labeled/opened events
- PR updates (synchronize) weren't triggering auto-merge
- Reopened PRs needed workflow re-execution

Adds synchronize and reopened events to pull_request_target trigger in dependabot-automerge.yml. Ensures workflow runs when Dependabot updates PRs with new commits or when PRs are reopened.
2025-07-14 11:57:56 -05:00
smilerz
555e3aa095 Update Dependabot automerge workflow and config
Because:
- Auto-approve action needed integrated review message
- Previous automerge action was suboptimal
- Dependabot label naming inconsistency

Replaces alexwilson/enable-github-automerge-action with daneden/enable-automerge-action for better author validation. Adds review message to hmarr/auto-approve-action. Updates dependabot.yml label from github-actions to github_actions for consistency.
2025-07-14 11:57:55 -05:00
smilerz
cc2dc072a0 Optimize Docker workflow to prevent skipped jobs
Because:
- Workflow triggered on all branches creating many skipped jobs
- Branch filtering at trigger level is more efficient
- Redundant head_branch check was unnecessary

Adds branches filter to workflow_run trigger and simplifies conditional logic in docker-publish-fork.yml. Prevents workflow from starting on non-working branches, eliminating skipped job clutter.
2025-07-14 11:57:55 -05:00
smilerz
f47142acbe Update Dependabot merge method from SQUASH to REBASE
Because:
- SQUASH blocks sequential PRs when branches become out-of-date
- REBASE provides linear history without blocking issues
- GitHub auto-merge handles branch updates automatically with REBASE

Changes merge-method in dependabot-automerge.yml workflow. Eliminates need for manual branch update logic and prevents sequential PR conflicts.
2025-07-14 11:57:54 -05:00
smilerz
b3deccc8ea Fix Dependabot merge method parameter
Because:
- API expects uppercase merge method value
- squash was invalid, causing workflow failures
- GitHub GraphQL requires SQUASH not squash

Changes merge-method from squash to SQUASH in dependabot-automerge.yml workflow. Fixes PullRequestMergeMethod validation error.
2025-07-14 11:57:54 -05:00
smilerz
4609d25c32 Update Dependabot to run daily for pip packages
Because:
- Weekly updates were too slow for critical dependencies
- Recipe-scrapers needed faster patch deployment
- Custom workflow was security risk with manual approval

Changes Dependabot pip schedule from weekly to daily in dependabot.yml. Reduces patch cooldown to 1 day. Removes custom auto-update-recipe-scrapers.yml workflow to consolidate all updates through secure Dependabot flow. Adds artifact retention to CI workflow.
2025-07-14 11:57:53 -05:00
smilerz
90f018479a Fix Dependabot workflow permissions error
Because:
- pull_request events have read-only token permissions
- Dependabot auto-merge was failing with access errors
- Workflow needs write permissions for PR approval

Changes pull_request to pull_request_target in dependabot-automerge.yml workflow. This provides necessary write permissions for auto-approval and merge actions triggered by Dependabot PRs.
2025-07-14 11:57:52 -05:00
smilerz
c5f78aebdc pin peter-evans/create-or-update-comment version to v4.0.0 2025-07-14 11:57:52 -05:00
smilerz
9572211cac Update GitHub workflows and dependency management
Because:
- Dependabot automerge needed dedicated workflow
- Recipe scrapers automation was complex and error-prone
- CodeQL analysis had unnecessary matrix complexity
- Development dependencies needed proper separation

Adds dependabot-automerge.yml and validate-pr-labels.yml workflows.
Refactors auto-update-recipe-scrapers.yml to simplify update logic.
Removes matrix strategy from codeql-analysis.yml for clarity.
Updates dependabot.yml to exclude pytest from grouped updates.
Moves django-debug-toolbar to development section in requirements.txt.
Adds Python 3.13 to CI test matrix.
2025-07-14 11:57:50 -05:00
dependabot[bot]
09e82be391 chore(deps)(deps): bump stefanzweifel/git-auto-commit-action from 5 to 6 (#33)
Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5 to 6.
- [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases)
- [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: stefanzweifel/git-auto-commit-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:50 -05:00
smilerz
8258c6ee53 enable dependabot 2025-07-14 11:57:49 -05:00
smilerz
9b7529956e disable dependabot 2025-07-14 11:57:48 -05:00
smilerz
876f477005 Fix factory datetime fields and update test deps
Because:
- MealPlan factory used future_date for DateTimeField model
- Deprecated Faker API caused test failures
- Arithmetic error in recipe factory loop
- Test dependencies needed compatibility updates

Fixes cookbook/tests/factories/__init__.py to use proper datetime
methods for MealPlan from_date/to_date fields. Updates deprecated
FakerFactory to modern Faker instance. Corrects arithmetic bug in
RecipeFactory step generation. Updates test dependencies including
pytest 8.3.5 and pytest-factoryboy 2.6.0. Improves code formatting
across test files. Adds pytest-specific dependabot grouping.
2025-07-14 11:57:47 -05:00
smilerz
1f16cd9bf4 Re-enable dependabot updates by removing global ignores
Because:
- Universal ignore patterns block all dependency management
- Testing configuration changes now complete
- Selective Vue major version blocks still needed

Removes global "dependency-name: *" ignore patterns from all ecosystems in .github/dependabot.yml. Restores automatic dependency updates while preserving Vue/Pinia major version restrictions.
2025-07-14 11:57:46 -05:00
smilerz
9c90bb67c2 Disable all dependabot updates and reorganize config
Because:
- All dependency updates need temporary blocking for testing
- Configuration sections lack consistent ordering
- Ecosystem-specific settings scattered throughout

Adds universal ignore pattern to all package ecosystems in .github/dependabot.yml. Reorders configuration blocks for consistency and removes redundant vue label from npm ecosystem.
2025-07-14 11:57:46 -05:00
smilerz
e6ba81cb9c Update dependabot.yml 2025-07-14 11:57:45 -05:00
smilerz
aa5d3e4a5c Fix dependabot config by removing unsupported cooldowns
Because:
- GitHub Actions ecosystem doesn't support cooldown feature
- Docker ecosystem doesn't support cooldown configuration
- Unsupported options cause dependabot validation errors

Removes cooldown blocks from github-actions and docker ecosystems in .github/dependabot.yml. Fixes configuration validation errors for ecosystems that don't support cooldown timing controls.
2025-07-14 11:57:45 -05:00
smilerz
9f3c24cb6a Fix invalid dependabot syntax with Vue ignore pattern
Because:
- update-types array syntax invalid in allow configuration
- Complex allow rules failed to constrain major updates
- Single ignore rule provides clearer dependency control

Removes invalid allow rules with update-types arrays and adds vue* major version ignore in .github/dependabot.yml. Fixes syntax error while preventing breaking Vue upgrades.
2025-07-14 11:57:45 -05:00
smilerz
a11c1b9ffe Optimize dependabot and CI workflow configurations
Because:
- Unlimited PRs create review bottlenecks
- Ungrouped updates generate excessive notifications
- Missing cooldowns cause rapid-fire dependency updates
- CI needs to validate PRs against working branch

Adds PR limits, dependency grouping, and cooldowns to .github/dependabot.yml. Updates ci.yml to test PRs against working branch. Adds docker build concurrency control.
2025-07-14 11:57:43 -05:00
smilerz
6d157e9129 Refactor recipe-scrapers updates to daily automation
Because:
- Manual merge workflow creates unnecessary review overhead
- Daily checks ensure faster security and feature updates
- Single workflow eliminates dependabot conflicts

Replaces auto-merge-recipe-scrapers.yml with auto-update-recipe-scrapers.yml. Implements daily PyPI checks, automatic requirements.txt updates, and PR creation with automerge labels.
2025-07-14 11:57:42 -05:00
smilerz
245925f2e0 Add comprehensive dependabot automation config
Because:
- Inconsistent commit messages break automation workflows
- Missing labels prevent automated categorization
- Limited ecosystems lack Docker dependency updates
- Need unlimited PRs for complete dependency coverage

Adds unlimited PR limits, standardized commit prefixes, automerge labels, and Docker ecosystem to .github/dependabot.yml. Removes recipe-scrapers ignore and enables full automation support.
2025-07-14 11:57:42 -05:00
smilerz
11067cb9ff Fix dependabot config with duplicate pip ecosystems
Because:
- GitHub Dependabot rejects overlapping package ecosystems
- Multiple pip configs for same directory cause failures
- Consolidated config maintains functionality

Removes duplicate pip ecosystem from .github/dependabot.yml. Eliminates daily recipe-scrapers config in favor of single weekly pip ecosystem with ignore pattern.
2025-07-14 11:57:41 -05:00
smilerz
ad38afe1f0 Refactor Docker workflow to run only after CI success
Because:
- Unnecessary Docker builds on every push waste resources
- Docker builds should only trigger after passing CI
- Workflow naming should reflect fork-specific purpose

Renames docker-publish-beta.yml to docker-publish-fork.yml and changes trigger from push events to workflow_run completion. Adds conditional logic to build only when CI passes on working branch.
2025-07-14 11:57:41 -05:00
smilerz
ef8d2cc743 Add CI workflows and update dependency management
Because:
- Repository lacked automated testing infrastructure
- Dependabot needed recipe-scrapers daily updates
- CodeQL security scanning was missing
- Alpine base image needed update

Adds comprehensive CI workflow with Python/Node matrix testing, caching for staticfiles,
and Vue unit tests in .github/workflows/ci.yml. Adds CodeQL security analysis workflow
with JavaScript and Python language support in .github/workflows/codeql-analysis.yml.
Adds auto-merge workflow for recipe-scrapers Dependabot PRs in
.github/workflows/auto-merge-recipe-scrapers.yml. Updates .github/dependabot.yml to
enable daily recipe-scrapers updates and weekly updates for other dependencies.
Updates Dockerfile to use Alpine 3.21 base image. Reverts recipe-scrapers to 15.5.0.

Affected files: .github/dependabot.yml, .github/workflows/*, Dockerfile, requirements.txt
2025-07-14 11:57:40 -05:00
dependabot[bot]
4a398181ec Bump docker/build-push-action from 5 to 6 (#4)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:39 -05:00
dependabot[bot]
809364090d Bump actions/setup-node from 3 to 4 (#3)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:38 -05:00
dependabot[bot]
f5531894e5 Bump actions/checkout from 3 to 4 (#5)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 11:57:38 -05:00
smilerz
019e507f6e add dependabot configuration file 2025-07-14 11:57:37 -05:00
smilerz
5cdb49b870 update formating 2025-07-14 11:57:36 -05:00
smilerz
61e3fa5b4f more twiddling 2025-07-14 11:57:34 -05:00
smilerz
bdfeef3763 remove pre-generating staticfiles 2025-07-14 11:57:34 -05:00
smilerz
b665811a5e add console statements for SCRIPT_NAME variables 2025-07-14 11:57:33 -05:00
smilerz
7218ab7870 update migrations 2025-07-14 11:57:33 -05:00
smilerz
dad03c8e3d regen openapi 2025-07-14 11:57:32 -05:00
smilerz
02ba32cade update API name 2025-07-14 11:57:30 -05:00
smilerz
0fe1ff0e1b python client generation 2025-07-14 11:57:29 -05:00
smilerz
5784abbd9d regen openapi
fix various merge errors
2025-07-14 11:57:28 -05:00
smilerz
a25dac0ad5 allow passing PK to nested serializer instead of object 2025-07-14 11:57:27 -05:00
smilerz
5766d2a6cb reorder migration 2025-07-14 11:57:27 -05:00
smilerz
299f48eb8e commented out DB settings for testing 2025-07-14 11:57:26 -05:00
smilerz
bd7011c0ef commented out testing config in settings.py 2025-07-14 11:57:26 -05:00
smilerz
b8e7ff7ea5 rebase 2025-07-14 11:57:25 -05:00
smilerz
4646b441ae regen openapi and migrations after rebase 2025-07-14 11:57:23 -05:00
smilerz
0db0905a89 fixed substitute display 2025-07-14 11:57:23 -05:00
smilerz
24f1ed585a fixed displaying substitutes 2025-07-14 11:57:22 -05:00
smilerz
2148fd95d2 added ignore shopping to ingredient context menu 2025-07-14 11:57:21 -05:00
smilerz
6e0d478e8e added SubstiteBadge on Cookbook Slider 2025-07-14 11:57:21 -05:00
smilerz
e6e86af878 temporarily removing migration until ready to merge 2025-07-14 11:57:20 -05:00
smilerz
5a57672c86 fixed context menu display on ShoppingModal 2025-07-14 11:57:20 -05:00
smilerz
bfea4f3483 added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:57:18 -05:00
smilerz
7af970de0a fixed substitute display 2025-07-14 11:57:18 -05:00
smilerz
37c36eb673 added SubstiteBadge on Cookbook Slider 2025-07-14 11:57:17 -05:00
smilerz
2639c3ba6b temporarily removing migration until ready to merge 2025-07-14 11:57:17 -05:00
smilerz
d6f2610fa1 fixed context menu display on ShoppingModal 2025-07-14 11:57:16 -05:00
smilerz
7fc46aae45 added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:57:15 -05:00
smilerz
8aacd9f2b3 created never_used_food filter 2025-07-14 11:57:13 -05:00
smilerz
7deca69075 rebase from develop 2025-07-14 11:57:12 -05:00
smilerz
e07dc34bf2 created never_used_food filter 2025-07-14 11:57:11 -05:00
smilerz
1412c5912b changed never_used_food to ignore substitutions when filtering onhand 2025-07-14 11:57:10 -05:00
smilerz
427e20a0b2 rebase from develop 2025-07-14 11:57:09 -05:00
smilerz
4febdeb2bf rebase 2025-07-14 11:57:08 -05:00
smilerz
036fe20cfd regen openapi and migrations after rebase 2025-07-14 11:57:06 -05:00
smilerz
cd106d28d0 fixed substitute display 2025-07-14 11:57:06 -05:00
smilerz
abbba50c1e fixed displaying substitutes 2025-07-14 11:57:05 -05:00
smilerz
6c0f2cf1e8 added ignore shopping to ingredient context menu 2025-07-14 11:57:04 -05:00
smilerz
b505821b29 added SubstiteBadge on Cookbook Slider 2025-07-14 11:57:03 -05:00
smilerz
00734f12e6 temporarily removing migration until ready to merge 2025-07-14 11:57:03 -05:00
smilerz
a8819e7f42 fixed context menu display on ShoppingModal 2025-07-14 11:57:02 -05:00
smilerz
fad9989a18 added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:57:01 -05:00
smilerz
be5e2e2d66 fixed substitute display 2025-07-14 11:57:00 -05:00
smilerz
36a5802c91 added SubstiteBadge on Cookbook Slider 2025-07-14 11:57:00 -05:00
smilerz
cee95719d4 temporarily removing migration until ready to merge 2025-07-14 11:56:59 -05:00
smilerz
4dab2be02d fixed context menu display on ShoppingModal 2025-07-14 11:56:59 -05:00
smilerz
f168e09cf4 added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:56:58 -05:00
smilerz
c3873754fc regen openapi 2025-07-14 11:56:47 -05:00
smilerz
9916e58b37 prettier, isort, black, flake8 configured with rational defaults
instructions for VSCode written
2025-07-14 11:56:46 -05:00
smilerz
2196c1dfa5 autoformat and linting for python (autopep8 and flake8)
instructions to setup for VSCode
2025-07-14 11:56:45 -05:00
smilerz
3da2c6c279 fix docker build action 2025-07-14 11:56:43 -05:00
smilerz
f54a58ebbb updated docker build 2025-07-14 11:56:43 -05:00
smilerz
e9f46f7088 updated actions 2025-07-14 11:56:42 -05:00
smilerz
f06cf23111 updated docker build action 2025-07-14 11:56:42 -05:00
smilerz
a4b582b4cc fix docker build action 2025-07-14 11:56:42 -05:00
smilerz
56b4b01038 updated docker build 2025-07-14 11:56:41 -05:00
smilerz
9aba66634e add manual docker build to gihub actions 2025-07-14 11:56:41 -05:00
smilerz
63ddd66306 updated actions 2025-07-14 11:56:40 -05:00
smilerz
232e832c1d updated docker build action 2025-07-14 11:56:40 -05:00
smilerz
5e91709421 regen openapi and migrations after rebase 2025-07-14 11:56:38 -05:00
smilerz
d37ea1e473 fixed substitute display 2025-07-14 11:56:38 -05:00
smilerz
096ff5d0d8 fixed displaying substitutes 2025-07-14 11:56:37 -05:00
smilerz
e20f59a66a added ignore shopping to ingredient context menu 2025-07-14 11:56:29 -05:00
smilerz
2cb44c8933 added SubstiteBadge on Cookbook Slider 2025-07-14 11:56:28 -05:00
smilerz
64703c8497 temporarily removing migration until ready to merge 2025-07-14 11:56:28 -05:00
smilerz
d6e74a2ef5 fixed context menu display on ShoppingModal 2025-07-14 11:56:27 -05:00
smilerz
b1d491165e added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:56:26 -05:00
smilerz
e94c3a2355 fixed substitute display 2025-07-14 11:56:25 -05:00
smilerz
71b05e16f8 change shopping status on api to SerialMethod over annotation 2025-07-14 11:56:24 -05:00
smilerz
4beed65983 added SubstiteBadge on Cookbook Slider 2025-07-14 11:56:23 -05:00
smilerz
ca03fcff33 temporarily removing migration until ready to merge 2025-07-14 11:56:23 -05:00
smilerz
d3333322c4 fixed context menu display on ShoppingModal 2025-07-14 11:56:22 -05:00
smilerz
2b8172f25c added get_substitutes api, finished context menu 2025-07-14 11:56:21 -05:00
smilerz
9496292816 added stub for ingredient context menu and preference to toggle it on 2025-07-14 11:56:19 -05:00
smilerz
cf32549a22 changed never_used_food to ignore substitutions when filtering onhand 2025-07-14 11:56:18 -05:00
smilerz
13abf6da82 rebase from develop 2025-07-14 11:56:17 -05:00
smilerz
c72f697d57 personal changes to github actions 2025-07-14 11:56:15 -05:00
vabene1111
03cfe18acd reverted api plan ical having optional parameters 2025-07-14 11:56:14 -05:00
smilerz
9939ef76c1 change all naive datetimes to timezone aware dateimes 2025-07-14 11:56:11 -05:00
smilerz
ae387507f7 Update build-docker.yml
update docker build to use node 20
2025-07-14 11:07:00 -05:00
smilerz
969443acd1 Merge pull request #3823 from smilerz/upstream/tandoor-1
Prepare tandoor-1 branch for maintenance updates
2025-07-14 11:01:40 -05:00
smilerz
3606612135 Add ingredient context features and update dependencies
Because:
- Missing never_used_food parameter broke recipe search filtering
- Users needed ingredient substitute functionality
- Ingredient context menu was incomplete for recipe management
- PDF viewer and dependencies required updates for compatibility
- Development tools needed formatting and linting improvements

Adds never_used_food QueryParam to RecipeViewSet for proper search filtering. Implements ingredient substitutes API endpoint and ingredient_context user preference field. Creates IngredientContextMenu component and Substitute badge for enhanced recipe management. Updates PDF.js from legacy version to modern web-based implementation with SVG icons and improved localization. Refreshes Vue dependencies including security updates and formatting tools. Adds comprehensive test coverage for nested serializers and search functionality. Updates VS Code settings for better development workflow.
2025-07-13 17:02:21 -05:00
smilerz
1ee48edfb5 Update Docker workflow for tandoor-v1 maintenance branch
Because:
- Workflow needed to target specific tandoor-1 branch
- Maintenance builds required different notification messaging
- Multiple workflows needed to be disabled for focused maintenance

Updates build-docker.yml to trigger only on tandoor-1 branch pushes with tandoor-v1 tags.
Adds maintenance-specific Discord notification job. Disables other CI workflows by
restricting to 'disabled' branch. Affects .github/workflows/ files for Docker builds,
CI, and CodeQL analysis.
2025-07-13 13:44:46 -05:00
vabene1111
cd2c4b35df Merge pull request #3742 from TandoorRecipes/dependabot/pip/psycopg2-binary-2.9.10
Bump psycopg2-binary from 2.9.9 to 2.9.10
2025-06-11 19:34:54 +02:00
dependabot[bot]
d1d4cec00f Bump psycopg2-binary from 2.9.9 to 2.9.10
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.9 to 2.9.10.
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.10)

---
updated-dependencies:
- dependency-name: psycopg2-binary
  dependency-version: 2.9.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-11 17:33:27 +00:00
vabene1111
6940f405eb Merge pull request #3757 from TandoorRecipes/dependabot/pip/requests-2.32.4
Bump requests from 2.32.3 to 2.32.4
2025-06-11 19:32:20 +02:00
dependabot[bot]
3e6f7a554a Bump requests from 2.32.3 to 2.32.4
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [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.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 10:03:22 +00:00
vabene1111
4df451a540 Merge pull request #3752 from TandoorRecipes/dependabot/pip/django-4.2.22
Bump django from 4.2.21 to 4.2.22
2025-06-09 11:07:17 +02:00
dependabot[bot]
fd06d67218 Bump django from 4.2.21 to 4.2.22
Bumps [django](https://github.com/django/django) from 4.2.21 to 4.2.22.
- [Commits](https://github.com/django/django/compare/4.2.21...4.2.22)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 23:32:28 +00:00
Hennadii Lysenko
f546a4d382 Translated using Weblate (Ukrainian)
Currently translated at 53.6% (306 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/uk/
2025-05-21 14:58:39 +00:00
querty
c2ecf7ef57 Translated using Weblate (Portuguese)
Currently translated at 60.0% (342 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt/
2025-05-18 10:58:40 +00:00
querty
b9771d7c11 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-05-18 10:58:39 +00:00
querty
d5b53d2bca Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2025-05-18 10:58:39 +00:00
Vincenzo Reale
f502cd47e1 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/
2025-05-18 10:58:39 +00:00
Anna Kh
358fab9a8f Translated using Weblate (Russian)
Currently translated at 84.9% (484 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2025-05-16 13:58:39 +00:00
Tales Garcia Fernandes
445e78825a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-05-15 10:58:40 +00:00
vabene1111
e7d9824520 Merge pull request #3691 from TandoorRecipes/dependabot/pip/pytubefix-8.13.1
Bump pytubefix from 8.12.2 to 8.13.1
2025-05-14 07:08:37 +02:00
vabene1111
c9ebbdd4ec Merge pull request #3707 from EifX/fix-doc-updating
Fix doc updating postgress
2025-05-14 07:07:07 +02:00
vabene1111
85fa211390 Merge pull request #3695 from tpansino/s3-secret-access-key-file
Support reading S3_SECRET_ACCESS_KEY from file
2025-05-14 07:05:42 +02:00
EifX
3f5db2cb03 fix: removing sudo 2025-05-10 20:42:10 +02:00
EifX
79227b347e fix: Documentation around updating postgres 2025-05-10 20:39:14 +02:00
vabene1111
ffe0c22b3e Merge pull request #3704 from TandoorRecipes/dependabot/pip/django-4.2.21
Bump django from 4.2.20 to 4.2.21
2025-05-09 11:07:02 +02:00
dependabot[bot]
25e5faf135 Bump django from 4.2.20 to 4.2.21
Bumps [django](https://github.com/django/django) from 4.2.20 to 4.2.21.
- [Commits](https://github.com/django/django/compare/4.2.20...4.2.21)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 15:44:57 +00:00
Tom Pansino
a6f8a9ef06 Support reading S3_SECRET_ACCESS_KEY from file 2025-05-03 09:07:14 -07:00
dependabot[bot]
05b51e83a6 Bump pytubefix from 8.12.2 to 8.13.1
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 8.12.2 to 8.13.1.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v8.12.2...v8.13.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 00:42:16 +00:00
Nico G
5625a9ae4f Translated using Weblate (Catalan)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-29 02:39:17 +00:00
Nico G
8e60a1954b Translated using Weblate (Catalan)
Currently translated at 96.3% (470 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-26 11:58:40 +00:00
vabene1111
52d2d75fe9 Merge pull request #3653 from TandoorRecipes/dependabot/npm_and_yarn/vue/http-proxy-middleware-2.0.9
Bump http-proxy-middleware from 2.0.6 to 2.0.9 in /vue
2025-04-25 16:12:56 +02:00
Nico G
edb669ab36 Translated using Weblate (Catalan)
Currently translated at 95.6% (467 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-25 09:58:39 +00:00
Nico G
e9ed28b44d Translated using Weblate (Catalan)
Currently translated at 94.2% (460 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-24 07:58:39 +00:00
Nico G
343373bf4d Translated using Weblate (Catalan)
Currently translated at 93.4% (456 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-22 10:12:51 +00:00
dependabot[bot]
698ede9eb6 Bump http-proxy-middleware from 2.0.6 to 2.0.9 in /vue
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 15:34:33 +00:00
Nico G
3ae73f7cad Translated using Weblate (Catalan)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-16 07:58:39 +00:00
Nico G
340d36c628 Translated using Weblate (Catalan)
Currently translated at 88.1% (430 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-16 07:58:39 +00:00
Nico G
703f782be1 Translated using Weblate (Catalan)
Currently translated at 87.3% (498 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-11 13:58:39 +00:00
Nico G
2ef4514987 Translated using Weblate (Catalan)
Currently translated at 84.5% (482 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-08 08:58:38 +00:00
Nico G
a89411aeec Translated using Weblate (Catalan)
Currently translated at 85.4% (417 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-01 12:58:40 +00:00
vabene1111
0cf89ca33c Merge pull request #3614 from stritti/feature/mobile-apps-update
docs: mobile apps updated
2025-03-27 17:14:03 +01:00
Stephan Strittmatter
68ceada28b chore: mobile apps updated 2025-03-25 11:16:18 +00:00
Vlad
192ca44d89 Translated using Weblate (Ukrainian)
Currently translated at 44.7% (255 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/uk/
2025-03-23 15:07:19 +00:00
vabene1111
3204aaf161 Merge pull request #3607 from TandoorRecipes/dependabot/pip/gunicorn-23.0.0
Bump gunicorn from 22.0.0 to 23.0.0
2025-03-22 09:33:08 +01:00
dependabot[bot]
6cf6791fe6 Bump gunicorn from 22.0.0 to 23.0.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 22.0.0 to 23.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/22.0.0...23.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 03:20:08 +00:00
vabene1111
6ebb18a932 more ci dependency tests 2025-03-16 13:11:28 +01:00
vabene1111
7bde1bf44f split migrations, CI denendencies 2025-03-16 13:08:06 +01:00
vabene1111
3075ec066f Merge pull request #3595 from TandoorRecipes/dependabot/npm_and_yarn/vue/babel/runtime-7.26.10
Bump @babel/runtime from 7.22.15 to 7.26.10 in /vue
2025-03-16 12:53:55 +01:00
vabene1111
3ddc3c3768 Merge pull request #3594 from TandoorRecipes/dependabot/npm_and_yarn/vue/babel/helpers-7.26.10
Bump @babel/helpers from 7.22.15 to 7.26.10 in /vue
2025-03-16 12:53:46 +01:00
vabene1111
7b7b726ec5 migration to store space and created_by on ShoppingListRecipe
ATTENTION: This deletes all old shopping list recipes that do not have entries associated with it. This should not matter but just for the record
2025-03-14 13:51:49 +01:00
vabene1111
5484506bc3 build requirements 2025-03-14 10:41:03 +01:00
vabene1111
136f05b886 requirments for django allauth 2025-03-14 10:31:42 +01:00
dependabot[bot]
83cf03a10b Bump @babel/runtime from 7.22.15 to 7.26.10 in /vue
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.15 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 09:17:29 +00:00
dependabot[bot]
7b56719716 Bump @babel/helpers from 7.22.15 to 7.26.10 in /vue
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.22.15 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 09:17:26 +00:00
vabene1111
348296763d Merge branch 'develop' 2025-03-14 10:15:46 +01:00
vabene1111
5c7a57ac32 added missing dependency 2025-03-14 10:15:40 +01:00
Jader Moraes
0c0b8ea455 Translated using Weblate (Portuguese (Brazil))
Currently translated at 66.5% (325 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-03-13 22:58:38 +00:00
Jader Moraes
2f20f43efe Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2025-03-13 22:58:38 +00:00
Nico G
1662b793a5 Translated using Weblate (Catalan)
Currently translated at 84.8% (414 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-03-12 09:58:39 +00:00
vabene1111
2e4efe2500 Merge branch 'develop' 2025-03-11 17:42:32 +01:00
vabene1111
3d01faed5f updated recipe scrapers 2025-03-11 17:21:47 +01:00
vabene1111
9bc3443a3c Merge pull request #3565 from TandoorRecipes/dependabot/pip/bleach-6.2.0
Bump bleach from 6.0.0 to 6.2.0
2025-03-11 17:18:36 +01:00
vabene1111
87dc32210e Merge pull request #3566 from TandoorRecipes/dependabot/pip/django-treebeard-4.7.1
Bump django-treebeard from 4.7 to 4.7.1
2025-03-11 17:18:07 +01:00
vabene1111
671216488e Merge pull request #3562 from TandoorRecipes/dependabot/pip/lxml-5.3.1
Bump lxml from 5.3.0 to 5.3.1
2025-03-11 17:17:50 +01:00
vabene1111
f596fc33a1 Merge pull request #3564 from TandoorRecipes/dependabot/pip/pytest-django-4.10.0
Bump pytest-django from 4.9.0 to 4.10.0
2025-03-11 17:17:43 +01:00
vabene1111
82756923ad Merge pull request #3563 from TandoorRecipes/dependabot/pip/pytubefix-8.12.2
Bump pytubefix from 8.12.0 to 8.12.2
2025-03-11 17:17:27 +01:00
vabene1111
14042563bf Merge pull request #3576 from racehd/develop
Revise Synology Guide
2025-03-11 17:16:07 +01:00
vabene1111
06e12396e8 Merge pull request #3574 from JiDW/develop
Add webp file as allowed file type
2025-03-11 17:14:18 +01:00
vabene1111
b698eee3a1 Merge pull request #3590 from TandoorRecipes/dependabot/pip/django-4.2.20
Bump django from 4.2.18 to 4.2.20
2025-03-11 17:13:51 +01:00
vabene1111
9d15634dc8 Merge pull request #3589 from TandoorRecipes/dependabot/pip/jinja2-3.1.6
Bump jinja2 from 3.1.5 to 3.1.6
2025-03-11 17:13:40 +01:00
dependabot[bot]
5f6c298d04 Bump django from 4.2.18 to 4.2.20
Bumps [django](https://github.com/django/django) from 4.2.18 to 4.2.20.
- [Commits](https://github.com/django/django/compare/4.2.18...4.2.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 16:13:19 +00:00
dependabot[bot]
f20a2ca781 Bump jinja2 from 3.1.5 to 3.1.6
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6.
- [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.5...3.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 16:13:12 +00:00
vabene1111
6dcfbc24a9 Merge pull request #3588 from TandoorRecipes/dependabot/npm_and_yarn/vue/prismjs-1.30.0
Bump prismjs from 1.29.0 to 1.30.0 in /vue
2025-03-11 17:12:18 +01:00
vabene1111
ea9404301b Merge pull request #3580 from TandoorRecipes/dependabot/npm_and_yarn/vue/axios-1.8.2
Bump axios from 1.6.7 to 1.8.2 in /vue
2025-03-11 17:12:12 +01:00
dependabot[bot]
da268b4429 Bump prismjs from 1.29.0 to 1.30.0 in /vue
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 22:29:43 +00:00
Nico G
2775960cf7 Translated using Weblate (Catalan)
Currently translated at 77.8% (444 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-03-10 12:39:16 +00:00
dependabot[bot]
bff6b2ffb0 Bump axios from 1.6.7 to 1.8.2 in /vue
Bumps [axios](https://github.com/axios/axios) from 1.6.7 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.7...v1.8.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 20:47:21 +00:00
yonatan ben-menachem
193600564e Translated using Weblate (Hebrew)
Currently translated at 18.4% (90 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/he/
2025-03-07 15:08:51 +00:00
Nico G
2abd683759 Translated using Weblate (Catalan)
Currently translated at 72.4% (413 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-03-06 03:42:27 +00:00
Toni Miquel
0163800a05 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/
2025-03-04 17:58:38 +00:00
racehd
958ccd7f7d Revise Synology Guide
- Rewrote/revised most of the guide to bring it to current
- Previous guide was last updated several years ago and was largely depreciated. I moved the prior guide references to the end for historical purposes
- Added a depreciated warning under the Firewall section. I have been using the project for a week so far without a firewall rule set-up and have not had any issues.
2025-03-03 22:50:07 +00:00
Mathias Latournerie
a0eb1df4fa Add webp file as allowed file type 2025-03-03 01:30:36 +01:00
fabio souza jr
3f1c6d1dd0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 66.1% (323 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-03-02 16:58:38 +00:00
Nico G
87a80e0caa Translated using Weblate (Catalan)
Currently translated at 69.8% (398 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-03-01 07:58:38 +00:00
dependabot[bot]
debdd03a7a Bump django-treebeard from 4.7 to 4.7.1
Bumps [django-treebeard](https://github.com/django-treebeard/django-treebeard) from 4.7 to 4.7.1.
- [Changelog](https://github.com/django-treebeard/django-treebeard/blob/master/CHANGES.md)
- [Commits](https://github.com/django-treebeard/django-treebeard/compare/4.7...4.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 00:11:59 +00:00
dependabot[bot]
c58697aecd Bump bleach from 6.0.0 to 6.2.0
Bumps [bleach](https://github.com/mozilla/bleach) from 6.0.0 to 6.2.0.
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v6.0.0...v6.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 00:11:56 +00:00
dependabot[bot]
3b3ad37d64 Bump pytest-django from 4.9.0 to 4.10.0
Bumps [pytest-django](https://github.com/pytest-dev/pytest-django) from 4.9.0 to 4.10.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.9.0...v4.10.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>
2025-03-01 00:11:54 +00:00
dependabot[bot]
d392b06e98 Bump pytubefix from 8.12.0 to 8.12.2
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 8.12.0 to 8.12.2.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v8.12.0...v8.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 00:11:52 +00:00
dependabot[bot]
99a9f594e2 Bump lxml from 5.3.0 to 5.3.1
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.0 to 5.3.1.
- [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.3.0...lxml-5.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-01 00:11:48 +00:00
Nico G
549a5b764d Translated using Weblate (Catalan)
Currently translated at 63.8% (364 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-02-27 10:58:38 +00:00
Nico G
26592c31a9 Translated using Weblate (Catalan)
Currently translated at 82.5% (403 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-02-27 10:58:38 +00:00
Nico G
378eb924e9 Translated using Weblate (Catalan)
Currently translated at 58.5% (334 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-02-26 08:58:38 +00:00
Andre Bovendorp
f8f4a87a99 Translated using Weblate (Portuguese (Brazil))
Currently translated at 65.7% (321 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-02-26 08:58:38 +00:00
Nico G
55289e6837 Translated using Weblate (Catalan)
Currently translated at 52.6% (300 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-02-21 10:58:38 +00:00
Filipe Neves
60efbd0389 Translated using Weblate (Portuguese)
Currently translated at 32.9% (161 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt/
2025-02-21 10:58:38 +00:00
Nico G
f3903c1aa5 Translated using Weblate (Catalan)
Currently translated at 47.5% (271 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-02-20 08:58:38 +00:00
Nico G
b01e62007f Translated using Weblate (Catalan)
Currently translated at 78.2% (382 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-02-20 08:58:38 +00:00
Cots Partier
7730890525 Translated using Weblate (Romanian)
Currently translated at 89.9% (439 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ro/
2025-02-16 14:58:38 +00:00
Cots Partier
29977609aa 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/
2025-02-16 14:58:38 +00:00
Elvis Gosselin
88c3a7d0bf Translated using Weblate (French)
Currently translated at 89.3% (436 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/
2025-02-16 14:58:38 +00:00
Juha Antikainen
ba0335bb28 Translated using Weblate (Finnish)
Currently translated at 90.5% (516 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fi/
2025-02-14 23:58:39 +00:00
Juha Antikainen
51e01ee40c Translated using Weblate (Finnish)
Currently translated at 37.0% (181 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fi/
2025-02-14 23:58:39 +00:00
vabene1111
b55ceda978 Merge pull request #3549 from TandoorRecipes/dependabot/pip/cryptography-44.0.1
Bump cryptography from 44.0.0 to 44.0.1
2025-02-12 09:15:10 +01:00
dependabot[bot]
37b4f5c896 Bump cryptography from 44.0.0 to 44.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 44.0.0 to 44.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/44.0.0...44.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 19:36:25 +00:00
Mattias G
a78b42d9ab Translated using Weblate (Swedish)
Currently translated at 65.3% (319 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sv/
2025-02-07 08:58:37 +00:00
Domagoj Levanić
d1b6a4eb43 Translated using Weblate (Croatian)
Currently translated at 54.5% (266 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/hr/
2025-02-03 16:58:38 +00:00
Juha Antikainen
61bfaf012b Translated using Weblate (Finnish)
Currently translated at 87.0% (496 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fi/
2025-02-03 16:58:38 +00:00
Juha Antikainen
92adc9b610 Translated using Weblate (Finnish)
Currently translated at 36.8% (180 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fi/
2025-02-03 16:58:37 +00:00
Juha Antikainen
feb4a63bb0 Translated using Weblate (Finnish)
Currently translated at 81.7% (466 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fi/
2025-02-02 09:58:38 +00:00
Juha Antikainen
30f8318531 Translated using Weblate (Finnish)
Currently translated at 35.2% (172 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fi/
2025-02-02 09:58:37 +00:00
Domagoj Levanić
5b040900a7 Translated using Weblate (Croatian)
Currently translated at 33.1% (162 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/hr/
2025-02-01 08:58:39 +00:00
Juha Antikainen
717666fc14 Translated using Weblate (Finnish)
Currently translated at 72.1% (411 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fi/
2025-02-01 08:58:39 +00:00
Juha Antikainen
a012a6f0d5 Translated using Weblate (Finnish)
Currently translated at 28.6% (140 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fi/
2025-02-01 08:58:39 +00:00
vabene1111
3341c6db19 Merge pull request #3523 from Honza-m/default-debug-variables
Disable DEBUG and DEBUG_TOOLBAR by default
2025-02-01 08:12:50 +01:00
vabene1111
206d13594a Merge pull request #3530 from TandoorRecipes/dependabot/pip/pillow-11.1.0
Bump pillow from 10.4.0 to 11.1.0
2025-02-01 08:11:59 +01:00
vabene1111
37af406831 Merge pull request #3531 from TandoorRecipes/dependabot/pip/drf-writable-nested-0.7.1
Bump drf-writable-nested from 0.7.0 to 0.7.1
2025-02-01 08:11:51 +01:00
vabene1111
88f18a1b24 Merge pull request #3532 from TandoorRecipes/dependabot/pip/django-allauth-65.3.1
Bump django-allauth from 0.61.1 to 65.3.1
2025-02-01 08:11:43 +01:00
vabene1111
8bf410dbca Merge pull request #3533 from TandoorRecipes/dependabot/pip/django-prometheus-2.3.1
Bump django-prometheus from 2.2.0 to 2.3.1
2025-02-01 08:11:35 +01:00
vabene1111
c98411ca0e Merge pull request #3534 from TandoorRecipes/dependabot/pip/autopep8-2.3.2
Bump autopep8 from 2.0.4 to 2.3.2
2025-02-01 08:11:25 +01:00
vabene1111
fcfb404edf Merge pull request #3535 from TandoorRecipes/dependabot/github_actions/awalsh128/cache-apt-pkgs-action-1.4.3
Bump awalsh128/cache-apt-pkgs-action from 1.4.2 to 1.4.3
2025-02-01 08:10:40 +01:00
vabene1111
a0c8b39f0c Merge branch 'develop' 2025-02-01 08:08:55 +01:00
dependabot[bot]
3a1f2540b1 Bump awalsh128/cache-apt-pkgs-action from 1.4.2 to 1.4.3
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases)
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.4.2...v1.4.3)

---
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>
2025-02-01 00:48:21 +00:00
dependabot[bot]
9c680bc59c Bump autopep8 from 2.0.4 to 2.3.2
Bumps [autopep8](https://github.com/hhatto/autopep8) from 2.0.4 to 2.3.2.
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.0.4...v2.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 00:30:40 +00:00
dependabot[bot]
fde95a6a8e Bump django-prometheus from 2.2.0 to 2.3.1
Bumps [django-prometheus](https://github.com/korfuri/django-prometheus) from 2.2.0 to 2.3.1.
- [Release notes](https://github.com/korfuri/django-prometheus/releases)
- [Changelog](https://github.com/korfuri/django-prometheus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/korfuri/django-prometheus/compare/v2.2.0...v2.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 00:30:37 +00:00
dependabot[bot]
150a0332f6 Bump django-allauth from 0.61.1 to 65.3.1
Bumps [django-allauth](https://github.com/sponsors/pennersr) from 0.61.1 to 65.3.1.
- [Commits](https://github.com/sponsors/pennersr/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 00:30:34 +00:00
dependabot[bot]
618c32bdb8 Bump drf-writable-nested from 0.7.0 to 0.7.1
Bumps [drf-writable-nested](https://github.com/beda-software/drf-writable-nested) from 0.7.0 to 0.7.1.
- [Release notes](https://github.com/beda-software/drf-writable-nested/releases)
- [Changelog](https://github.com/beda-software/drf-writable-nested/blob/master/CHANGELOG.md)
- [Commits](https://github.com/beda-software/drf-writable-nested/compare/v0.7.0...v0.7.1)

---
updated-dependencies:
- dependency-name: drf-writable-nested
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 00:30:30 +00:00
dependabot[bot]
ea35850b71 Bump pillow from 10.4.0 to 11.1.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.4.0 to 11.1.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.4.0...11.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-01 00:30:28 +00: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
Jan Morawiec
5fd8d4e847 Disable DEBUG and DEBUG_TOOLBAR by default 2025-01-30 23:13:54 +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
fb821ba0ef Merge branch 'develop' 2024-04-08 07:21:09 +02:00
vabene1111
b9e806b818 Merge branch 'develop' 2024-04-04 20:57:53 +02:00
vabene1111
20e0c948c4 Merge branch 'develop' 2024-03-21 14:40:23 +01:00
vabene1111
a626bda1ab Merge branch 'develop' 2024-03-05 14:06:56 +01:00
vabene1111
21f1700d6d Merge branch 'develop'
# Conflicts:
#	cookbook/forms.py
2024-03-05 08:55:33 +01:00
vabene1111
57d7bda803 added captcha option to password reset form 2024-02-14 07:28:47 +01:00
vabene1111
a088697812 added additional rate limiting to password reset 2024-02-14 07:28:47 +01:00
vabene1111
2a15d19551 Merge branch 'develop' 2024-02-02 07:45:24 +01:00
1163 changed files with 101609 additions and 113170 deletions

12
.github/FUNDING.yml vendored
View File

@@ -1,12 +0,0 @@
# These are supported funding model platforms
github: [vabene1111]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -1,26 +1,92 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly
- package-ecosystem: "pip"
directory: "/"
open-pull-requests-limit: 20
schedule:
interval: "monthly"
interval: "daily"
cooldown:
semver-major-days: 30
semver-minor-days: 7
semver-patch-days: 3
exclude:
- "recipe-scrapers"
directory: "/"
groups:
pip-patches:
exclude-patterns: ["pytest*"]
update-types: ["patch"]
pip-minors:
exclude-patterns: ["pytest*"]
update-types: ["minor"]
pip-pytest:
patterns: ["pytest*"]
update-types: ["minor", "patch"]
commit-message:
prefix: "chore"
include: "scope"
labels:
- "python"
- "dependencies"
- "automerge"
- package-ecosystem: "npm"
directory: "/vue/"
open-pull-requests-limit: 20
schedule:
interval: "monthly"
cooldown:
semver-major-days: 30
semver-minor-days: 3
semver-patch-days: 3
directory: "vue"
ignore:
- dependency-name: "vue"
update-types: ["version-update:semver-major"]
- dependency-name: "vue*"
update-types: ["version-update:semver-major"]
- dependency-name: "pinia"
update-types: ["version-update:semver-major"]
groups:
npm-patches:
patterns: ["*"]
update-types: ["patch"]
npm-minors:
patterns: ["*"]
update-types: ["minor"]
commit-message:
prefix: "chore"
include: "scope"
labels:
- "javascript"
- "dependencies"
- package-ecosystem: "github-actions"
directory: "/"
open-pull-requests-limit: 20
schedule:
interval: "monthly"
interval: "weekly"
directory: "/.github/"
groups:
actions-updates:
patterns: ["*"]
update-types: ["patch", "minor"]
commit-message:
prefix: "chore"
include: "scope"
labels:
- "github_actions"
- "dependencies"
- "automerge"
- package-ecosystem: "docker"
open-pull-requests-limit: 5
schedule:
interval: "weekly"
directory: "/"
commit-message:
prefix: "chore"
include: "scope"
labels:
- "docker"
- "dependencies"

View File

@@ -1,6 +1,8 @@
name: Build Docker Container with open data plugin installed
on: push
on:
push:
branches: [disabled]
jobs:
build-container:

View File

@@ -1,6 +1,8 @@
name: Build Docker Container
on: push
on:
push:
branches: [tandoor-1]
jobs:
build-container:
@@ -17,27 +19,16 @@ jobs:
# Standard build config
- name: Standard
dockerfile: Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
platforms: linux/amd64,linux/arm64
suffix: ""
continue-on-error: false
steps:
- uses: actions/checkout@v4
- name: Get version number
id: get_version
run: |
if [[ "$GITHUB_REF" = refs/tags/* ]]; then
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
elif [[ "$GITHUB_REF" = refs/heads/beta ]]; then
echo VERSION=beta >> $GITHUB_OUTPUT
else
echo VERSION=develop >> $GITHUB_OUTPUT
fi
# Build Vue frontend
- uses: actions/setup-node@v4
with:
node-version: '18'
node-version: '20'
cache: yarn
cache-dependency-path: vue/yarn.lock
- name: Install dependencies
@@ -75,11 +66,8 @@ jobs:
latest=false
suffix=${{ matrix.suffix }}
tags: |
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=ref,event=branch
type=raw,value=tandoor-v1-{{date 'YYYYMMDD'}}
type=raw,value=tandoor-v1
- name: Build and Push
uses: docker/build-push-action@v5
with:
@@ -93,34 +81,3 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max
notify-stable:
name: Notify Stable
runs-on: ubuntu-latest
needs: build-container
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Set tag name
run: |
# Strip "refs/tags/" prefix
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
# Send stable discord notification
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
uses: Ilshidur/action-discord@0.3.2
with:
args: '🚀 Version {{ VERSION }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ VERSION }}'
notify-beta:
name: Notify Beta
runs-on: ubuntu-latest
needs: build-container
if: github.ref == 'refs/heads/beta'
steps:
# Send beta discord notification
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }}
uses: Ilshidur/action-discord@0.3.2
with:
args: '🚀 The BETA Image has been updated! 🥳'

View File

@@ -1,6 +1,11 @@
name: Continuous Integration
on: [push, pull_request]
on:
push:
branches: [disabled]
pull_request:
branches: [disabled]
jobs:
build:
@@ -14,9 +19,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: awalsh128/cache-apt-pkgs-action@v1.4.2
- uses: awalsh128/cache-apt-pkgs-action@v1.4.3
with:
packages: libsasl2-dev python3-dev libldap2-dev libssl-dev
packages: libsasl2-dev python3-dev libxml2-dev libxmlsec1-dev libxslt-dev libxmlsec1-openssl libldap2-dev libssl-dev gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev xmlsec-dev xmlsec build-base g++ curl
version: 1.0
# Setup python & dependencies

View File

@@ -2,9 +2,10 @@ name: "Code scanning - action"
on:
push:
branches: [disabled]
pull_request:
schedule:
- cron: '0 13 * * 2'
branches: [disabled]
jobs:
CodeQL-Build:

235
.github/workflows/create-upstream-pr.yml vendored Normal file
View File

@@ -0,0 +1,235 @@
name: Create Upstream PR
on:
workflow_run:
workflows: ["Push Workflow"]
types:
- completed
branches: [working]
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
create-upstream-pr:
runs-on: ubuntu-latest
concurrency:
group: upstream-pr
cancel-in-progress: true
if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
steps:
- name: Generate GitHub App token (for branch push)
id: generate_token_push
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- name: Checkout fork
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ steps.generate_token_push.outputs.token }}
- name: Setup git user
run: |
git config user.name "GitHub Action"
git config user.email "action@github.com"
- name: Add upstream remote
run: |
git remote get-url upstream || git remote add upstream https://github.com/TandoorRecipes/recipes.git
git fetch upstream
- name: Ensure jq is available
run: |
if ! command -v jq &> /dev/null; then
sudo apt-get update && sudo apt-get install -y jq
fi
- name: Create upstream PR branch
id: create_branch
run: |
BRANCH_NAME="upstream-pr-$(date +%Y%m%d-%H%M%S)"
git checkout -b "$BRANCH_NAME" || { echo "❌ Failed to create branch $BRANCH_NAME"; exit 1; }
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "✅ Created branch: $BRANCH_NAME"
- name: Restore upstream infrastructure files
id: restore_infra
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
git checkout "$BRANCH_NAME"
git rm .gitattributes || echo " .gitattributes not present, skipping removal."
git checkout upstream/tandoor-1 -- .github/workflows/ || echo " No workflows to restore."
git checkout upstream/tandoor-1 -- cookbook/version_info.py || echo " No version_info.py to restore."
git add .
if ! git diff --cached --quiet; then
git commit -m $'Restore upstream infrastructure files for PR\n\n- Removed fork-specific .gitattributes\n- Restored upstream .github/workflows/\n- Restored upstream cookbook/version_info.py'
echo "✅ Infrastructure files restored and committed."
else
echo " No infrastructure changes to commit."
fi
- name: Push branch to fork (after infra commit)
env:
GITHUB_TOKEN: ${{ steps.generate_token_push.outputs.token }}
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
echo "Pushing branch $BRANCH_NAME after infra file restore."
git push --set-upstream https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git "$BRANCH_NAME"
echo "✅ Branch pushed: $BRANCH_NAME (infra files)"
- name: Merge upstream branch
id: merge_upstream
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
git checkout "$BRANCH_NAME"
if git merge --no-edit upstream/tandoor-1; then
echo "✅ Merged upstream/tandoor-1 into $BRANCH_NAME"
if ! git diff --cached --quiet || [ -n "$(git log origin/$BRANCH_NAME..$BRANCH_NAME --oneline)" ]; then
echo "merge_commit=true" >> $GITHUB_OUTPUT
else
echo "merge_commit=false" >> $GITHUB_OUTPUT
fi
else
echo "❌ Merge conflict detected during merge with upstream/tandoor-1. Please resolve conflicts manually." >&2
exit 1
fi
- name: Push branch to fork (after merge)
if: steps.merge_upstream.outputs.merge_commit == 'true'
env:
GITHUB_TOKEN: ${{ steps.generate_token_push.outputs.token }}
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
echo "Pushing branch $BRANCH_NAME after merge."
git push https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git "$BRANCH_NAME"
echo "✅ Branch pushed: $BRANCH_NAME (after merge)"
- name: Get commit list
id: get_commits
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
COMMITS_RAW=$(git log upstream/tandoor-1..$BRANCH_NAME --oneline)
if [ -z "$COMMITS_RAW" ]; then
echo "has_changes=false" >> $GITHUB_OUTPUT
echo "✅ No commits to contribute - exiting gracefully"
exit 0
fi
echo "commits_raw<<EOF" >> $GITHUB_OUTPUT
printf "%s\n" "$COMMITS_RAW" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "has_changes=true" >> $GITHUB_OUTPUT
- name: Get changed files
id: get_files
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
CHANGED_FILES=$(git diff upstream/tandoor-1..$BRANCH_NAME --name-only)
echo "changed_files<<EOF" >> $GITHUB_OUTPUT
printf "%s\n" "$CHANGED_FILES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
CODE_COUNT=$(echo "$CHANGED_FILES" | grep -c '^' || true)
echo "code_count=$CODE_COUNT" >> $GITHUB_OUTPUT
- name: Summarize changes
id: summarize_changes
run: |
CODE_COUNT=${{ steps.get_files.outputs.code_count }}
CHANGES_SUMMARY="Modified $CODE_COUNT code files"
echo "changes_summary=$CHANGES_SUMMARY" >> $GITHUB_OUTPUT
- name: Prepare commit subjects and JSON
id: prepare_commits
run: |
COMMITS_RAW="${{ steps.get_commits.outputs.commits_raw }}"
CODE_FILES=( $(echo "${{ steps.get_files.outputs.changed_files }}") )
FILTERED_COMMITS_JSON="[]"
COMMIT_SUBJECTS_ARRAY=()
INFRA_PATTERNS='^\.github/|^cookbook/version_info\.py$|^\.gitattributes$'
while IFS= read -r commit_line; do
if [ -z "$commit_line" ]; then continue; fi
COMMIT_SHA=$(echo "$commit_line" | cut -d' ' -f1)
COMMIT_SUBJECT=$(echo "$commit_line" | cut -d' ' -f2-)
mapfile -t COMMIT_FILES < <(git diff-tree --no-commit-id --name-only -r "$COMMIT_SHA" | grep -Ev "$INFRA_PATTERNS")
# Only include commit if it touches at least one non-infra file that is still different
INCLUDE_COMMIT=false
for file in "${COMMIT_FILES[@]}"; do
for code_file in "${CODE_FILES[@]}"; do
if [ "$file" = "$code_file" ]; then
INCLUDE_COMMIT=true
break 2
fi
done
done
if [ "$INCLUDE_COMMIT" = true ]; then
COMMIT_SUBJECTS_ARRAY+=("- $COMMIT_SUBJECT")
FILES_JSON=$(printf '%s\n' "${COMMIT_FILES[@]}" | jq -R . | jq -s .)
COMMIT_JSON=$(jq -n --arg sha "$COMMIT_SHA" --arg subject "$COMMIT_SUBJECT" --argjson files "$FILES_JSON" '{sha: $sha, subject: $subject, files: $files}')
FILTERED_COMMITS_JSON=$(echo "$FILTERED_COMMITS_JSON" | jq --argjson item "$COMMIT_JSON" '. + [$item]')
fi
done <<< "$COMMITS_RAW"
echo 'commits_json<<EOF' >> $GITHUB_OUTPUT
printf "%s\n" "$FILTERED_COMMITS_JSON" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
echo "commit_subjects<<EOF" >> $GITHUB_OUTPUT
printf '%s\n' "${COMMIT_SUBJECTS_ARRAY[@]}" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: Build PR content
if: steps.get_commits.outputs.has_changes == 'true'
id: build_pr_content
uses: actions/github-script@v7
env:
COMMITS_JSON: ${{ steps.prepare_commits.outputs.commits_json }}
CHANGES_SUMMARY: ${{ steps.summarize_changes.outputs.changes_summary }}
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
GITHUB_REPOSITORY: ${{ github.repository }}
with:
github-token: ${{ steps.generate_token_push.outputs.token }}
script: |
const commits = JSON.parse(process.env.COMMITS_JSON || '[]');
const changesSummary = process.env.CHANGES_SUMMARY || 'Changes from fork';
const branchName = process.env.BRANCH_NAME || '';
const repo = process.env.GITHUB_REPOSITORY || '';
const [owner, reponame] = repo.split('/');
const nCommits = commits.length;
let prTitle = 'Sync ' + nCommits + ' commit' + (nCommits !== 1 ? 's' : '') + ' from fork:';
if (nCommits > 0) {
prTitle += ' ' + commits[0].subject;
}
let prBody = `This PR syncs ${nCommits} commit${nCommits !== 1 ? 's' : ''} from branch ${branchName}.\n\n`;
prBody += `**Changes Summary:**\n${changesSummary}\n\n`;
prBody += `Commits included:\n`;
for (const c of commits) {
prBody += `- ${c.subject} ([${c.sha}](https://github.com/${owner}/${reponame}/commit/${c.sha}))\n`;
}
prBody += `\n---\n`;
core.setOutput('prTitle', prTitle);
core.setOutput('prBody', prBody);
- name: Print PR creation instructions
if: steps.get_commits.outputs.has_changes == 'true'
env:
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
PR_TITLE: ${{ steps.build_pr_content.outputs.prTitle }}
PR_BODY: ${{ steps.build_pr_content.outputs.prBody }}
run: |
echo "✅ Branch pushed: $BRANCH_NAME"
echo
echo "To create a pull request, open:"
echo "https://github.com/TandoorRecipes/recipes/compare/tandoor-1...${{ github.repository_owner }}:$BRANCH_NAME?expand=1"
echo
echo "Suggested PR title:"
echo "$PR_TITLE"
echo
echo "Suggested PR body:"
echo "$PR_BODY"

View File

@@ -0,0 +1,68 @@
name: Dependabot Auto-merge
on:
pull_request_target:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
jobs:
validate:
if: contains(github.event.pull_request.labels.*.name, 'automerge') && github.event.pull_request.user.login != 'dependabot[bot]'
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Remove automerge label
uses: actions-ecosystem/action-remove-labels@d05162525702062b6bdef750ed8594fc024b3ed7 # v1.3.0
with:
labels: automerge
- name: Add invalid label
uses: actions-ecosystem/action-add-labels@1a9c3715c0037e96b97bb38cb4c4b56a1f1d4871 # v1.1.0
with:
labels: invalid
- name: Comment restriction
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
⚠️ **Automerge Restriction Notice**
The `automerge` label has been removed from this PR because it has restricted use. Only PRs created by `dependabot[bot]` are allowed to use the automerge functionality.
If you believe this is an error, please contact a repository maintainer.
auto-merge:
if: github.actor == 'dependabot[bot]' && contains(github.event.pull_request.labels.*.name, 'automerge')
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Generate token
id: generate_token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- name: Auto-approve PR
uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v4.0.0
with:
github-token: ${{ steps.generate_token.outputs.token }}
review-message: |
🤖 **Dependabot Auto-merge**
This PR has been automatically approved and enabled for auto-merge. It will be merged automatically once all required checks pass.
- name: Enable auto-merge
uses: daneden/enable-automerge-action@f8558b65c5b8d8bfb592c4e74e3d491624a38fbd # v1.0.0
with:
github-token: ${{ steps.generate_token.outputs.token }}
allowed-author: "dependabot[bot]"
merge-method: REBASE # Allowed values: MERGE | SQUASH | REBASE

75
.github/workflows/docker-publish.yml vendored Normal file
View File

@@ -0,0 +1,75 @@
name: publish docker image
on:
workflow_dispatch:
workflow_call:
permissions:
contents: read
packages: write
jobs:
build-container:
concurrency:
group: docker-build-${{ github.ref }}
name: Build Tandoor Container
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.continue-on-error }}
permissions:
contents: read
packages: write
strategy:
matrix:
include:
# Standard build config
- name: Standard
dockerfile: Dockerfile
platforms: linux/amd64
suffix: ""
continue-on-error: false
steps:
- uses: actions/checkout@v4
- name: Get version number
id: get_version
run: |
echo VERSION=latest >> $GITHUB_OUTPUT
# Build Vue frontend
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: yarn
cache-dependency-path: vue/yarn.lock
- name: Install dependencies
working-directory: ./vue
run: yarn install --frozen-lockfile
- name: Build dependencies
working-directory: ./vue
run: yarn build
- name: Set up QEMU
uses: docker/setup-qemu-action@05340d1c670183e7caabdb33ae9f1c80fae3b0c2 # v3.1.0
- name: Set up Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.7.1
- name: Login to Docker Hub
uses: docker/login-action@3d100841f68d4548bf57e52eb27bd33ec5069f55 # v3.3.0
with:
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
- name: Docker Metadata
id: meta
uses: docker/metadata-action@be19121bfd18b9c1ac415d9571d4f67b9b357886 # v5.6.0
with:
images: |
smilerz/recipes
tags: |
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and Push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.10.0
with:
context: .
file: ${{ matrix.dockerfile }}
pull: true
push: true
platforms: ${{ matrix.platforms }}
tags: '${{ steps.meta.outputs.tags }}'
cache-from: type=gha
cache-to: type=gha,mode=max

57
.github/workflows/push-orchestrator.yml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: Push Workflow
on:
push:
branches: [working]
permissions:
contents: read
jobs:
detect-pr-merge:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
outputs:
pr_merged: ${{ steps.detect_pr.outputs.result }}
steps:
- name: Check if commit is part of a PR
id: detect_pr
uses: actions/github-script@v7
with:
script: |
const prs = await github.rest.repos.listPullRequestsAssociatedWithCommit({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: context.sha
});
const pr = prs.data.find(pr => pr.merged_at);
const merged = pr ? 'true' : 'false';
// Set the output explicitly
core.setOutput('pr_merged', merged);
return merged;
run-ci:
needs: detect-pr-merge
if: needs.detect-pr-merge.outputs.pr_merged != 'true'
permissions:
contents: read
actions: write
uses: ./.github/workflows/ci.yml
secrets: inherit
docker-publish:
permissions:
contents: read
packages: write
needs: [detect-pr-merge, run-ci]
if: |
needs.detect-pr-merge.outputs.pr_merged == 'true' ||
needs.run-ci.result == 'success'
uses: ./.github/workflows/docker-publish.yml
secrets: inherit

View File

@@ -0,0 +1,268 @@
name: Stage Branch for PR
on:
workflow_run:
workflows: ["Push Workflow"]
types:
- completed
branches: [working]
workflow_dispatch:
permissions:
contents: write
pull-requests: write
issues: write
jobs:
create-upstream-pr:
runs-on: ubuntu-latest
concurrency:
group: upstream-pr
cancel-in-progress: true
if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
steps:
- name: Generate GitHub App token (for branch push)
id: generate_token_push
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}
- name: Checkout fork
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ steps.generate_token_push.outputs.token }}
- name: Setup git user
run: |
git config user.name "GitHub Action"
git config user.email "action@github.com"
- name: Add upstream remote
run: |
git remote get-url upstream || git remote add upstream https://github.com/TandoorRecipes/recipes.git
git fetch upstream
- name: Ensure jq is available
run: |
if ! command -v jq &> /dev/null; then
sudo apt-get update && sudo apt-get install -y jq
fi
- name: Create upstream PR branch
id: create_branch
run: |
BRANCH_NAME="upstream-pr-$(date +%Y%m%d-%H%M%S)"
git checkout -b "$BRANCH_NAME" || { echo "❌ Failed to create branch $BRANCH_NAME"; exit 1; }
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "✅ Created branch: $BRANCH_NAME"
- name: Restore upstream infrastructure files
id: restore_infra
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
git checkout "$BRANCH_NAME"
git rm .gitattributes || echo " .gitattributes not present, skipping removal."
git checkout upstream/tandoor-1 -- .github/workflows/ || echo " No workflows to restore."
git checkout upstream/tandoor-1 -- cookbook/version_info.py || echo " No version_info.py to restore."
git add .
if ! git diff --cached --quiet; then
git commit -m $'Restore upstream infrastructure files for PR\n\n- Removed fork-specific .gitattributes\n- Restored upstream .github/workflows/\n- Restored upstream cookbook/version_info.py'
echo "✅ Infrastructure files restored and committed."
else
echo " No infrastructure changes to commit."
fi
- name: Push branch to fork (after infra commit)
env:
GITHUB_TOKEN: ${{ steps.generate_token_push.outputs.token }}
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
echo "Pushing branch $BRANCH_NAME after infra file restore."
git push --set-upstream https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git "$BRANCH_NAME"
echo "✅ Branch pushed: $BRANCH_NAME (infra files)"
- name: Merge upstream branch
id: merge_upstream
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
git checkout "$BRANCH_NAME"
if git merge --no-edit upstream/tandoor-1; then
echo "✅ Merged upstream/tandoor-1 into $BRANCH_NAME"
if ! git diff --cached --quiet || [ -n "$(git log origin/$BRANCH_NAME..$BRANCH_NAME --oneline)" ]; then
echo "merge_commit=true" >> $GITHUB_OUTPUT
else
echo "merge_commit=false" >> $GITHUB_OUTPUT
fi
else
echo "❌ Merge conflict detected during merge with upstream/tandoor-1. Please resolve conflicts manually." >&2
exit 1
fi
- name: Push branch to fork (after merge)
if: steps.merge_upstream.outputs.merge_commit == 'true'
env:
GITHUB_TOKEN: ${{ steps.generate_token_push.outputs.token }}
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
echo "Pushing branch $BRANCH_NAME after merge."
git push https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git "$BRANCH_NAME"
echo "✅ Branch pushed: $BRANCH_NAME (after merge)"
- name: Get commit list
id: get_commits
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
COMMITS_RAW=$(git log upstream/tandoor-1..$BRANCH_NAME --oneline)
if [ -z "$COMMITS_RAW" ]; then
echo "has_changes=false" >> $GITHUB_OUTPUT
echo "✅ No commits to contribute - exiting gracefully"
exit 0
fi
echo "commits_raw<<EOF" >> $GITHUB_OUTPUT
printf "%s\n" "$COMMITS_RAW" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "has_changes=true" >> $GITHUB_OUTPUT
- name: Get changed files
id: get_files
run: |
BRANCH_NAME="${{ steps.create_branch.outputs.branch_name }}"
INFRA_PATTERNS='^\.github/|^cookbook/version_info\.py$|^\.gitattributes$'
CHANGED_FILES=$(git diff upstream/tandoor-1..$BRANCH_NAME --name-only | grep -Ev "$INFRA_PATTERNS" || true)
echo "changed_files<<EOF" >> $GITHUB_OUTPUT
printf "%s\n" "$CHANGED_FILES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
CODE_COUNT=$(echo "$CHANGED_FILES" | grep -c '^' || true)
echo "code_count=$CODE_COUNT" >> $GITHUB_OUTPUT
- name: Summarize changes
id: summarize_changes
run: |
CODE_COUNT=${{ steps.get_files.outputs.code_count }}
CHANGED_FILES="${{ steps.get_files.outputs.changed_files }}"
if [ "$CODE_COUNT" -eq 0 ]; then
CHANGES_SUMMARY="No code files changed. No PR required."
else
CHANGES_SUMMARY="Modified $CODE_COUNT code files"
CHANGES_SUMMARY+=$'\nFiles changed:'
CHANGES_SUMMARY+=$'\n'$(echo "$CHANGED_FILES" | sed '/^$/d; s/^/- /')
fi
echo "changes_summary<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGES_SUMMARY" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Prepare commit subjects and JSON
id: prepare_commits
run: |
COMMITS_RAW="${{ steps.get_commits.outputs.commits_raw }}"
CODE_FILES=( $(echo "${{ steps.get_files.outputs.changed_files }}") )
FILTERED_COMMITS_JSON="[]"
COMMIT_SUBJECTS_ARRAY=()
INFRA_PATTERNS='^\.github/|^cookbook/version_info\.py$|^\.gitattributes$'
while IFS= read -r commit_line; do
if [ -z "$commit_line" ]; then continue; fi
COMMIT_SHA=$(echo "$commit_line" | cut -d' ' -f1)
COMMIT_SUBJECT=$(echo "$commit_line" | cut -d' ' -f2-)
mapfile -t COMMIT_FILES < <(git diff-tree --no-commit-id --name-only -r "$COMMIT_SHA" | grep -Ev "$INFRA_PATTERNS")
# Only include commit if it touches at least one non-infra file that is still different
INCLUDE_COMMIT=false
for file in "${COMMIT_FILES[@]}"; do
for code_file in "${CODE_FILES[@]}"; do
if [ "$file" = "$code_file" ]; then
INCLUDE_COMMIT=true
break 2
fi
done
done
if [ "$INCLUDE_COMMIT" = true ]; then
COMMIT_SUBJECTS_ARRAY+=("- $COMMIT_SUBJECT")
FILES_JSON=$(printf '%s\n' "${COMMIT_FILES[@]}" | jq -R . | jq -s .)
COMMIT_JSON=$(jq -n --arg sha "$COMMIT_SHA" --arg subject "$COMMIT_SUBJECT" --argjson files "$FILES_JSON" '{sha: $sha, subject: $subject, files: $files}')
FILTERED_COMMITS_JSON=$(echo "$FILTERED_COMMITS_JSON" | jq --argjson item "$COMMIT_JSON" '. + [$item]')
fi
done <<< "$COMMITS_RAW"
echo 'commits_json<<EOF' >> $GITHUB_OUTPUT
printf "%s\n" "$FILTERED_COMMITS_JSON" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
echo "commit_subjects<<EOF" >> $GITHUB_OUTPUT
printf '%s\n' "${COMMIT_SUBJECTS_ARRAY[@]}" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: Build PR content
if: steps.get_commits.outputs.has_changes == 'true'
id: build_pr_content
uses: actions/github-script@v7
env:
COMMITS_JSON: ${{ steps.prepare_commits.outputs.commits_json }}
CHANGES_SUMMARY: ${{ steps.summarize_changes.outputs.changes_summary }}
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
GITHUB_REPOSITORY: ${{ github.repository }}
with:
github-token: ${{ steps.generate_token_push.outputs.token }}
script: |
const commits = JSON.parse(process.env.COMMITS_JSON || '[]');
const changesSummary = process.env.CHANGES_SUMMARY || 'Changes from fork';
const branchName = process.env.BRANCH_NAME || '';
const repo = process.env.GITHUB_REPOSITORY || '';
const [owner, reponame] = repo.split('/');
const nCommits = commits.length;
let prTitle = 'Sync ' + nCommits + ' commit' + (nCommits !== 1 ? 's' : '') + ' from fork:';
if (nCommits > 0) {
prTitle += ' ' + commits[0].subject;
}
let prBody = `This PR syncs ${nCommits} commit${nCommits !== 1 ? 's' : ''} from branch ${branchName}.\n\n`;
prBody += `**Changes Summary:**\n${changesSummary}\n\n`;
prBody += `Commits included:\n`;
for (const c of commits) {
prBody += `- ${c.subject} ([${c.sha}](https://github.com/${owner}/${reponame}/commit/${c.sha}))\n`;
}
core.setOutput('prTitle', prTitle);
core.setOutput('prBody', prBody);
- name: Open issue for PR checklist
if: steps.get_files.outputs.code_count != '0' && steps.prepare_commits.outputs.commit_subjects != ''
uses: actions/github-script@v7
env:
BRANCH_NAME: ${{ steps.create_branch.outputs.branch_name }}
PR_TITLE: ${{ steps.build_pr_content.outputs.prTitle }}
PR_BODY: ${{ steps.build_pr_content.outputs.prBody }}
GITHUB_REPOSITORY: ${{ github.repository }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const branch = process.env.BRANCH_NAME || '';
const prTitle = process.env.PR_TITLE || '';
const prBody = process.env.PR_BODY || '';
const repo = process.env.GITHUB_REPOSITORY || '';
const [owner, reponame] = repo.split('/');
const prLink = `https://github.com/TandoorRecipes/recipes/compare/tandoor-1...${owner}:${branch}?expand=1&title=${encodeURIComponent(prTitle)}`;
const issueTitle = `Manual Upstream PR Checklist: ${branch}`;
const issueBody = [
`A new branch is ready for upstream PR submission.`,
'',
`- [ ] Submit PR: [Create PR](${prLink})`,
'- [ ] PR merged',
'- [ ] Branch deleted',
'',
'**Suggested PR title:**',
'```',
prTitle,
'```',
'**Suggested PR body:**',
'```',
prBody,
'```',
].join('\n');
await github.rest.issues.create({
owner,
repo: reponame,
title: issueTitle,
body: issueBody
});

2
.gitignore vendored
View File

@@ -84,3 +84,5 @@ vue3/.vite
# Configs
vetur.config.js
venv/
.idea/easy-i18n.xml
cookbook/static/vue3

28
.vscode/launch.json vendored
View File

@@ -1,18 +1,18 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Django",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": ["runserver"],
"django": true,
"justMyCode": true
},
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Django",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": ["runserver"],
"django": true,
"justMyCode": true
},
{
"name": "Python: Debug Tests",
"type": "debugpy",

25
.vscode/settings.json vendored
View File

@@ -1,14 +1,15 @@
{
"python.testing.pytestArgs": [
"cookbook/tests"
],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[python]": {
"editor.defaultFormatter": "eeyore.yapf",
},
"yapf.args": [],
"isort.args": []
"python.testing.pytestArgs": ["cookbook/tests"],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[python]": {
"editor.defaultFormatter": "eeyore.yapf"
},
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"yapf.args": [],
"isort.args": []
}

View File

@@ -1,4 +1,4 @@
FROM python:3.12-alpine3.19
FROM python:3.12.12-alpine3.21
#Install all dependencies.
RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg libwebp libxml2-dev libxslt-dev openldap git
@@ -23,7 +23,7 @@ RUN \
fi
# remove Development dependencies from requirements.txt
RUN sed -i '/# Development/,$d' requirements.txt
RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev && \
RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev xmlsec-dev xmlsec build-base && \
echo -n "INPUT ( libldap.so )" > /usr/lib/libldap_r.so && \
python -m venv venv && \
/opt/recipes/venv/bin/python -m pip install --upgrade pip && \
@@ -35,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

17
boot.sh
View File

@@ -29,6 +29,21 @@ 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
if [ -f "${S3_SECRET_ACCESS_KEY_FILE}" ]; then
export S3_SECRET_ACCESS_KEY=$(cat "$S3_SECRET_ACCESS_KEY_FILE")
fi
echo "Waiting for database to be ready..."
@@ -83,4 +98,4 @@ 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
fi

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

@@ -1,29 +1,62 @@
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import Optional
from cookbook.models import ShoppingListEntry, Space, ConnectorConfig
from cookbook.models import ConnectorConfig, ShoppingListEntry, User
@dataclass
class UserDTO:
username: str
first_name: Optional[str]
@staticmethod
def create_from_user(instance: User) -> 'UserDTO':
return UserDTO(username=instance.username, first_name=instance.first_name if instance.first_name else None)
@dataclass
class ShoppingListEntryDTO:
food_name: str
amount: Optional[float]
base_unit: Optional[str]
unit_name: Optional[str]
created_by: UserDTO
@staticmethod
def try_create_from_entry(instance: ShoppingListEntry) -> Optional['ShoppingListEntryDTO']:
if instance.food is None or instance.created_by is None:
return None
return ShoppingListEntryDTO(
food_name=instance.food.name,
amount=instance.amount if instance.amount else None,
unit_name=instance.unit.name if instance.unit else None,
base_unit=instance.unit.base_unit if instance.unit and instance.unit.base_unit else None,
created_by=UserDTO.create_from_user(instance.created_by),
)
# A Connector is 'destroyed' & recreated each time 'any' ConnectorConfig in a space changes.
class Connector(ABC):
@abstractmethod
def __init__(self, config: ConnectorConfig):
pass
@abstractmethod
async def on_shopping_list_entry_created(self, space: Space, instance: ShoppingListEntry) -> None:
async def on_shopping_list_entry_created(self, instance: ShoppingListEntryDTO) -> None:
pass
# This method might not trigger on 'direct' entry updates: https://stackoverflow.com/a/35238823
@abstractmethod
async def on_shopping_list_entry_updated(self, space: Space, instance: ShoppingListEntry) -> None:
async def on_shopping_list_entry_updated(self, instance: ShoppingListEntryDTO) -> None:
pass
@abstractmethod
async def on_shopping_list_entry_deleted(self, space: Space, instance: ShoppingListEntry) -> None:
async def on_shopping_list_entry_deleted(self, instance: ShoppingListEntryDTO) -> None:
pass
@abstractmethod
async def close(self) -> None:
pass
# TODO: Add Recipes & possibly Meal Place listeners/hooks (And maybe more?)

View File

@@ -5,15 +5,16 @@ 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
from typing import Any, Dict, List, Optional, Type
from django.conf import settings
from django_scopes import scope
from cookbook.connectors.connector import Connector
from cookbook.connectors.connector import Connector, ShoppingListEntryDTO
from cookbook.connectors.homeassistant import HomeAssistant
from cookbook.models import ShoppingListEntry, Space, ConnectorConfig
from cookbook.models import ConnectorConfig, ShoppingListEntry, Space
REGISTERED_CLASSES: UnionType | Type = ShoppingListEntry
@@ -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,20 +48,24 @@ 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._logger.debug("ConnectorManager initializing")
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 = threading.Thread(target=self.worker, args=(
0,
self._queue,
), daemon=True)
self._worker.start()
# Called by post save & post delete signals
def __call__(self, instance: Any, **kwargs) -> None:
if not isinstance(instance, self._listening_to_classes) or not hasattr(instance, "space"):
return
action_type: ActionType
if "created" in kwargs and kwargs["created"]:
action_type = ActionType.CREATED
@@ -62,22 +76,45 @@ class ConnectorManager:
else:
return
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)}")
return
self._add_work(action_type, instance)
def _add_work(self, action_type: ActionType, *instances: REGISTERED_CLASSES):
for instance in instances:
if not isinstance(instance, self._listening_to_classes) or not hasattr(instance, "space"):
continue
try:
_force_load_instance(instance)
self._queue.put_nowait(Work(instance, action_type))
except queue.Full:
self._logger.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
def stop(self):
self._queue.join()
self._worker.join()
@classmethod
def is_initialized(cls):
return cls in cls._instances
@staticmethod
def add_work(action_type: ActionType, *instances: REGISTERED_CLASSES):
"""
Manually inject work that failed to come in through the __call__ (aka Django signal)
Before the work is processed, we check if the connectionManager is initialized, because if it's not, we don't want to accidentally initialize it.
Be careful calling it, because it might result in a instance being processed twice.
"""
if not ConnectorManager.is_initialized():
return
ConnectorManager()._add_work(action_type, *instances)
@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 +128,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)
@@ -99,7 +138,7 @@ class ConnectorManager:
if connectors is None or refresh_connector_cache:
if connectors is not None:
loop.run_until_complete(close_connectors(connectors))
loop.run_until_complete(_close_connectors(connectors))
with scope(space=space):
connectors: List[Connector] = list()
@@ -111,7 +150,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 +162,12 @@ class ConnectorManager:
worker_queue.task_done()
continue
loop.run_until_complete(run_connectors(connectors, space, item.instance, item.actionType))
logger.debug(f"running {len(connectors)} connectors for {item.instance=} with {item.actionType=}")
loop.run_until_complete(run_connectors(connectors, 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()
@@ -140,7 +181,14 @@ class ConnectorManager:
return None
async def close_connectors(connectors: List[Connector]):
def _force_load_instance(instance: REGISTERED_CLASSES):
if isinstance(instance, ShoppingListEntry):
_ = instance.food # Force load food
_ = instance.unit # Force load unit
_ = instance.created_by # Force load created_by
async def _close_connectors(connectors: List[Connector]):
tasks: List[Task] = [asyncio.create_task(connector.close()) for connector in connectors]
if len(tasks) == 0:
@@ -152,22 +200,24 @@ async def close_connectors(connectors: List[Connector]):
logging.exception("received an exception while closing one of the connectors")
async def run_connectors(connectors: List[Connector], space: Space, instance: REGISTERED_CLASSES, action_type: ActionType):
async def run_connectors(connectors: List[Connector], instance: REGISTERED_CLASSES, action_type: ActionType):
tasks: List[Task] = list()
if isinstance(instance, ShoppingListEntry):
shopping_list_entry: ShoppingListEntry = instance
shopping_list_entry = ShoppingListEntryDTO.try_create_from_entry(instance)
if shopping_list_entry is None:
return
match action_type:
case ActionType.CREATED:
for connector in connectors:
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_created(space, shopping_list_entry)))
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_created(shopping_list_entry)))
case ActionType.UPDATED:
for connector in connectors:
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_updated(space, shopping_list_entry)))
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_updated(shopping_list_entry)))
case ActionType.DELETED:
for connector in connectors:
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_deleted(space, shopping_list_entry)))
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_deleted(shopping_list_entry)))
if len(tasks) == 0:
return

View File

@@ -3,7 +3,7 @@ from logging import Logger
from typing import Dict, Tuple
from urllib.parse import urljoin
from aiohttp import ClientError, request
from aiohttp import request, ClientResponseError
from cookbook.connectors.connector import Connector
from cookbook.models import ShoppingListEntry, ConnectorConfig, Space
@@ -13,14 +13,17 @@ class HomeAssistant(Connector):
_config: ConnectorConfig
_logger: Logger
_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._logger = logging.getLogger(f"recipes.connector.homeassistant.{config.name}")
if config.url[-1] != "/":
config.url += "/"
self._config = config
self._logger = logging.getLogger("connector.HomeAssistant")
async def homeassistant_api_call(self, method: str, path: str, data: Dict) -> str:
headers = {
@@ -37,18 +40,20 @@ class HomeAssistant(Connector):
item, description = _format_shopping_list_entry(shopping_list_entry)
logging.debug(f"adding {item=} to {self._config.name}")
self._logger.debug(f"adding {item=} with {description=} to {self._config.todo_entity}")
data = {
"entity_id": self._config.todo_entity,
"item": item,
"description": description,
}
if self._config.supports_description_field:
data["description"] = description
try:
await self.homeassistant_api_call("POST", "services/todo/add_item", data)
except ClientError as err:
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
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:
@@ -59,14 +64,14 @@ class HomeAssistant(Connector):
if not self._config.on_shopping_list_entry_deleted_enabled:
return
if not hasattr(shopping_list_entry._state.fields_cache, "food"):
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)
logging.debug(f"removing {item=} from {self._config.name}")
self._logger.debug(f"removing {item=} from {self._config.todo_entity}")
data = {
"entity_id": self._config.todo_entity,
@@ -75,9 +80,9 @@ class HomeAssistant(Connector):
try:
await self.homeassistant_api_call("POST", "services/todo/remove_item", data)
except ClientError as err:
except ClientResponseError as err:
# This error will always trigger if the item is not present/found
self._logger.debug(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
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:
pass

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,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,21 @@ 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', '.webp']
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

@@ -58,8 +58,7 @@ class IngredientParser:
def parse_fraction(self, x):
if len(x) == 1 and 'fraction' in unicodedata.decomposition(x):
frac_split = unicodedata.decomposition(x[-1:]).split()
return (float((frac_split[1]).replace('003', ''))
/ float((frac_split[3]).replace('003', '')))
return (float((frac_split[1]).replace('003', '')) / float((frac_split[3]).replace('003', '')))
else:
frac_split = x.split('/')
if not len(frac_split) == 2:
@@ -78,12 +77,7 @@ class IngredientParser:
did_check_frac = False
end = 0
while (end < len(x) and (x[end] in string.digits
or (
(x[end] == '.' or x[end] == ',' or x[end] == '/')
and end + 1 < len(x)
and x[end + 1] in string.digits
))):
while (end < len(x) and (x[end] in string.digits or ((x[end] == '.' or x[end] == ',' or x[end] == '/') and end + 1 < len(x) and x[end + 1] in string.digits))):
end += 1
if end > 0:
if "/" in x[:end]:
@@ -107,8 +101,9 @@ class IngredientParser:
if unit is not None and unit.strip() == '':
unit = None
if unit is not None and (unit.startswith('(') or unit.startswith(
'-')): # i dont know any unit that starts with ( or - so its likely an alternative like 1L (500ml) Water or 2-3
if unit is not None and (
unit.startswith('(') or unit.startswith('-')
): # i dont know any unit that starts with ( or - so its likely an alternative like 1L (500ml) Water or 2-3
unit = None
note = x
return amount, unit, note
@@ -118,7 +113,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

@@ -9,8 +9,7 @@ from django.utils import timezone, translation
from cookbook.helper.HelperFunctions import Round, str2bool
from cookbook.managers import DICTIONARY
from cookbook.models import (CookLog, CustomFilter, Food, Keyword, Recipe, SearchFields,
SearchPreference, ViewLog)
from cookbook.models import CookLog, CustomFilter, Food, Keyword, Recipe, SearchFields, SearchPreference, ViewLog
from recipes import settings
@@ -22,11 +21,8 @@ class RecipeSearch():
self._request = request
self._queryset = None
if f := params.get('filter', None):
custom_filter = (
CustomFilter.objects.filter(id=f, space=self._request.space)
.filter(Q(created_by=self._request.user) | Q(shared=self._request.user) | Q(recipebook__shared=self._request.user))
.first()
)
custom_filter = (CustomFilter.objects.filter(id=f, space=self._request.space).filter(
Q(created_by=self._request.user) | Q(shared=self._request.user) | Q(recipebook__shared=self._request.user)).first())
if custom_filter:
self._params = {**json.loads(custom_filter.search)}
self._original_params = {**(params or {})}
@@ -38,7 +34,7 @@ class RecipeSearch():
else:
self._params = {**(params or {})}
if self._request.user.is_authenticated:
CACHE_KEY = f'search_pref_{request.user.id}'
CACHE_KEY = f"search_pref_{request.user.id}"
cached_result = cache.get(CACHE_KEY, default=None)
if cached_result is not None:
self._search_prefs = cached_result
@@ -47,44 +43,43 @@ class RecipeSearch():
cache.set(CACHE_KEY, self._search_prefs, timeout=10)
else:
self._search_prefs = SearchPreference()
self._string = self._params.get('query').strip(
) if self._params.get('query', None) else None
self._rating = self._params.get('rating', None)
self._string = self._params.get("query").strip() if self._params.get("query", None) else None
self._rating = self._params.get("rating", None)
self._keywords = {
'or': self._params.get('keywords_or', None) or self._params.get('keywords', None),
'and': self._params.get('keywords_and', None),
'or_not': self._params.get('keywords_or_not', None),
'and_not': self._params.get('keywords_and_not', None)
"or": self._params.get("keywords_or", None) or self._params.get("keywords", None),
"and": self._params.get("keywords_and", None),
"or_not": self._params.get("keywords_or_not", None),
"and_not": self._params.get("keywords_and_not", None),
}
self._foods = {
'or': self._params.get('foods_or', None) or self._params.get('foods', None),
'and': self._params.get('foods_and', None),
'or_not': self._params.get('foods_or_not', None),
'and_not': self._params.get('foods_and_not', None)
"or": self._params.get("foods_or", None) or self._params.get("foods", None),
"and": self._params.get("foods_and", None),
"or_not": self._params.get("foods_or_not", None),
"and_not": self._params.get("foods_and_not", None),
}
self._books = {
'or': self._params.get('books_or', None) or self._params.get('books', None),
'and': self._params.get('books_and', None),
'or_not': self._params.get('books_or_not', None),
'and_not': self._params.get('books_and_not', None)
"or": self._params.get("books_or", None) or self._params.get("books", None),
"and": self._params.get("books_and", None),
"or_not": self._params.get("books_or_not", None),
"and_not": self._params.get("books_and_not", None),
}
self._steps = self._params.get('steps', None)
self._units = self._params.get('units', None)
self._steps = self._params.get("steps", None)
self._units = self._params.get("units", None)
# TODO add created by
# TODO image exists
self._sort_order = self._params.get('sort_order', None)
self._internal = str2bool(self._params.get('internal', None))
self._random = str2bool(self._params.get('random', False))
self._new = str2bool(self._params.get('new', False))
self._num_recent = int(self._params.get('num_recent', 0))
self._include_children = str2bool(
self._params.get('include_children', None))
self._timescooked = self._params.get('timescooked', None)
self._cookedon = self._params.get('cookedon', None)
self._createdon = self._params.get('createdon', None)
self._updatedon = self._params.get('updatedon', None)
self._viewedon = self._params.get('viewedon', None)
self._makenow = self._params.get('makenow', None)
self._sort_order = self._params.get("sort_order", None)
self._internal = str2bool(self._params.get("internal", None))
self._random = str2bool(self._params.get("random", False))
self._new = str2bool(self._params.get("new", False))
self._num_recent = int(self._params.get("num_recent", 0))
self._include_children = str2bool(self._params.get("include_children", None))
self._timescooked = self._params.get("timescooked", None)
self._cookedon = self._params.get("cookedon", None)
self._createdon = self._params.get("createdon", None)
self._updatedon = self._params.get("updatedon", None)
self._viewedon = self._params.get("viewedon", None)
self._makenow = self._params.get("makenow", None)
self._never_used_food = str2bool(self._params.get("never_used_food", False))
# this supports hidden feature to find recipes missing X ingredients
if isinstance(self._makenow, bool) and self._makenow == True:
self._makenow = 0
@@ -96,7 +91,7 @@ class RecipeSearch():
except (ValueError, TypeError):
self._makenow = None
self._search_type = self._search_prefs.search or 'plain'
self._search_type = self._search_prefs.search or "plain"
if self._string:
if self._postgres:
self._unaccent_include = self._search_prefs.unaccent.values_list('field', flat=True)
@@ -114,11 +109,7 @@ class RecipeSearch():
if self._search_type not in ['websearch', 'raw'] and self._trigram_include:
self._trigram = True
self.search_query = SearchQuery(
self._string,
search_type=self._search_type,
config=self._language,
)
self.search_query = SearchQuery(self._string, search_type=self._search_type, config=self._language, )
self.search_rank = None
self.orderby = []
self._filters = None
@@ -127,7 +118,6 @@ class RecipeSearch():
def get_queryset(self, queryset):
self._queryset = queryset
self._queryset = self._queryset.prefetch_related('keywords')
self._build_sort_order()
self._recently_viewed(num_recent=self._num_recent)
self._cooked_on_filter(cooked_date=self._cookedon)
@@ -144,6 +134,7 @@ class RecipeSearch():
self.step_filters(steps=self._steps)
self.unit_filters(units=self._units)
self._makenow_filter(missing=self._makenow)
self._never_used_food_filter()
self.string_filters(string=self._string)
return self._queryset.filter(space=self._request.space).order_by(*self.orderby)
@@ -151,22 +142,22 @@ class RecipeSearch():
for x in args:
if x in self.orderby:
return True
elif '-' + x in self.orderby:
elif "-" + x in self.orderby:
return True
return False
def _build_sort_order(self):
if self._random:
self.orderby = ['?']
self.orderby = ["?"]
else:
order = []
# TODO add userpreference for default sort order and replace '-favorite'
default_order = ['name']
default_order = ["name"]
# recent and new_recipe are always first; they float a few recipes to the top
if self._num_recent:
order += ['-recent']
order += ["-recent"]
if self._new:
order += ['-new_recipe']
order += ["-new_recipe"]
# if a sort order is provided by user - use that order
if self._sort_order:
@@ -175,20 +166,18 @@ class RecipeSearch():
else:
order += self._sort_order
if not self._postgres or not self._string:
if 'score' in order:
order.remove('score')
if '-score' in order:
order.remove('-score')
if "score" in order:
order.remove("score")
if "-score" in order:
order.remove("-score")
# if no sort order provided prioritize text search, followed by the default search
elif self._postgres and self._string and (self._trigram or self._fulltext_include):
order += ['-score', *default_order]
order += ["-score", *default_order]
# otherwise sort by the remaining order_by attributes or favorite by default
else:
order += default_order
order[:] = [Lower('name').asc() if x ==
'name' else x for x in order]
order[:] = [Lower('name').desc() if x ==
'-name' else x for x in order]
order[:] = [Lower("name").asc() if x == "name" else x for x in order]
order[:] = [Lower("name").desc() if x == "-name" else x for x in order]
self.orderby = order
def string_filters(self, string=None):
@@ -223,7 +212,7 @@ class RecipeSearch():
self._queryset = self._queryset.annotate(score=F('rank') + F('simularity'))
else:
query_filter = Q()
for f in [x + '__unaccent__iexact' if x in self._unaccent_include else x + '__iexact' for x in SearchFields.objects.all().values_list('field', flat=True)]:
for f in [x + "__unaccent__iexact" if x in self._unaccent_include else x + "__iexact" for x in SearchFields.objects.all().values_list("field", flat=True)]:
query_filter |= Q(**{"%s" % f: self._string})
self._queryset = self._queryset.filter(query_filter).distinct()
@@ -235,12 +224,11 @@ class RecipeSearch():
else:
default = timezone.now()
self._queryset = self._queryset.annotate(
lastcooked=Coalesce(Max(Case(When(cooklog__created_by=self._request.user, cooklog__space=self._request.space, then='cooklog__created_at'))), Value(default))
)
lastcooked=Coalesce(Max(Case(When(cooklog__created_by=self._request.user, cooklog__space=self._request.space, then='cooklog__created_at'))), Value(default)))
if cooked_date is None:
return
cooked_date = date(*[int(x)for x in cooked_date.split('-') if x != ''])
cooked_date = date(*[int(x) for x in cooked_date.split('-') if x != ''])
if lessthan:
self._queryset = self._queryset.filter(lastcooked__date__lte=cooked_date).exclude(lastcooked=default)
@@ -261,22 +249,21 @@ class RecipeSearch():
if updated_date is None:
return
lessthan = '-' in updated_date[:1]
updated_date = date(*[int(x)for x in updated_date.split('-') if x != ''])
updated_date = date(*[int(x) for x in updated_date.split('-') if x != ''])
if lessthan:
self._queryset = self._queryset.filter(updated_at__date__lte=updated_date)
else:
self._queryset = self._queryset.filter(updated_at__date__gte=updated_date)
def _viewed_on_filter(self, viewed_date=None):
if self._sort_includes('lastviewed') or viewed_date:
if self._sort_includes("lastviewed") or viewed_date:
longTimeAgo = timezone.now() - timedelta(days=100000)
self._queryset = self._queryset.annotate(
lastviewed=Coalesce(Max(Case(When(viewlog__created_by=self._request.user, viewlog__space=self._request.space, then='viewlog__created_at'))), Value(longTimeAgo))
)
lastviewed=Coalesce(Max(Case(When(viewlog__created_by=self._request.user, viewlog__space=self._request.space, then='viewlog__created_at'))), Value(longTimeAgo)))
if viewed_date is None:
return
lessthan = '-' in viewed_date[:1]
viewed_date = date(*[int(x)for x in viewed_date.split('-') if x != ''])
viewed_date = date(*[int(x) for x in viewed_date.split('-') if x != ''])
if lessthan:
self._queryset = self._queryset.filter(lastviewed__date__lte=viewed_date).exclude(lastviewed=longTimeAgo)
@@ -287,24 +274,17 @@ class RecipeSearch():
# TODO make new days a user-setting
if not self._new:
return
self._queryset = self._queryset.annotate(
new_recipe=Case(
When(created_at__gte=(timezone.now() - timedelta(days=new_days)), then=('pk')),
default=Value(0),
)
)
self._queryset = self._queryset.annotate(new_recipe=Case(When(created_at__gte=(timezone.now() - timedelta(days=new_days)), then=('pk')), default=Value(0), ))
def _recently_viewed(self, num_recent=None):
if not num_recent:
if self._sort_includes('lastviewed'):
self._queryset = self._queryset.annotate(lastviewed=Coalesce(
Max(Case(When(viewlog__created_by=self._request.user, viewlog__space=self._request.space, then='viewlog__pk'))), Value(0)))
if self._sort_includes("lastviewed"):
self._queryset = self._queryset.annotate(
lastviewed=Coalesce(Max(Case(When(viewlog__created_by=self._request.user, viewlog__space=self._request.space, then="viewlog__pk"))), Value(0)))
return
num_recent_recipes = (
ViewLog.objects.filter(created_by=self._request.user, space=self._request.space)
.values('recipe').annotate(recent=Max('created_at')).order_by('-recent')[:num_recent]
)
num_recent_recipes = (ViewLog.objects.filter(created_by=self._request.user,
space=self._request.space).values('recipe').annotate(recent=Max('created_at')).order_by('-recent')[:num_recent])
self._queryset = self._queryset.annotate(recent=Coalesce(Max(Case(When(pk__in=num_recent_recipes.values('recipe'), then='viewlog__pk'))), Value(0)))
def _favorite_recipes(self, times_cooked=None):
@@ -314,17 +294,13 @@ class RecipeSearch():
default = 1000
else:
default = 0
favorite_recipes = (
CookLog.objects.filter(created_by=self._request.user, space=self._request.space, recipe=OuterRef('pk'))
.values('recipe')
.annotate(count=Count('pk', distinct=True))
.values('count')
)
favorite_recipes = (CookLog.objects.filter(created_by=self._request.user, space=self._request.space,
recipe=OuterRef('pk')).values('recipe').annotate(count=Count('pk', distinct=True)).values('count'))
self._queryset = self._queryset.annotate(favorite=Coalesce(Subquery(favorite_recipes), default))
if times_cooked is None:
return
if times_cooked == '0':
if times_cooked == "0":
self._queryset = self._queryset.filter(favorite=0)
elif less_than:
self._queryset = self._queryset.filter(favorite__lte=int(times_cooked.replace('-', ''))).exclude(favorite=0)
@@ -341,23 +317,23 @@ class RecipeSearch():
kwargs[kw_filter] = [kwargs[kw_filter]]
keywords = Keyword.objects.filter(pk__in=kwargs[kw_filter])
if 'or' in kw_filter:
if "or" in kw_filter:
if self._include_children:
f_or = Q(keywords__in=Keyword.include_descendants(keywords))
else:
f_or = Q(keywords__in=keywords)
if 'not' in kw_filter:
if "not" in kw_filter:
self._queryset = self._queryset.exclude(f_or)
else:
self._queryset = self._queryset.filter(f_or)
elif 'and' in kw_filter:
elif "and" in kw_filter:
recipes = Recipe.objects.all()
for kw in keywords:
if self._include_children:
f_and = Q(keywords__in=kw.get_descendants_and_self())
else:
f_and = Q(keywords=kw)
if 'not' in kw_filter:
if "not" in kw_filter:
recipes = recipes.filter(f_and)
else:
self._queryset = self._queryset.filter(f_and)
@@ -374,24 +350,24 @@ class RecipeSearch():
kwargs[fd_filter] = [kwargs[fd_filter]]
foods = Food.objects.filter(pk__in=kwargs[fd_filter])
if 'or' in fd_filter:
if "or" in fd_filter:
if self._include_children:
f_or = Q(steps__ingredients__food__in=Food.include_descendants(foods))
else:
f_or = Q(steps__ingredients__food__in=foods)
if 'not' in fd_filter:
if "not" in fd_filter:
self._queryset = self._queryset.exclude(f_or)
else:
self._queryset = self._queryset.filter(f_or)
elif 'and' in fd_filter:
elif "and" in fd_filter:
recipes = Recipe.objects.all()
for food in foods:
if self._include_children:
f_and = Q(steps__ingredients__food__in=food.get_descendants_and_self())
else:
f_and = Q(steps__ingredients__food=food)
if 'not' in fd_filter:
if "not" in fd_filter:
recipes = recipes.filter(f_and)
else:
self._queryset = self._queryset.filter(f_and)
@@ -416,11 +392,11 @@ class RecipeSearch():
else:
default = 0
# TODO make ratings a settings user-only vs all-users
self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=default))))
self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then="cooklog__rating"), default=default))))
if rating is None:
return
if rating == '0':
if rating == "0":
self._queryset = self._queryset.filter(rating=0)
elif lessthan:
self._queryset = self._queryset.filter(rating__lte=int(rating[1:])).exclude(rating=0)
@@ -441,13 +417,13 @@ class RecipeSearch():
if not isinstance(kwargs[bk_filter], list):
kwargs[bk_filter] = [kwargs[bk_filter]]
if 'or' in bk_filter:
if "or" in bk_filter:
f = Q(recipebookentry__book__id__in=kwargs[bk_filter])
if 'not' in bk_filter:
if "not" in bk_filter:
self._queryset = self._queryset.exclude(f)
else:
self._queryset = self._queryset.filter(f)
elif 'and' in bk_filter:
elif "and" in bk_filter:
recipes = Recipe.objects.all()
for book in kwargs[bk_filter]:
if 'not' in bk_filter:
@@ -520,62 +496,66 @@ class RecipeSearch():
trigram += TrigramSimilarity(f, self._string)
else:
trigram = TrigramSimilarity(f, self._string)
self._fuzzy_match = (
Recipe.objects.annotate(trigram=trigram)
.distinct()
.annotate(simularity=Max('trigram'))
.values('id', 'simularity')
.filter(simularity__gt=self._search_prefs.trigram_threshold)
)
self._fuzzy_match = (Recipe.objects.annotate(trigram=trigram).distinct().annotate(simularity=Max('trigram')).values('id', 'simularity').filter(
simularity__gt=self._search_prefs.trigram_threshold))
self._filters += [Q(pk__in=self._fuzzy_match.values('pk'))]
def _makenow_filter(self, missing=None):
if missing is None or (isinstance(missing, bool) and missing == False):
return
shopping_users = [*self._request.user.get_shopping_share(), self._request.user]
onhand_filter = Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand
onhand_filter = (
Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand
# ignore substitutions when also using the never_used_food filter
if not self._never_used_food:
# or substitute food onhand
| Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users)
| Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users))
| Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users))
)
makenow_recipes = Recipe.objects.annotate(
count_food=Count('steps__ingredients__food__pk', filter=Q(steps__ingredients__food__isnull=False), distinct=True),
count_onhand=Count('steps__ingredients__food__pk', filter=onhand_filter, distinct=True),
count_ignore_shopping=Count(
'steps__ingredients__food__pk', filter=Q(steps__ingredients__food__ignore_shopping=True, steps__ingredients__food__recipe__isnull=True), distinct=True
),
has_child_sub=Case(When(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users), then=Value(1)), default=Value(0)),
has_sibling_sub=Case(When(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users), then=Value(1)), default=Value(0))
).annotate(missingfood=F('count_food') - F('count_onhand') - F('count_ignore_shopping')).filter(missingfood__lte=missing)
onhand_filter |= (Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users)
| Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users))
| Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users)))
makenow_recipes = (Recipe.objects.annotate(count_food=Count("steps__ingredients__food__pk", filter=Q(steps__ingredients__food__isnull=False), distinct=True),
count_onhand=Count("steps__ingredients__food__pk", filter=onhand_filter, distinct=True),
count_ignore_shopping=Count("steps__ingredients__food__pk",
filter=Q(steps__ingredients__food__ignore_shopping=True,
steps__ingredients__food__recipe__isnull=True),
distinct=True),
has_child_sub=Case(When(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users), then=Value(1)),
default=Value(0)),
has_sibling_sub=Case(When(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users), then=Value(1)),
default=Value(0)),
).annotate(missingfood=F("count_food") - F("count_onhand") - F("count_ignore_shopping")).filter(missingfood=missing))
makenow_recipes = Recipe.objects.annotate(count_food=Count('steps__ingredients__food__pk', filter=Q(steps__ingredients__food__isnull=False), distinct=True),
count_onhand=Count('steps__ingredients__food__pk', filter=onhand_filter, distinct=True),
count_ignore_shopping=Count('steps__ingredients__food__pk',
filter=Q(steps__ingredients__food__ignore_shopping=True,
steps__ingredients__food__recipe__isnull=True),
distinct=True),
has_child_sub=Case(When(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users), then=Value(1)),
default=Value(0)),
has_sibling_sub=Case(When(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users), then=Value(1)),
default=Value(0))).annotate(missingfood=F('count_food') - F('count_onhand')
- F('count_ignore_shopping')).filter(missingfood__lte=missing)
self._queryset = self._queryset.distinct().filter(id__in=makenow_recipes.values('id'))
def _never_used_food_filter(self):
# filters recipes to include foods that have never been used
if not self._never_used_food:
return
self._queryset = self._queryset.filter(steps__ingredients__food__in=Food.objects.filter(~Q(ingredient__step__recipe__cooklog__isnull=False)).distinct())
@staticmethod
def __children_substitute_filter(shopping_users=None):
children_onhand_subquery = Food.objects.filter(path__startswith=OuterRef('path'), depth__gt=OuterRef('depth'), onhand_users__in=shopping_users)
return (
Food.objects.exclude( # list of foods that are onhand and children of: foods that are not onhand and are set to use children as substitutes
Q(onhand_users__in=shopping_users) | Q(ignore_shopping=True, recipe__isnull=True) | Q(substitute__onhand_users__in=shopping_users)
)
.exclude(depth=1, numchild=0)
.filter(substitute_children=True)
.annotate(child_onhand_count=Exists(children_onhand_subquery))
.filter(child_onhand_count=True)
)
return (Food.objects.exclude( # list of foods that are onhand and children of: foods that are not onhand and are set to use children as substitutes
Q(onhand_users__in=shopping_users) | Q(ignore_shopping=True, recipe__isnull=True)
| Q(substitute__onhand_users__in=shopping_users)).exclude(depth=1, numchild=0).filter(substitute_children=True).annotate(
child_onhand_count=Exists(children_onhand_subquery)).filter(child_onhand_count=True))
@staticmethod
def __sibling_substitute_filter(shopping_users=None):
sibling_onhand_subquery = Food.objects.filter(
path__startswith=Substr(OuterRef('path'), 1, Food.steplen * (OuterRef('depth') - 1)), depth=OuterRef('depth'), onhand_users__in=shopping_users
)
return (
Food.objects.exclude( # list of foods that are onhand and siblings of: foods that are not onhand and are set to use siblings as substitutes
Q(onhand_users__in=shopping_users) | Q(ignore_shopping=True, recipe__isnull=True) | Q(substitute__onhand_users__in=shopping_users)
)
.exclude(depth=1, numchild=0)
.filter(substitute_siblings=True)
.annotate(sibling_onhand=Exists(sibling_onhand_subquery))
.filter(sibling_onhand=True)
)
sibling_onhand_subquery = Food.objects.filter(path__startswith=Substr(OuterRef('path'), 1, Food.steplen * (OuterRef('depth') - 1)),
depth=OuterRef('depth'),
onhand_users__in=shopping_users)
return (Food.objects.exclude( # list of foods that are onhand and siblings of: foods that are not onhand and are set to use siblings as substitutes
Q(onhand_users__in=shopping_users) | Q(ignore_shopping=True, recipe__isnull=True)
| Q(substitute__onhand_users__in=shopping_users)).exclude(depth=1, numchild=0).filter(substitute_siblings=True).annotate(
sibling_onhand=Exists(sibling_onhand_subquery)).filter(sibling_onhand=True))

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
@@ -28,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])
@@ -272,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

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.supported_only = 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

@@ -113,7 +113,7 @@ class RecipeShoppingEditor():
if not self.servings:
self.servings = getattr(self.mealplan, 'servings', None) or getattr(self.recipe, 'servings', 1.0)
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings)
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings, space=self.space, created_by=self.created_by)
if ingredients:
self._add_ingredients(ingredients=ingredients)

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

@@ -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,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
@@ -75,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:

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-11-28 11:03+0000\n"
"Last-Translator: Mahmoud Aljouhari <mapgohary@gmail.com>\n"
"Language-Team: Arabic <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -1946,286 +1946,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"Language-Team: Bulgarian <http://translate.tandoor.dev/projects/tandoor/"
@@ -2236,81 +2236,81 @@ msgstr "Покажи дневник"
msgid "URL Import"
msgstr "Импортиране на URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Параметърът updated_at е форматиран неправилно"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Не съществува {self.basename} с идентификатор {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Не може да се слее със същия обект!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Не съществува {self.basename} с идентификатор {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Не може да се слее с дъщерен обект!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} беше обединен успешно с {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "Възникна грешка при опит за сливане на {source.name} с {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} беше преместен успешно в основния."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Възникна грешка при опит за преместване "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Не може да премести обект към себе си!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Не съществува {self.basename} с идентификатор {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} беше преместен успешно в родител {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} беше премахнат от списъка за пазаруване."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} беше добавен към списъка за пазаруване."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
@@ -2318,17 +2318,17 @@ msgstr ""
"Идентификатор на рецептата, част от която е стъпка. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"Идентификатор на рецептата, част от която е стъпка. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Низът на заявката съответства (размито) спрямо името на обекта."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2336,7 +2336,7 @@ msgstr ""
"Низът на заявката съвпада (размито) с името на рецептата. В бъдеще също и "
"пълнотекстово търсене."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2344,69 +2344,69 @@ msgstr ""
"Идентификатор на ключовата дума, която рецептата трябва да има. За параметър "
"за многократно повторение. Еквивалентно на keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Връща рецепти с някоя "
"от ключовите думи"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Връща рецепти с всички "
"ключови думи."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Изключва рецепти с "
"някоя от ключовите думи."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Изключва рецепти с "
"всички ключови думи."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"Идентификация на храната, която рецептата трябва да има. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Идентификатори на храни, повторете за няколко. Връща рецепти с някоя от "
"храните"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Връща рецептите с всички "
"храни."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Изключва рецепти с някоя от "
"храните."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Изключва рецепти с всички "
"храни."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "Идентификатор на единицата, която рецептата трябва да има."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2414,50 +2414,50 @@ msgstr ""
"Оценка на рецептата трябва да има или по-висока. [0 - 5] Отрицателна "
"стойност филтрира оценка по-малка от."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"Идентификатор на книгата, в която трябва да е рецепта. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Идентификационен № на книги, повторете за няколко. Връща рецепти с някоя от "
"книгите"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Връща рецептите с всички "
"книги."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Изключва рецептите с "
"някоя от книгите."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Изключва рецептите от "
"всички книги."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Ако трябва да се върнат само вътрешни рецепти. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr "Връща резултатите в произволен ред. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Първо връща нови резултати в резултатите от търсенето. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2465,7 +2465,7 @@ msgstr ""
"Филтрирайте рецепти, приготвени X пъти или повече. Отрицателните стойности "
"връщат приготвени по-малко от X пъти"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2473,7 +2473,7 @@ msgstr ""
"Филтрирайте последно приготвените рецепти на или след ГГГГ-ММ-ДД. "
"Предварително филтрира на или преди дата."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2481,7 +2481,7 @@ msgstr ""
"Филтрирайте рецептите, създадени на или след ГГГГ-ММ-ДД. Предварително "
"филтрира на или преди дата."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2489,7 +2489,7 @@ msgstr ""
"Филтрирайте рецептите, актуализирани на или след ГГГГ-ММ-ДД. Предварително "
"филтрира на или преди дата."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2497,13 +2497,13 @@ msgstr ""
"Филтрирането на рецептите последно разглеждани на или след ГГГГ-ММ-ДД. "
"Предварително филтрира на или преди дата."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Филтрирайте рецепти, които могат да се приготвят с храна в наличност. [вярно/"
"<b>невярно</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2511,7 +2511,7 @@ msgstr ""
"Връща записа в списъка за пазаруване с първичен ключ на идентификатора. "
"Разрешени са множество стойности."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2525,17 +2525,17 @@ msgstr ""
"и двете, <b>скорошни</b>]<br> - скорошни включва неотметнати елементи и "
"наскоро завършени елементи."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Връща записите в списъка за пазаруване, сортирани по реда на категории "
"супермаркети."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2547,45 +2547,45 @@ msgstr ""
"Връща записа в списъка за пазаруване с първичен ключ на идентификатора. "
"Разрешени са множество стойности."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Няма нищо за правене."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Връзката е отказана."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Лоша URL схема."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Не бяха намерени полезни данни."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Импортирането не е реализирано за този доставчик"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Тази функция все още не е налична в хостваната версия на tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Синхронизирането успешно!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Грешка при синхронизирането с хранилището"

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-01-09 12:07+0000\n"
"Last-Translator: Jan Kubošek <kuboja@outlook.cz>\n"
"Language-Team: Czech <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -2114,282 +2114,282 @@ msgstr "Zobrazit nápovědu"
msgid "URL Import"
msgstr "Import URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parametr filter_list v nesprávném formátu"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nelze sloučit se stejným objektem!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Nelze sloučit se stejným objektem!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Požadovaná stránka nebyla nalezena."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Import není pro tohoto poskytovatele implementován!"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2397,11 +2397,11 @@ msgstr "Import není pro tohoto poskytovatele implementován!"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Tato funkce není dostupná v demo verzi!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronizace proběhla úspěšně!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Chyba synchronizace s úložištěm"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"Language-Team: Danish <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -2224,96 +2224,96 @@ msgstr "Vis log"
msgid "URL Import"
msgstr "URL import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parameter updated_at ikke formateret korrekt"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Ingen {self.basename} med ID {pk} eksisterer"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Kan ikke sammenflette med det samme objekt!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Ingen {self.basename} med ID {target} eksisterer"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Kan ikke sammenflette med et objekt som er et barn!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} blev sammenflettet med {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Der opstod en fejl under sammenfletningen af {source.name} med {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} blev flyttet til roden."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Der skete en fejl under flytningen "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Kan ikke flytte et objekt til sig selv!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Ingen {self.basename} med ID {parent} eksisterer"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} blev flyttet til forælder {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} blev fjernet fra indkøbslisten."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} blev tilføjet til indkøbslisten."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr "ID på den opskrift som et trin er del af. For flere, gentag parameter."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr "ID på den opskrift som et trin er del af. For flere, gentag parameter."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Søgningen matchede (fuzzy) mod objektets navn."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2321,7 +2321,7 @@ msgstr ""
"Søgningen matchede (fuzzy) mod opskriftens navn. I fremtiden også heltekst "
"søgning."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2329,64 +2329,64 @@ msgstr ""
"ID på nøgeord som opskriften skal have. For flere, gentag parameter. "
"Sammenligneligt med keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Nøgleord ID'er, gentag for flere. Returnerer opskrifter med bare et af "
"nøgleorderne"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Returnerer opskrifter med alle "
"nøgleorderne."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Ekskluderer opskrifter med bare et af "
"nøgleorderne."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Ekskluderer opskrifter med alle "
"nøgleorderne."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr "ID på mad en opskrift skal have. For flere, gentag parameter."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Mad ID'er, gentag for flere. Returnerer mad med bare et af de angivne mad"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Returnerer opskrifter med alt det angivne mad."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Eksluderer opskrifter med bare et af det "
"angivne mad."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Eksluderer opskrifter med alt det angivne mad."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID på enhed en opskrift skal have."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2394,42 +2394,42 @@ msgstr ""
"Bedømmelse en opskrift mindst skal have. [0 - 5] Negative værdier filtrerer "
"opskrifter med mindre end det angivne."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr "ID på bog en opskrift skal være i. For flere, gentag parameter."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Bog ID'er, gentag for flere. Returnerer opskrifter med bare en af bøgerne"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr "Bog ID'er, gentag for flere. Returnerer opskrifter med alle bøgerne."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Bog ID'er, gentag for flere. Eksluderer opskrifter med bare en af bøgerne."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr "Bog ID'er, gentag for flere. Ekskluderer opskrifter med alle bøgerne."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Om kun interne opskrifter skal returneres. [true/<b>false</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr "Returnerer resultaterne i tilfældig rækkefølge. [true/<b>false</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Returnerer nye resultater først i søgeresultaterne. [true/<b>false</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2437,7 +2437,7 @@ msgstr ""
"Filtrer opskrifter tilberedt X gange eller flere. Negative værdier "
"returnerer tilberedt mindre end X gange"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2445,7 +2445,7 @@ msgstr ""
"Filtrer opskrifter sidst tilberedt på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2453,7 +2453,7 @@ msgstr ""
"Filtrer opskrifter oprettet på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2461,7 +2461,7 @@ msgstr ""
"Filtrer opskrifter opdateret på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2469,19 +2469,19 @@ msgstr ""
"Filtrer opskrifter sidst åbnet på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Filtrer opskrifter der kan laves med tilgængeligt mad. [true/<b>false</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
"Returnerer indkøbslistepunktet med primær nøgle på ID. Flere værdier tilladt."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2495,17 +2495,17 @@ msgstr ""
"false, both, <b>recent</b>]<br> - 'recent' har både ikke afkrydsede artikler "
"og nyligt færdiggjorte artikler."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Returnerer indkøbslistepunkterne sorteret efter "
"supermarkedskategorirækkefølge."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2516,46 +2516,46 @@ msgid ""
msgstr ""
"Returnerer indkøbslistepunktet med primær nøgle på ID. Flere værdier tilladt."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Ikke noget at gøre."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Forbindelse nægtet."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Ugyldigt link."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Intet brugbart data kunne findes."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importering er ikke implementeret for denne udbyder"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
"Denne funktion er endnu ikke tilgængelig i den hostede version af Tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synkronisering var en succes!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Der skete en fejl under synkroniseringen med lageret"

View File

@@ -14,17 +14,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-05-11 00:33+0000\n"
"Last-Translator: Jakob Priesner <jakob.priesner@outlook.de>\n"
"Language-Team: German <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/de/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-09-27 13:58+0000\n"
"Last-Translator: supaeasy <crafty_renewably854@supaeasy.de>\n"
"Language-Team: German <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -395,7 +395,7 @@ msgstr "Sektion"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Behebt Lebensmittel mit "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
@@ -478,7 +478,7 @@ msgstr "Essensplan"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Bücher"
msgstr "Kochbücher"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
@@ -542,10 +542,8 @@ msgid "Instruction Replace"
msgstr "Anleitung ersetzen"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Neue Einheit"
msgstr "Nie Einheit"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
@@ -2143,7 +2141,7 @@ msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
msgstr "Erlaubte Hosts"
#: .\cookbook\templates\system.html:90
msgid ""
@@ -2153,6 +2151,11 @@ msgid ""
"this.\n"
" "
msgstr ""
"\n"
" Die erlaubten Hosts sind so konfiguriert, dass sie jeden Host "
"erlauben. Das mag in einigen Fällen in Ordnung sein, sollte aber im "
"Regelfall vermieden werden. Bitte lies in der Dokumentation dazu nach.\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
@@ -2206,101 +2209,101 @@ msgstr "Anzeigen"
msgid "URL Import"
msgstr "URL-Import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Der Parameter updated_at ist falsch formatiert"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Kein {self.basename} mit der ID {pk} existiert"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Zusammenführen mit selben Objekt nicht möglich!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Kein {self.basename} mit der ID {target} existiert"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Zusammenführen mit untergeordnetem Objekt nicht möglich!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} wurde erfolgreich mit {target.name} zusammengeführt"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Beim zusammenführen von {source.name} mit {target.name} ist ein Fehler "
"aufgetreten"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} wurde erfolgreich zur Wurzel verschoben."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Fehler aufgetreten beim verschieben von "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Ein Element kann nicht in sich selbst verschoben werden!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Kein {self.basename} mit ID {parent} existiert"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
"{child.name} wurde erfolgreich zum Überelement {parent.name} verschoben"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} wurde von der Einkaufsliste entfernt."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} wurde der Einkaufsliste hinzugefügt."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filtern Sie Essenspläne ab Datum (einschließlich) im Format JJJJ-MM-TT."
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filtern Sie die Essenspläne nach Datum (einschließlich) im Format JJJJ-MM-TT."
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
"Filtern Sie Mahlzeitenpläne nach der MealType ID. Für mehrere "
"Wiederholungsparameter."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"ID des Rezeptes zu dem ein Schritt gehört. Kann mehrfach angegeben werden."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Abfragezeichenfolge, die mit dem Objektnamen übereinstimmt (ungenau)."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2308,7 +2311,7 @@ msgstr ""
"Suchbegriff wird mit dem Rezeptnamen abgeglichen. In Zukunft auch "
"Volltextsuche."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2316,69 +2319,69 @@ msgstr ""
"ID des Stichwortes, das ein Rezept haben muss. Kann mehrfach angegeben "
"werden. Äquivalent zu keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte zu jedem der "
"angegebenen Stichwörter"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte mit allen "
"angegebenen Stichwörtern."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Stichwort ID. Kann mehrfach angegeben werden. Schließt Rezepte einem der "
"angegebenen Stichwörtern aus."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Schließt Rezepte mit allen "
"angegebenen Stichwörtern aus."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID einer Zutat, zu der Rezepte gelistet werden sollen. Kann mehrfach "
"angegeben werden."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mindestens einer "
"der Zutaten"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mit allen "
"angegebenen Zutaten."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die eine der "
"angegebenen Zutaten enthalten."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die alle "
"angegebenen Zutaten enthalten."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID der Einheit, die ein Rezept haben sollte."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2386,50 +2389,50 @@ msgstr ""
"Mindestbewertung eines Rezeptes (0-5). Negative Werte filtern nach "
"Maximalbewertung."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr "Buch ID, in dem das Rezept ist. Kann mehrfach angegeben werden."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Buch ID. Kann mehrfach angegeben werden. Listet alle Rezepte aus den "
"angegebenen Büchern"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"Buch ID. Kann mehrfach angegeben werden. Listet die Rezepte, die in allen "
"Büchern enthalten sind."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus den "
"angegebenen Büchern aus."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus, die in allen "
"angegebenen Büchern enthalten sind."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Nur interne Rezepte sollen gelistet werden. [ja/<b>nein</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
"Die Suchergebnisse sollen in zufälliger Reihenfolge gelistet werden. [ja/"
"<b>nein</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Die neuesten Suchergebnisse sollen zuerst angezeigt werden. [ja/<b>nein</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2437,7 +2440,7 @@ msgstr ""
"Rezepte listen, die mindestens x-mal gekocht wurden. Eine negative Zahl "
"listet Rezepte, die weniger als x-mal gekocht wurden"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2446,7 +2449,7 @@ msgstr ""
"wurden. Mit vorangestelltem - , werden Rezepte am oder vor dem Datum "
"gelistet."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2454,7 +2457,7 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später erstellt wurden. Wenn - "
"vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2462,7 +2465,7 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später aktualisiert wurden. "
"Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2470,13 +2473,13 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später zuletzt angesehen "
"wurden. Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Rezepte listen, die mit vorhandenen Zutaten gekocht werden können. [ja/"
"<b>nein</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2484,7 +2487,7 @@ msgstr ""
"Zeigt denjenigen Eintrag auf der Einkaufliste mit der angegebenen ID. Kann "
"mehrfach angegeben werden."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
@@ -2494,66 +2497,62 @@ msgstr ""
"<b>kürzlich</b>]<br> - kürzlich enthält nicht abgehakte "
"Einträge und kürzlich abgeschlossene Einträge."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Listet die Einträge der Einkaufsliste sortiert nach Supermarktkategorie."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr "Filter für Einträge mit dem angegebenen Rezept"
#: .\cookbook\views\api.py:1293
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
#| "values allowed."
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
"Zeigt denjenigen Eintrag auf der Einkaufliste mit der angegebenen ID. Kann "
"mehrfach angegeben werden."
"Zeigt Automationen, die dem Automationstyp entsprechen. Kann mehrfach "
"angegeben werden."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Nichts zu tun."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Ungültige URL"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Verbindung fehlgeschlagen."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Ungültiges URL Schema."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Es konnten keine passenden Daten gefunden werden."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr "Datei überschreitet das Speicherplatzlimit"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importieren ist für diesen Anbieter noch nicht implementiert"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Diese Funktion ist in dieser Version von Tandoor noch nicht verfügbar!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronisation erfolgreich!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Fehler beim Synchronisieren"
@@ -2582,10 +2581,8 @@ msgstr ""
"Monitor verwendet wird."
#: .\cookbook\views\delete.py:135
#, fuzzy
#| msgid "Storage Backend"
msgid "Connectors Config Backend"
msgstr "Speicherquelle"
msgstr "Backendkonfiguration für Konnektoren"
#: .\cookbook\views\delete.py:157
msgid "Invite Link"
@@ -2644,10 +2641,8 @@ msgid "Shopping List"
msgstr "Einkaufsliste"
#: .\cookbook\views\lists.py:77 .\cookbook\views\new.py:98
#, fuzzy
#| msgid "Storage Backend"
msgid "Connector Config Backend"
msgstr "Speicherquelle"
msgstr "Backendkonfiguration für Konnektoren"
#: .\cookbook\views\lists.py:91
msgid "Invite Links"
@@ -2743,7 +2738,7 @@ msgstr "Sie verwenden PostgreSQL %(v1)s. PostgreSQL %(v2)s wird empfohlen"
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
msgstr "PostgreSQL version konnte nicht erkannt werden."
#: .\cookbook\views\views.py:317
msgid ""
@@ -2755,18 +2750,14 @@ msgstr ""
"PostgreSQL-Datenbanken funktionieren."
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
#| "forgotten your superuser credentials please consult the django "
#| "documentation on how to reset passwords."
msgid ""
"The setup page can only be used to create the first "
"user! If you have forgotten your superuser credentials "
"please consult the django documentation on how to reset passwords."
msgstr ""
"Die Setup-Seite kann nur für den ersten Nutzer verwendet werden. Zum "
"Zurücksetzen von Passwörtern bitte der Django-Dokumentation folgen."
"Die Setup-Seite kann nur für den ersten Nutzer verwendet "
"werden. Falls du die Superuser Logindaten vergessen "
"hast, folge bitte der Django-Dokumentation um Passwörter zurückzusetzen."
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"

View File

@@ -7,17 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-08-21 09:19+0000\n"
"Last-Translator: Theodoros Grammenos <teogramm@outlook.com>\n"
"Language-Team: Greek <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/el/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-09-23 21:58+0000\n"
"Last-Translator: Emmker <emmker@gmail.com>\n"
"Language-Team: Greek <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/el/>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -33,7 +33,7 @@ msgstr "Όνομα"
#: .\cookbook\forms.py:62 .\cookbook\forms.py:246 .\cookbook\views\lists.py:103
msgid "Keywords"
msgstr "Λέξεις κλειδιά"
msgstr "Λέξεις Κλειδιά"
#: .\cookbook\forms.py:62
msgid "Preparation time in minutes"
@@ -98,7 +98,7 @@ msgstr ""
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "http://homeassistant.local:8123/api για παράδειγμα"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -2030,286 +2030,286 @@ msgstr "Προβολή αρχείων καταγραφής"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1934,286 +1934,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -13,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-03-27 19:02+0000\n"
"Last-Translator: Axel Breiterman <axelbreiterman@gmail.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-01-29 13:44+0000\n"
"Last-Translator: Ángel <1024mb@users.noreply.translate.tandoor.dev>\n"
"Language-Team: Spanish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/es/>\n"
"Language: es\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -66,31 +66,30 @@ msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Para evitar duplicados, las recetas con el mismo nombre serán ignoradas. "
"Marca esta opción para importar todas las recetas."
"Para evitar duplicados, las recetas con el mismo nombre que las ya "
"existentes serán ignoradas. Marca esta casilla para importar todo."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
msgstr "Añada su comentario: "
msgstr "Añade tu comentario: "
#: .\cookbook\forms.py:151
msgid "Leave empty for dropbox and enter app password for nextcloud."
msgstr ""
"Déjelo vacío para Dropbox e ingrese la contraseña de la aplicación para "
"nextcloud."
"Déjalo vacío para Dropbox o ingresa la contraseña de la aplicación para "
"Nextcloud."
#: .\cookbook\forms.py:154
msgid "Leave empty for nextcloud and enter api token for dropbox."
msgstr ""
"Déjelo en blanco para nextcloud e ingrese el token de api para dropbox."
msgstr "Déjalo vacío para Nextcloud o ingresa el token API para Dropbox."
#: .\cookbook\forms.py:160
msgid ""
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
"php/webdav/</code> is added automatically)"
msgstr ""
"Dejar vac para Dropbox e introducir sólo la URL base para Nextcloud "
"(<code>/remote.php/webdav/</code> se añade automáticamente)"
"Déjalo vacío para Dropbox o ingresa solo la URL base para Nextcloud "
"(<code>/remote.php/webdav/</code> es añadido automáticamente)"
#: .\cookbook\forms.py:188
msgid ""
@@ -98,15 +97,16 @@ msgid ""
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Token de larga duración</a>para tu instancia de HomeAssistant"
"profile\">Token de acceso de larga duración</a> para tu instancia de "
"HomeAssistant"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr "Algo similar a http://homeassistant.local:8123/api"
msgstr "Algo como http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr "por ejemplo http://homeassistant.local:8123/api for example"
msgstr "Por ejemplo http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -2153,282 +2153,282 @@ msgstr "Mostrar Enlaces"
msgid "URL Import"
msgstr "Importar URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parámetro filter_list formateado incorrectamente"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "¡No se puede unir con el mismo objeto!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "¡No se puede unir con el mismo objeto!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "La página solicitada no pudo ser encontrada."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "La importación no está implementada para este proveedor"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2436,11 +2436,11 @@ msgstr "La importación no está implementada para este proveedor"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "¡Esta funcionalidad no está disponible en la versión demo!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "¡Sincronización exitosa!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Error de sincronización con el almacenamiento"

File diff suppressed because it is too large Load Diff

View File

@@ -13,17 +13,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-05-28 00:57+0000\n"
"Last-Translator: tarek EL SOL <tarek.elsol@gmail.com>\n"
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/fr/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-02-16 14:58+0000\n"
"Last-Translator: Elvis Gosselin <elvis.gosselin@tutanota.com>\n"
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -506,18 +506,16 @@ msgid "Nutrition"
msgstr "Informations nutritionnelles"
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Fusionner"
msgstr "Allergène"
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
msgstr "Prix"
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
msgstr "Objectif"
#: .\cookbook\models.py:1408 .\cookbook\templates\search_info.html:28
msgid "Simple"
@@ -1039,7 +1037,7 @@ msgstr "Exporter"
#: .\cookbook\templates\base.html:287
msgid "Properties"
msgstr ""
msgstr "Propriétés"
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
#, fuzzy
@@ -2112,6 +2110,11 @@ msgid ""
"script to generate version information (done automatically in docker).\n"
" "
msgstr ""
"\n"
" Vous devez exécuter <code>version.py</code> dans votre script de "
"mise à jour pour générer les informations de version (automatique avec "
"docker).\n"
" "
#: .\cookbook\templates\system.html:46
msgid "Media Serving"
@@ -2199,7 +2202,7 @@ msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
msgstr "Hôtes autorisés"
#: .\cookbook\templates\system.html:90
msgid ""
@@ -2209,6 +2212,11 @@ msgid ""
"this.\n"
" "
msgstr ""
"\n"
" Votre configuration autorise tous les hôtes, cela ok dans "
"certaines installations mais évité. Veuillez consulter les documentations à "
"ce sujet.\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
@@ -2235,18 +2243,26 @@ msgid ""
"issue.\n"
" "
msgstr ""
"\n"
" Les migrations de données ne devraient jamais échouer!\n"
" Les échecs de migrations vont causer des problèmes de "
"fonctionnement majeurs dans lapplication..\n"
" Si une migration échoue, vérifiez que vous êtes sur la dernière "
"version et si c'est le cas veuillez créer un ticket sur GitHub avec le "
"contenu du journal de migration.\n"
" "
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
msgstr "Faux"
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
msgstr "Vrai"
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
msgstr "Cacher"
#: .\cookbook\templates\system.html:210
#, fuzzy
@@ -2258,83 +2274,85 @@ msgstr "Afficher le journal"
msgid "URL Import"
msgstr "Import URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Le paramètre «update_at» n'est pas correctement formaté"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lidentifiant {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Impossible de fusionner un objet avec lui-même !"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lid {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Impossible de fusionner avec lobjet enfant !"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} a été fusionné avec succès avec {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Une erreur est survenue lors de la tentative de fusion de {source.name} avec "
"{target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} a été déplacé avec succès vers la racine."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Une erreur est survenue en essayant de déplacer "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Impossible de déplacer un objet vers lui-même !"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lid {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} a été déplacé avec succès vers le parent {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} a été supprimé(e) de la liste de courses."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} a été ajouté(e) à la liste de courses."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
msgstr "Filtrer les repas depuis la date (incluse) avec le format YYYY-MM-DD."
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filtrer les plannings de repas depuis la date (incluse) avec le format YYYY-"
"MM-DD."
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
@@ -2342,18 +2360,18 @@ msgstr ""
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
"paramètres de répétition."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
"paramètres de répétition."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
"Correspondance (floue) entre la chaîne de requête et le nom de l'objet."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2361,7 +2379,7 @@ msgstr ""
"La chaîne d'interrogation correspond (de manière floue) au nom de la "
"recette. À l'avenir, la recherche en texte intégral sera également possible."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2369,69 +2387,69 @@ msgstr ""
"ID du mot-clé qu'une recette doit avoir. Pour les paramètres à répétition "
"multiple. Equivalent à keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Retourner les recettes avec "
"n'importe quel mot-clé"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Retourner les recettes contenant "
"tous les mots-clés."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Exclure les recettes contenant "
"l'un des mots-clés."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Exclure les recettes contenant "
"l'un des mots-clés."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID de l'aliment qu'une recette doit contenir. Pour les paramètres de "
"répétition multiples."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"ID des aliments, répéter pour plusieurs. Retourner les recettes contenant "
"l'un des aliments"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Retourner les recettes avec tous "
"les aliments."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Exclure les recettes contenant l'un "
"des aliments."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Exclure les recettes contenant tous "
"les aliments."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID de l'unité qu'une recette doit avoir."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2439,128 +2457,128 @@ msgstr ""
"Note qu'une recette devrait avoir ou être supérieure. [0 - 5] Une valeur "
"négative filtre une note inférieure à."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Rien à faire."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Url non valide"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Connexion refusée."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Mauvais schéma dURL."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Aucune information utilisable n'a été trouvée."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Limportation nest pas implémentée pour ce fournisseur"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
@@ -2568,11 +2586,11 @@ msgstr ""
"Cette fonctionnalité nest pas encore disponible dans la version hébergée de "
"Tandoor !"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronisation réussie !"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Erreur lors de la synchronisation avec le stockage"

View File

@@ -7,28 +7,28 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-11-15 08:20+0000\n"
"Last-Translator: avi meyer <avmeyer@gmail.com>\n"
"Language-Team: Hebrew <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/he/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-03-07 15:08+0000\n"
"Last-Translator: yonatan ben-menachem <2bmyonatan@gmail.com>\n"
"Language-Team: Hebrew <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/he/>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
"Both fields are optional. If none are given the username will be displayed "
"instead"
msgstr ""
msgstr "שני השדות אופציונלים. אם שני השדות ריקים, שם המשתמש יוצג במקום."
#: .\cookbook\forms.py:62 .\cookbook\forms.py:246
msgid "Name"
msgstr ""
msgstr "שם"
#: .\cookbook\forms.py:62 .\cookbook\forms.py:246 .\cookbook\views\lists.py:103
msgid "Keywords"
@@ -36,47 +36,51 @@ msgstr "מילות מפתח"
#: .\cookbook\forms.py:62
msgid "Preparation time in minutes"
msgstr ""
msgstr "זמן הכנה בדקות"
#: .\cookbook\forms.py:62
msgid "Waiting time (cooking/baking) in minutes"
msgstr ""
msgstr "זמן המתנה (בישול/אפייה) בדקות"
#: .\cookbook\forms.py:63 .\cookbook\forms.py:222 .\cookbook\forms.py:246
msgid "Path"
msgstr ""
msgstr "נתיב"
#: .\cookbook\forms.py:63
msgid "Storage UID"
msgstr ""
msgstr "אחסון UID"
#: .\cookbook\forms.py:93
msgid "Default"
msgstr ""
msgstr "ברירת מחדל"
#: .\cookbook\forms.py:121
msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"בשביל למנוע כפילויות, מתוכנים בעלי שם זהה למתכון קיים לא יעובדו. סמן כאן כדי "
"לייבא בכל זאת."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
msgstr ""
msgstr "הוסף את ההערה שלך::- "
#: .\cookbook\forms.py:151
msgid "Leave empty for dropbox and enter app password for nextcloud."
msgstr ""
msgstr "השאר ריק עבור Dropbox והכנס סיסמא עבור NextCloud."
#: .\cookbook\forms.py:154
msgid "Leave empty for nextcloud and enter api token for dropbox."
msgstr ""
msgstr "השאר ריק עבור NextCloud והכנס טוקן API עבור Dropbox."
#: .\cookbook\forms.py:160
msgid ""
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
"php/webdav/</code> is added automatically)"
msgstr ""
"השאר ריק עבור dropbox וכנס רק URL בסיסי עבור nextcloud (<code>/remote.php/"
"webdav/</code> נוסף אוטומטי)"
#: .\cookbook\forms.py:188
msgid ""
@@ -86,49 +90,49 @@ msgstr ""
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "משהו דומה לhttp://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "לדוגמא http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
msgstr ""
msgstr "אחסון"
#: .\cookbook\forms.py:222
msgid "Active"
msgstr ""
msgstr "פעיל"
#: .\cookbook\forms.py:226
msgid "Search String"
msgstr ""
msgstr "מחרוזת חיפוש"
#: .\cookbook\forms.py:246
msgid "File ID"
msgstr ""
msgstr "ID של הקובץ"
#: .\cookbook\forms.py:262
msgid "Maximum number of users for this space reached."
msgstr ""
msgstr "המספר המקסימלי של משתמשים עבור מרחב זה נוצל."
#: .\cookbook\forms.py:268
msgid "Email address already taken!"
msgstr ""
msgstr "כתובת האימייל כבר בשימוש!"
#: .\cookbook\forms.py:275
msgid ""
"An email address is not required but if present the invite link will be sent "
"to the user."
msgstr ""
msgstr "כתובת אימייל לא נדרשת אבל אם קיימת, קישור השיתוף ישלח למשתמש."
#: .\cookbook\forms.py:287
msgid "Name already taken."
msgstr ""
msgstr "שם כבר בשימוש."
#: .\cookbook\forms.py:298
msgid "Accept Terms and Privacy"
msgstr ""
msgstr "הסכם לתנאים ולפרטיות"
#: .\cookbook\forms.py:332
msgid ""
@@ -147,6 +151,7 @@ msgid ""
"Use fuzzy matching on units, keywords and ingredients when editing and "
"importing recipes."
msgstr ""
"השתמש בהתאמה גמישה ליחידות, מילות מפתח ורכיבים בעת עריכה וייבוא מתכונים."
#: .\cookbook\forms.py:342
msgid ""
@@ -235,7 +240,7 @@ msgstr ""
#: .\cookbook\helper\permission_helper.py:237
#: .\cookbook\helper\permission_helper.py:252
msgid "You cannot interact with this object as it is not owned by you!"
msgstr ""
msgstr "אינך יכול/ה לפעול על אובייקט זה כיוון שהוא לא בבעלותך!"
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
@@ -439,7 +444,7 @@ msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
msgstr "קניות"
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
@@ -524,7 +529,7 @@ msgstr ""
#: .\cookbook\models.py:1504
msgid "Food"
msgstr ""
msgstr "אוכל"
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
msgid "Keyword"
@@ -544,7 +549,7 @@ msgstr ""
#: .\cookbook\serializer.py:1270
msgid "Hello"
msgstr ""
msgstr "שלום"
#: .\cookbook\serializer.py:1270
msgid "You have been invited by "
@@ -565,12 +570,12 @@ msgstr ""
#: .\cookbook\serializer.py:1278
msgid "The invitation is valid until "
msgstr ""
msgstr "ההזמנה תקפה עד "
#: .\cookbook\serializer.py:1280
msgid ""
"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub "
msgstr ""
msgstr "Tandoor Recipes הוא מנהל מתכונים בקוד פתוח. ניתן למצוא אותנו ב-GitHub. "
#: .\cookbook\serializer.py:1283
msgid "Tandoor Recipes Invite"
@@ -608,11 +613,11 @@ msgstr ""
#: .\cookbook\templates\generic\delete_template.html:15
#: .\cookbook\templates\generic\edit_template.html:28
msgid "Delete"
msgstr ""
msgstr "מחיקה"
#: .\cookbook\templates\404.html:5
msgid "404 Error"
msgstr ""
msgstr "שגיאה 404"
#: .\cookbook\templates\404.html:18
msgid "The page you are looking for could not be found."
@@ -624,12 +629,12 @@ msgstr ""
#: .\cookbook\templates\404.html:35
msgid "Report a Bug"
msgstr ""
msgstr "דווח על באג"
#: .\cookbook\templates\account\email.html:6
#: .\cookbook\templates\account\email.html:17
msgid "E-mail Addresses"
msgstr ""
msgstr "כתובות אימייל"
#: .\cookbook\templates\account\email.html:12
#: .\cookbook\templates\account\password_change.html:11
@@ -639,11 +644,11 @@ msgstr ""
#: .\cookbook\templates\socialaccount\connections.html:10
#: .\cookbook\templates\user_settings.html:8
msgid "Settings"
msgstr ""
msgstr "הגדרות"
#: .\cookbook\templates\account\email.html:13
msgid "Email"
msgstr ""
msgstr "מייל"
#: .\cookbook\templates\account\email.html:19
msgid "The following e-mail addresses are associated with your account:"
@@ -651,33 +656,33 @@ msgstr ""
#: .\cookbook\templates\account\email.html:36
msgid "Verified"
msgstr ""
msgstr "מאומת"
#: .\cookbook\templates\account\email.html:38
msgid "Unverified"
msgstr ""
msgstr "לא מאומת"
#: .\cookbook\templates\account\email.html:40
msgid "Primary"
msgstr ""
msgstr "ראשי"
#: .\cookbook\templates\account\email.html:47
msgid "Make Primary"
msgstr ""
msgstr "הגדר כראשי"
#: .\cookbook\templates\account\email.html:49
msgid "Re-send Verification"
msgstr ""
msgstr "שלח אימות מחדש"
#: .\cookbook\templates\account\email.html:50
#: .\cookbook\templates\generic\delete_template.html:57
#: .\cookbook\templates\socialaccount\connections.html:44
msgid "Remove"
msgstr ""
msgstr "הסרה"
#: .\cookbook\templates\account\email.html:58
msgid "Warning:"
msgstr ""
msgstr "אזהרה:"
#: .\cookbook\templates\account\email.html:58
msgid ""
@@ -687,11 +692,11 @@ msgstr ""
#: .\cookbook\templates\account\email.html:64
msgid "Add E-mail Address"
msgstr ""
msgstr "הוספת כתובת מייל"
#: .\cookbook\templates\account\email.html:69
msgid "Add E-mail"
msgstr ""
msgstr "הוספת מייל"
#: .\cookbook\templates\account\email.html:79
msgid "Do you really want to remove the selected e-mail address?"
@@ -700,7 +705,7 @@ msgstr ""
#: .\cookbook\templates\account\email_confirm.html:6
#: .\cookbook\templates\account\email_confirm.html:10
msgid "Confirm E-mail Address"
msgstr ""
msgstr "אשר כתובת מייל"
#: .\cookbook\templates\account\email_confirm.html:16
#, python-format
@@ -714,7 +719,7 @@ msgstr ""
#: .\cookbook\templates\account\email_confirm.html:22
#: .\cookbook\templates\generic\delete_template.html:72
msgid "Confirm"
msgstr ""
msgstr "אשר"
#: .\cookbook\templates\account\email_confirm.html:29
#, python-format
@@ -727,7 +732,7 @@ msgstr ""
#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:388
#: .\cookbook\templates\openid\login.html:8
msgid "Login"
msgstr ""
msgstr "התחבר"
#: .\cookbook\templates\account\login.html:15
#: .\cookbook\templates\account\login.html:31
@@ -739,7 +744,7 @@ msgstr ""
#: .\cookbook\templates\openid\login.html:26
#: .\cookbook\templates\socialaccount\authentication_error.html:15
msgid "Sign In"
msgstr ""
msgstr "התחבר"
#: .\cookbook\templates\account\login.html:34
#: .\cookbook\templates\account\password_reset.html:41
@@ -747,7 +752,7 @@ msgstr ""
#: .\cookbook\templates\socialaccount\signup.html:8
#: .\cookbook\templates\socialaccount\signup.html:57
msgid "Sign Up"
msgstr ""
msgstr "הירשם"
#: .\cookbook\templates\account\login.html:38
msgid "Lost your password?"
@@ -756,7 +761,7 @@ msgstr ""
#: .\cookbook\templates\account\login.html:39
#: .\cookbook\templates\account\password_reset.html:29
msgid "Reset My Password"
msgstr ""
msgstr "איפוס סיסמא"
#: .\cookbook\templates\account\login.html:50
msgid "Social Login"
@@ -770,7 +775,7 @@ msgstr ""
#: .\cookbook\templates\account\logout.html:9
#: .\cookbook\templates\account\logout.html:18
msgid "Sign Out"
msgstr ""
msgstr "התנתק"
#: .\cookbook\templates\account\logout.html:11
msgid "Are you sure you want to sign out?"
@@ -789,7 +794,7 @@ msgstr ""
#: .\cookbook\templates\account\password_change.html:12
#: .\cookbook\templates\account\password_set.html:12
msgid "Password"
msgstr ""
msgstr "סיסמא"
#: .\cookbook\templates\account\password_change.html:22
msgid "Forgot Password?"
@@ -844,52 +849,52 @@ msgstr ""
#: .\cookbook\templates\account\password_set.html:16
#: .\cookbook\templates\account\password_set.html:21
msgid "Set Password"
msgstr ""
msgstr "קבע סיסמא"
#: .\cookbook\templates\account\signup.html:6
msgid "Register"
msgstr ""
msgstr "הירשם"
#: .\cookbook\templates\account\signup.html:12
msgid "Create an Account"
msgstr ""
msgstr "צור משתמש"
#: .\cookbook\templates\account\signup.html:42
#: .\cookbook\templates\socialaccount\signup.html:33
msgid "I accept the follwoing"
msgstr ""
msgstr "אני מקבל את התנאים הבאים"
#: .\cookbook\templates\account\signup.html:45
#: .\cookbook\templates\socialaccount\signup.html:36
msgid "Terms and Conditions"
msgstr ""
msgstr "תנאים והגבלות"
#: .\cookbook\templates\account\signup.html:48
#: .\cookbook\templates\socialaccount\signup.html:39
msgid "and"
msgstr ""
msgstr "ו"
#: .\cookbook\templates\account\signup.html:52
#: .\cookbook\templates\socialaccount\signup.html:43
msgid "Privacy Policy"
msgstr ""
msgstr "מדיניות פרטיות"
#: .\cookbook\templates\account\signup.html:65
msgid "Create User"
msgstr ""
msgstr "צור משתמש"
#: .\cookbook\templates\account\signup.html:69
msgid "Already have an account?"
msgstr ""
msgstr "יש לך חשבון?"
#: .\cookbook\templates\account\signup_closed.html:5
#: .\cookbook\templates\account\signup_closed.html:11
msgid "Sign Up Closed"
msgstr ""
msgstr "ההרשמה סגורה"
#: .\cookbook\templates\account\signup_closed.html:13
msgid "We are sorry, but the sign up is currently closed."
msgstr ""
msgstr "אנו מצטערים, אך ההרשמה כרגע סגורה."
#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:378
#: .\cookbook\templates\rest_framework\api.html:11
@@ -898,11 +903,11 @@ msgstr ""
#: .\cookbook\templates\base.html:110 .\cookbook\templates\index.html:87
msgid "Recipes"
msgstr ""
msgstr "מתכונים"
#: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120
msgid "Foods"
msgstr ""
msgstr "מאכלים"
#: .\cookbook\templates\base.html:173 .\cookbook\views\lists.py:137
msgid "Units"
@@ -918,11 +923,11 @@ msgstr ""
#: .\cookbook\templates\base.html:211 .\cookbook\views\lists.py:186
msgid "Automations"
msgstr ""
msgstr "אוטומציות"
#: .\cookbook\templates\base.html:225 .\cookbook\views\lists.py:222
msgid "Files"
msgstr ""
msgstr "קבצים"
#: .\cookbook\templates\base.html:237
msgid "Batch Edit"
@@ -943,7 +948,7 @@ msgstr ""
#: .\cookbook\templates\export_response.html:7
#: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20
msgid "Export"
msgstr ""
msgstr "יצא"
#: .\cookbook\templates\base.html:287
msgid "Properties"
@@ -968,7 +973,7 @@ msgstr ""
#: .\cookbook\templates\base.html:336 .\cookbook\templates\space_manage.html:15
msgid "Space Settings"
msgstr ""
msgstr "הגדרות מרחב"
#: .\cookbook\templates\base.html:340
msgid "External Connectors"
@@ -976,21 +981,21 @@ msgstr ""
#: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13
msgid "System"
msgstr ""
msgstr "מערכת"
#: .\cookbook\templates\base.html:347
msgid "Admin"
msgstr ""
msgstr "מנהל"
#: .\cookbook\templates\base.html:351
#: .\cookbook\templates\space_overview.html:25
msgid "Your Spaces"
msgstr ""
msgstr "המרחבים שלך"
#: .\cookbook\templates\base.html:362
#: .\cookbook\templates\space_overview.html:6
msgid "Overview"
msgstr ""
msgstr "סקירה כללית"
#: .\cookbook\templates\base.html:372
msgid "Markdown Guide"
@@ -1010,7 +1015,7 @@ msgstr ""
#: .\cookbook\templates\base.html:383
msgid "Log out"
msgstr ""
msgstr "התנתק"
#: .\cookbook\templates\base.html:406
msgid "You are using the free version of Tandor"
@@ -1068,7 +1073,7 @@ msgstr ""
#: .\cookbook\templates\batch\monitor.html:29
msgid "Show Recipes"
msgstr ""
msgstr "הראה מתכונים"
#: .\cookbook\templates\batch\monitor.html:30
msgid "Show Log"
@@ -1109,7 +1114,7 @@ msgstr ""
#: .\cookbook\templates\generic\delete_template.html:22
msgid "This cannot be undone!"
msgstr ""
msgstr "לא ניתן לבטל פעולה זו!"
#: .\cookbook\templates\generic\delete_template.html:27
msgid "Protected"
@@ -1126,7 +1131,7 @@ msgstr ""
#: .\cookbook\templates\generic\edit_template.html:6
#: .\cookbook\templates\generic\edit_template.html:14
msgid "Edit"
msgstr ""
msgstr "ערוך"
#: .\cookbook\templates\generic\edit_template.html:32
msgid "View"
@@ -1160,7 +1165,7 @@ msgstr ""
#: .\cookbook\templates\generic\table_template.html:98
msgid "next"
msgstr ""
msgstr "הבא"
#: .\cookbook\templates\history.html:20
msgid "View Log"
@@ -1173,7 +1178,7 @@ msgstr ""
#: .\cookbook\templates\import_response.html:7 .\cookbook\views\delete.py:90
#: .\cookbook\views\edit.py:174
msgid "Import"
msgstr ""
msgstr "יבא"
#: .\cookbook\templates\include\storage_backend_warning.html:4
msgid "Security Warning"
@@ -1354,7 +1359,7 @@ msgstr ""
#: .\cookbook\templates\no_groups_info.html:5
#: .\cookbook\templates\no_groups_info.html:12
msgid "No Permissions"
msgstr ""
msgstr "אין הרשאות"
#: .\cookbook\templates\no_groups_info.html:17
msgid "You do not have any groups and therefor cannot use this application."
@@ -1363,12 +1368,12 @@ msgstr ""
#: .\cookbook\templates\no_groups_info.html:18
#: .\cookbook\templates\no_perm_info.html:15
msgid "Please contact your administrator."
msgstr ""
msgstr "אנא פנה למנהל המערכת."
#: .\cookbook\templates\no_perm_info.html:5
#: .\cookbook\templates\no_perm_info.html:12
msgid "No Permission"
msgstr ""
msgstr "אין הרשאות"
#: .\cookbook\templates\no_perm_info.html:15
msgid ""
@@ -1378,11 +1383,11 @@ msgstr ""
#: .\cookbook\templates\offline.html:6
msgid "Offline"
msgstr ""
msgstr "לא מקוון"
#: .\cookbook\templates\offline.html:19
msgid "You are currently offline!"
msgstr ""
msgstr "אתה כרגע במצב לא מקוון!"
#: .\cookbook\templates\offline.html:20
msgid ""
@@ -1393,7 +1398,7 @@ msgstr ""
#: .\cookbook\templates\openid\login.html:27
#: .\cookbook\templates\socialaccount\authentication_error.html:27
msgid "Back"
msgstr ""
msgstr "אחורה"
#: .\cookbook\templates\property_editor.html:7
msgid "Property Editor"
@@ -1420,7 +1425,7 @@ msgstr ""
#: .\cookbook\templates\search_info.html:9
#: .\cookbook\templates\settings.html:24
msgid "Search Settings"
msgstr ""
msgstr "הגדרות חיפוש"
#: .\cookbook\templates\search_info.html:10
msgid ""
@@ -1436,7 +1441,7 @@ msgstr ""
#: .\cookbook\templates\search_info.html:19
msgid "Search Methods"
msgstr ""
msgstr "שיטות חיפוש"
#: .\cookbook\templates\search_info.html:23
msgid ""
@@ -1519,7 +1524,7 @@ msgstr ""
#: .\cookbook\templates\search_info.html:69
msgid "Search Fields"
msgstr ""
msgstr "שדות חיפוש"
#: .\cookbook\templates\search_info.html:73
msgid ""
@@ -1938,286 +1943,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-12-05 09:15+0000\n"
"Last-Translator: Ferenc <ugyes@freemail.hu>\n"
"Language-Team: Hungarian <http://translate.tandoor.dev/projects/tandoor/"
@@ -2268,81 +2268,81 @@ msgstr "Napló megjelenítése"
msgid "URL Import"
msgstr "URL importálása"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Az updated_at paraméter helytelenül van formázva"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Nem létezik {self.basename} azonosítóval {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nem egyesíthető ugyanazzal az objektummal!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Nem létezik {self.basename} azonosítóval {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Nem lehet egyesíteni a gyermekobjektummal!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} sikeresen egyesült a {target.name} -vel"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "Hiba történt a {source.name} és a {target.name} egyesítése során"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} sikeresen átkerült a gyökérbe."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Hiba történt az áthelyezés közben "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Nem lehet egy objektumot önmagába mozgatni!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Nem létezik {self.basename} azonosítóval {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} sikeresen átkerült a {parent.name} szülőhöz"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} lekerült a bevásárlólistáról."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} hozzá lett adva a bevásárlólistához."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
@@ -2350,17 +2350,17 @@ msgstr ""
"A recept azonosítója, amelynek egy lépés része. Többszörös ismétlés esetén "
"paraméter."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"A recept azonosítója, amelynek egy lépés része. Többszörös ismétlés esetén "
"paraméter."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "A lekérdezés karakterlánca az objektum nevével összevetve (fuzzy)."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2368,7 +2368,7 @@ msgstr ""
"A lekérdezési karakterláncot a recept nevével összevetve (fuzzy). A jövőben "
"teljes szöveges keresés is."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2376,69 +2376,69 @@ msgstr ""
"A recept kulcsszavának azonosítója. Többszörös ismétlődő paraméter esetén. "
"Egyenértékű a keywords_or kulcsszavakkal"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. A megadott kulcsszavak "
"mindegyikéhez tartozó receptek listázza"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. Az összes megadott kulcsszót "
"tartalmazó receptek listázása."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Kulcsszó azonosító. Többször is megadható. Kizárja a recepteket a megadott "
"kulcsszavak egyikéből."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. Kizárja az összes megadott "
"kulcsszóval rendelkező receptet."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"Annak az összetevőnek az azonosítója, amelynek receptjeit fel kell sorolni. "
"Többször is megadható."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Összetevő azonosító. Többször is megadható. Legalább egy összetevő "
"receptjeinek listája"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Az összes megadott összetevőt "
"tartalmazó receptek listája."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Kizárja azokat a recepteket, "
"amelyek a megadott összetevők bármelyikét tartalmazzák."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Kizárja az összes megadott "
"összetevőt tartalmazó recepteket."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "A recepthez tartozó mértékegység azonosítója."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2446,51 +2446,51 @@ msgstr ""
"Egy recept minimális értékelése (0-5). A negatív értékek a maximális "
"értékelés szerint szűrnek."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"A könyv azonosítója, amelyben a recept található. Többször is megadható."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"A könyv azonosítója. Többször is megadható. A megadott könyvek összes "
"receptjének listája"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"A könyv azonosítója. Többször is megadható. Az összes könyvben szereplő "
"recept listája."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"A könyv azonosítói. Többször is megadható. Kizárja a megadott könyvek "
"receptjeit."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"A könyv azonosítói. Többször is megadható. Kizárja az összes megadott "
"könyvben szereplő receptet."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Ha csak a belső recepteket kell visszaadni. [true/<b>false</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
"Az eredményeket véletlenszerű sorrendben adja vissza. [true/<b>false</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Az új találatokat adja vissza először a keresési eredmények között. [true/"
"<b>false</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2498,7 +2498,7 @@ msgstr ""
"X-szer vagy többször főzött receptek szűrése. A negatív értékek X "
"alkalomnál kevesebbet főzött recepteket jelenítik meg"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2507,7 +2507,7 @@ msgstr ""
"vagy később főztek meg utoljára. A - jelölve az adott dátumon vagy azt "
"megelőzően elkészítettek kerülnek be a receptek listájába."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2516,7 +2516,7 @@ msgstr ""
"vagy később hoztak létre. A - jelölve az adott dátumon vagy azt megelőzően "
"hozták létre."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2525,7 +2525,7 @@ msgstr ""
"vagy később frissültek. A - jelölve az adott dátumon vagy azt megelőzően "
"frissültek."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2534,13 +2534,13 @@ msgstr ""
"vagy később néztek meg utoljára. A - jelölve az adott dátumon vagy azt "
"megelőzően néztek meg utoljára."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Felsorolja azokat a recepteket, amelyeket a rendelkezésre álló összetevőkből "
"el lehet készíteni. [true/<b>false</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2548,7 +2548,7 @@ msgstr ""
"Visszaadja az id elsődleges kulccsal rendelkező bevásárlólista-bejegyzést. "
"Több érték megengedett."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2562,17 +2562,17 @@ msgstr ""
"mindkettő, <b>legutóbbi</b>]<br> a legutóbbi a nem bejelölt és a nemrég "
"befejezett elemeket tartalmazza."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Visszaadja a bevásárlólista bejegyzéseit szupermarket kategóriák szerinti "
"sorrendben."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2584,45 +2584,45 @@ msgstr ""
"Visszaadja az id elsődleges kulccsal rendelkező bevásárlólista-bejegyzést. "
"Több érték megengedett."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Semmi feladat."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Érvénytelen URL"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Kapcsolat megtagadva."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Rossz URL séma."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Nem sikerült használható adatokat találni."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Az importálás nincs implementálva ennél a szolgáltatónál"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Ez a funkció még nem érhető el a tandoor hosztolt verziójában!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Szinkronizálás sikeres!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Hiba szinkronizálás közben a tárolóval"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-01-08 17:55+0000\n"
"Last-Translator: Joachim Weber <joachim.weber@gmx.de>\n"
"Language-Team: Armenian <http://translate.tandoor.dev/projects/tandoor/"
@@ -2121,282 +2121,282 @@ msgstr "Ցուցադրել օգնություն"
msgid "URL Import"
msgstr "URL ներմուծում"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "filter_list պարամետրը սխալ է ձևավորված"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Հնարավոր չէ միավորել նույն օբյեկտի հետ:"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Հնարավոր չէ միավորել նույն օբյեկտի հետ:"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Պահանջվող էջը չի գտնվել:"
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Ներմուծումն այս պրովայդերի համար իրականացված չէ"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2404,11 +2404,11 @@ msgstr "Ներմուծումն այս պրովայդերի համար իրակա
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Այս հատկությունը հասանելի չէ փորձնական տարբերակում։"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Սինքրոնիզացիան հաջողված է:"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Պահոցի հետ սինքրոնիզացիայի սխալ"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2022-10-12 08:33+0000\n"
"Last-Translator: wella <wella.design@gmail.com>\n"
"Language-Team: Indonesian <http://translate.tandoor.dev/projects/tandoor/"
@@ -1962,286 +1962,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-08-19 21:36+0000\n"
"Last-Translator: NeoID <neoid@animenord.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-01-26 05:58+0000\n"
"Last-Translator: Ole Martin Ruud <nett@barskern.no>\n"
"Language-Team: Norwegian Bokmål <http://translate.tandoor.dev/projects/"
"tandoor/recipes-backend/nb_NO/>\n"
"Language: nb_NO\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -326,10 +326,8 @@ msgid "Imported %s recipes."
msgstr "Importerte %s oppskrifter."
#: .\cookbook\integration\openeats.py:28
#, fuzzy
#| msgid "Recipes"
msgid "Recipe source:"
msgstr "Oppskrifter"
msgstr "Oppskriftskilde:"
#: .\cookbook\integration\paprika.py:49
msgid "Notes"
@@ -555,7 +553,7 @@ msgstr "Oppskrift"
#: .\cookbook\models.py:1504
msgid "Food"
msgstr ""
msgstr "Mat"
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
msgid "Keyword"
@@ -846,10 +844,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\account\password_reset.html:32
#, fuzzy
#| msgid "Password reset is not implemented for the time being!"
msgid "Password reset is disabled on this instance."
msgstr "Det er foreløpig ikke implementert funksjon for å nullstille passord!"
msgstr "Nullstilling av passord er skrudd av for denne instansen."
#: .\cookbook\templates\account\password_reset_done.html:25
msgid ""
@@ -912,7 +908,7 @@ msgstr ""
#: .\cookbook\templates\account\signup.html:48
#: .\cookbook\templates\socialaccount\signup.html:39
msgid "and"
msgstr ""
msgstr "og"
#: .\cookbook\templates\account\signup.html:52
#: .\cookbook\templates\socialaccount\signup.html:43
@@ -946,8 +942,6 @@ msgid "Recipes"
msgstr "Oppskrifter"
#: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120
#, fuzzy
#| msgid "New Food"
msgid "Foods"
msgstr "Ny matvare"
@@ -989,10 +983,8 @@ msgstr "Historikk"
#: .\cookbook\templates\base.html:263
#: .\cookbook\templates\ingredient_editor.html:7
#: .\cookbook\templates\ingredient_editor.html:13
#, fuzzy
#| msgid "Ingredients"
msgid "Ingredient Editor"
msgstr "Ingredienser"
msgstr "Ingrediensredigerer"
#: .\cookbook\templates\base.html:275
#: .\cookbook\templates\export_response.html:7
@@ -1002,7 +994,7 @@ msgstr "Eksporter"
#: .\cookbook\templates\base.html:287
msgid "Properties"
msgstr ""
msgstr "Egenskaper"
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
msgid "Unit Conversions"
@@ -1179,7 +1171,7 @@ msgstr ""
#: .\cookbook\templates\generic\delete_template.html:27
msgid "Protected"
msgstr ""
msgstr "Beskyttet"
#: .\cookbook\templates\generic\delete_template.html:42
msgid "Cascade"
@@ -1938,7 +1930,7 @@ msgstr ""
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
msgstr "Advarsel"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
@@ -2053,286 +2045,286 @@ msgstr "Vis hjelp"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -12,17 +12,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-02-10 12:20+0000\n"
"Last-Translator: Jonan B <jonanb@pm.me>\n"
"Language-Team: Dutch <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/nl/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-02-16 14:58+0000\n"
"Last-Translator: Cots Partier <cots.pastier.34@icloud.com>\n"
"Language-Team: Dutch <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/nl/>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -65,8 +65,8 @@ msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Om dubbelingen te voorkomen worden recepten met dezelfde naam als een "
"bestaand recept genegeerd. Vink aan om alles te importeren."
"Standaard worden dubbele recepten, op basis van de naam, genegeerd. Vink "
"deze optie aan om toch alles te importeren."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
@@ -93,14 +93,17 @@ msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Toegangtokens met lange levensduur</a> voor jouw HomeAssistant "
"installatie"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "Bijvoorbeeld http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "http://homeassistant.local:8123/api bijvoorbeeld"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -283,7 +286,7 @@ msgstr "omgekeerde rotatie"
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr "voorzichtige rotatie"
msgstr "rotire atentă"
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
@@ -303,7 +306,7 @@ msgstr "gisten"
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr "sous-vide"
msgstr "sous-vide (vacuümgaren)"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
@@ -390,7 +393,7 @@ msgstr "Sectie"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Repareer voedingsmiddelen met "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
@@ -427,16 +430,14 @@ msgid "Other"
msgstr "Overige"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#, fuzzy
#| msgid "Fats"
msgid "Fat"
msgstr "Vetten"
msgstr "Vet"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
msgid "g"
msgstr ""
msgstr "g"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
msgid "Carbohydrates"
@@ -452,7 +453,7 @@ msgstr "Calorieën"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
msgid "kcal"
msgstr ""
msgstr "kcal"
#: .\cookbook\models.py:325
msgid ""
@@ -475,7 +476,7 @@ msgstr "Maaltijdplan"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Boeken"
msgstr "Kookboeken"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
@@ -491,18 +492,16 @@ msgid "Nutrition"
msgstr "Voedingswaarde"
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Samenvoegen"
msgstr "Allergeen"
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
msgstr "Prijs"
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
msgstr "Doel"
#: .\cookbook\models.py:1408 .\cookbook\templates\search_info.html:28
msgid "Simple"
@@ -541,30 +540,24 @@ msgid "Instruction Replace"
msgstr "Vervang instructies"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Nieuwe eenheid"
msgstr "Nooit eenheid"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
msgstr ""
msgstr "Omzetten Woorden"
#: .\cookbook\models.py:1474
#, fuzzy
#| msgid "Food Alias"
msgid "Food Replace"
msgstr "Ingrediënt alias"
msgstr "Voedingsmiddelen vervangen"
#: .\cookbook\models.py:1475
#, fuzzy
#| msgid "Description Replace"
msgid "Unit Replace"
msgstr "Verrvang beschrijving"
msgstr "Eenheid Vervangen"
#: .\cookbook\models.py:1476
msgid "Name Replace"
msgstr ""
msgstr "Naam Vervangen"
#: .\cookbook\models.py:1503 .\cookbook\views\delete.py:40
#: .\cookbook\views\edit.py:210 .\cookbook\views\new.py:39
@@ -577,7 +570,7 @@ msgstr "Ingrediënt"
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
msgid "Keyword"
msgstr "Etiket"
msgstr "Trefwoord"
#: .\cookbook\serializer.py:222
msgid "File uploads are not enabled for this Space."
@@ -637,8 +630,8 @@ msgid ""
"List of ingredient IDs from the recipe to add, if not provided all "
"ingredients will be added."
msgstr ""
"Lijst van ingrediënten ID's van het toe te voegen recept, als deze niet "
"opgegeven worden worden alle ingrediënten toegevoegd."
"Lijst van ingrediënt ID's van het toe te voegen recept, als deze niet worden "
"opgegeven worden alle ingrediënten toegevoegd."
#: .\cookbook\serializer.py:1430
msgid ""
@@ -907,7 +900,7 @@ msgstr ""
#: .\cookbook\templates\account\password_reset_from_key.html:33
msgid "change password"
msgstr "Wijzig wachtwoord"
msgstr "wijzig wachtwoord"
#: .\cookbook\templates\account\password_reset_from_key.html:36
#: .\cookbook\templates\account\password_reset_from_key_done.html:19
@@ -1021,13 +1014,11 @@ msgstr "Exporteren"
#: .\cookbook\templates\base.html:287
msgid "Properties"
msgstr ""
msgstr "Eigenschappen"
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
#, fuzzy
#| msgid "Account Connections"
msgid "Unit Conversions"
msgstr "Account verbindingen"
msgstr "Eenheid omzetten"
#: .\cookbook\templates\base.html:318 .\cookbook\templates\index.html:47
msgid "Import Recipe"
@@ -1047,10 +1038,8 @@ msgid "Space Settings"
msgstr "Ruimte Instellingen"
#: .\cookbook\templates\base.html:340
#, fuzzy
#| msgid "External Recipes"
msgid "External Connectors"
msgstr "Externe recepten"
msgstr "Externe Connectors"
#: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13
msgid "System"
@@ -1439,11 +1428,11 @@ msgstr "Tabellen"
#: .\cookbook\templates\markdown_info.html:153
msgid ""
"Markdown tables are hard to create by hand. It is recommended to use a table "
"editor like <a href=\"https://www.tablesgenerator.com/markdown_tables\" rel="
"\"noreferrer noopener\" target=\"_blank\">this one.</a>"
"editor like <a href=\"https://www.tablesgenerator.com/markdown_tables\" "
"rel=\"noreferrer noopener\" target=\"_blank\">this one.</a>"
msgstr ""
"Het is lastig om met de hand Markdown tabellen te maken. Het wordt "
"aangeraden om een tabel editor zoals <a href=\"https://www.tablesgenerator."
"aangeraden om een tabel 'editor' zoals <a href=\"https://www.tablesgenerator."
"com/markdown_tables\" rel=\"noreferrer noopener\" target=\"_blank\">deze</a> "
"te gebruiken."
@@ -1513,10 +1502,8 @@ msgid "Back"
msgstr "Terug"
#: .\cookbook\templates\property_editor.html:7
#, fuzzy
#| msgid "Ingredient Editor"
msgid "Property Editor"
msgstr "Ingrediënten editor"
msgstr "Eigenschappen Editor"
#: .\cookbook\templates\recipe_view.html:36
msgid "Comments"
@@ -1856,7 +1843,7 @@ msgstr "Perfect voor grote databases"
#: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5
msgid "Cookbook Setup"
msgstr "Kookboek Setup"
msgstr "Kookboek configuratie"
#: .\cookbook\templates\setup.html:14
msgid "Setup"
@@ -1973,10 +1960,8 @@ msgid "Sign in using"
msgstr "Log in met"
#: .\cookbook\templates\space_manage.html:7
#, fuzzy
#| msgid "Space Membership"
msgid "Space Management"
msgstr "Space Lidmaatschap"
msgstr "Ruimte Management"
#: .\cookbook\templates\space_manage.html:26
msgid "Space:"
@@ -2072,6 +2057,10 @@ msgid ""
"script to generate version information (done automatically in docker).\n"
" "
msgstr ""
"\n"
" Je moet <code>version.py</code> uitvoeren in je update script om "
"versie informatie te genereren (gebeurt automatisch in docker).\n"
" "
#: .\cookbook\templates\system.html:46
msgid "Media Serving"
@@ -2158,7 +2147,7 @@ msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
msgstr "Hosts met toestemming"
#: .\cookbook\templates\system.html:90
msgid ""
@@ -2168,6 +2157,11 @@ msgid ""
"this.\n"
" "
msgstr ""
"\n"
" Jouw 'hosts met toestemming' zijn geconfigureerd om alle hosts "
"toestemming te geven. Dit is in niet altijd fout maar zou eigenlijk "
"voorkomen moeten worden. Raadpleeg de documentatie hiervoor.\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
@@ -2178,10 +2172,8 @@ msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Gebruik fracties"
msgstr "Migraties"
#: .\cookbook\templates\system.html:116
msgid ""
@@ -2194,93 +2186,103 @@ msgid ""
"issue.\n"
" "
msgstr ""
"\n"
" Migraties mogen nooit mislukken!\n"
" Mislukte migraties zullen er waarschijnlijk voor zorgen dat "
"grote delen van de app niet correct werken.\n"
" Als een migratie mislukt, zorg er dan voor dat de applicatie de "
"nieuwste versie is, blijft het probleem bestaan, plaats dan het "
"migratielogboek en het onderstaande overzicht in een GitHub-issue.\n"
" "
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
msgstr "Niet waar"
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
msgstr "Waar"
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
msgstr "Verberg"
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
msgstr "Toon Log"
msgstr "Toon"
#: .\cookbook\templates\url_import.html:8
msgid "URL Import"
msgstr "Importeer URL"
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parameter updatet_at is onjuist geformateerd"
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Er bestaat geen {self.basename} met id {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238 .\cookbook\views\api.py:239
msgid "Cannot merge with the same object!"
msgstr "Kan niet met hetzelfde object samenvoegen!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245 .\cookbook\views\api.py:246
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Er bestaat geen {self.basename} met id {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250 .\cookbook\views\api.py:251
msgid "Cannot merge with child object!"
msgstr "Kan niet met kindobject samenvoegen!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288 .\cookbook\views\api.py:289
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} is succesvol samengevoegd met {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293 .\cookbook\views\api.py:294
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Er is een error opgetreden bij het samenvoegen van {source.name} met {target."
"name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349 .\cookbook\views\api.py:350
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} is succesvol verplaatst naar het hoogste niveau."
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
msgid "An error occurred attempting to move "
msgstr "Er is een error opgetreden bij het verplaatsen "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355 .\cookbook\views\api.py:356
msgid "Cannot move an object to itself!"
msgstr "Kan object niet verplaatsen naar zichzelf!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361 .\cookbook\views\api.py:362
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Er bestaat geen {self.basename} met id {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367 .\cookbook\views\api.py:368
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} is succesvol verplaatst naar {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589 .\cookbook\views\api.py:590
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} is verwijderd van het boodschappenlijstje."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050 .\cookbook\views\api.py:595
#: .\cookbook\views\api.py:1038 .\cookbook\views\api.py:1051
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} is toegevoegd aan het boodschappenlijstje."
@@ -2288,30 +2290,29 @@ msgstr "{obj.name} is toegevoegd aan het boodschappenlijstje."
#: .\cookbook\views\api.py:743
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filter maaltijdplannen vanaf datum (inclusief) in het formaat JJJJ-MM-DD."
#: .\cookbook\views\api.py:744
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filter maaltijdplannen tot nu toe (inclusief) in het formaat JJJJ-MM-DD."
#: .\cookbook\views\api.py:745
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
"ID van het recept waar de stap onderdeel van is. Herhaal parameter voor "
"meerdere."
"Filter maaltijdplannen met MealType ID. Herhaal parameter voor meerdere."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872 .\cookbook\views\api.py:873
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"ID van het recept waar de stap onderdeel van is. Herhaal parameter voor "
"meerdere."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873 .\cookbook\views\api.py:874
msgid "Query string matched (fuzzy) against object name."
msgstr "Zoekterm komt overeen (fuzzy) met object naam."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909 .\cookbook\views\api.py:910
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2319,7 +2320,7 @@ msgstr ""
"Zoekterm komt overeen (fuzzy) met recept naam. In de toekomst wordt zoeken "
"op volledige tekst ondersteund."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910 .\cookbook\views\api.py:911
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2327,109 +2328,115 @@ msgstr ""
"ID van etiket dat een recept moet hebben. Herhaal parameter voor meerdere. "
"Gelijkwaardig aan keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911 .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Etiket ID, herhaal voor meerdere. Geeft recepten met elk geselecteerd etiket "
"weer"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912 .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Etiket ID, herhaal voor meerdere. Geeft recepten met alle geselecteerde "
"etiketten weer."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913 .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Etiket ID, herhaal voor meerdere. Sluit recepten met één van de etiketten "
"uit."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914 .\cookbook\views\api.py:915
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Etiket ID, herhaal voor meerdere. Sluit recepten met alle etiketten uit."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915 .\cookbook\views\api.py:916
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID van ingrediënt dat een recept moet hebben. Herhaal parameter voor "
"meerdere."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916 .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Ingrediënt ID, herhaal voor meerdere. Geeft recepten met elk ingrediënt weer"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917 .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Ingrediënt ID, herhaal voor meerdere. Geef recepten met alle ingrediënten "
"weer."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918 .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Ingrediënt ID, herhaal voor meerdere. sluit recepten met één van de "
"ingrediënten uit."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919 .\cookbook\views\api.py:920
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Ingrediënt ID, herhaal voor meerdere. Sluit recepten met alle ingrediënten "
"uit."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920 .\cookbook\views\api.py:921
msgid "ID of unit a recipe should have."
msgstr "ID van eenheid dat een recept moet hebben."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921 .\cookbook\views\api.py:922
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr "Een waardering van een recept gaat van 0 tot 5."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922 .\cookbook\views\api.py:923
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"ID van boek dat een recept moet hebben. Herhaal parameter voor meerdere."
"ID van een kookboek dat een recept moet bevatten. Herhaal parameter voor "
"meerdere."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923 .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr "Boek ID, herhaal voor meerdere. Geeft recepten uit alle boeken weer"
msgstr ""
"Kookboek ID, herhaal voor meerdere. Geeft recepten uit de geselecteerde "
"kookboeken weer"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924 .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr "Boek IDs, herhaal voor meerdere. Geeft recepten weer uit alle boeken."
msgstr ""
"Kookboek IDs, herhaal voor meerdere. Geeft recepten weer uit alle kookboeken."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925 .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Boek IDs, herhaal voor meerdere. Sluit recepten uit elk van de boeken uit."
"Kookboek IDs, herhaal voor meerdere. Sluit recepten uit elk van de "
"geselecteerde kookboeken uit."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926 .\cookbook\views\api.py:927
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr "Boek IDs, herhaal voor meerdere. Sluit recepten uit alle boeken uit."
msgstr ""
"Kookboek IDs, herhaal voor meerdere. Sluit recepten uit alle boeken uit."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927 .\cookbook\views\api.py:928
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
"Wanneer alleen interne recepten gevonden moeten worden. [waar/<b>onwaar</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928 .\cookbook\views\api.py:929
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
"Geeft de resultaten in willekeurige volgorde weer. [waar/<b>onwaar</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929 .\cookbook\views\api.py:930
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr "Geeft nieuwe resultaten eerst weer. [waar/<b>onwaar</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930 .\cookbook\views\api.py:931
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2437,7 +2444,7 @@ msgstr ""
"Filter recepten X maal of meer bereid. Negatieve waarden geven minder dan X "
"keer bereide recepten weer"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931 .\cookbook\views\api.py:932
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2445,7 +2452,7 @@ msgstr ""
"Filter recepten op laatst bereid op of na JJJJ-MM-DD. Voorafgaand - filters "
"op of voor datum."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932 .\cookbook\views\api.py:933
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2453,7 +2460,7 @@ msgstr ""
"Filter recepten aangemaakt op of na JJJJ-MM-DD. Voorafgaand - filters op of "
"voor datum."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933 .\cookbook\views\api.py:934
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2461,7 +2468,7 @@ msgstr ""
"Filter recepten op geüpdatet op of na JJJJ-MM-DD. Voorafgaand - filters op "
"of voor datum."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934 .\cookbook\views\api.py:935
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2469,13 +2476,13 @@ msgstr ""
"Filter recepten op laatst bekeken op of na JJJJ-MM-DD. Voorafgaand - filters "
"op of voor datum."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935 .\cookbook\views\api.py:936
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Filter recepten die bereid kunnen worden met ingrediënten die op voorraad "
"zijn. [waar/<b>onwaar</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122 .\cookbook\views\api.py:1123
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2484,78 +2491,71 @@ msgstr ""
"Meerdere waarden toegestaan."
#: .\cookbook\views\api.py:1126
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
#| "b>]<br> - recent includes unchecked items and recently completed items."
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
"Filter boodschappenlijstjes op aangevinkt. [waar,onwaar,beide,<b>recent</"
"Filter boodschappenlijstjes op aangevinkt. [waar, onwaar, beide,<b>recent</"
"b>]<br> - recent bevat niet aangevinkte en recent voltooide items."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128 .\cookbook\views\api.py:1129
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Geeft items op boodschappenlijstjes gesorteerd per supermarktcategorie weer."
#: .\cookbook\views\api.py:1211
msgid "Filter for entries with the given recipe"
msgstr ""
msgstr "Filter op vermeldingen met het gegeven recept"
#: .\cookbook\views\api.py:1293
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
#| "values allowed."
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
"Geeft het boodschappenlijstje item met een primaire sleutel van id. "
"Vraag de automatiseringen die overeenkomen met het automatiseringstype op. "
"Meerdere waarden toegestaan."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415 .\cookbook\views\api.py:1416
msgid "Nothing to do."
msgstr "Niks te doen."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445 .\cookbook\views\api.py:1443
msgid "Invalid Url"
msgstr "Ongeldige URL"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449 .\cookbook\views\api.py:1447
msgid "Connection Refused."
msgstr "Verbinding geweigerd."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451 .\cookbook\views\api.py:1449
msgid "Bad URL Schema."
msgstr "Verkeerd URL schema."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474 .\cookbook\views\api.py:1472
msgid "No usable data could be found."
msgstr "Er is geen bruikbare data gevonden."
#: .\cookbook\views\api.py:1547
msgid "File is above space limit"
msgstr ""
msgstr "Bestand is boven de ruimte limiet"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1564
msgid "Importing is not implemented for this provider"
msgstr "Importeren is voor deze provider niet geïmplementeerd"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#: .\cookbook\views\new.py:82 .\cookbook\views\api.py:1648
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Deze optie is nog niet beschikbaar in de gehoste versie van Tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671 .\cookbook\views\api.py:1669
msgid "Sync successful!"
msgstr "Synchronisatie succesvol!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674 .\cookbook\views\api.py:1672
msgid "Error synchronizing with Storage"
msgstr "Er is een fout opgetreden bij het synchroniseren met Opslag"
@@ -2583,10 +2583,8 @@ msgstr ""
"tenminste een Bewaker."
#: .\cookbook\views\delete.py:135
#, fuzzy
#| msgid "Storage Backend"
msgid "Connectors Config Backend"
msgstr "Opslag backend"
msgstr "Connectors Configuratie backend"
#: .\cookbook\views\delete.py:157
msgid "Invite Link"
@@ -2609,14 +2607,12 @@ msgid "There was an error updating this storage backend!"
msgstr "Er is een fout opgetreden bij het updaten van deze opslag backend!"
#: .\cookbook\views\edit.py:134
#, fuzzy
#| msgid "Changes saved!"
msgid "Config saved!"
msgstr "Wijzigingen opgeslagen!"
msgstr "Configuratie opgeslagen!"
#: .\cookbook\views\edit.py:142
msgid "ConnectorConfig"
msgstr ""
msgstr "ConnectorConfiguratie"
#: .\cookbook\views\edit.py:198
msgid "Changes saved!"
@@ -2647,10 +2643,8 @@ msgid "Shopping List"
msgstr "Boodschappenlijst"
#: .\cookbook\views\lists.py:77 .\cookbook\views\new.py:98
#, fuzzy
#| msgid "Storage Backend"
msgid "Connector Config Backend"
msgstr "Opslag backend"
msgstr "Connector Configuratie Backend"
#: .\cookbook\views\lists.py:91
msgid "Invite Links"
@@ -2674,13 +2668,11 @@ msgstr "Stappen"
#: .\cookbook\views\lists.py:270
msgid "Property Types"
msgstr ""
msgstr "Eigenschap Types"
#: .\cookbook\views\new.py:86
#, fuzzy
#| msgid "This feature is not available in the demo version!"
msgid "This feature is not enabled by the server admin!"
msgstr "Deze optie is niet beschikbaar in de demo versie!"
msgstr "Deze optie is niet ingeschakeld door de server administrator!"
#: .\cookbook\views\new.py:123
msgid "Imported new recipe!"
@@ -2696,11 +2688,9 @@ msgid "This feature is not available in the demo version!"
msgstr "Deze optie is niet beschikbaar in de demo versie!"
#: .\cookbook\views\views.py:74
#, fuzzy
#| msgid "You have reached the maximum number of recipes for your space."
msgid ""
"You have the reached the maximum amount of spaces that can be owned by you."
msgstr "Je hebt het maximaal aantal recepten voor jouw ruimte bereikt."
msgstr "Je hebt het maximaal aantal Ruimtes die jij kan aanmaken bereikt."
#: .\cookbook\views\views.py:89
msgid ""
@@ -2738,49 +2728,37 @@ msgstr "'Fuzzy' zoeken is niet te gebruiken met deze zoekmethode!"
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
"PostgreSQL %(v)s is verouderd. Upgrade naar een volledig ondersteunde "
"versie!"
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
msgstr "Je gebruikt PostgreSQL %(v1)s. PostgreSQL %(v2)s wordt aanbevolen"
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
msgstr "Kan PostgreSQL-versie niet bepalen."
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
#| " This application is not running with a Postgres database "
#| "backend. This is ok but not recommended as some\n"
#| " features only work with postgres databases.\n"
#| " "
msgid ""
"This application is not running with a Postgres database backend. This is ok "
"but not recommended as some features only work with postgres databases."
msgstr ""
"\n"
" Deze applicatie draait niet met een Postgres database als "
"backend. Dit is ok maar wordt niet aanbevolen omdat sommige functies \n"
" alleen werken met Postgres databases.\n"
" "
"Deze applicatie draait niet met een Postgres database als backend. Dit is ok "
"maar wordt niet aanbevolen omdat sommige functies alleen werken met Postgres "
"databases."
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
#| "forgotten your superuser credentials please consult the django "
#| "documentation on how to reset passwords."
msgid ""
"The setup page can only be used to create the first "
"user! If you have forgotten your superuser credentials "
"please consult the django documentation on how to reset passwords."
msgstr ""
"De setup pagina kan alleen gebruikt worden om de eerste gebruiker aan te "
"maken! Indien je de superuser inloggegevens bent vergeten zal je de django "
"documentatie raad moeten plegen voor een methode om je wachtwoord te "
"resetten."
"maken! Indien je de superuser inloggegevens bent "
"vergeten zal je de django documentatie moeten raadplegen voor een methode om "
"je wachtwoord te resetten."
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
@@ -2820,7 +2798,7 @@ msgstr ""
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
msgstr "Beheer recepten, boodschappen lijstjes, maaltijdplannen en meer."
#: .\cookbook\views\views.py:458
msgid "Plan"
@@ -2828,17 +2806,15 @@ msgstr "Plan"
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
msgstr "Bekijk jouw maaltijdplan"
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
msgstr "Bekijk jouw kookboeken"
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"
msgstr "Nieuwe boodschappenlijst"
msgstr "Bekijk jouw boodschappenlijst"
#~ msgid "Default unit"
#~ msgstr "Standaard eenheid"
@@ -2946,8 +2922,8 @@ msgstr "Nieuwe boodschappenlijst"
#~ "You can use markdown to format this field. See the <a href=\"/docs/"
#~ "markdown/\">docs here</a>"
#~ msgstr ""
#~ "Je kunt markdown gebruiken om dit veld te op te maken. Bekijk de <a href="
#~ "\"/docs/markdown/\">documentatie hier</a>"
#~ "Je kunt markdown gebruiken om dit veld te op te maken. Bekijk de <a "
#~ "href=\"/docs/markdown/\">documentatie hier</a>"
#~ msgid ""
#~ "Users will see all items you add to your shopping list. They must add "

View File

@@ -10,19 +10,19 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-03-19 23:47+0000\n"
"Last-Translator: Tomasz Klimczak <klemensble@gmail.com>\n"
"Language-Team: Polish <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/pl/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-01-26 05:58+0000\n"
"Last-Translator: Dominik Ruczajewski <slick.moose.dev@gmail.com>\n"
"Language-Team: Polish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"X-Generator: Weblate 5.4.2\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && ("
"n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -65,6 +65,8 @@ msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Aby zapobiec duplikatom, przepisy o tej samej nazwie co istniejące zostaną "
"pominięte. Zaznacz to pole, aby zaimportować wszystko."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
@@ -91,14 +93,16 @@ msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> dla Twojej instancji Home Assistant"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "Coś w stylu http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "na przykład http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -106,11 +110,11 @@ msgstr "Magazyn"
#: .\cookbook\forms.py:222
msgid "Active"
msgstr ""
msgstr "Aktywuj"
#: .\cookbook\forms.py:226
msgid "Search String"
msgstr "Wyszukaj ciąg"
msgstr "Wyszukaj tekst"
#: .\cookbook\forms.py:246
msgid "File ID"
@@ -118,101 +122,117 @@ msgstr "Numer identyfikacyjny pliku"
#: .\cookbook\forms.py:262
msgid "Maximum number of users for this space reached."
msgstr ""
msgstr "Osiągnięto maksymalną liczbę użytkowników dla tej przestrzeni."
#: .\cookbook\forms.py:268
msgid "Email address already taken!"
msgstr ""
msgstr "Wybrany adres email jest już zajęty!"
#: .\cookbook\forms.py:275
msgid ""
"An email address is not required but if present the invite link will be sent "
"to the user."
msgstr ""
"Adres email nie jest wymagany, jednak gdy zostanie podany link z "
"zaproszeniem zostanie wysłany do użytkownika."
#: .\cookbook\forms.py:287
msgid "Name already taken."
msgstr ""
msgstr "Podana nazwa jest już zajęta."
#: .\cookbook\forms.py:298
msgid "Accept Terms and Privacy"
msgstr ""
msgstr "Zaakceptuj Regulamin oraz Politykę Prywatności"
#: .\cookbook\forms.py:332
msgid ""
"Determines how fuzzy a search is if it uses trigram similarity matching (e."
"g. low values mean more typos are ignored)."
msgstr ""
"Określa, jak niedokładne może być wyszukiwanie, jeśli wykorzystuje "
"dopasowanie podobieństwa trigramowego (np. niskie wartości oznaczają, że "
"więcej literówek jest ignorowanych)."
#: .\cookbook\forms.py:340
msgid ""
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
"full description of choices."
msgstr ""
"Wybierz metodę wyszukiwania. Kliknij <a href=\"/docs/search/\">tutaj</a>, "
"aby zapoznać się z pełnym opisem dostępnych opcji."
#: .\cookbook\forms.py:341
msgid ""
"Use fuzzy matching on units, keywords and ingredients when editing and "
"importing recipes."
msgstr ""
"Użyj niedokładnego dopasowywania dla jednostek, słów kluczowych i składników "
"podczas edytowania i importowania przepisów."
#: .\cookbook\forms.py:342
msgid ""
"Fields to search ignoring accents. Selecting this option can improve or "
"degrade search quality depending on language"
msgstr ""
"Pola do przeszukiwania z pominięciem akcentów. Wybranie tej opcji może "
"poprawić lub pogorszyć jakość wyszukiwania w zależności od języka"
#: .\cookbook\forms.py:343
msgid ""
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
"'pie' and 'piece' and 'soapie')"
msgstr ""
"Pola do przeszukiwania częściowych dopasowań (np. wyszukiwanie 'Ciasto' "
"zwróci 'ciasto', 'ciasteczko' i 'ciastolina')"
#: .\cookbook\forms.py:344
msgid ""
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
"will return 'salad' and 'sandwich')"
msgstr ""
"Pola do przeszukiwania dopasowań na początku wyrazu (np. wyszukiwanie 'sa' "
"zwróci 'sałatka' i 'sandwich')"
#: .\cookbook\forms.py:345
msgid ""
"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) "
"Note: this option will conflict with 'web' and 'raw' methods of search."
msgstr ""
"Pola do wyszukiwania z użyciem 'niedokładnego' dopasowywania (np. "
"wyszukiwanie 'przepisz' znajdzie 'przepis'). Uwaga: ta opcja będzie "
"kolidować z metodami wyszukiwania 'web' i 'raw'."
#: .\cookbook\forms.py:346
msgid ""
"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods "
"only function with fulltext fields."
msgstr ""
"Pola do wyszukiwania pełno tekstowego. Uwaga: metody wyszukiwania 'web', "
"'phrase' i 'raw' działają wyłącznie z polami pełno tekstowymi."
#: .\cookbook\forms.py:350
#, fuzzy
#| msgid "Search"
msgid "Search Method"
msgstr "Szukaj"
msgstr "Metoda wyszukiwania"
#: .\cookbook\forms.py:350
msgid "Fuzzy Lookups"
msgstr ""
msgstr "Niedokładne dopasowanie"
#: .\cookbook\forms.py:350
msgid "Ignore Accent"
msgstr ""
msgstr "Ignoruj akcenty"
#: .\cookbook\forms.py:350
msgid "Partial Match"
msgstr ""
msgstr "Częściowe dopasowanie"
#: .\cookbook\forms.py:350
msgid "Starts With"
msgstr ""
msgstr "Zaczyna się od"
#: .\cookbook\forms.py:351
#, fuzzy
#| msgid "Search"
msgid "Fuzzy Search"
msgstr "Szukaj"
msgstr "Niedokładne wyszukiwanie"
#: .\cookbook\forms.py:351
#, fuzzy
@@ -225,6 +245,8 @@ msgid ""
"In order to prevent spam, the requested email was not send. Please wait a "
"few minutes and try again."
msgstr ""
"Aby zapobiec spamowi, żądany e-mail nie został wysłany. Proszę poczekać "
"kilka minut i spróbować ponownie."
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
@@ -255,57 +277,57 @@ msgstr ""
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
msgstr ""
msgstr "Osiągnąłeś maksymalną liczbę przepisów dla swojej przestrzeni."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
msgstr ""
msgstr "Masz więcej użytkowników, niż jest dozwolone w Twojej przestrzeni."
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
msgstr "rotacja wsteczna"
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
msgstr "delikatna rotacja"
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
msgstr "zagnieść"
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
msgstr "zagęścić"
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
msgstr "podgrzać"
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
msgstr "doprowadzić do wrzenia"
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
msgstr "gotować w próżni"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
msgstr ""
msgstr "Musisz podać wielkość porcji"
#: .\cookbook\helper\template_helper.py:95
#: .\cookbook\helper\template_helper.py:97
msgid "Could not parse template code."
msgstr ""
msgstr "Nie można przeanalizować kodu szablonu."
#: .\cookbook\integration\copymethat.py:44
#: .\cookbook\integration\melarecipes.py:37
msgid "Favorite"
msgstr ""
msgstr "Ulubione"
#: .\cookbook\integration\copymethat.py:50
msgid "I made this"
msgstr ""
msgstr "Stworzyłem to"
#: .\cookbook\integration\integration.py:209
msgid ""
@@ -320,10 +342,12 @@ msgid ""
"An unexpected error occurred during the import. Please make sure you have "
"uploaded a valid file."
msgstr ""
"Wystąpił nieoczekiwany błąd podczas importu. Upewnij się, że przesłałeś "
"prawidłowy plik."
#: .\cookbook\integration\integration.py:217
msgid "The following recipes were ignored because they already existed:"
msgstr ""
msgstr "Następujące przepisy zostały pominięte, ponieważ już istnieją:"
#: .\cookbook\integration\integration.py:221
#, python-format
@@ -341,14 +365,12 @@ msgid "Notes"
msgstr "Notatka"
#: .\cookbook\integration\paprika.py:52
#, fuzzy
#| msgid "Information"
msgid "Nutritional Information"
msgstr "Informacja"
msgstr "Informacje o wartości odżywczej"
#: .\cookbook\integration\paprika.py:56
msgid "Source"
msgstr ""
msgstr "Źródło"
#: .\cookbook\integration\recettetek.py:54
#: .\cookbook\integration\recipekeeper.py:70
@@ -377,23 +399,25 @@ msgstr "Sekcja"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Poprawia potrawy z "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
msgstr ""
msgstr "Odbudowuje indeks wyszukiwania pełno tekstowego dla przepisu"
#: .\cookbook\management\commands\rebuildindex.py:18
msgid "Only Postgresql databases use full text search, no index to rebuild"
msgstr ""
"Pełno tekstowe wyszukiwanie jest używane tylko w bazach danych PostgreSQL, "
"brak indeksu do odbudowy"
#: .\cookbook\management\commands\rebuildindex.py:29
msgid "Recipe index rebuild complete."
msgstr ""
msgstr "Odbudowa indeksu przepisu zakończona."
#: .\cookbook\management\commands\rebuildindex.py:31
msgid "Recipe index rebuild failed."
msgstr ""
msgstr "Odbudowa indeksu przepisu nie powiodła się."
#: .\cookbook\migrations\0047_auto_20200602_1133.py:14
msgid "Breakfast"
@@ -412,8 +436,6 @@ msgid "Other"
msgstr "Inne"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#, fuzzy
#| msgid "Fats"
msgid "Fat"
msgstr "Tłuszcze"
@@ -421,7 +443,7 @@ msgstr "Tłuszcze"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
msgid "g"
msgstr ""
msgstr "g"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
msgid "Carbohydrates"
@@ -437,13 +459,15 @@ msgstr "Kalorie"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
msgid "kcal"
msgstr ""
msgstr "kcal"
#: .\cookbook\models.py:325
msgid ""
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
"upload."
msgstr ""
"Maksymalna pojemność na pliki dla przestrzeni w MB. 0 oznacza brak limitu, -"
"1 wyłącza możliwość przesyłania plików."
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
@@ -2108,290 +2132,290 @@ msgstr "Wyświetl pomoc"
msgid "URL Import"
msgstr "Importuj z URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Nieprawidłowo sformatowany parametr filter_list"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nie można scalić tego samego obiektu!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Nie można scalić tego samego obiektu!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Nie znaleziono żadnych przydatnych danych."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr "Plik przekracza limit miejsca"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importowanie dla tego usługodawcy nie zostało zaimplementowane"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Ta funkcja nie jest jeszcze dostępna w hostowanej wersji tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronizacja powiodła się!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Błąd synchronizacji z magazynem"

View File

@@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-10-07 18:02+0000\n"
"Last-Translator: Guilherme Roda <glealroda@gmail.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-02-21 10:58+0000\n"
"Last-Translator: Filipe Neves <homemdasneves@gmail.com>\n"
"Language-Team: Portuguese <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/pt/>\n"
"Language: pt\n"
@@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -94,14 +94,16 @@ msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Token de longa duração</a>para a sua instância HomeAssistant"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "Algo como http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "http://homeassistant.local:8123/api por exemplo"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -181,18 +183,25 @@ msgid ""
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
"'pie' and 'piece' and 'soapie')"
msgstr ""
"Campos a pesquisar por correspondência. (Ex: pesquisar por 'mor' retorna "
"'morango' e 'amora')"
#: .\cookbook\forms.py:344
msgid ""
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
"will return 'salad' and 'sandwich')"
msgstr ""
"Campos a pesquisar para correspondências no início da palavra. (por exemplo, "
"pesquisar por \"sa\" retornará \"salada\" e \"sanduíche\")"
#: .\cookbook\forms.py:345
msgid ""
"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) "
"Note: this option will conflict with 'web' and 'raw' methods of search."
msgstr ""
"Campos para pesquisa aproximada. (por exemplo, pesquisar por \"recita\" "
"encontrará \"receita\"). Nota: esta opção entra em conflito com os métodos "
"de pesquisa \"web\" e \"raw\"."
#: .\cookbook\forms.py:346
msgid ""
@@ -206,19 +215,19 @@ msgstr "Método de Pesquisa"
#: .\cookbook\forms.py:350
msgid "Fuzzy Lookups"
msgstr ""
msgstr "Pesquisas Aproximadas"
#: .\cookbook\forms.py:350
msgid "Ignore Accent"
msgstr ""
msgstr "Ignorar pronúncia"
#: .\cookbook\forms.py:350
msgid "Partial Match"
msgstr ""
msgstr "Correspondência parcial"
#: .\cookbook\forms.py:350
msgid "Starts With"
msgstr ""
msgstr "Começa com"
#: .\cookbook\forms.py:351
msgid "Fuzzy Search"
@@ -233,6 +242,8 @@ msgid ""
"In order to prevent spam, the requested email was not send. Please wait a "
"few minutes and try again."
msgstr ""
"Para evitar spam, o email solicitado não foi enviado. Por favor, aguarde "
"alguns minutos e tente novamente."
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
@@ -257,11 +268,11 @@ msgstr "Sem permissões para aceder a esta página!"
#: .\cookbook\helper\permission_helper.py:237
#: .\cookbook\helper\permission_helper.py:252
msgid "You cannot interact with this object as it is not owned by you!"
msgstr ""
msgstr "Não pode interagir com este objeto, pois não é seu!"
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
msgstr ""
msgstr "Atingiu o número máximo de receitas para o seu espaço."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
@@ -1989,286 +2000,286 @@ msgstr "Mostrar Log"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1934,286 +1934,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,18 +7,18 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-05-01 07:55+0000\n"
"Last-Translator: axeron2036 <admin@axeron2036.ru>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-11-12 17:58+0000\n"
"Last-Translator: Владислав <vlad@kelonmyosa.ru>\n"
"Language-Team: Russian <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.15\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -454,17 +454,17 @@ msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
msgstr "План питания"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Книги"
msgstr "Книги рецептов"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
msgstr "Покупки"
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
@@ -929,7 +929,7 @@ msgstr ""
#: .\cookbook\templates\base.html:110 .\cookbook\templates\index.html:87
msgid "Recipes"
msgstr ""
msgstr "Рецепты"
#: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120
msgid "Foods"
@@ -1969,286 +1969,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-03-11 13:02+0000\n"
"Last-Translator: Kn <kn@users.noreply.translate.tandoor.dev>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-02-07 08:58+0000\n"
"Last-Translator: Mattias G <mattias.granlund@gmail.com>\n"
"Language-Team: Swedish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/sv/>\n"
"Language: sv\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -151,48 +151,61 @@ msgid ""
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
"full description of choices."
msgstr ""
"Välj typ av sökmetod. Klicka <a href=\"/docs/search/\">här</a> för "
"fullständig beskrivning av alternativen."
#: .\cookbook\forms.py:341
msgid ""
"Use fuzzy matching on units, keywords and ingredients when editing and "
"importing recipes."
msgstr ""
"Använd \"fuzzy\" matchning på enheter, nyckelord och ingredienser när du "
"redigerar och importerar recept."
#: .\cookbook\forms.py:342
msgid ""
"Fields to search ignoring accents. Selecting this option can improve or "
"degrade search quality depending on language"
msgstr ""
"Fält att söka medan man ignorerar accenter. Val av detta alternativ kan "
"förbättra eller försämra sökkvaliteten beroende på språk"
#: .\cookbook\forms.py:343
msgid ""
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
"'pie' and 'piece' and 'soapie')"
msgstr ""
"Fält att söka efter delvisa matchningar. (t.ex. att söka efter 'Pie' kommer "
"att returnera 'pie' och 'piece' och 'soapie')"
#: .\cookbook\forms.py:344
msgid ""
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
"will return 'salad' and 'sandwich')"
msgstr ""
"Fält att söka för matchningar i början av ord. (t.ex. att söka efter 'sa' "
"kommer att returnera 'salad' och 'sandwich')"
#: .\cookbook\forms.py:345
msgid ""
"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) "
"Note: this option will conflict with 'web' and 'raw' methods of search."
msgstr ""
"Fält för 'fuzzy'-sökning. (t.ex. att söka efter 'recpie' kommer att hitta "
"'recipe'.Observera: detta alternativet kommer att komma i konflikt med "
"sökmetoderna 'web' och 'raw'.)"
#: .\cookbook\forms.py:346
msgid ""
"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods "
"only function with fulltext fields."
msgstr ""
"Fält för fulltextsökning. Observera: Sökmetoderna 'web', 'phrase' och 'raw' "
"fungerar endast med fulltextfält."
#: .\cookbook\forms.py:350
#, fuzzy
#| msgid "Search"
msgid "Search Method"
msgstr "Sök"
msgstr "Sök Metod"
#: .\cookbook\forms.py:350
msgid "Fuzzy Lookups"
@@ -211,22 +224,20 @@ msgid "Starts With"
msgstr "Börjar med"
#: .\cookbook\forms.py:351
#, fuzzy
#| msgid "Search"
msgid "Fuzzy Search"
msgstr "Sök"
msgstr "Fuzzy Sök"
#: .\cookbook\forms.py:351
#, fuzzy
#| msgid "Text"
msgid "Full Text"
msgstr "Text"
msgstr "Hel Text"
#: .\cookbook\helper\AllAuthCustomAdapter.py:41
msgid ""
"In order to prevent spam, the requested email was not send. Please wait a "
"few minutes and try again."
msgstr ""
"För att förhindra spam, så skickades inte den begärda e-posten. Vänta några "
"minuter och försök igen."
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
@@ -255,19 +266,19 @@ msgstr "Du kan inte interagera med detta objekt för att det ägs inte av dig!"
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
msgstr ""
msgstr "Du har nått det maximala antalet recept för din utrymme."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
msgstr ""
msgstr "Du har mer användare än tillåtet för ditt utrymme."
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
msgstr "återvänd rotering"
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
msgstr "försiktig rotering"
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
@@ -291,7 +302,7 @@ msgstr "sous-vide"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
msgstr ""
msgstr "Du måste ange en portionstorlek"
#: .\cookbook\helper\template_helper.py:95
#: .\cookbook\helper\template_helper.py:97
@@ -305,7 +316,7 @@ msgstr "Favorit"
#: .\cookbook\integration\copymethat.py:50
msgid "I made this"
msgstr ""
msgstr "Jag gjorde den här"
#: .\cookbook\integration\integration.py:209
msgid ""
@@ -319,6 +330,8 @@ msgid ""
"An unexpected error occurred during the import. Please make sure you have "
"uploaded a valid file."
msgstr ""
"Ett oväntat fel uppstod under importeringen. Se till att du har laddat upp "
"en giltig fil."
#: .\cookbook\integration\integration.py:217
msgid "The following recipes were ignored because they already existed:"
@@ -330,10 +343,8 @@ msgid "Imported %s recipes."
msgstr "Importerade %s recept."
#: .\cookbook\integration\openeats.py:28
#, fuzzy
#| msgid "Recipe Home"
msgid "Recipe source:"
msgstr "Recept Hem"
msgstr "Recept källa:"
#: .\cookbook\integration\paprika.py:49
msgid "Notes"
@@ -374,23 +385,25 @@ msgstr "Sektion"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Korrigerar livsmedel med "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
msgstr ""
msgstr "Återuppbygger fulltextsökningens index för Recept"
#: .\cookbook\management\commands\rebuildindex.py:18
msgid "Only Postgresql databases use full text search, no index to rebuild"
msgstr ""
"Endast Postgresql-databaser använder fulltextsökning, inget index att "
"återuppbygga med"
#: .\cookbook\management\commands\rebuildindex.py:29
msgid "Recipe index rebuild complete."
msgstr ""
msgstr "Recept index återbyggning färdig."
#: .\cookbook\management\commands\rebuildindex.py:31
msgid "Recipe index rebuild failed."
msgstr ""
msgstr "Recept index återbyggning misslyckades."
#: .\cookbook\migrations\0047_auto_20200602_1133.py:14
msgid "Breakfast"
@@ -439,6 +452,8 @@ msgid ""
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
"upload."
msgstr ""
"Maximal lagringsutrymme för utrymme i MB. 0 för obegränsad, -1 för att "
"inaktivera filuppladdning."
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
@@ -462,7 +477,7 @@ msgstr "Handla"
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
msgstr " är en del av ett receptsteg och kan inte tas bort"
#: .\cookbook\models.py:918
msgid "Nutrition"
@@ -501,34 +516,24 @@ msgid "Food Alias"
msgstr "Alternativt namn för mat"
#: .\cookbook\models.py:1468
#, fuzzy
#| msgid "Units"
msgid "Unit Alias"
msgstr "Enheter"
msgstr "Enhetsalias"
#: .\cookbook\models.py:1469
#, fuzzy
#| msgid "Keywords"
msgid "Keyword Alias"
msgstr "Nyckelord"
msgstr "Nyckelordsalias"
#: .\cookbook\models.py:1470
#, fuzzy
#| msgid "Description"
msgid "Description Replace"
msgstr "Beskrivning"
msgstr "Beskrivning Ersätt"
#: .\cookbook\models.py:1471
#, fuzzy
#| msgid "Instructions"
msgid "Instruction Replace"
msgstr "Instruktioner"
msgstr "Instruktioner Ersätt"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Ny enhet"
msgstr "Aldrig Enhet"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
@@ -539,14 +544,12 @@ msgid "Food Replace"
msgstr "Ersätt mat"
#: .\cookbook\models.py:1475
#, fuzzy
#| msgid "Edit Recipe"
msgid "Unit Replace"
msgstr "Redigera recept"
msgstr "Ersätt Enhet"
#: .\cookbook\models.py:1476
msgid "Name Replace"
msgstr ""
msgstr "Ersättningsnamn"
#: .\cookbook\models.py:1503 .\cookbook\views\delete.py:40
#: .\cookbook\views\edit.py:210 .\cookbook\views\new.py:39
@@ -563,15 +566,15 @@ msgstr "Nyckelord"
#: .\cookbook\serializer.py:222
msgid "File uploads are not enabled for this Space."
msgstr ""
msgstr "Filuppladdning är inte aktiverat för det här utrymmet."
#: .\cookbook\serializer.py:233
msgid "You have reached your file upload limit."
msgstr ""
msgstr "Du har nått din maxgräns för uppladdningar."
#: .\cookbook\serializer.py:328
msgid "Cannot modify Space owner permission."
msgstr ""
msgstr "Kan inte modifiera utrymmets ägar-rättigheter."
#: .\cookbook\serializer.py:1270
msgid "Hello"
@@ -579,56 +582,61 @@ msgstr "Hej"
#: .\cookbook\serializer.py:1270
msgid "You have been invited by "
msgstr ""
msgstr "Du har bjudits in av "
#: .\cookbook\serializer.py:1272
msgid " to join their Tandoor Recipes space "
msgstr ""
msgstr " för att ansluta till deras Tandoor recept utrymme "
#: .\cookbook\serializer.py:1274
msgid "Click the following link to activate your account: "
msgstr ""
msgstr "Klicka på länken för att aktivera ditt konto: "
#: .\cookbook\serializer.py:1276
msgid ""
"If the link does not work use the following code to manually join the space: "
msgstr ""
"Om länken inte fungerar kan du testa följande kod för att manuellt aktivera "
"ditt utrymme: "
#: .\cookbook\serializer.py:1278
msgid "The invitation is valid until "
msgstr ""
msgstr "Inbjudningen är giltig till "
#: .\cookbook\serializer.py:1280
msgid ""
"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub "
msgstr ""
"Tandoor recept är en recept-hanterar med öppen källkod. Se mer på GitHub "
#: .\cookbook\serializer.py:1283
msgid "Tandoor Recipes Invite"
msgstr ""
msgstr "Tandoor recept inbjudan"
#: .\cookbook\serializer.py:1426
msgid "Existing shopping list to update"
msgstr ""
msgstr "Existerande inköpslistor att uppdatera"
#: .\cookbook\serializer.py:1428
msgid ""
"List of ingredient IDs from the recipe to add, if not provided all "
"ingredients will be added."
msgstr ""
"Lista med ingrediens ID:n från receptet att lägga till, om inget angetts "
"kommer alla ingredienser bli tillagda."
#: .\cookbook\serializer.py:1430
msgid ""
"Providing a list_recipe ID and servings of 0 will delete that shopping list."
msgstr ""
msgstr "Anges ett list_recept ID och 0 portioner kommer den listan raderas."
#: .\cookbook\serializer.py:1439
msgid "Amount of food to add to the shopping list"
msgstr ""
msgstr "Mängd av ingrediens att lägga till på inköpslistan"
#: .\cookbook\serializer.py:1441
msgid "ID of unit to use for the shopping list"
msgstr ""
msgstr "ID eller enhet att använda för inköpslistan"
#: .\cookbook\serializer.py:1443
msgid "When set to true will delete all food from active shopping lists."
@@ -678,7 +686,7 @@ msgstr "Email"
#: .\cookbook\templates\account\email.html:19
msgid "The following e-mail addresses are associated with your account:"
msgstr ""
msgstr "Följande epost-addresser är associerade med ditt konto:"
#: .\cookbook\templates\account\email.html:36
msgid "Verified"
@@ -693,14 +701,12 @@ msgid "Primary"
msgstr "Primär"
#: .\cookbook\templates\account\email.html:47
#, fuzzy
#| msgid "Make Header"
msgid "Make Primary"
msgstr "Skapa titel"
msgstr "Markera som primär"
#: .\cookbook\templates\account\email.html:49
msgid "Re-send Verification"
msgstr ""
msgstr "Sänd verifikationen igen"
#: .\cookbook\templates\account\email.html:50
#: .\cookbook\templates\generic\delete_template.html:57
@@ -2105,280 +2111,280 @@ msgstr "Visa hjälp"
msgid "URL Import"
msgstr "URL-import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parameter updated_at felaktigt formaterad"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Kan inte slås samman med samma objekt!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Kan inte slås samman med samma objekt!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Sidan kunde inte hittas."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importering är inte implementerad för denna leverantör"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2386,11 +2392,11 @@ msgstr "Importering är inte implementerad för denna leverantör"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Denna funktion är inte tillgänglig i demoversionen!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synkroniseringen lyckades!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Fel vid synkronisering med lagring"

View File

@@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-07-03 16:38+0000\n"
"Last-Translator: Taylan TATLI <uyelik-tandoor@tatli.me>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-01-20 05:20+0000\n"
"Last-Translator: Yigit <yigit.gungor@outlook.com>\n"
"Language-Team: Turkish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/tr/>\n"
"Language: tr\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -199,7 +199,7 @@ msgstr ""
#: .\cookbook\forms.py:350
msgid "Search Method"
msgstr ""
msgstr "Arama Metodu"
#: .\cookbook\forms.py:350
msgid "Fuzzy Lookups"
@@ -207,15 +207,15 @@ msgstr ""
#: .\cookbook\forms.py:350
msgid "Ignore Accent"
msgstr ""
msgstr "Harflerdeki Vurguları Görmezden Gel"
#: .\cookbook\forms.py:350
msgid "Partial Match"
msgstr ""
msgstr "Kısmi Eşleşme"
#: .\cookbook\forms.py:350
msgid "Starts With"
msgstr ""
msgstr "İle başlayan"
#: .\cookbook\forms.py:351
msgid "Fuzzy Search"
@@ -223,18 +223,20 @@ msgstr ""
#: .\cookbook\forms.py:351
msgid "Full Text"
msgstr ""
msgstr "Tam Metin"
#: .\cookbook\helper\AllAuthCustomAdapter.py:41
msgid ""
"In order to prevent spam, the requested email was not send. Please wait a "
"few minutes and try again."
msgstr ""
"İstenmeyen e-postayı önlemek için istenen e-posta gönderilemedi. Lütfen "
"birkaç dakika bekleyin ve tekrar deneyin."
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
msgid "You are not logged in and therefore cannot view this page!"
msgstr ""
msgstr "Giriş yapmadınız ve bu nedenle bu sayfayı görüntüleyemezsiniz!"
#: .\cookbook\helper\permission_helper.py:168
#: .\cookbook\helper\permission_helper.py:174
@@ -247,68 +249,68 @@ msgstr ""
#: .\cookbook\helper\permission_helper.py:341 .\cookbook\views\data.py:35
#: .\cookbook\views\views.py:127 .\cookbook\views\views.py:131
msgid "You do not have the required permissions to view this page!"
msgstr ""
msgstr "Bu sayfayı görüntülemek için gerekli izinlere sahip değilsiniz!"
#: .\cookbook\helper\permission_helper.py:192
#: .\cookbook\helper\permission_helper.py:215
#: .\cookbook\helper\permission_helper.py:237
#: .\cookbook\helper\permission_helper.py:252
msgid "You cannot interact with this object as it is not owned by you!"
msgstr ""
msgstr "Bu nesne size ait olmadığı için onunla etkileşime giremezsiniz!"
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
msgstr ""
msgstr "Alanınız için maksimum tarif sayısına ulaştınız."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
msgstr ""
msgstr "Alanınızda izin verilenden daha fazla kullanıcı var."
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
msgstr "ters dönüş"
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
msgstr "dikkatli dönüş"
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
msgstr "yoğur"
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
msgstr "kalınlaştır"
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
msgstr "ısıt"
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
msgstr "mayala"
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
msgstr "sous-vide"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
msgstr ""
msgstr "Bir porsiyon büyüklüğü vermelisiniz"
#: .\cookbook\helper\template_helper.py:95
#: .\cookbook\helper\template_helper.py:97
msgid "Could not parse template code."
msgstr ""
msgstr "Şablon kodu ayrıştırılamadı."
#: .\cookbook\integration\copymethat.py:44
#: .\cookbook\integration\melarecipes.py:37
msgid "Favorite"
msgstr ""
msgstr "Favori"
#: .\cookbook\integration\copymethat.py:50
msgid "I made this"
msgstr ""
msgstr "Bunu yaptım"
#: .\cookbook\integration\integration.py:209
msgid ""
@@ -324,28 +326,28 @@ msgstr ""
#: .\cookbook\integration\integration.py:217
msgid "The following recipes were ignored because they already existed:"
msgstr ""
msgstr "Aşağıdaki tarifler zaten mevcut olduğu için göz ardı edildi:"
#: .\cookbook\integration\integration.py:221
#, python-format
msgid "Imported %s recipes."
msgstr ""
msgstr "%s tarif içe aktarıldı."
#: .\cookbook\integration\openeats.py:28
msgid "Recipe source:"
msgstr ""
msgstr "Tarif kaynağı:"
#: .\cookbook\integration\paprika.py:49
msgid "Notes"
msgstr ""
msgstr "Notlar"
#: .\cookbook\integration\paprika.py:52
msgid "Nutritional Information"
msgstr ""
msgstr "Beslenme Bilgileri"
#: .\cookbook\integration\paprika.py:56
msgid "Source"
msgstr ""
msgstr "Kaynak"
#: .\cookbook\integration\recettetek.py:54
#: .\cookbook\integration\recipekeeper.py:70
@@ -354,23 +356,23 @@ msgstr ""
#: .\cookbook\integration\saffron.py:23
msgid "Servings"
msgstr ""
msgstr "Porsiyon"
#: .\cookbook\integration\saffron.py:25
msgid "Waiting time"
msgstr ""
msgstr "Bekleme süresi"
#: .\cookbook\integration\saffron.py:27
msgid "Preparation Time"
msgstr ""
msgstr "Hazırlık Süresi"
#: .\cookbook\integration\saffron.py:29 .\cookbook\templates\index.html:7
msgid "Cookbook"
msgstr ""
msgstr "Yemek kitabı"
#: .\cookbook\integration\saffron.py:31
msgid "Section"
msgstr ""
msgstr "Bölüm"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
@@ -383,6 +385,8 @@ msgstr ""
#: .\cookbook\management\commands\rebuildindex.py:18
msgid "Only Postgresql databases use full text search, no index to rebuild"
msgstr ""
"Yalnızca Postgresql veritabanları tam metin araması kullanır, yeniden "
"oluşturulacak dizin yoktur"
#: .\cookbook\management\commands\rebuildindex.py:29
msgid "Recipe index rebuild complete."
@@ -1955,286 +1959,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -7,18 +7,18 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2023-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-01-16 18:58+0000\n"
"Last-Translator: Anton Shevtsov <ashevtsovs@gmail.com>\n"
"Language-Team: Ukrainian <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.15\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.8.4\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -32,51 +32,55 @@ msgstr ""
#: .\cookbook\forms.py:62 .\cookbook\forms.py:246 .\cookbook\views\lists.py:103
msgid "Keywords"
msgstr ""
msgstr "Ключові слова"
#: .\cookbook\forms.py:62
msgid "Preparation time in minutes"
msgstr ""
msgstr "Час приготування у хвилинах"
#: .\cookbook\forms.py:62
msgid "Waiting time (cooking/baking) in minutes"
msgstr ""
msgstr "Час очікування (варіння/випічка) у хвилинах"
#: .\cookbook\forms.py:63 .\cookbook\forms.py:222 .\cookbook\forms.py:246
msgid "Path"
msgstr ""
msgstr "Шлях"
#: .\cookbook\forms.py:63
msgid "Storage UID"
msgstr ""
msgstr "UID сховища"
#: .\cookbook\forms.py:93
msgid "Default"
msgstr ""
msgstr "За замовчуванням"
#: .\cookbook\forms.py:121
msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Щоб запобігти дублюванням, рецепти з назвами, що вже існують, "
"ігноруватимуться. Установіть цей прапорець, щоб імпортувати все."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
msgstr ""
msgstr "Додайте ваш коментар: "
#: .\cookbook\forms.py:151
msgid "Leave empty for dropbox and enter app password for nextcloud."
msgstr ""
msgstr "Залиште порожнім для dropbox і введіть api ключі для nextcloud."
#: .\cookbook\forms.py:154
msgid "Leave empty for nextcloud and enter api token for dropbox."
msgstr ""
msgstr "Залиште порожнім для nextcloud і введіть api ключі для dropbox."
#: .\cookbook\forms.py:160
msgid ""
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
"php/webdav/</code> is added automatically)"
msgstr ""
"Залиште порожнім для dropbox і введіть лише базовий url для nextcloud "
"(<code>/remote.php/webdav/</code> буде додано автоматично)"
#: .\cookbook\forms.py:188
msgid ""
@@ -937,13 +941,13 @@ msgstr ""
#: .\cookbook\templates\ingredient_editor.html:7
#: .\cookbook\templates\ingredient_editor.html:13
msgid "Ingredient Editor"
msgstr ""
msgstr "Редактор Інгредієнтів"
#: .\cookbook\templates\base.html:275
#: .\cookbook\templates\export_response.html:7
#: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20
msgid "Export"
msgstr ""
msgstr "Експорт"
#: .\cookbook\templates\base.html:287
msgid "Properties"
@@ -1936,286 +1940,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2020-06-02 19:28+0000\n"
"Last-Translator: Hieu, 2021\n"
"Language-Team: Vietnamese (https://www.transifex.com/django-recipes/"
@@ -2025,288 +2025,288 @@ msgstr ""
msgid "URL Import"
msgstr "Nhập URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Không thể tìm thấy trang được yêu cầu."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Đồng bộ thành công!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-08 17:43+0200\n"
"PO-Revision-Date: 2024-02-15 03:19+0000\n"
"Last-Translator: dalan <xzdlj@outlook.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-11-04 10:29+0000\n"
"Last-Translator: Johnny Ip <ip.iohnny@gmail.com>\n"
"Language-Team: Chinese (Simplified) <http://translate.tandoor.dev/projects/"
"tandoor/recipes-backend/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -86,14 +86,16 @@ msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"您的HomeAssistant示例的<a href=\"https://www.home-assistant.io/docs/"
"authentication/#your-account-profile\">长期访问令牌</a>"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "形如 http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "例如 http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -356,7 +358,7 @@ msgstr "准备时间"
#: .\cookbook\integration\saffron.py:29 .\cookbook\templates\index.html:7
msgid "Cookbook"
msgstr "菜谱"
msgstr "烹饪手册"
#: .\cookbook\integration\saffron.py:31
msgid "Section"
@@ -364,7 +366,7 @@ msgstr "部分"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "修复食谱中的重复字段 "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
@@ -400,29 +402,29 @@ msgstr "其他"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
msgid "Fat"
msgstr ""
msgstr "脂肪"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
msgid "g"
msgstr ""
msgstr ""
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
msgid "Carbohydrates"
msgstr ""
msgstr "碳水化合物"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
msgid "Proteins"
msgstr ""
msgstr "蛋白质"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
msgid "Calories"
msgstr ""
msgstr "卡路里"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
msgid "kcal"
msgstr ""
msgstr "千卡"
#: .\cookbook\models.py:325
msgid ""
@@ -443,7 +445,7 @@ msgstr "膳食计划"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "书籍"
msgstr "烹饪手册"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
@@ -455,24 +457,20 @@ msgid " is part of a recipe step and cannot be deleted"
msgstr " 是菜谱步骤的一部分,不能删除"
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "自动化"
msgstr "营养"
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "合并"
msgstr "过敏原"
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
msgstr "价格"
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
msgstr "目标"
#: .\cookbook\models.py:1408 .\cookbook\templates\search_info.html:28
msgid "Simple"
@@ -511,30 +509,24 @@ msgid "Instruction Replace"
msgstr "指示"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "新单位"
msgstr "禁用单位识别"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
msgstr ""
msgstr "字符串转置"
#: .\cookbook\models.py:1474
#, fuzzy
#| msgid "Food Alias"
msgid "Food Replace"
msgstr "食物别名"
msgstr "食物替换"
#: .\cookbook\models.py:1475
#, fuzzy
#| msgid "Description Replace"
msgid "Unit Replace"
msgstr "描述"
msgstr "单位替换"
#: .\cookbook\models.py:1476
msgid "Name Replace"
msgstr ""
msgstr "名称替换"
#: .\cookbook\models.py:1503 .\cookbook\views\delete.py:40
#: .\cookbook\views\edit.py:210 .\cookbook\views\new.py:39
@@ -571,7 +563,7 @@ msgstr "您已被邀请至 "
#: .\cookbook\serializer.py:1272
msgid " to join their Tandoor Recipes space "
msgstr " 加入他们的泥炉食谱空间 "
msgstr " 加入他们的 Tandoor 食谱空间 "
#: .\cookbook\serializer.py:1274
msgid "Click the following link to activate your account: "
@@ -589,11 +581,11 @@ msgstr "邀请有效期至 "
#: .\cookbook\serializer.py:1280
msgid ""
"Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub "
msgstr "泥炉食谱是一个开源食谱管理器。 在 GitHub 上查看 "
msgstr "Tandoor 是一个开源食谱管理器。 在 GitHub 上查看 "
#: .\cookbook\serializer.py:1283
msgid "Tandoor Recipes Invite"
msgstr "泥炉食谱邀请"
msgstr "Tandoor 食谱邀请"
#: .\cookbook\serializer.py:1426
msgid "Existing shopping list to update"
@@ -979,13 +971,11 @@ msgstr "导出"
#: .\cookbook\templates\base.html:287
msgid "Properties"
msgstr ""
msgstr "属性"
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
#, fuzzy
#| msgid "Account Connections"
msgid "Unit Conversions"
msgstr "帐号连接"
msgstr "单位转换"
#: .\cookbook\templates\base.html:318 .\cookbook\templates\index.html:47
msgid "Import Recipe"
@@ -1005,10 +995,8 @@ msgid "Space Settings"
msgstr "空间设置"
#: .\cookbook\templates\base.html:340
#, fuzzy
#| msgid "External Recipes"
msgid "External Connectors"
msgstr "外部菜谱"
msgstr "外部连接器"
#: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13
msgid "System"
@@ -1038,7 +1026,7 @@ msgstr "GitHub"
#: .\cookbook\templates\base.html:376
msgid "Translate Tandoor"
msgstr "翻译泥炉"
msgstr "翻译 Tandoor"
#: .\cookbook\templates\base.html:380
msgid "API Browser"
@@ -1050,7 +1038,7 @@ msgstr "退出"
#: .\cookbook\templates\base.html:406
msgid "You are using the free version of Tandor"
msgstr "你正在使用免费版的泥炉"
msgstr "你正在使用免费版的 Tandoor"
#: .\cookbook\templates\base.html:407
msgid "Upgrade Now"
@@ -1123,7 +1111,7 @@ msgstr "这可能需要几分钟,取决于同步的菜谱数量,请等待。
#: .\cookbook\templates\books.html:7
msgid "Recipe Books"
msgstr "菜谱书"
msgstr "烹饪手册"
#: .\cookbook\templates\export.html:7 .\cookbook\templates\test2.html:6
msgid "Export Recipes"
@@ -1453,10 +1441,8 @@ msgid "Back"
msgstr "返回"
#: .\cookbook\templates\property_editor.html:7
#, fuzzy
#| msgid "Ingredient Editor"
msgid "Property Editor"
msgstr "食材编辑器"
msgstr "属性编辑器"
#: .\cookbook\templates\recipe_view.html:36
msgid "Comments"
@@ -1770,7 +1756,7 @@ msgstr "非常适合大型数据库"
#: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5
msgid "Cookbook Setup"
msgstr "安装菜谱"
msgstr "安装菜谱应用"
#: .\cookbook\templates\setup.html:14
msgid "Setup"
@@ -1879,10 +1865,8 @@ msgid "Sign in using"
msgstr "登录使用"
#: .\cookbook\templates\space_manage.html:7
#, fuzzy
#| msgid "Space Membership"
msgid "Space Management"
msgstr "成员"
msgstr "空间管理"
#: .\cookbook\templates\space_manage.html:26
msgid "Space:"
@@ -1974,6 +1958,10 @@ msgid ""
"script to generate version information (done automatically in docker).\n"
" "
msgstr ""
"\n"
" 您需要在您的更新脚本中执行 <code>version.py</code> "
"生成版本信息Docker实例中会自动执行。\n"
" "
#: .\cookbook\templates\system.html:46
msgid "Media Serving"
@@ -2000,9 +1988,11 @@ msgid ""
" your installation.\n"
" "
msgstr ""
"<b>不推荐</b> 使用 gunicorn/python 提供媒体文件\n"
" 请按照 <a href=\"https://github.com/vabene1111/recipes/releases/"
"tag/0.8.1\">这里</a> 描述的步骤操作更新安装。\n"
"<b>不推荐</b> 使用 gunicorn/python 提供媒体文件\n"
" 请按照\n"
" <a href=\"https://github.com/vabene1111/recipes/releases/tag/0.8."
"1\">这里</a> 描述的步骤\n"
" 操作更新安装。\n"
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
@@ -2057,7 +2047,7 @@ msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
msgstr "域名白名单"
#: .\cookbook\templates\system.html:90
msgid ""
@@ -2067,6 +2057,10 @@ msgid ""
"this.\n"
" "
msgstr ""
"\n"
" 您未配置域名白名单,本实例可以通过任意域名访问,某些特殊情况下可"
"能有用,但请尽量避免这样配置,请参考文档配置 ALLOWED_HOSTS 。\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
@@ -2077,10 +2071,8 @@ msgid "Info"
msgstr "信息"
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "使用分数"
msgstr "数据库结构变更"
#: .\cookbook\templates\system.html:116
msgid ""
@@ -2093,323 +2085,317 @@ msgid ""
"issue.\n"
" "
msgstr ""
"\n"
" 正常情况下数据库迁移不应产生任何报错!\n"
" 数据库迁移失败很可能导致本应用的功能出错或完全不可用。\n"
" 如果您在最新版本上数据库迁移依然产生错误,"
"请将数据库迁移日志和页面下方的信息反馈至 Github Issue 中。\n"
" "
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
msgstr ""
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
msgstr ""
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
msgstr "隐藏"
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
msgstr "显示记录"
msgstr "显示"
#: .\cookbook\templates\url_import.html:8
msgid "URL Import"
msgstr "链接导入"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "参数 updated_at 格式不正确"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "不存在ID是 {pk} 的 {self.basename}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "无法与同一对象合并!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "不存在 ID 为 {target} 的 {self.basename}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "无法与子对象合并!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} 已成功与 {target.name} 合并"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "视图合并 {source.name} 和 {target.name} 时出错"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} 已成功移动到根目录。"
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "尝试移动时出错 "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "无法将对象移动到自身!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "不存在 ID 为 {parent} 的 {self.basename}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} 成功移动到父节点 {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} 已从购物清单中删除。"
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} 已添加到购物清单中。"
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
msgstr "指定开始日期以过滤膳食计划(包含选择的日期),日期格式为 YYYY-MM-DD。"
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr "指定结束日期以过滤膳食计划(包含选择的日期),日期格式为 YYYY-MM-DD。"
#: .\cookbook\views\api.py:744
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#, fuzzy
#| msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr "食谱中的步骤ID。 对于多个重复参数。"
msgstr "指定 MealType ID 以过滤膳食计划,重复参数以选择多个对象。"
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr "食谱中的步骤ID。 对于多个重复参数。"
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "请求参数与对象名称匹配(模糊)。"
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr "请求参数与食谱名称匹配(模糊)。 未来会添加全文搜索。"
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr "菜谱应包含的关键字 ID。 对于多个重复参数。 相当于keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr "允许多个关键字 ID。 返回带有任一关键字的食谱"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr "允许多个关键字 ID。 返回带有所有关键字的食谱。"
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr "允许多个关键字 ID。 排除带有任一关键字的食谱。"
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr "允许多个关键字 ID。 排除带有所有关键字的食谱。"
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr "食谱中食物带有ID。并可添加多个食物。"
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr "食谱中食物带有ID。并可添加多个食物"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr "食谱中食物带有ID。返回包含任何食物的食谱。"
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr "食谱中食物带有ID。排除包含任一食物的食谱。"
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr "食谱中食物带有ID。排除包含所有食物的食谱。"
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "食谱应具有单一ID。"
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr "配方的评分范围从 0 到 5。"
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr "烹饪书应该在食谱中具有ID。并且可以添加多本。"
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr "书的ID允许多个。返回包含任一书籍的食谱"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr "书的ID允许多个。返回包含所有书籍的食谱。"
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr "书的ID允许多个。排除包含任一书籍的食谱。"
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr "书的ID允许多个。排除包含所有书籍的食谱。"
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "只返回内部食谱。 [true/<b>false</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr "按随机排序返回结果。 [true/<b> false </b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr "在搜索结果中首先返回新结果。 [是/<b>否</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr "筛选烹饪 X 次或更多次的食谱。 负值返回烹饪少于 X 次"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
"筛选最后烹饪在 YYYY-MM-DD 当天或之后的食谱。 前置 - 在日期或日期之前筛选。"
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr "筛选在 YYYY-MM-DD 或之后创建的食谱。 前置 - 在日期或日期之前过滤。"
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr "筛选在 YYYY-MM-DD 或之后更新的食谱。 前置 - 在日期或日期之前筛选。"
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
"筛选最后查看时间是在 YYYY-MM-DD 或之后的食谱。 前置 - 在日期或日期之前筛选。"
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr "筛选可以直接用手制作的食谱。 [真/<b>假</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr "返回主键为 id 的购物清单条目。 允许多个值。"
#: .\cookbook\views\api.py:1126
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
#| "b>]<br> - recent includes unchecked items and recently completed items."
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
"在选中时筛选购物清单列表。 [真, 假, 两者都有, <b>最近</b>]<br> - 最近包括未"
"选中的项目和最近完成的项目。"
"勾选并筛选购物清单列表。 [真, 假, 两者都有, <b>最近</b>]"
"<br> - 最近包括未选中的项目和最近完成的项目。"
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr "返回按超市分类排序的购物清单列表。"
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
msgstr "筛选包含所选食谱的对象"
#: .\cookbook\views\api.py:1293
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
#| "values allowed."
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr "返回主键为 id 的购物清单条目。 允许多个值。"
msgstr "返回与自动化类型相匹配的自动化条目。 允许多个值。"
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "无事可做。"
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "无效网址"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "连接被拒绝。"
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "错误的 URL Schema。"
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "找不到可用的数据。"
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
msgstr "文件大小超出空间限值"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "此提供程序未实现导入"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "此功能在泥炉的托管版本中尚不可用!"
msgstr "此功能在 Tandoor 的托管版本中尚不可用!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "同步成功!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "与存储同步时出错"
@@ -2434,10 +2420,8 @@ msgid ""
msgstr "无法删除此存储后端,因为它至少在一台显示器中使用。"
#: .\cookbook\views\delete.py:135
#, fuzzy
#| msgid "Storage Backend"
msgid "Connectors Config Backend"
msgstr "存储后端"
msgstr "连接器后端配置"
#: .\cookbook\views\delete.py:157
msgid "Invite Link"
@@ -2460,14 +2444,12 @@ msgid "There was an error updating this storage backend!"
msgstr "更新此存储后端时出错!"
#: .\cookbook\views\edit.py:134
#, fuzzy
#| msgid "Changes saved!"
msgid "Config saved!"
msgstr "更改已保存!"
msgstr "配置已保存!"
#: .\cookbook\views\edit.py:142
msgid "ConnectorConfig"
msgstr ""
msgstr "连接器配置"
#: .\cookbook\views\edit.py:198
msgid "Changes saved!"
@@ -2496,10 +2478,8 @@ msgid "Shopping List"
msgstr "采购单"
#: .\cookbook\views\lists.py:77 .\cookbook\views\new.py:98
#, fuzzy
#| msgid "Storage Backend"
msgid "Connector Config Backend"
msgstr "存储后端"
msgstr "连接器后端配置"
#: .\cookbook\views\lists.py:91
msgid "Invite Links"
@@ -2523,13 +2503,11 @@ msgstr "步骤"
#: .\cookbook\views\lists.py:270
msgid "Property Types"
msgstr ""
msgstr "属性类型"
#: .\cookbook\views\new.py:86
#, fuzzy
#| msgid "This feature is not available in the demo version!"
msgid "This feature is not enabled by the server admin!"
msgstr "此功能在演示版本中不可用!"
msgstr "此功能被服务器管理员禁用!"
#: .\cookbook\views\new.py:123
msgid "Imported new recipe!"
@@ -2545,11 +2523,9 @@ msgid "This feature is not available in the demo version!"
msgstr "此功能在演示版本中不可用!"
#: .\cookbook\views\views.py:74
#, fuzzy
#| msgid "You have reached the maximum number of recipes for your space."
msgid ""
"You have the reached the maximum amount of spaces that can be owned by you."
msgstr "你已经达到了空间的菜谱的最大数量。"
msgstr "你拥有的空间数量已经达到上限。"
#: .\cookbook\views\views.py:89
msgid ""
@@ -2582,48 +2558,32 @@ msgstr "模糊搜索与此搜索方法不兼容!"
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
msgstr "PostgreSQL %(v)s 版本过时。请升级到支持的版本!"
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
msgstr "您运行的 PostgreSQL 版本是 %(v1)s。推荐版本为 PostgreSQL %(v2)s"
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
msgstr "无法确认 PostgreSQL 版本。"
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
#| " This application is not running with a Postgres database "
#| "backend. This is ok but not recommended as some\n"
#| " features only work with postgres databases.\n"
#| " "
msgid ""
"This application is not running with a Postgres database backend. This is ok "
"but not recommended as some features only work with postgres databases."
msgstr ""
"\n"
" 此应用程序未使用 PostgreSQL 数据库在后端运行。 这并没有关系,但这"
"是不推荐的,\n"
" 因为有些功能仅适用于 PostgreSQL 数据库。\n"
" "
msgstr "此应用未使用 PostgreSQL 数据库作为后端。 这是可运行的配置,但不推荐,"
"因为部分功能仅在 PostgreSQL 数据库下可用。"
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
#| "forgotten your superuser credentials please consult the django "
#| "documentation on how to reset passwords."
msgid ""
"The setup page can only be used to create the first "
"user! If you have forgotten your superuser credentials "
"please consult the django documentation on how to reset passwords."
msgstr ""
"设置页面只能用于创建第一个用户!如果您忘记了超级用户凭据,请参阅 Django 文"
"档,了解如何重置密码。"
"设置页面只能用于创建第一个用户! "
"如果您忘记了超级用户凭据,请参阅 Django 文档,了解如何重置密码。"
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
@@ -2659,27 +2619,23 @@ msgstr "菜谱共享链接已被禁用!有关更多信息,请与页面管理
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
msgstr "管理菜谱、购物清单、膳食计划等。"
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "膳食计划"
msgstr "计划"
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
msgstr "查看您的膳食计划"
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
msgstr "查看你的烹饪手册"
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"
msgstr "购物清单"
msgstr "查看你的购物清单"
#~ msgid "Default unit"
#~ msgstr "默认单位"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.15 on 2024-09-15 10:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0218_alter_mealplan_from_date_alter_mealplan_to_date'),
]
operations = [
migrations.AddField(
model_name='connectorconfig',
name='supports_description_field',
field=models.BooleanField(default=True, help_text='Does the todo entity support the description field'),
),
]

View File

@@ -0,0 +1,24 @@
# Generated by Django 4.2.18 on 2025-03-14 10:50
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('cookbook', '0219_connectorconfig_supports_description_field'),
]
operations = [
migrations.AddField(
model_name='shoppinglistrecipe',
name='created_by',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='shoppinglistrecipe',
name='space',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
),
]

View File

@@ -0,0 +1,42 @@
# Generated by Django 4.2.18 on 2025-03-14 10:50
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
from django.db.models import F, Count
from django_scopes import scopes_disabled
def add_space_and_owner_to_shopping_list_recipe(apps, schema_editor):
print('migrating shopping list recipe space attribute, this might take a while ...')
with scopes_disabled():
ShoppingListRecipe = apps.get_model('cookbook', 'ShoppingListRecipe')
# delete all shopping list recipes that do not have entries as those are of no use anyway
ShoppingListRecipe.objects.annotate(entry_count=Count('entries')).filter(entry_count__lte=0).delete()
shopping_list_recipes = ShoppingListRecipe.objects.all().prefetch_related('entries')
update_list = []
for slr in shopping_list_recipes:
if entry := slr.entries.first():
if entry.space and entry.created_by:
slr.space = entry.space
slr.created_by = entry.created_by
update_list.append(slr)
else:
print(slr, 'missing data on entry')
else:
print(slr, 'missing entry')
ShoppingListRecipe.objects.bulk_update(update_list, ['space', 'created_by'], batch_size=500)
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0220_shoppinglistrecipe_created_by_and_more'),
]
operations = [
migrations.RunPython(add_space_and_owner_to_shopping_list_recipe),
]

View File

@@ -0,0 +1,26 @@
# Generated by Django 4.2.18 on 2025-03-14 12:41
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('cookbook', '0221_migrate_shoppinglistrecipe_space_created_by'),
]
operations = [
migrations.AlterField(
model_name='shoppinglistrecipe',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='shoppinglistrecipe',
name='space',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.22 on 2025-07-13 19:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0222_alter_shoppinglistrecipe_created_by_and_more'),
]
operations = [
migrations.AddField(
model_name='userpreference',
name='ingredient_context',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='userpreference',
name='use_fractions',
field=models.BooleanField(default=True),
),
]

View File

@@ -191,7 +191,7 @@ class TreeModel(MP_Node):
return queryset.model.objects.filter(id__in=queryset.values_list('id')).exclude(descendants)
def include_ancestors(queryset=None):
def include_ancestors(queryset=None, filter=None):
"""
:param queryset: Model Queryset to add ancestors
:param filter: Filter (include) the ancestors nodes with the provided Q filter
@@ -406,6 +406,7 @@ class ConnectorConfig(models.Model, PermissionModelMixin):
on_shopping_list_entry_created_enabled = models.BooleanField(default=False)
on_shopping_list_entry_updated_enabled = models.BooleanField(default=False)
on_shopping_list_entry_deleted_enabled = models.BooleanField(default=False)
supports_description_field = models.BooleanField(default=True, help_text="Does the todo entity support the description field")
url = models.URLField(blank=True, null=True)
token = models.CharField(max_length=512, blank=True, null=True)
@@ -486,6 +487,7 @@ class UserPreference(models.Model, PermissionModelMixin):
shopping_recent_days = models.PositiveIntegerField(default=7)
csv_delim = models.CharField(max_length=2, default=",")
csv_prefix = models.CharField(max_length=10, blank=True, )
ingredient_context = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
objects = ScopedManager(space='space')
@@ -766,6 +768,22 @@ class Food(ExportModelOperationsMixin('food'), TreeModel, PermissionModelMixin):
obj.inherit_fields.set(fields)
obj.save()
def get_substitutes(self, onhand=False, shopping_users=None):
# filters = ~Q(id=self.id)
filters = Q()
if self.substitute:
filters |= Q(id__in=self.substitute.values('id'))
if self.substitute_children:
filters |= Q(path__startswith=self.path, depth__gt=self.depth)
if self.substitute_siblings:
sibling_path = self.path[:Food.steplen * (self.depth - 1)]
filters |= Q(path__startswith=sibling_path, depth=self.depth)
qs = Food.objects.filter(filters).exclude(id=self.id)
if onhand:
qs = qs.filter(onhand_users__in=shopping_users)
return qs
@staticmethod
def reset_inheritance(space=None, food=None):
# resets inherited fields to the space defaults and updates all inherited fields to root object values
@@ -1178,31 +1196,18 @@ class MealPlan(ExportModelOperationsMixin('meal_plan'), models.Model, Permission
class ShoppingListRecipe(ExportModelOperationsMixin('shopping_list_recipe'), models.Model, PermissionModelMixin):
name = models.CharField(max_length=32, blank=True, default='')
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True) # TODO make required after old shoppinglist deprecated
servings = models.DecimalField(default=1, max_digits=8, decimal_places=4)
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True)
mealplan = models.ForeignKey(MealPlan, on_delete=models.CASCADE, null=True, blank=True)
objects = ScopedManager(space='recipe__space')
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
space = models.ForeignKey(Space, on_delete=models.CASCADE)
@staticmethod
def get_space_key():
return 'recipe', 'space'
def get_space(self):
return self.recipe.space
objects = ScopedManager(space='space')
def __str__(self):
return f'Shopping list recipe {self.id} - {self.recipe}'
def get_owner(self):
try:
if not self.entries.exists():
return 'orphan'
else:
return getattr(self.entries.first(), 'created_by', None)
except AttributeError:
return None
class ShoppingListEntry(ExportModelOperationsMixin('shopping_list_entry'), models.Model, PermissionModelMixin):
list_recipe = models.ForeignKey(ShoppingListRecipe, on_delete=models.CASCADE, null=True, blank=True, related_name='entries')

View File

@@ -4,8 +4,8 @@ import os
from datetime import datetime
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.models import Recipe, RecipeImport, SyncLog
from cookbook.provider.provider import Provider
@@ -107,7 +107,7 @@ class Dropbox(Provider):
recipe.save()
url = recipe.link.replace('www.dropbox.', 'dl.dropboxusercontent.')
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
return io.BytesIO(response.content)

View File

@@ -12,21 +12,25 @@ class Local(Provider):
@staticmethod
def import_all(monitor):
if '/etc/' in monitor.path or '/root/' in monitor.path or '/mediafiles/' in monitor.path or '/usr/' in monitor.path:
return False
files = [f for f in listdir(monitor.path) if isfile(join(monitor.path, f))]
import_count = 0
for file in files:
path = monitor.path + '/' + file
if not Recipe.objects.filter(file_path__iexact=path, space=monitor.space).exists() and not RecipeImport.objects.filter(file_path=path, space=monitor.space).exists():
name = os.path.splitext(file)[0]
new_recipe = RecipeImport(
name=name,
file_path=path,
storage=monitor.storage,
space=monitor.space,
)
new_recipe.save()
import_count += 1
if file.endswith('.pdf') or file.endswith('.png') or file.endswith('.jpg') or file.endswith('.jpeg') or file.endswith('.gif'):
path = monitor.path + '/' + file
if not Recipe.objects.filter(file_path__iexact=path, space=monitor.space).exists() and not RecipeImport.objects.filter(file_path=path, space=monitor.space).exists():
name = os.path.splitext(file)[0]
new_recipe = RecipeImport(
name=name,
file_path=path,
storage=monitor.storage,
space=monitor.space,
)
new_recipe.save()
import_count += 1
log_entry = SyncLog(
status='SUCCESS',

View File

@@ -4,8 +4,9 @@ import tempfile
from datetime import datetime
import requests
import validators
import webdav3.client as wc
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.models import Recipe, RecipeImport, SyncLog
from cookbook.provider.provider import Provider
from requests.auth import HTTPBasicAuth
@@ -93,7 +94,7 @@ class Nextcloud(Provider):
"Content-Type": "application/json"
}
if validators.url(url, public=True):
if validate_import_url(url):
r = requests.get(
url,
headers=headers,

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,177 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

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