From 3118b0e423c47b5d6aacde4469cfd54039b56dbf Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sun, 12 Mar 2023 15:37:24 -0500 Subject: [PATCH] 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 --- .gitignore | 1 + frontend/lang/messages/en-US.json | 23 +++- frontend/lib/api/types/group.ts | 2 +- frontend/pages/group/migrations.vue | 52 ++++++-- .../routes/groups/controller_group_reports.py | 2 +- mealie/routes/groups/controller_migrations.py | 2 + mealie/schema/group/group_migration.py | 1 + mealie/services/migrations/__init__.py | 1 + mealie/services/migrations/_migration_base.py | 42 +++--- mealie/services/migrations/copymethat.py | 123 ++++++++++++++++++ .../migrations/utils/migration_helpers.py | 9 +- mealie/services/scraper/cleaner.py | 46 ++++++- poetry.lock | 2 +- pyproject.toml | 1 + tests/data/__init__.py | 2 + tests/data/migrations/copymethat.zip | Bin 0 -> 81249 bytes .../test_recipe_migrations.py | 15 +++ 17 files changed, 288 insertions(+), 36 deletions(-) create mode 100644 mealie/services/migrations/copymethat.py create mode 100644 tests/data/migrations/copymethat.zip diff --git a/.gitignore b/.gitignore index c76b249726ac..1259a442359c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ docs/site/ frontend/dist/ dev/code-generation/generated/* +dev/data/mealie.db-journal dev/data/backups/* dev/data/debug/* dev/data/img/* diff --git a/frontend/lang/messages/en-US.json b/frontend/lang/messages/en-US.json index d52a11988b07..a4db6b14a1b8 100644 --- a/frontend/lang/messages/en-US.json +++ b/frontend/lang/messages/en-US.json @@ -283,17 +283,34 @@ "meal-plan-settings": "Meal Plan Settings" }, "migration": { + "migration-data-removed": "Migration data removed", + "new-migration": "New Migration", + "no-file-selected": "No File Selected", + "no-migration-data-available": "No Migration Data Available", + "previous-migrations": "Previous Migrations", + "recipe-migration": "Recipe Migration", "chowdown": { "description": "Migrate data from Chowdown", + "description-long": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below.", "title": "Chowdown" }, - "migration-data-removed": "Migration data removed", "nextcloud": { "description": "Migrate data from a Nextcloud Cookbook instance", + "description-long": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.", "title": "Nextcloud Cookbook" }, - "no-migration-data-available": "No Migration Data Available", - "recipe-migration": "Recipe Migration" + "copymethat": { + "description-long": "Mealie can import recipes from Copy Me That. Export your recipes in HTML format, then upload the .zip below.", + "title": "Copy Me That Recipe Manager" + }, + "paprika": { + "description-long": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.", + "title": "Paprika Recipe Manager" + }, + "mealie-pre-v1": { + "description-long": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.", + "title": "Mealie Pre v1.0" + } }, "new-recipe": { "bulk-add": "Bulk Add", diff --git a/frontend/lib/api/types/group.ts b/frontend/lib/api/types/group.ts index eaee22ec294a..1f448dc0a1ba 100644 --- a/frontend/lib/api/types/group.ts +++ b/frontend/lib/api/types/group.ts @@ -6,7 +6,7 @@ */ export type WebhookType = "mealplan"; -export type SupportedMigrations = "nextcloud" | "chowdown" | "paprika" | "mealie_alpha"; +export type SupportedMigrations = "nextcloud" | "chowdown" | "copymethat" | "paprika" | "mealie_alpha"; export interface CreateGroupPreferences { privateGroup?: boolean; diff --git a/frontend/pages/group/migrations.vue b/frontend/pages/group/migrations.vue index 2394ab5c0b17..224d5c01349b 100644 --- a/frontend/pages/group/migrations.vue +++ b/frontend/pages/group/migrations.vue @@ -14,7 +14,7 @@ Mealie. - + Choose Migration Type @@ -39,7 +39,7 @@ :text-btn="false" @uploaded="setFileObject" /> - {{ fileObject.name || "No file selected" }} + {{ fileObject.name || $i18n.tc('migration.no-file-selected') }} @@ -58,7 +58,7 @@ - + @@ -74,13 +74,14 @@ import { SupportedMigrations } from "~/lib/api/types/group"; const MIGRATIONS = { nextcloud: "nextcloud", chowdown: "chowdown", + copymethat: "copymethat", paprika: "paprika", mealie: "mealie_alpha", }; export default defineComponent({ setup() { - const { $globals } = useContext(); + const { $globals, i18n } = useContext(); const api = useUserApi(); @@ -95,26 +96,30 @@ export default defineComponent({ const items: MenuItem[] = [ { - text: "Nextcloud", + text: i18n.tc("migration.nextcloud.title"), value: MIGRATIONS.nextcloud, }, { - text: "Chowdown", + text: i18n.tc("migration.chowdown.title"), value: MIGRATIONS.chowdown, }, { - text: "Paprika", + text: i18n.tc("migration.copymethat.title"), + value: MIGRATIONS.copymethat, + }, + { + text: i18n.tc("migration.paprika.title"), value: MIGRATIONS.paprika, }, { - text: "Mealie", + text: i18n.tc("migration.mealie-pre-v1.title"), value: MIGRATIONS.mealie, }, ]; const _content = { [MIGRATIONS.nextcloud]: { - text: "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.", + text: i18n.tc("migration.nextcloud.description-long"), tree: [ { id: 1, @@ -146,7 +151,7 @@ export default defineComponent({ ], }, [MIGRATIONS.chowdown]: { - text: "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below", + text: i18n.tc("migration.chowdown.description-long"), tree: [ { id: 1, @@ -177,12 +182,35 @@ export default defineComponent({ }, ], }, + [MIGRATIONS.copymethat]: { + text: i18n.tc("migration.copymethat.description-long"), + tree: [ + { + id: 1, + icon: $globals.icons.zip, + name: "Copy_Me_That_20230306.zip", + children: [ + { + id: 2, + name: "images", + icon: $globals.icons.folderOutline, + children: [ + { id: 3, name: "recipe_1_an5zy.jpg", icon: $globals.icons.fileImage }, + { id: 4, name: "recipe_2_82el8.jpg", icon: $globals.icons.fileImage }, + { id: 5, name: "recipe_3_j75qg.jpg", icon: $globals.icons.fileImage }, + ], + }, + { id: 6, name: "recipes.html", icon: $globals.icons.codeJson } + ] + } + ], + }, [MIGRATIONS.paprika]: { - text: "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.", + text: i18n.tc("migration.paprika.description-long"), tree: false, }, [MIGRATIONS.mealie]: { - text: "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.", + text: i18n.tc("migration.mealie-pre-v1.description-long"), tree: [ { id: 1, diff --git a/mealie/routes/groups/controller_group_reports.py b/mealie/routes/groups/controller_group_reports.py index 18755d07274e..40beacc0b2fc 100644 --- a/mealie/routes/groups/controller_group_reports.py +++ b/mealie/routes/groups/controller_group_reports.py @@ -44,6 +44,6 @@ class GroupReportsController(BaseUserController): def delete_one(self, item_id: UUID4): try: self.mixins.delete_one(item_id) # type: ignore - return SuccessResponse.respond(self.t("report-deleted")) + return SuccessResponse.respond(self.t("group.report-deleted")) except Exception as ex: raise HTTPException(500, ErrorResponse.respond("Failed to delete report")) from ex diff --git a/mealie/routes/groups/controller_migrations.py b/mealie/routes/groups/controller_migrations.py index f7f717a42ec2..76ebfea7526a 100644 --- a/mealie/routes/groups/controller_migrations.py +++ b/mealie/routes/groups/controller_migrations.py @@ -12,6 +12,7 @@ from mealie.schema.reports.reports import ReportSummary from mealie.services.migrations import ( BaseMigrator, ChowdownMigrator, + CopyMeThatMigrator, MealieAlphaMigrator, NextcloudMigrator, PaprikaMigrator, @@ -45,6 +46,7 @@ class GroupMigrationController(BaseUserController): table: dict[SupportedMigrations, type[BaseMigrator]] = { SupportedMigrations.chowdown: ChowdownMigrator, + SupportedMigrations.copymethat: CopyMeThatMigrator, SupportedMigrations.mealie_alpha: MealieAlphaMigrator, SupportedMigrations.nextcloud: NextcloudMigrator, SupportedMigrations.paprika: PaprikaMigrator, diff --git a/mealie/schema/group/group_migration.py b/mealie/schema/group/group_migration.py index b3a6573d9c41..6e02825142aa 100644 --- a/mealie/schema/group/group_migration.py +++ b/mealie/schema/group/group_migration.py @@ -6,6 +6,7 @@ from mealie.schema._mealie import MealieModel class SupportedMigrations(str, enum.Enum): nextcloud = "nextcloud" chowdown = "chowdown" + copymethat = "copymethat" paprika = "paprika" mealie_alpha = "mealie_alpha" diff --git a/mealie/services/migrations/__init__.py b/mealie/services/migrations/__init__.py index 7111958affd2..4610ff7705cc 100644 --- a/mealie/services/migrations/__init__.py +++ b/mealie/services/migrations/__init__.py @@ -1,4 +1,5 @@ from .chowdown import * +from .copymethat import * from .mealie_alpha import * from .nextcloud import * from .paprika import * diff --git a/mealie/services/migrations/_migration_base.py b/mealie/services/migrations/_migration_base.py index c62c9a735d42..1268a38fb7cd 100644 --- a/mealie/services/migrations/_migration_base.py +++ b/mealie/services/migrations/_migration_base.py @@ -5,6 +5,7 @@ from uuid import UUID from pydantic import UUID4 from mealie.core import root_logger +from mealie.core.exceptions import UnexpectedNone from mealie.repos.all_repositories import AllRepositories from mealie.schema.recipe import Recipe from mealie.schema.recipe.recipe_settings import RecipeSettings @@ -16,6 +17,7 @@ from mealie.schema.reports.reports import ( ReportSummary, ReportSummaryStatus, ) +from mealie.services.recipe.recipe_service import RecipeService from mealie.services.scraper import cleaner from .._base_service import BaseService @@ -38,17 +40,27 @@ class BaseMigrator(BaseService): self.archive = archive self.db = db self.session = session - self.user_id = user_id - self.group_id = group_id self.add_migration_tag = add_migration_tag + user = db.users.get_one(user_id) + if not user: + raise UnexpectedNone(f"Cannot find user {user_id}") + + group = db.groups.get_one(group_id) + if not group: + raise UnexpectedNone(f"Cannot find group {group_id}") + + self.user = user + self.group = group + self.name = "migration" self.report_entries = [] self.logger = root_logger.get_logger() - self.helpers = DatabaseMigrationHelpers(self.db, self.session, self.group_id, self.user_id) + self.helpers = DatabaseMigrationHelpers(self.db, self.session, self.group.id, self.user.id) + self.recipe_service = RecipeService(db, user, group) super().__init__() @@ -60,7 +72,7 @@ class BaseMigrator(BaseService): name=report_name, category=ReportCategory.migration, status=ReportSummaryStatus.in_progress, - group_id=self.group_id, + group_id=self.group.id, ) self.report = self.db.group_reports.create(report_to_save) @@ -117,25 +129,23 @@ class BaseMigrator(BaseService): return_vars: list[tuple[str, UUID4, bool]] = [] - group = self.db.groups.get_one(self.group_id) - - if not group or not group.preferences: + if not self.group.preferences: raise ValueError("Group preferences not found") default_settings = RecipeSettings( - public=group.preferences.recipe_public, - show_nutrition=group.preferences.recipe_show_nutrition, - show_assets=group.preferences.recipe_show_assets, - landscape_view=group.preferences.recipe_landscape_view, - disable_comments=group.preferences.recipe_disable_comments, - disable_amount=group.preferences.recipe_disable_amount, + public=self.group.preferences.recipe_public, + show_nutrition=self.group.preferences.recipe_show_nutrition, + show_assets=self.group.preferences.recipe_show_assets, + landscape_view=self.group.preferences.recipe_landscape_view, + disable_comments=self.group.preferences.recipe_disable_comments, + disable_amount=self.group.preferences.recipe_disable_amount, ) for recipe in validated_recipes: recipe.settings = default_settings - recipe.user_id = self.user_id - recipe.group_id = self.group_id + recipe.user_id = self.user.id + recipe.group_id = self.group.id if recipe.tags: recipe.tags = self.helpers.get_or_set_tags(x.name for x in recipe.tags) @@ -151,7 +161,7 @@ class BaseMigrator(BaseService): exception: str | Exception = "" status = False try: - recipe = self.db.recipes.create(recipe) + recipe = self.recipe_service.create_one(recipe) status = True except Exception as inst: diff --git a/mealie/services/migrations/copymethat.py b/mealie/services/migrations/copymethat.py new file mode 100644 index 000000000000..d3b14f28cda6 --- /dev/null +++ b/mealie/services/migrations/copymethat.py @@ -0,0 +1,123 @@ +import tempfile +import zipfile +from datetime import datetime +from pathlib import Path + +from bs4 import BeautifulSoup + +from mealie.schema.reports.reports import ReportEntryCreate + +from ._migration_base import BaseMigrator +from .utils.migration_alias import MigrationAlias +from .utils.migration_helpers import import_image + + +def parse_recipe_tags(tags: list) -> list[str]: + """Parses the list of recipe tags and removes invalid ones""" + + updated_tags: list[str] = [] + for tag in tags: + if not tag or not isinstance(tag, str): + continue + + if "Tags:" in tag: + continue + + updated_tags.append(tag) + + return updated_tags + + +class CopyMeThatMigrator(BaseMigrator): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + self.name = "copymethat" + + self.key_aliases = [ + MigrationAlias(key="last_made", alias="made_this", func=lambda x: datetime.now()), + MigrationAlias(key="notes", alias="recipeNotes"), + MigrationAlias(key="orgURL", alias="original_link"), + MigrationAlias(key="rating", alias="ratingValue"), + MigrationAlias(key="recipeIngredient", alias="recipeIngredients"), + MigrationAlias(key="recipeYield", alias="servings", func=lambda x: x.replace(":", ": ")), + ] + + def _process_recipe_document(self, source_dir: Path, soup: BeautifulSoup) -> dict: + """Reads a single recipe's HTML and converts it to a dictionary""" + + recipe_dict: dict = {} + recipe_tags: list[str] = [] + for tag in soup.find_all(): + # the recipe image tag has no id, so we parse it directly + if tag.name == "img" and "recipeImage" in tag.get("class", []): + if image_path := tag.get("src"): + recipe_dict["image"] = str(source_dir.joinpath(image_path)) + + continue + + # tags (internally named categories) are not in a list, and don't have ids + if tag.name == "span" and "recipeCategory" in tag.get("class", []): + recipe_tag = tag.get_text(strip=True) + if "Tags:" not in recipe_tag: + recipe_tags.append(recipe_tag) + + continue + + # add only elements with an id to the recipe dictionary + if not (tag_id := tag.get("id")): + continue + + # for lists, store the list items as an array (e.g. for recipe instructions) + if tag.name in ["ul", "ol"]: + recipe_dict[tag_id] = [item.get_text(strip=True) for item in tag.find_all("li", recursive=False)] + continue + + # for all other tags, write the text directly to the recipe data + recipe_dict[tag_id] = tag.get_text(strip=True) + + if recipe_tags: + recipe_dict["tags"] = recipe_tags + + return recipe_dict + + def _migrate(self) -> None: + with tempfile.TemporaryDirectory() as tmpdir: + with zipfile.ZipFile(self.archive) as zip_file: + zip_file.extractall(tmpdir) + + source_dir = Path(tmpdir) + + recipes_as_dicts: list[dict] = [] + for recipes_data_file in source_dir.glob("*.html"): + with open(recipes_data_file, encoding="utf-8") as f: + soup = BeautifulSoup(f, "lxml") + for recipe_data in soup.find_all("div", class_="recipe"): + try: + recipes_as_dicts.append(self._process_recipe_document(source_dir, recipe_data)) + + # since recipes are stored in one large file, we keep going on error + except Exception as e: + self.report_entries.append( + ReportEntryCreate( + report_id=self.report_id, + success=False, + message="Failed to parse recipe", + exception=f"{type(e).__name__}: {e}", + ) + ) + + recipes = [self.clean_recipe_dictionary(x) for x in recipes_as_dicts] + results = self.import_recipes_to_database(recipes) + recipe_lookup = {r.slug: r for r in recipes} + for slug, recipe_id, status in results: + if status: + try: + r = recipe_lookup.get(slug) + if not r or not r.image: + continue + + except StopIteration: + continue + + import_image(r.image, recipe_id) diff --git a/mealie/services/migrations/utils/migration_helpers.py b/mealie/services/migrations/utils/migration_helpers.py index 20723f5b6294..ed1123d1f359 100644 --- a/mealie/services/migrations/utils/migration_helpers.py +++ b/mealie/services/migrations/utils/migration_helpers.py @@ -81,10 +81,17 @@ def glob_walker(directory: Path, glob_str: str, return_parent=True) -> list[Path return matches -def import_image(src: Path, recipe_id: UUID4): +def import_image(src: str | Path, recipe_id: UUID4): """Read the successful migrations attribute and for each import the image appropriately into the image directory. Minification is done in mass after the migration occurs. """ + + if isinstance(src, str): + src = Path(src) + + if not src.exists(): + return + data_service = RecipeDataService(recipe_id=recipe_id) data_service.write_image(src, src.suffix) diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index 920927c6614c..762abd98783c 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -49,7 +49,9 @@ def clean(recipe_data: dict, url=None) -> dict: recipe_data["recipeInstructions"] = clean_instructions(recipe_data.get("recipeInstructions", [])) recipe_data["image"] = clean_image(recipe_data.get("image"))[0] recipe_data["slug"] = slugify(recipe_data.get("name", "")) - recipe_data["orgURL"] = url + recipe_data["orgURL"] = url or recipe_data.get("orgURL") + recipe_data["notes"] = clean_notes(recipe_data.get("notes")) + recipe_data["rating"] = clean_int(recipe_data.get("rating")) return recipe_data @@ -255,6 +257,48 @@ def clean_ingredients(ingredients: list | str | None, default: list | None = Non raise TypeError(f"Unexpected type for ingredients: {type(ingredients)}, {ingredients}") +def clean_int(val: str | int | None, min: int | None = None, max: int | None = None): + if val is None or isinstance(val, int): + return val + + filtered_val = "".join(c for c in val if c.isnumeric()) + if not filtered_val: + return None + + val = int(filtered_val) + if min is None or max is None: + return val + + if not (min <= val <= max): + return None + + return val + + +def clean_notes(notes: typing.Any) -> list[dict] | None: + if not isinstance(notes, list): + return None + + parsed_notes: list[dict] = [] + for note in notes: + if not isinstance(note, (str, dict)): + continue + + if isinstance(note, dict): + if "text" not in note: + continue + + if "title" not in note: + note["title"] = "" + + parsed_notes.append(note) + continue + + parsed_notes.append({"title": "", "text": note}) + + return parsed_notes + + def clean_yield(yld: str | list[str] | None) -> str: """ yield_amount attemps to parse out the yield amount from a recipe. diff --git a/poetry.lock b/poetry.lock index eaa1c1e88a4f..ca24343382a4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3050,4 +3050,4 @@ pgsql = ["psycopg2-binary"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "c88c209ebd76e8f697a1d1af54496b900d4e16a087ca97be7cb288da039526ce" +content-hash = "2e8a98d35c22f3afceefbf22d2b2e23d3471eb5af88e3a907ec848370e92dd14" diff --git a/pyproject.toml b/pyproject.toml index 1cde68b5f0f7..a0e6a0faf944 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ recipe-scrapers = "^14.26.0" requests = "^2.25.1" tzdata = "^2022.7" uvicorn = {extras = ["standard"], version = "^0.20.0"} +beautifulsoup4 = "^4.11.2" [tool.poetry.group.dev.dependencies] black = "^23.1.0" diff --git a/tests/data/__init__.py b/tests/data/__init__.py index abdd46163d12..30be70f5ca5a 100644 --- a/tests/data/__init__.py +++ b/tests/data/__init__.py @@ -8,6 +8,8 @@ migrations_paprika = CWD / "migrations/paprika.zip" migrations_chowdown = CWD / "migrations/chowdown.zip" +migrations_copymethat = CWD / "migrations/copymethat.zip" + migrations_mealie = CWD / "migrations/mealie.zip" migrations_nextcloud = CWD / "migrations/nextcloud.zip" diff --git a/tests/data/migrations/copymethat.zip b/tests/data/migrations/copymethat.zip new file mode 100644 index 0000000000000000000000000000000000000000..49ab75b1e802333642f9564fe28710e0dc1d4dc5 GIT binary patch literal 81249 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%0D=*bn$pq#IOS6t_~}*hAxa@XQ!y^Wq7A9XxaKR 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 literal 0 HcmV?d00001 diff --git a/tests/integration_tests/recipe_migration_tests/test_recipe_migrations.py b/tests/integration_tests/recipe_migration_tests/test_recipe_migrations.py index e2f25916db41..6c5306c660e2 100644 --- a/tests/integration_tests/recipe_migration_tests/test_recipe_migrations.py +++ b/tests/integration_tests/recipe_migration_tests/test_recipe_migrations.py @@ -7,6 +7,7 @@ from fastapi.testclient import TestClient from mealie.schema.group.group_migration import SupportedMigrations from tests import data as test_data from tests.utils import api_routes +from tests.utils.assertion_helpers import assert_derserialize from tests.utils.fixture_schemas import TestUser @@ -20,6 +21,7 @@ test_cases = [ MigrationTestData(typ=SupportedMigrations.nextcloud, archive=test_data.migrations_nextcloud), MigrationTestData(typ=SupportedMigrations.paprika, archive=test_data.migrations_paprika), MigrationTestData(typ=SupportedMigrations.chowdown, archive=test_data.migrations_chowdown), + MigrationTestData(typ=SupportedMigrations.copymethat, archive=test_data.migrations_copymethat), MigrationTestData(typ=SupportedMigrations.mealie_alpha, archive=test_data.migrations_mealie), ] @@ -27,6 +29,7 @@ test_ids = [ "nextcloud_archive", "paprika_archive", "chowdown_archive", + "copymethat_archive", "mealie_alpha_archive", ] @@ -56,3 +59,15 @@ def test_recipe_migration(api_client: TestClient, unique_user: TestUser, mig: Mi for item in response.json()["entries"]: assert item["success"] + + # Validate Create Event + params = {"orderBy": "created_at", "orderDirection": "desc"} + response = api_client.get(api_routes.recipes, params=params, headers=unique_user.token) + query_data = assert_derserialize(response) + assert len(query_data["items"]) + slug = query_data["items"][0]["slug"] + + response = api_client.get(api_routes.recipes_slug_timeline_events(slug), headers=unique_user.token) + query_data = assert_derserialize(response) + events = query_data["items"] + assert len(events)