Commit Graph

230 Commits

Author SHA1 Message Date
Michael Genson
f1559e5512 fix broken email banner 2024-01-08 03:46:24 +00:00
Michael Genson
8cf1700d03 update old raw.githubusercontent links 2024-01-08 03:45:13 +00:00
Michael Genson
7602c67449 fix: More Backup Restore Fixes (#2859)
* refactor normalized search migration to use dummy default

* changed group slug migration to use raw SQL

* updated comment

* added tests with anonymized backups (currently failing)

* typo

* fixed LDAP enum in test data

* fix for adding label settings across groups

* add migration data fixes

* fix shopping list label settings test

* re-run db init instead of just running alembic migration, to include fixes

* intentionally broke SQLAlchemy GUID handling

* safely convert between GUID types in different databases

* restore original test data after testing backup restores

* added missing group name update to migration
2024-01-03 04:19:04 +00:00
Michael Genson
ca9f66ee24 feat: Remove OCR Support (#2838)
* remove ocr package

* remove tesseract

* remove OCR from app

* remove OCR from tests

* fix docs
2023-12-14 17:26:43 -09:00
Michael Genson
861e8ac564 fix: Paprika Migration Error (#2834)
* made migration more fault tolerant

* added edgecase for recipes with no ings/instructions

* keep log for debugging

---------

Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2023-12-13 10:31:13 +00:00
Michael Genson
5a153b178d fix: Better Scraper Image Processing (#2821)
* add additional case for scraped image parsing

* made scraper more fault tolerant for missing images

* re-ordered case to favor better implementations

---------

Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2023-12-11 09:22:06 +00:00
Michael Genson
275bb9617a use scraper URL instead of og tag 2023-12-11 04:37:00 +00:00
Michael Genson
f8ad72ec31 fix: Bulk URL Import Fixes (#2796)
* allow expections when fetching content

* removed extra bracket on import text

* added more fault tolerance and limited concurrency

* fix entries not being saved to report

* disable clicking into in-proress import

* conditionally render expansion
2023-12-07 17:08:47 +00:00
Kuchenpirat
f32444b91d fix: handle Recipe Times as dicts and lists (#2764)
* handle dicts

* 🧹

* handle arrays

* change default case & add warning logger

* lint

* typo

* update dict case

* update list case

* add timedelta to cases

* remove timedelta so mypy is happy
2023-12-03 05:15:44 +00:00
Michael Genson
d440d51ffe feat: plural foods and units, and aliases (#2674)
* added plural names and alias tables to foods/units

* updated models to include plural names and aliases

* updated parser to include plural and aliases

* fixed migrations

* fixed recursive models

* added plural abbreviation to migration

* updated parser and display prop

* update displays to use plurals

* fix display edgecase and remove print

* added/updated display tests

* fixed model bug and added parser tests

* added tests for aliases

* added new plural options to data management page

* removed unique constraint

* made base dialog more customizable

* added alias management to food and unit data pages

* removed unused awaits

* 🧹
2023-11-14 06:39:07 -09:00
Michael Genson
80968b02bb feat: Remove Explore URLs and make the normal URLs public (#2632)
* add groupSlug to most routes

* fixed more routing issues

* fixed jank and incorrect routes

* remove public explore links

* remove unused groupSlug and explore routes

* nuked explore pages

* fixed public toolstore bug

* fixed various routes missing group slug

* restored public app header menu

* fix janky login redirect

* 404 recipe API call returns to login

* removed unused explore layout

* force redirect when using the wrong group slug

* fixed dead admin links

* removed unused middleware from earlier attempt

* 🧹

* improve cookbooks sidebar
fixed sidebar link not working
fixed sidebar link target
hide cookbooks header when there are none

* added group slug to user

* fix $auth typehints

* vastly simplified groupSlug logic

* allow logged-in users to view other groups

* fixed some edgecases that bypassed isOwnGroup

* fixed static home ref

* 🧹

* fixed redirect logic

* lint warning

* removed group slug from group and user pages
refactored all components to use route groupSlug or user group slug
moved some group pages to recipe pages

* fixed some bad types

* 🧹

* moved groupSlug routes under /g/groupSlug

* move /recipe/ to /r/

* fix backend url generation and metadata injection

* moved shopping lists to root/other route fixes

* changed shared from /recipes/ to /r/

* fixed 404 redirect not awaiting

* removed unused import

* fix doc links

* fix public recipe setting not affecting public API

* fixed backend tests

* fix nuxt-generate command

---------

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2023-11-05 16:07:02 -09:00
Kuchenpirat
15f79d1586 fix: User creation through API when signups are supposed to be disabled (#2622)
* fix user creation when signups are supposed to be diabled

* add user registration tests

* run formatter

* fix test filename

---------

Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2023-10-16 18:45:47 +00:00
Futureless671
5f0a9981f3 fix: Corrected generated password reset links (#2633)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2023-10-15 20:40:23 +00:00
boc-the-git
cb1769a352 fix: for list of images, remove empty strings (#2634)
* For list of images, remove empty strings

* Fix formatting

---------

Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2023-10-15 20:32:51 +00:00
NullCosmos
f72fcc3031 feat: Implemented Plan to Eat migration (#2635)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2023-10-15 20:01:07 +00:00
Michael Genson
b153ddf858 feat: more shopping list enhancements (#2587)
* fix new position calculataion

* ensure consistent list item ordering

* fix recipe ref overflow on small screens

* added recipe ref elevation

* tweaked line height (for long notes)

* removed unused user dependency

* remove old shopping list items when there's >100

* 🤷

* cleaned up function generator

* fixed test

* fix potential type error

* made max position calc more efficient
2023-10-07 13:06:00 -08:00
Michael Genson
a98e863bca fix: database unique constraints (#2594)
* fixed missing migration name

* added unique constraints to all m2m tables

* fixed bug trying to create duplicate tags

* added more unique constraints

* fixed duplicate seeder data

* updated tests

* fixed seed rollback error
2023-10-07 11:23:13 -08:00
Michael Genson
26ef351ae7 fix: Recipe Zip Export Can't Be Imported (#2585)
* clean recipe data when importing via zip

* added tests

* simplified recursive logic
2023-10-07 11:18:55 -08:00
Matthew Hill
4bd7bda60d fix: Fix bugs with account locking (#2580)
* fix(security): reset login attempts after successful login

Enforce a maximum number of consecutive failed logins. Successfully logging in should reset the
count.

#2569

* fix(security): fix when user is unlocked

The user should be unlocked when locked_at is set, but the lock has expired.

#2569
2023-09-29 15:58:00 -08:00
Max Bachmann
15c6df88ab perf: use score_cutoff for fuzzy string matching (#2553) 2023-09-16 15:24:45 -05:00
Michael Genson
2dfbe9f08d feat: Improved Ingredient Matching (#2535)
* added normalization to foods and units

* changed search to reference new normalized fields

* fix tests

* added parsed food matching to backend

* prevent pagination from ordering when searching

* added extra fuzzy matching to sqlite ing matching

* added tests

* only apply search ordering when order_by is null

* enabled post-search fuzzy matching for postgres

* fixed postgres fuzzy search test

* idk why this is failing

* 🤦

* simplified frontend ing matching
and restored automatic unit creation

* tightened food fuzzy threshold

* change to rapidfuzz

* sped up fuzzy matching with process

* fixed units not matching by abbreviation

* fast return for exact matches

* replace db searching with pure fuzz

* added fuzzy normalization

* tightened unit fuzzy matching thresh

* cleaned up comments/var names

* ran matching logic through the dryer

* oops

* simplified order by application logic
2023-09-15 17:19:34 +00:00
Michael Genson
d6e4829e6f feat: Display Shopping List Item Recipe Refs (#2501)
* added recipe ref display to shopping list items

* added backend support for recipe notes

* added recipe note to item recipe ref display

* fixed note merge bug with 3+ notes

* tweak display

* lint

* updated alembic refs

---------

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2023-08-21 09:18:37 -08:00
Michael Genson
e55258c5be fx: Nextcloud migration fails to parse null times (#2485)
* support null or custom strings

* made time parsing more robust using isodate

* bark bark
2023-08-09 18:52:49 -08:00
Michael Genson
dd947c316a fix: Tandoor doesn't import all images (#2487)
* use glob to find files for import

* bark bark

* add catch for invalid image files
2023-08-09 18:52:32 -08:00
Michael Genson
dfe4942451 feat: Recipe Timeline Images (#2444)
* refactored recipe image paths/service

* added routes for updating/fetching timeline images

* make generate

* added event image upload and rendering

* switched update to patch to preserve timestamp

* added tests

* tweaked order of requests

* always reload events when opening the timeline

* re-arranged elements to make them look nicer

* delete files when timeline event is deleted
2023-08-06 09:49:30 -08:00
Michael Genson
0f896107f9 feat: Migrate from Tandoor (#2438)
* added tandoor migration to backend

* added tandoor migration to frontend

* updated tests

* ignore 0 amounts

* refactored ingredient display calculation

* fix parsing tandoor recipes with optional data

* generated frontend types

* fixed inconsistent default handling and from_orm

* removed unused imports
2023-07-23 09:52:09 -08:00
Michael Genson
c25b58e404 fix: Missing Paprika and Nextcloud Migration Data (#2434)
* fixed paprika url key

* fixed paprika total and prep time aliases

* added nextcloud time parsing

* mapped paprika categories to tags

* cleaned up netcloud parsetime
2023-07-23 09:50:47 -08:00
Hayden
23786c1f5e bump ruff and do fixes (#2375) 2023-05-05 14:43:23 -08:00
Michael Genson
fe17922bb8 Feature: Global Timeline (#2265)
* 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>
2023-04-25 09:46:00 -08:00
Sören
ccb0b43cef feat: implement backup restoration from old db schemas (#2213)
* Remove some implicit lazy-loads from user serialization

* implement full backup restore across different database versions
2023-03-12 12:39:51 -08:00
Michael Genson
3118b0e423 feat: Migrate from Copy Me That (#2212)
* 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
2023-03-12 12:37:24 -08:00
Sören
8824aec066 fix: sequence numbers not updating after backup restore (#2179) 2023-02-26 10:28:09 -09:00
Sören
84d55eb920 fix: #2169 webhooks not firing (#2178)
* 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
2023-02-26 10:27:22 -09:00
Carter
2e6ad5da8e Feature: Add "Authentication Method" to allow existing users to sign in with LDAP (#2143)
* 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
2023-02-26 10:12:16 -09:00
Michael Genson
6418a10428 fix: misused update over patch in last_update call (#2168)
* 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
2023-02-23 13:10:47 -09:00
Michael Genson
fd03d468d4 Fix: Allow Last Made to be Updated on Locked Recipes (#2140)
* 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
2023-02-21 18:59:22 -09:00
Michael Genson
a6c46a7420 Feature: Shopping List Label Section Improvements (#2090)
* 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
2023-02-21 18:58:41 -09:00
Michael Genson
5562effd66 feat: select ingredients to add to shopping List (#2136)
* added recipe ingredient override to backend

* pytest

* new dialog to filter recipe items added to list
2023-02-19 16:20:32 -09:00
Michael Genson
05e2566c35 fix: recipe scraper image cleaning (#2139)
* updated image cleaner
enabled image cleaner
added case for nested image dicts

* refactored image cleaner to return a list of urls
2023-02-19 15:43:52 -09:00
Michael Genson
5f7ac92c96 feat: timeline event for mealplans (#2050)
* added related user to mealplans

* made timeline event message actually optional

* added task to create events for mealplan recipes

* replaced fk constraint ops with bulk ops

* fixed event creation and adjusted query range

* indentation is hard

* added missing recipe id query filter

* added tests
2023-02-11 10:08:53 -09:00
Hayden
9e77a9f367 prs-fleshgolem-2070: feat: sqlalchemy 2.0 (#2096)
* upgrade sqlalchemy to 2.0

* rewrite all db models to sqla 2.0 mapping api

* fix some importing and typing weirdness

* fix types of a lot of nullable columns

* remove get_ref methods

* fix issues found by tests

* rewrite all queries in repository_recipe to 2.0 style

* rewrite all repository queries to 2.0 api

* rewrite all remaining queries to 2.0 api

* remove now-unneeded __allow_unmapped__ flag

* remove and fix some unneeded cases of "# type: ignore"

* fix formatting

* bump black version

* run black

* can this please be the last one. okay. just. okay.

* fix repository errors

* remove return

* drop open API validator

---------

Co-authored-by: Sören Busch <fleshgolem@gmx.net>
2023-02-06 18:43:12 -09:00
Hayden
f3a26f864d chore: update linters (#2095)
* update deps

* ruff auto-fixes

* refactor match statements where possible
2023-02-05 09:51:44 -09:00
Michael Genson
4fc4ba934d fix: remove network calls from tests (#2055)
* abstracted scraper get_html method

* applied mock to all scrapers

* fixed incorrect var reference
2023-02-05 09:14:57 -09:00
Hayden
530f7c9d6b logging improvements (#2073)
* Scheduled tasks log to Debug, not Info

* Add LOG_LEVEL config to .env

* Update some other log levels and fix typos

* fix logger initializer

---------

Co-authored-by: Jakob Rubin <647846+Grygon@users.noreply.github.com>
2023-01-28 16:54:44 -09:00
Michael Genson
617cc1fdfb Refactor Shopping List API (#2021)
* tidied up shopping list item models
redefined recipe refs and updated models
added calculated display attribute to unify shopping list item rendering
added validation to use a food's label if an item's label is null

* fixed schema reference

* refactored shopping list item service
route all operations through one central method to account for edgecases
return item collections for all operations to account for merging
consolidate recipe items before sending them to the shopping list

* made fractions prettier

* replaced redundant display text util

* fixed edgecase for zero quantity items on a recipe

* fix for pre-merging recipe ingredients

* fixed edgecase for merging create_items together

* fixed bug with merged updated items creating dupes

* added test for self-removing recipe ref

* update items are now merged w/ existing items

* refactored service to make it easier to read

* added a lot of tests

* made it so checked items are never merged

* fixed bug with dragging + re-ordering

* fix for postgres cascade issue

* added prevalidator to recipe ref to avoid db error
2023-01-28 15:45:02 -09:00
Sören
3415a9c310 Convert scraper to use async (#1915)
* add httpx depedency for async http requests

* rework scraper strategies to download recipe html asynchronously

* rework recipe_data_service to download recipe images asynchronously

* fix recipe_parser test, so it can use async results

* fix bulk import so that it also works with async scraper

* fix broken recipe_parser tests

* Fix issues found by scanners

* Add additional checks for ingredient and instruction count in test_create_by_url

* Revert changes in test recipe_data
Since we are checking ingredients and instructions in test_create_url now, these would fail with the stored html of recipe data

* Add explicit type annotation in recipe_data_service.largest_content_len

* Fix typo in annotation
2023-01-28 15:43:27 -09:00
Michael Genson
856a009dd8 fix: for several Shopping List bugs (#1912)
* prevent list refresh while re-ordering items

* update position of new items to stay at the bottom

* prevent refresh while loading

* copy item while editing so it isn't refreshed

* added loading count to handle overlapping actions

* fixed recipe reference throttling

* prevent merging checked and unchecked items
2023-01-08 08:23:24 -09:00
Hayden
fc92c39b7c feat: additional events dispatch (#1999)
* formatting

* add new user type

* add registration event

* publish events on new mealplan

* update UI for supported types + type updates
2023-01-07 10:18:08 -09:00
Hayden
4d5550ad85 chore: mypy, ruff, extract, openapi, and recipes-scraper updates (#1968)
* bump ruff and mypy

* mypy fixes

* bump and fix openapi

* drop debug statement

* bump extruct

* bump recipes-scrapers
2023-01-01 13:47:27 -09:00
Michael Genson
46cc3898ab feat: Improved Recipe Scaling Support and Shopping List Recipe Refactor (#1847)
* propogate scale changes to print view

* fixed incorrect variable reference

* refactored shopping list recipe routes
cleaned up existing logic
added support for recipe scaling

* updated current revision

* adding to shopping list respects UI recipe scale

* added field annotations

* added tests for recipe scaling

* made column nullable and set to 1 during migration
2022-12-30 13:47:35 -09:00