* added chef hat
* removed unnecessary log
* modified recipe and recipe timeline event schema
changed timeline event "message" -> "event_message"
added "last made" timestamp to recipe
* added "I made this" dialog to recipe action menu
* added missing field and re-ran code-gen
* moved dialog out of context menu and refactored
removed references in action menu and context menu
refactored dialog to be triggered by a button instead
added route to update recipe last made timestamp
added visual for last made timestamp to recipe header and title
* added sorting by last made
* switched event type to comment
* replaced alter column with pydantic alias
* added tests for event message alias
* added recipe_timeline_events table to db
* added schema and routes for recipe timeline events
* added missing mixin and fixed update schema
* added tests
* adjusted migration revision tree
* updated alembic revision test
* added initial timeline event for new recipes
* added additional tests
* added event bus support
* renamed event_dt to timestamp
* add timeline_events to ignore list
* run code-gen
* use new test routes implementation
* use doc string syntax
* moved event type enum from db to schema
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* refactored EventBusService to work outside FastAPI
* extended event models
* refactored webhooks to run through event bus
* added basic webhook test route
* changed get_all to page_all
* fixed incorrectly implemented Vue variables
* fixed broken webhook test
* changed factory from staticmethod to classmethod
* made query boundary definitions easier to read
* added api extras to other tables
genericized api extras model from recipes
added extras column to ingredient foods
added extras column to shopping lists
added extras column to shopping list items
* updated alembic version test
* made mypy happy
* added TODO on test that does nothing
* added extras tests for lists, items, and foods
* added docs for new extras
* modified alembic versions to eliminate branching
* docs: fix typos
* typos: fix typos found by `codespell` across the codebase
* docs: fix `macOS` spelling
* docs: fix `authentification` terminology
"Authentification" is not a thing.
* docs: fix `localhost` typo in example link
* typos: fix in-code typos
These are potentially higher risk, but no other mentions of these typos
show up in the codebase.
* Add pytesseract
* Add simple ocr endpoint
replace extension argument
* feat/ocr-editor gui
* fix frontend linting issues
* Add service unit tests
* Add split text modes & single ingredient/instruction editing
* make split mode really reactive
* Remove default step and ingredient
* make the linter haappy
* Accept only image uploads
* Add automatic recipe title suggestion
* Correct regex
* fix incorrect array.map method usage
* make the linter happy again
* Swap route to use asset name
* Rearange buttons
* fix test data
* feat: Allow making image the recipe image
* Add translation
* Make the linter happy
* Restrict function setPropertyValueByPath generic
* Restrict template literal type
* Add a more friendly icon to creation page
* update poetry lock file
* Correct sloppy ocr classes
* Make MyPy happy
* Rewrite safer tests
* Add tesseract to backend test CI container dependencies
* Make canvas element a component global
* Remove unwanted spaces in selected text
* Add way to know if recipe was created with ocr
* Access to ocr-editor for ocr recipes
* Update Alembic revision
* Make the frontend build
* Fix scrolling offset bug
* Allow creation of recipes with custom settings
* Fix rebasing mistakes
* Add format_tsv_output test
* Exclude the tests data directory only
* Enforce camelCase for frontend functions
* Remove import of unused component
* Fix type and class initialization
* Add multi-language support
* Highlight words in mount
* Fix image ratio bug
* Better ocr creation page
* Revert awkward feature to scroll in Selection mode
* Rebasing alembic migrations sux
* Remove obsolete getShared function
* Add function docstring
* Move down ocr creation option
* Make toolbar icons more generic
* Show help at the bottom of the page
* move ocr types to own file
* Use template ref for the canvas
* Use i18n.tc to get strings directly
* Correct naming mistake
* Move Ocr editor to own directory
* Create Ocr Editor parts
* Safeguard recipe properties access
* Add loading frontend animation due to longer request time
* minor cleanup chores
Co-authored-by: Miroito <alban.vachette@gmail.com>
* Use Base DN for LDAP and fetch user attrs
Requires that a Base DN be set for LDAP
Set `full_name` and `email` based on LDAP attributes when creating user
* Add support for secure LDAP
Allow insecure LDAP connection (disabled by default)
Use CA when connecting to secure LDAP server
* Added missing quotes to example
* Update security.py
* Update security.py formatting
* Update security.py
Switched to f-String formatting
* formatting
* Update test_security.py
Added at attributes for testing
* Update test_security.py
Modified tests for base DN
* Update test_security.py
Set proper base DN for testing
* Update test_security.py
Corrected testing for LDAP
* Update test_security.py
Defined base_dn
* Authenticated user not in base DN
Add check for when user can authenticate but is not in base DN
* Update test_security.py
LDAP user cannot exist as it is searched before it is created and the list returns False
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* add data-types required for login security
* implement user lockout checking at login
* cleanup legacy patterns
* expose passwords in test_user
* test user lockout after bad attempts
* test user service
* bump alembic version
* save increment to database
* add locked_at to datetime transformer on import
* do proper test cleanup
* implement scheduled task
* spelling
* document env variables
* implement context manager for session
* use context manager
* implement reset script
* cleanup generator
* run generator
* implement API endpoint for resetting locked users
* add button to reset all locked users
* add info when account is locked
* use ignore instead of expect-error
* fixed incorrect response model
* added category and tag filters
* moved categories and tags params to route and
changed to query array param
* type fixes
* added category and tag tests
* created query filter classes
* extended pagination to include query filtering
* added filtering tests
* type improvements
* move type help to dev depedency
* minor type and perf fixes
* breakup test cases
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
rewrite get_all routes to use a pagination pattern to allow for better implementations of search, filter, and sorting on the frontend or by any client without fetching all the data. Additionally we added a CI check for running the Nuxt built to confirm that no TS errors were present. Finally, I had to remove the header support for the Shopping lists as the browser caching based off last_updated header was not allowing it to read recent updates due to how we're handling the updated_at property in the database with nested fields. This will have to be looked at in the future to reimplement. I'm unsure how many other routes have a similar issue.
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* fix type errors on event bus
* webhooks fields required for new implementation
* db migration
* wip: webhook query + tests and stub function
* ignore type checker error
* type and method cleanup
* datetime and time utc validator
* update testing code for utc scheduled time
* fix file cmp function call
* update version_number
* add support for translating "time" objects when restoring backup
* bump recipe-scrapers
* use specific import syntax
* generate frontend types
* utilize names exports
* use utc times
* add task to scheduler
* implement new scheduler functionality
* stub for type annotation
* implement meal-plan data getter
* add experimental banner
* increased float rounding precision for crf parser
* limited fractions to a max denominator of 32 to prevent weirdly specific values
* add test cases for 1/8 and 1/32
* add rounding to avoid more digits than necessary
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* add 'use-abbreviation' db column
* type generation
* add view and edit elements
* check for use_abbreviation to display
* fix: alembic version check
* test: add use_abbreviation prop tests
* Changes Settings to use new SMTP_AUTH_STRATEGY variable in place of SMTP_TLS with transition support
#1187
* Wires up default email client to use ssl or tls authentication if enabled in settings
* Updates the docs
* Update template file
* remove SMTP_TLS and use staticmethod for validate
* consolidate test cases with params
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* feat: import original keywords as tags
* remove cached env
* Update frontend api types
* fix: Issues with previous tag scraping implementation
* Update category handling in backend
* Update backend tests to include group_id
* Correct type check
* Update create-url interface
* Improve tag cleaner list support
* remove builtin name shadowing
* update type annotations
* test include tags scraper
* implement scaper context for optional data
* readd cache venv
* use continue instead of break
* remove test callback
Co-authored-by: Miroito <alban.vachette@gmail.com>
* use locale to set language header
* rewrite i18n provider and drop dependency
* rename file
* rename CrudMixin to HttpRepo
* refactor: code-cleanup
* add crowdin source
* remove unused translations
* grab translations from dev branch
* add translation support for foods, units, and labels
* remove rich import
* add direction prop for icon position
* add support for require_all properties on cookbook
* update type annotations
* add and - or filter support
* update cookbook API
* generate types
* implement editor for additional options
* update version number
* migration: add public, tags, and tools
* generate frontend types
* add help icon
* start replacement for tool-tag-category selector
* add help icon utility
* use generator types
* add support for cookbook features
* add UI elements for cookbook features
* fix tests
* fix type error
* Set up alembic migration usage
* Fix import order, add isort as alembic hook
* Only run migrations if needed
* Include date as part of migration file name for better sorting
* Skip initial migrations if tables already exist
This eases the transition from a pre-alembic state
* Fix deprecation warning in alembic revision
* Add alembic test stubs
* update naming
* refactor tests to use shared structure
* shorten names
* add tools test case
* refactor to support multi-tenant
* set group_id on creation
* initial refactor for multitenant tags/cats
* spelling
* additional test case for same valued resources
* fix recipe update tests
* apply indexes to foreign keys
* fix performance regressions
* handle unknown exception
* utility decorator for function debugging
* migrate recipe_id to UUID
* GUID for recipes
* remove unused import
* move image functions into package
* move utilities to packages dir
* update import
* linter
* image image and asset routes
* update assets and images to use UUIDs
* fix migration base
* image asset test coverage
* use ids for categories and tag crud functions
* refactor recipe organizer test suite to reduce duplication
* add uuid serlization utility
* organizer base router
* slug routes testing and fixes
* fix postgres error
* adopt UUIDs
* move tags, categories, and tools under "organizers" umbrella
* update composite label
* generate ts types
* fix import error
* update frontend types
* fix type errors
* fix postgres errors
* fix#978
* add null check for title validation
* add note in docs on multi-tenancy
* cleanup oversized buttons
* add get all by category function to reciep repos
* fix shopping-list can_merge logic
* use randomized data for testing
* add random getter to repository for meal-planner
* add stub route for random meals
* cleanup global namespace
* add rules database type
* fix type
* add plan rules schema
* test plan rules methods
* add mealplan rules controller
* add new repository
* update frontend types
* formatting
* fix regression
* update autogenerated types
* add api class for mealplan rules
* add tests and fix bugs
* fix data returns
* proof of concept rules editor
* add tag support
* remove old group categories
* add tag support
* implement random by rules api
* change snack to sides
* remove incorrect typing
* split repo for custom methods
* fix query and use and_ clause
* use repo function
* remove old test
* update changelog
* add default assets for user profile
* add recipe avatar
* change user_id to UUID
* add profile image upload
* setup image cache keys
* cleanup tests and add image tests
* purge user data on delete
* new user repository tests
* add user_id validator for int -> UUID conversion
* delete depreciated route
* force set content type
* refactor tests to use temp directory
* validate parent exists before createing
* set user_id to correct type
* update instruction id
* reset primary key on migration
* fix UI column width
* words
* update parser to support diff strats
* add new model url
* make button more visible
* fix nutrition error
* feat(backend): ✨ add 'brute' strategy for parsing ingredients
* satisfy linter
* update UI for creation page
* feat(backend): ✨ log 422 errors in detail when not in PRODUCTION
* add strategy selector
Co-authored-by: Hayden <hay-kot@pm.me>
* add universal toast plugin
* add server side locales
* integrate CRF++ into CI/CD Pipeline
* docs(docs): 📝 add recipe parser docs
* feat(backend): ✨ Continued work on ingredient parsers
* add new model dest
* feat(frontend): ✨ New ingredient parser page
* formatting
Co-authored-by: Hayden <hay-kot@pm.me>
* chore(backend): 🎨 add isort path to vscode settings
* style(frontend): 💄 remove fab and add general create button
* feat(backend): 🚧 stub out new exporter service
* comment out stub tests
Co-authored-by: Hayden <hay-kot@pm.me>