* fixed paprika url key
* fixed paprika total and prep time aliases
* added nextcloud time parsing
* mapped paprika categories to tags
* cleaned up netcloud parsetime
* validate user attributes on user creation
add logs for invalid or missing attributes
* only update admin flag when admin status changes
* move ldap functions into separate file
* fix linter issues
* actually use the search_user function
* fix types
* update dev docker poetry install
* Forward/Report IP through front and backend.
* Add fail2ban docs
* fix option name and iproute2 in omni entry
* Fix entry scripts -> gunicorn setting respected
* gunicorn off
* xfwd in nuxt proxy and handle multiple IPs
* Add hook for random sorting
* Add random sorting to front page
* Add multiple tests for random sorting.
* Be extra sure that all recipes are returned.
* Too stable random. seed doesn't reach backend.
* add timestamp to useRecipeSearch
* Update randomization tests for timestamp seeding
* ruff cleanup
* pass timestamp separately in getAll
* remove debugging log items
* remove timestamp from address bar
* remove defaults from backend timestamps
* timestamp should be optional
* fix edge case: query without timestamp
* similar edge case: no timestamp in pagination
* ruff :/
* better edge case handling
* stabilize random search test w/more recipes
* better pagination seeding
* update pagination seed test
* remove redundant random/seed check
* Test for api routes to random sorting.
* please the typing gods
* hack to make query parameters throw correct exc
* ruff
* fix validator message typo
* black reformatting
---------
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* Creating postgres migration script and starting to set up to detect database
* non-working placeholders for postgres pg_tgrm
* First draft of some indexes
* non-working commit of postgres indexing
* Further non-working edits to db-centric fuzzy search
* update alembic for extensions
* More non-working setup
* Move db type check to init_db
* fix typo in db name check
* Add sqlite token search and postgres full text search
* reorder search to hit exact matches faster
* Add settings and docs for POSTGRES_LANGUAGE (full text search)
* Use user-specified POSTGRES_LANGUAGE in search
* fix fuzzy search typo
* Remove full text search and instead order by trigram match
* cleaner adding of indices, remove fulltext
* Cleanup old import of getting app settings
* Fix typo in index
* Fix some alembic fuzzy typos
* Remove diagnostic printing from alembic migration
* Fix mixed up commutator for trigram operator and relax criteria
* forgot to remove query debug
* sort only on name
* token and fuzzy search tests
* Refactor recipe search test to avoid rare random string cross-matches.
* Add ability to quote parts of search for exact match
* Remove internal punctuation, unless it's quoted for literal search
* Add tests for special character removal and literal search
* Remove the outer double quotes from searches, but leave internal single quotes alone.
* Update tests to avoid intra-test name collisions
* Fixing leftovers highlighted by lint
* cleanup linting and mypy errors
* Fix test cross-matching on dirty db (leftovers from bulk import)
* forgot to cleanup something when debugging mypy errors
* re-order pg_trgm loading in postgres
* address comments
* added support for SQL keywords IS, IN, LIKE, NOT
deprecated datetime workaround for "<> null"
updated frontend reference for "<> null" to "IS NOT NULL"
* tests
* refactored query filtering to leverage orm
* added CONTAINS ALL keyword
* tests
* fixed bug where "and" or "or" was in an attr name
* more tests
* linter fixes
* TIL this works
* extended query filter to accept nested tables
* decoupled timeline api from recipe slug
* modified frontend to use simplified events api
* fixed nested loop index ghosting
* updated existing tests
* gave mypy a snack
* added tests for nested queries
* fixed "last made" render error
* decoupled recipe timeline from dialog
* removed unused props
* tweaked recipe get_all to accept ids
* created group global timeline
added new timeline page to sidebar
reformatted the recipe timeline
added vertical option to recipe card mobile
* extracted timeline item into its own component
* fixed apploader centering
* added paginated scrolling to recipe timeline
* added sort direction config
fixed infinite scroll on dialog
fixed hasMore var not resetting during instantiation
* added sort direction to user preferences
* updated API docs with new query filter feature
* better error tracing
* fix for recipe not found response
* simplified recipe crud route for slug/id
added test for fetching by slug/id
* made query filter UUID validation clearer
* moved timeline menu option below shopping lists
---------
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* New translations en-US.json (French)
* New translations en-US.json (Slovak)
* New translations en-US.json (Swedish)
* New translations en-US.json (Norwegian)
* New translations en-US.json (Norwegian)
* New translations en-US.json (German)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Catalan)
* New translations en-US.json (Catalan)
* New translations en-US.json (Spanish)
* New translations en-US.json (Catalan)
* New translations en-US.json (Spanish)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Romanian)
* New translations en-US.json (Romanian)
* New translations en-US.json (Romanian)
* New translations en-US.json (Slovak)
* New translations en-US.json (Slovak)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Polish)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (German)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (German)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (German)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* New translations en-US.json (Hebrew)
* Remove some implicit lazy-loads from user serialization
* implement full backup restore across different database versions
* rework all custom getter dicts to not leak lazy loads
* remove some occurances of lazy-loading
* remove a lot of lazy loading from recipes
* add more eager loading
remove loading options from repository
remove raiseload for checking
* fix failing test
* do not apply loader options for paging counts
* try using selectinload a bit more instead of joinedload
* linter fixes
* implemented copymethat migration
* added migration tree
* added translation support
* genericized example jpgs
* added test data
* fixed test archive
* switched recipe create to service
added test for timeline event creation
* linting
* lxml go brrr
* add option to enable starttls for ldap
* add integration test for ldap service
* document new, optional environment variable
* fix: support anonymous bind
* id and mail attributes in LDAP_USER_FILTER should be implied
* remove print statement
* New translations en-US.json (Danish)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (Dutch)
* New translations en-US.json (Polish)
* New translations en-US.json (Turkish)
* New translations en-US.json (Dutch)
* New translations en-US.json (Polish)
* New translations en-US.json (Turkish)
* fix webhooks not firing due to missing session
* disable webhook test button because it doesnt do anything
* fix background task administration not working at all
* fix error in test
* adds authentication method for users
* fix db migration with postgres
* tests for auth method
* update migration ids
* hide auth method on user creation form
* (docs): Added documentation for the new authentication method
* update migration
* add to auto-form instead of having hidden fields
* fixed mealplan timeline event task
fixed indentation to only look at one group at a time
changed grumpy update to happy patch
* updated pytest to catch this error
* I don't know how this got past the pre-commit
* allow certain props to be updated on locked recipe
* pytest
* added "last_made" to hardcoded datetime fields
* refactored last made to its own route
* codegen/types
* updated pytest
* added backend for shopping list label config
* updated codegen
* refactored shopping list ops to service
removed unique contraint
removed label settings from main route/schema
added new route for label settings
* codegen
* made sure label settings output in position order
* implemented submenu for label order drag and drop
* removed redundant label and tweaked formatting
* added view by label to user preferences
* made items draggable within each label section
* moved reorder labels to its own button
* made dialog scrollable
* fixed broken model
* refactored labels to use a service
moved shopping list label logic to service
modified label seeder to use service
* added tests
* fix for first label missing the tag icon
* fixed wrong mapped type
* added statement to create existing relationships
* fix restore test, maybe
* New translations en-US.json (Ukrainian)
* New translations en-US.json (Ukrainian)
* New translations en-US.json (German)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Finnish)
* New translations en-US.json (Hungarian)
* New translations en-US.json (German)
* New translations en-US.json (Hungarian)
* New translations en-US.json (Dutch)
* feat: server side search API (#2112)
* refactor repository_recipes filter building
* add food filter to recipe repository page_all
* fix query type annotations
* working search
* add tests and make sure title matches are ordered correctly
* remove instruction matching again
* fix formatting and small issues
* fix another linting error
* make search test no rely on actual words
* fix failing postgres compiled query
* revise incorrectly ordered migration
* automatically extract latest migration version
* test migration orderes
* run type generators
* new search function
* wip: new search page
* sortable field options
* fix virtual scroll issue
* fix search casing bug
* finalize search filters/sorts
* remove old composable
* fix type errors
---------
Co-authored-by: Sören <fleshgolem@gmx.net>
* add indices to all foreign keys and some fields that are used for ordering and filtering
* add missing migrations
* update migration orders
---------
Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
* Corrected if statement to check if a results was returned by the LDAP search. And decoded the user_attributes from binary data to string
* removed trailing spaces
* Revert asserts in LDAP unit test back
Since an empty tuple is still a result, an user is created and the result should not be false.
* Simplified code
* Extended the LDAP implementation
* fix ldap authentication and user creation
* modified docs to include new LDAP environment variables
* update tests and linting
* add libldap-2.4-2 as runtime dependency for the api
---------
Co-authored-by: Erik Landkroon <eriklandkroon@gmail.com>