* initial public explorer API endpoint
* public API endpoint
* cleanup recipe page
* wip: init explorer page
* use public URLs for shared recipes
* refactor private share tokens to use shared page
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (French)
* New translations en-US.json (Swedish)
* refactored event dispatching
added EventDocumentType and EventOperation to Event
added event listeners to bulk recipe changes
overhauled shopping list item events to be more useful
modified shopping list item repo to return more information
* added internal documentation for event types
* renamed message_types.py to event_types.py
* added unique event id and fixed instantiation
* generalized event listeners and publishers
moved apprise publisher to new apprise event listener
fixed duplicate message bug with apprise publisher
* added JWT field for user-specified integration id
* removed obselete test notification route
* tuned up existing notification tests
* added dependency to get integration_id from jwt
* added base crud controller to facilitate events
* simplified event publishing
* temporarily fixed test notification
Refactor recipe page to use break up the component and make it more usable across different pages. I've left the old route in as well in case there is some functional breaks, I plan to remove it before the official release once we've tested the new editor some more in production. For now there will just have to be some duplicate components and pages around.
Adds a proper check for the mealplan.recipe property in multiple places to resolve the bug described in #1571. In development the page would fail to render.
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (Dutch)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (German)
* New translations en-US.json (Hebrew)
* New translations en-US.json (German)
* grouped "instructions" header with first section
* fixed sort by last updated date
* somewhat-hacky bugfix for large screens
* modified page size to be divisible by 4
* fixed missing export for new data forms
* fix typing on auth context
* extract user password strength meter
* fix broken useToggle method
* extend form to accept arguments for validators
* enforce password length on update
* fix user password change form
* 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
On mobile screens when following a registration invite link, the page
would be too wide to interact with, extending well over the sides of the
phone.
This is because the minimum size of content is set to `auto` (by
default), and accord to the spec (https://www.w3.org/TR/css-flexbox-1/#specified-size-suggestion)
the minimum size of the element is the mimimum size of it's content. The
password strength element in the panel had a width of 500px, making the
entire component overflow the screen.
Changing the width to `flex-basis` instead, allows for the password
strength element to shrink if it overflows the screen.
* Moves dependencies directly to controllers
* Reduces use of @cached_property - (I have a suspicion that this is a factor in memory usage)
* reduce duplicate ways to access the same property on a controller.
* 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
* New translations en-US.json (Swedish)
* New translations en-US.json (Swedish)
* 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 (Dutch)
* New translations en-US.json (Dutch)