├── .coveragerc ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .dockerignore ├── .env.template ├── .flake8 ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md.bak │ ├── bug_report.yml │ ├── config.yml │ ├── doc_issue.yml │ ├── feature_request.md.bak │ ├── feature_request.yml │ ├── help-request.md.bak │ ├── help_request.yml │ ├── url_import.md.bak │ └── website_import.yml ├── dependabot.yml └── workflows │ ├── build-docker-open-data.yml │ ├── build-docker.yml │ ├── ci.yml │ ├── codeql-analysis.yml │ └── docs.yml ├── .gitignore ├── .idea ├── codeStyles │ └── codeStyleConfig.xml ├── dictionaries │ ├── vaben.xml │ └── vabene1111_PC.xml ├── inspectionProfiles │ └── profiles_settings.xml ├── modules.xml ├── recipes.iml ├── vcs.xml └── watcherTasks.xml ├── .prettierignore ├── .prettierrc ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── CONTRIBUTERS.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── SECURITY.md ├── boot.sh ├── cookbook ├── __init__.py ├── admin.py ├── apps.py ├── connectors │ ├── __init__.py │ ├── connector.py │ ├── connector_manager.py │ └── homeassistant.py ├── fixtures │ └── german_example_tags.json ├── forms.py ├── helper │ ├── AllAuthCustomAdapter.py │ ├── CustomStorageClass.py │ ├── HelperFunctions.py │ ├── __init__.py │ ├── automation_helper.py │ ├── cache_helper.py │ ├── context_processors.py │ ├── fdc_helper.py │ ├── image_processing.py │ ├── ingredient_parser.py │ ├── mdx_attributes.py │ ├── mdx_urlize.py │ ├── open_data_importer.py │ ├── permission_config.py │ ├── permission_helper.py │ ├── property_helper.py │ ├── recipe_search.py │ ├── recipe_url_import.py │ ├── scope_middleware.py │ ├── shopping_helper.py │ ├── template_helper.py │ └── unit_conversion_helper.py ├── integration │ ├── cheftap.py │ ├── chowdown.py │ ├── cookbookapp.py │ ├── cookmate.py │ ├── copymethat.py │ ├── default.py │ ├── domestica.py │ ├── gourmet.py │ ├── integration.py │ ├── mealie.py │ ├── mealmaster.py │ ├── melarecipes.py │ ├── nextcloud_cookbook.py │ ├── openeats.py │ ├── paprika.py │ ├── pdfexport.py │ ├── pepperplate.py │ ├── plantoeat.py │ ├── recettetek.py │ ├── recipekeeper.py │ ├── recipesage.py │ ├── rezeptsuitede.py │ ├── rezkonv.py │ └── saffron.py ├── locale │ ├── ar │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── bg │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ca │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── cs │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── da │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── de │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── el │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── fi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── he │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── hr │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── hu_HU │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── hy │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── id │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── it │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── lv │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── nb_NO │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── nl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── rn │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ro │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── sl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── sv │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── tr │ │ ├── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ │ └── id │ │ │ └── LC_MESSAGES │ │ │ └── django.po │ ├── uk │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── vi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ └── zh_Hant │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── django.po ├── management │ └── commands │ │ ├── export.py │ │ ├── fix_duplicate_properties.py │ │ ├── import.py │ │ ├── rebuildindex.py │ │ └── seed_basic_data.py ├── managers.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20191119_2035.py │ ├── 0003_enable_pgtrm.py │ ├── 0004_storage_created_by.py │ ├── 0005_recipebook_recipebookentry.py │ ├── 0006_recipe_image.py │ ├── 0007_auto_20191226_0852.py │ ├── 0008_mealplan.py │ ├── 0009_auto_20200130_1056.py │ ├── 0010_auto_20200130_1059.py │ ├── 0011_remove_recipeingredients_unit.py │ ├── 0012_auto_20200130_1116.py │ ├── 0013_userpreference.py │ ├── 0014_auto_20200213_2332.py │ ├── 0015_auto_20200213_2334.py │ ├── 0016_auto_20200213_2335.py │ ├── 0017_auto_20200216_2257.py │ ├── 0018_auto_20200216_2303.py │ ├── 0019_ingredient.py │ ├── 0020_recipeingredient_ingredient.py │ ├── 0021_auto_20200216_2309.py │ ├── 0022_remove_recipeingredient_name.py │ ├── 0023_auto_20200216_2311.py │ ├── 0024_auto_20200216_2313.py │ ├── 0025_userpreference_nav_color.py │ ├── 0026_auto_20200219_1605.py │ ├── 0027_ingredient_recipe.py │ ├── 0028_auto_20200317_1901.py │ ├── 0029_auto_20200317_1901.py │ ├── 0030_recipeingredient_note.py │ ├── 0031_auto_20200407_1841.py │ ├── 0032_userpreference_default_unit.py │ ├── 0033_userpreference_default_page.py │ ├── 0034_auto_20200426_1614.py │ ├── 0035_auto_20200427_1637.py │ ├── 0036_auto_20200427_1800.py │ ├── 0037_userpreference_search_style.py │ ├── 0038_auto_20200502_1259.py │ ├── 0039_recipebook_shared.py │ ├── 0040_auto_20200502_1433.py │ ├── 0041_auto_20200502_1446.py │ ├── 0042_cooklog.py │ ├── 0043_auto_20200507_2302.py │ ├── 0044_viewlog.py │ ├── 0045_userpreference_show_recent.py │ ├── 0046_auto_20200602_1133.py │ ├── 0047_auto_20200602_1133.py │ ├── 0048_auto_20200602_1140.py │ ├── 0049_mealtype_created_by.py │ ├── 0050_auto_20200611_1509.py │ ├── 0051_auto_20200611_1518.py │ ├── 0052_userpreference_ingredient_decimals.py │ ├── 0053_auto_20200611_2217.py │ ├── 0054_sharelink.py │ ├── 0055_auto_20200616_1236.py │ ├── 0056_auto_20200625_2118.py │ ├── 0056_auto_20200625_2157.py │ ├── 0057_auto_20200625_2127.py │ ├── 0058_auto_20200625_2128.py │ ├── 0059_auto_20200625_2137.py │ ├── 0060_auto_20200625_2144.py │ ├── 0061_merge_20200625_2209.py │ ├── 0062_auto_20200625_2219.py │ ├── 0063_auto_20200625_2230.py │ ├── 0064_auto_20200625_2329.py │ ├── 0065_auto_20200626_1444.py │ ├── 0066_auto_20200626_1455.py │ ├── 0067_auto_20200629_1508.py │ ├── 0068_auto_20200629_2127.py │ ├── 0069_auto_20200629_2134.py │ ├── 0070_auto_20200701_2007.py │ ├── 0071_auto_20200701_2048.py │ ├── 0072_step_show_as_header.py │ ├── 0073_auto_20200708_2311.py │ ├── 0074_remove_keyword_created_by.py │ ├── 0075_shoppinglist_shoppinglistentry_shoppinglistrecipe.py │ ├── 0076_shoppinglist_entries.py │ ├── 0077_invitelink.py │ ├── 0078_invitelink_used_by.py │ ├── 0079_invitelink_group.py │ ├── 0080_auto_20200921_2331.py │ ├── 0081_auto_20200921_2349.py │ ├── 0082_auto_20200922_1143.py │ ├── 0083_space.py │ ├── 0084_auto_20200922_1233.py │ ├── 0085_auto_20200922_1235.py │ ├── 0086_auto_20200929_1143.py │ ├── 0087_auto_20200929_1152.py │ ├── 0088_shoppinglist_finished.py │ ├── 0089_auto_20201117_2222.py │ ├── 0090_auto_20201214_1359.py │ ├── 0091_auto_20201226_1551.py │ ├── 0092_recipe_servings.py │ ├── 0093_auto_20201231_1236.py │ ├── 0094_auto_20201231_1238.py │ ├── 0095_auto_20210107_1804.py │ ├── 0096_auto_20210109_2044.py │ ├── 0097_auto_20210113_1315.py │ ├── 0098_auto_20210113_1320.py │ ├── 0099_auto_20210113_1518.py │ ├── 0100_recipe_servings_text.py │ ├── 0101_storage_path.py │ ├── 0102_auto_20210125_1147.py │ ├── 0103_food_ignore_shopping.py │ ├── 0104_auto_20210125_2133.py │ ├── 0105_auto_20210126_1604.py │ ├── 0106_shoppinglist_supermarket.py │ ├── 0107_auto_20210128_1535.py │ ├── 0108_auto_20210219_1410.py │ ├── 0109_auto_20210221_1204.py │ ├── 0110_auto_20210221_1406.py │ ├── 0111_space_created_by.py │ ├── 0112_remove_synclog_space.py │ ├── 0113_auto_20210317_2017.py │ ├── 0114_importlog.py │ ├── 0115_telegrambot.py │ ├── 0116_auto_20210319_0012.py │ ├── 0117_space_max_recipes.py │ ├── 0118_auto_20210406_1805.py │ ├── 0119_auto_20210411_2101.py │ ├── 0120_bookmarklet.py │ ├── 0121_auto_20210518_1638.py │ ├── 0122_auto_20210527_1712.py │ ├── 0123_invitelink_email.py │ ├── 0124_alter_userpreference_theme.py │ ├── 0125_space_demo.py │ ├── 0126_alter_userpreference_theme.py │ ├── 0127_remove_invitelink_username.py │ ├── 0128_userfile.py │ ├── 0129_auto_20210608_1233.py │ ├── 0130_alter_userfile_file_size_kb.py │ ├── 0131_auto_20210608_1929.py │ ├── 0132_sharelink_request_count.py │ ├── 0133_sharelink_abuse_blocked.py │ ├── 0134_space_allow_sharing.py │ ├── 0135_auto_20210615_2210.py │ ├── 0136_auto_20210617_1343.py │ ├── 0137_auto_20210617_1501.py │ ├── 0138_auto_20210617_1602.py │ ├── 0139_space_created_at.py │ ├── 0140_userpreference_created_at.py │ ├── 0141_auto_20210713_1042.py │ ├── 0142_alter_userpreference_search_style.py │ ├── 0143_build_full_text_index.py │ ├── 0144_create_searchfields.py │ ├── 0145_alter_userpreference_search_style.py │ ├── 0146_alter_userpreference_use_fractions.py │ ├── 0147_keyword_to_tree.py │ ├── 0148_auto_20210813_1829.py │ ├── 0149_fix_leading_trailing_spaces.py │ ├── 0150_food_to_tree.py │ ├── 0151_auto_20210915_1037.py │ ├── 0152_automation.py │ ├── 0153_auto_20210915_2327.py │ ├── 0154_auto_20210922_1705.py │ ├── 0155_mealtype_default.py │ ├── 0156_searchpreference_trigram_threshold.py │ ├── 0157_alter_searchpreference_trigram.py │ ├── 0158_userpreference_use_kj.py │ ├── 0159_add_shoppinglistentry_fields.py │ ├── 0160_delete_shoppinglist_orphans.py │ ├── 0161_alter_shoppinglistentry_food.py │ ├── 0162_userpreference_csv_delim.py │ ├── 0163_auto_20220105_0758.py │ ├── 0164_space_show_facet_count.py │ ├── 0165_remove_step_type.py │ ├── 0166_alter_userpreference_shopping_add_onhand.py │ ├── 0167_userpreference_left_handed.py │ ├── 0168_add_unit_searchfields.py │ ├── 0169_exportlog.py │ ├── 0170_auto_20220207_1848.py │ ├── 0171_alter_searchpreference_trigram_threshold.py │ ├── 0172_ingredient_original_text.py │ ├── 0173_recipe_source_url.py │ ├── 0174_alter_food_substitute_userspace.py │ ├── 0175_remove_userpreference_space.py │ ├── 0176_alter_searchpreference_icontains_and_more.py │ ├── 0177_recipe_show_ingredient_overview.py │ ├── 0178_remove_userpreference_search_style_and_more.py │ ├── 0179_recipe_private_recipe_shared.py │ ├── 0180_invitelink_reusable.py │ ├── 0181_space_image.py │ ├── 0182_userpreference_image.py │ ├── 0183_alter_space_image.py │ ├── 0184_alter_userpreference_image.py │ ├── 0185_food_plural_name_ingredient_always_use_plural_food_and_more.py │ ├── 0186_automation_order_alter_automation_type.py │ ├── 0187_alter_space_use_plural.py │ ├── 0188_space_no_sharing_limit.py │ ├── 0189_property_propertytype_unitconversion_food_fdc_id_and_more.py │ ├── 0190_auto_20230525_1506.py │ ├── 0191_foodproperty_property_import_food_id_and_more.py │ ├── 0192_food_food_unique_open_data_slug_per_space_and_more.py │ ├── 0193_space_internal_note.py │ ├── 0194_alter_food_properties_food_amount.py │ ├── 0195_invitelink_internal_note_userspace_internal_note_and_more.py │ ├── 0196_food_url.py │ ├── 0197_step_show_ingredients_table_and_more.py │ ├── 0198_propertytype_order.py │ ├── 0199_alter_propertytype_options_alter_automation_type_and_more.py │ ├── 0200_alter_propertytype_options_remove_keyword_icon_and_more.py │ ├── 0201_rename_date_mealplan_from_date_mealplan_to_date.py │ ├── 0202_remove_space_show_facet_count.py │ ├── 0203_alter_unique_contstraints.py │ ├── 0204_propertytype_fdc_id.py │ ├── 0205_alter_food_fdc_id_alter_propertytype_fdc_id.py │ ├── 0206_rename_sticky_navbar_userpreference_nav_sticky_and_more.py │ ├── 0207_space_logo_color_128_space_logo_color_144_and_more.py │ ├── 0208_space_app_name_userpreference_max_owned_spaces.py │ ├── 0209_remove_space_use_plural.py │ ├── 0210_shoppinglistentry_updated_at.py │ ├── 0211_recipebook_order.py │ ├── 0212_alter_property_property_amount.py │ ├── 0213_remove_property_property_unique_import_food_per_space_and_more.py │ ├── 0214_cooklog_comment_cooklog_updated_at_and_more.py │ ├── 0215_connectorconfig.py │ ├── 0216_delete_shoppinglist.py │ ├── 0217_alter_userpreference_default_page.py │ ├── 0218_alter_mealplan_from_date_alter_mealplan_to_date.py │ ├── 0219_connectorconfig_supports_description_field.py │ ├── 0220_shoppinglistrecipe_created_by_and_more.py │ ├── 0221_migrate_shoppinglistrecipe_space_created_by.py │ ├── 0222_alter_shoppinglistrecipe_created_by_and_more.py │ └── __init__.py ├── models.py ├── provider │ ├── __init__.py │ ├── dropbox.py │ ├── local.py │ ├── nextcloud.py │ └── provider.py ├── schemas.py ├── serializer.py ├── signals.py ├── static │ ├── assets │ │ ├── brand_logo.png │ │ ├── brand_logo.svg │ │ ├── brand_logo_white.svg │ │ ├── header.svg │ │ ├── logo_black.svg │ │ ├── logo_color_128.png │ │ ├── logo_color_144.png │ │ ├── logo_color_180.png │ │ ├── logo_color_192.png │ │ ├── logo_color_32.png │ │ ├── logo_color_512.png │ │ ├── logo_color_svg.svg │ │ ├── recipe_no_image.svg │ │ └── spinner.svg │ ├── css │ │ ├── app.min.css │ │ ├── bootstrap-vue.min.css │ │ ├── pretty-checkbox.min.css │ │ ├── select2-bootstrap.css │ │ └── select2.min.css │ ├── custom │ │ ├── css │ │ │ └── markdown_blockquote.css │ │ └── js │ │ │ ├── form_multiselect.js │ │ │ └── form_select.js │ ├── django_js_reverse │ │ └── reverse.js │ ├── fontawesome │ │ └── fontawesome_all.min.css │ ├── js │ │ ├── bookmarklet_v3.js │ │ ├── bootstrap.min.js │ │ ├── bootstrap.min.js.map │ │ ├── jquery-3.5.1.min.js │ │ ├── js.cookie.min.js │ │ ├── js.cookie.min.js.map │ │ ├── popper.min.js │ │ ├── popper.min.js.map │ │ ├── redoc.standalone.js │ │ ├── redoc.standalone.js.map │ │ └── select2.min.js │ ├── pdfjs │ │ ├── images │ │ │ ├── annotation-check.svg │ │ │ ├── annotation-comment.svg │ │ │ ├── annotation-help.svg │ │ │ ├── annotation-insert.svg │ │ │ ├── annotation-key.svg │ │ │ ├── annotation-newparagraph.svg │ │ │ ├── annotation-noicon.svg │ │ │ ├── annotation-note.svg │ │ │ ├── annotation-paragraph.svg │ │ │ ├── findbarButton-next.png │ │ │ ├── findbarButton-next@2x.png │ │ │ ├── findbarButton-previous.png │ │ │ ├── findbarButton-previous@2x.png │ │ │ ├── grab.cur │ │ │ ├── grabbing.cur │ │ │ ├── loading-icon.gif │ │ │ ├── loading-small.png │ │ │ ├── loading-small@2x.png │ │ │ ├── secondaryToolbarButton-documentProperties.png │ │ │ ├── secondaryToolbarButton-documentProperties@2x.png │ │ │ ├── secondaryToolbarButton-firstPage.png │ │ │ ├── secondaryToolbarButton-firstPage@2x.png │ │ │ ├── secondaryToolbarButton-handTool.png │ │ │ ├── secondaryToolbarButton-handTool@2x.png │ │ │ ├── secondaryToolbarButton-lastPage.png │ │ │ ├── secondaryToolbarButton-lastPage@2x.png │ │ │ ├── secondaryToolbarButton-rotateCcw.png │ │ │ ├── secondaryToolbarButton-rotateCcw@2x.png │ │ │ ├── secondaryToolbarButton-rotateCw.png │ │ │ ├── secondaryToolbarButton-rotateCw@2x.png │ │ │ ├── secondaryToolbarButton-scrollHorizontal.png │ │ │ ├── secondaryToolbarButton-scrollHorizontal@2x.png │ │ │ ├── secondaryToolbarButton-scrollVertical.png │ │ │ ├── secondaryToolbarButton-scrollVertical@2x.png │ │ │ ├── secondaryToolbarButton-scrollWrapped.png │ │ │ ├── secondaryToolbarButton-scrollWrapped@2x.png │ │ │ ├── secondaryToolbarButton-selectTool.png │ │ │ ├── secondaryToolbarButton-selectTool@2x.png │ │ │ ├── secondaryToolbarButton-spreadEven.png │ │ │ ├── secondaryToolbarButton-spreadEven@2x.png │ │ │ ├── secondaryToolbarButton-spreadNone.png │ │ │ ├── secondaryToolbarButton-spreadNone@2x.png │ │ │ ├── secondaryToolbarButton-spreadOdd.png │ │ │ ├── secondaryToolbarButton-spreadOdd@2x.png │ │ │ ├── shadow.png │ │ │ ├── texture.png │ │ │ ├── toolbarButton-bookmark.png │ │ │ ├── toolbarButton-bookmark@2x.png │ │ │ ├── toolbarButton-download.png │ │ │ ├── toolbarButton-download@2x.png │ │ │ ├── toolbarButton-menuArrows.png │ │ │ ├── toolbarButton-menuArrows@2x.png │ │ │ ├── toolbarButton-openFile.png │ │ │ ├── toolbarButton-openFile@2x.png │ │ │ ├── toolbarButton-pageDown.png │ │ │ ├── toolbarButton-pageDown@2x.png │ │ │ ├── toolbarButton-pageUp.png │ │ │ ├── toolbarButton-pageUp@2x.png │ │ │ ├── toolbarButton-presentationMode.png │ │ │ ├── toolbarButton-presentationMode@2x.png │ │ │ ├── toolbarButton-print.png │ │ │ ├── toolbarButton-print@2x.png │ │ │ ├── toolbarButton-search.png │ │ │ ├── toolbarButton-search@2x.png │ │ │ ├── toolbarButton-secondaryToolbarToggle.png │ │ │ ├── toolbarButton-secondaryToolbarToggle@2x.png │ │ │ ├── toolbarButton-sidebarToggle.png │ │ │ ├── toolbarButton-sidebarToggle@2x.png │ │ │ ├── toolbarButton-viewAttachments.png │ │ │ ├── toolbarButton-viewAttachments@2x.png │ │ │ ├── toolbarButton-viewOutline.png │ │ │ ├── toolbarButton-viewOutline@2x.png │ │ │ ├── toolbarButton-viewThumbnail.png │ │ │ ├── toolbarButton-viewThumbnail@2x.png │ │ │ ├── toolbarButton-zoomIn.png │ │ │ ├── toolbarButton-zoomIn@2x.png │ │ │ ├── toolbarButton-zoomOut.png │ │ │ ├── toolbarButton-zoomOut@2x.png │ │ │ ├── treeitem-collapsed.png │ │ │ ├── treeitem-collapsed@2x.png │ │ │ ├── treeitem-expanded.png │ │ │ └── treeitem-expanded@2x.png │ │ ├── locale │ │ │ ├── ach │ │ │ │ └── viewer.properties │ │ │ ├── af │ │ │ │ └── viewer.properties │ │ │ ├── an │ │ │ │ └── viewer.properties │ │ │ ├── ar │ │ │ │ └── viewer.properties │ │ │ ├── ast │ │ │ │ └── viewer.properties │ │ │ ├── az │ │ │ │ └── viewer.properties │ │ │ ├── be │ │ │ │ └── viewer.properties │ │ │ ├── bg │ │ │ │ └── viewer.properties │ │ │ ├── bn │ │ │ │ └── viewer.properties │ │ │ ├── bo │ │ │ │ └── viewer.properties │ │ │ ├── br │ │ │ │ └── viewer.properties │ │ │ ├── brx │ │ │ │ └── viewer.properties │ │ │ ├── bs │ │ │ │ └── viewer.properties │ │ │ ├── ca │ │ │ │ └── viewer.properties │ │ │ ├── cak │ │ │ │ └── viewer.properties │ │ │ ├── cs │ │ │ │ └── viewer.properties │ │ │ ├── cy │ │ │ │ └── viewer.properties │ │ │ ├── da │ │ │ │ └── viewer.properties │ │ │ ├── de │ │ │ │ └── viewer.properties │ │ │ ├── dsb │ │ │ │ └── viewer.properties │ │ │ ├── el │ │ │ │ └── viewer.properties │ │ │ ├── en-CA │ │ │ │ └── viewer.properties │ │ │ ├── en-GB │ │ │ │ └── viewer.properties │ │ │ ├── en-US │ │ │ │ └── viewer.properties │ │ │ ├── eo │ │ │ │ └── viewer.properties │ │ │ ├── es-AR │ │ │ │ └── viewer.properties │ │ │ ├── es-CL │ │ │ │ └── viewer.properties │ │ │ ├── es-ES │ │ │ │ └── viewer.properties │ │ │ ├── es-MX │ │ │ │ └── viewer.properties │ │ │ ├── et │ │ │ │ └── viewer.properties │ │ │ ├── eu │ │ │ │ └── viewer.properties │ │ │ ├── fa │ │ │ │ └── viewer.properties │ │ │ ├── ff │ │ │ │ └── viewer.properties │ │ │ ├── fi │ │ │ │ └── viewer.properties │ │ │ ├── fr │ │ │ │ └── viewer.properties │ │ │ ├── fy-NL │ │ │ │ └── viewer.properties │ │ │ ├── ga-IE │ │ │ │ └── viewer.properties │ │ │ ├── gd │ │ │ │ └── viewer.properties │ │ │ ├── gl │ │ │ │ └── viewer.properties │ │ │ ├── gn │ │ │ │ └── viewer.properties │ │ │ ├── gu-IN │ │ │ │ └── viewer.properties │ │ │ ├── he │ │ │ │ └── viewer.properties │ │ │ ├── hi-IN │ │ │ │ └── viewer.properties │ │ │ ├── hr │ │ │ │ └── viewer.properties │ │ │ ├── hsb │ │ │ │ └── viewer.properties │ │ │ ├── hu │ │ │ │ └── viewer.properties │ │ │ ├── hy-AM │ │ │ │ └── viewer.properties │ │ │ ├── hye │ │ │ │ └── viewer.properties │ │ │ ├── ia │ │ │ │ └── viewer.properties │ │ │ ├── id │ │ │ │ └── viewer.properties │ │ │ ├── is │ │ │ │ └── viewer.properties │ │ │ ├── it │ │ │ │ └── viewer.properties │ │ │ ├── ja │ │ │ │ └── viewer.properties │ │ │ ├── ka │ │ │ │ └── viewer.properties │ │ │ ├── kab │ │ │ │ └── viewer.properties │ │ │ ├── kk │ │ │ │ └── viewer.properties │ │ │ ├── km │ │ │ │ └── viewer.properties │ │ │ ├── kn │ │ │ │ └── viewer.properties │ │ │ ├── ko │ │ │ │ └── viewer.properties │ │ │ ├── lij │ │ │ │ └── viewer.properties │ │ │ ├── lo │ │ │ │ └── viewer.properties │ │ │ ├── locale.properties │ │ │ ├── lt │ │ │ │ └── viewer.properties │ │ │ ├── ltg │ │ │ │ └── viewer.properties │ │ │ ├── lv │ │ │ │ └── viewer.properties │ │ │ ├── meh │ │ │ │ └── viewer.properties │ │ │ ├── mk │ │ │ │ └── viewer.properties │ │ │ ├── mr │ │ │ │ └── viewer.properties │ │ │ ├── ms │ │ │ │ └── viewer.properties │ │ │ ├── my │ │ │ │ └── viewer.properties │ │ │ ├── nb-NO │ │ │ │ └── viewer.properties │ │ │ ├── ne-NP │ │ │ │ └── viewer.properties │ │ │ ├── nl │ │ │ │ └── viewer.properties │ │ │ ├── nn-NO │ │ │ │ └── viewer.properties │ │ │ ├── oc │ │ │ │ └── viewer.properties │ │ │ ├── pa-IN │ │ │ │ └── viewer.properties │ │ │ ├── pl │ │ │ │ └── viewer.properties │ │ │ ├── pt-BR │ │ │ │ └── viewer.properties │ │ │ ├── pt-PT │ │ │ │ └── viewer.properties │ │ │ ├── rm │ │ │ │ └── viewer.properties │ │ │ ├── ro │ │ │ │ └── viewer.properties │ │ │ ├── ru │ │ │ │ └── viewer.properties │ │ │ ├── scn │ │ │ │ └── viewer.properties │ │ │ ├── si │ │ │ │ └── viewer.properties │ │ │ ├── sk │ │ │ │ └── viewer.properties │ │ │ ├── sl │ │ │ │ └── viewer.properties │ │ │ ├── son │ │ │ │ └── viewer.properties │ │ │ ├── sq │ │ │ │ └── viewer.properties │ │ │ ├── sr │ │ │ │ └── viewer.properties │ │ │ ├── sv-SE │ │ │ │ └── viewer.properties │ │ │ ├── ta │ │ │ │ └── viewer.properties │ │ │ ├── te │ │ │ │ └── viewer.properties │ │ │ ├── th │ │ │ │ └── viewer.properties │ │ │ ├── tl │ │ │ │ └── viewer.properties │ │ │ ├── tr │ │ │ │ └── viewer.properties │ │ │ ├── trs │ │ │ │ └── viewer.properties │ │ │ ├── uk │ │ │ │ └── viewer.properties │ │ │ ├── ur │ │ │ │ └── viewer.properties │ │ │ ├── uz │ │ │ │ └── viewer.properties │ │ │ ├── vi │ │ │ │ └── viewer.properties │ │ │ ├── wo │ │ │ │ └── viewer.properties │ │ │ ├── xh │ │ │ │ └── viewer.properties │ │ │ ├── zh-CN │ │ │ │ └── viewer.properties │ │ │ └── zh-TW │ │ │ │ └── viewer.properties │ │ ├── pdf.js │ │ ├── pdf.js.map │ │ ├── pdf.worker.js │ │ ├── pdf.worker.js.map │ │ ├── viewer.css │ │ ├── viewer.html │ │ ├── viewer.js │ │ └── viewer.js.map │ ├── themes │ │ ├── bootstrap.min.css │ │ ├── darkly.min.css │ │ ├── flatly.min.css │ │ ├── select2-bootstrap-theme.css │ │ ├── superhero.min.css │ │ ├── tandoor.min.css │ │ └── tandoor_dark.min.css │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ ├── fa-solid-900.woff2 │ │ ├── poppins_devanagari_400.woff2 │ │ ├── poppins_devanagari_500.woff2 │ │ ├── poppins_devanagari_700.woff2 │ │ ├── poppins_latin_400.woff2 │ │ ├── poppins_latin_500.woff2 │ │ ├── poppins_latin_700.woff2 │ │ ├── poppins_latin_ext_400.woff2 │ │ ├── poppins_latin_ext_500.woff2 │ │ └── poppins_latin_ext_700.woff2 ├── tables.py ├── templates │ ├── 404.html │ ├── account │ │ ├── email.html │ │ ├── email_confirm.html │ │ ├── login.html │ │ ├── logout.html │ │ ├── password_change.html │ │ ├── password_reset.html │ │ ├── password_reset_done.html │ │ ├── password_reset_from_key.html │ │ ├── password_reset_from_key_done.html │ │ ├── password_set.html │ │ ├── signup.html │ │ └── signup_closed.html │ ├── api_info.html │ ├── base.html │ ├── batch │ │ ├── edit.html │ │ ├── monitor.html │ │ └── waiting.html │ ├── books.html │ ├── export.html │ ├── export_response.html │ ├── forms │ │ ├── edit_import_recipe.html │ │ └── edit_internal_recipe.html │ ├── generic │ │ ├── delete_template.html │ │ ├── edit_template.html │ │ ├── list_template.html │ │ ├── model_template.html │ │ ├── new_template.html │ │ └── table_template.html │ ├── history.html │ ├── import_response.html │ ├── include │ │ └── storage_backend_warning.html │ ├── index.html │ ├── ingredient_editor.html │ ├── manifest.json │ ├── markdown_info.html │ ├── meal_plan.html │ ├── no_groups_info.html │ ├── no_perm_info.html │ ├── offline.html │ ├── openid │ │ └── login.html │ ├── property_editor.html │ ├── recipe_view.html │ ├── rest_framework │ │ └── api.html │ ├── search.html │ ├── search_info.html │ ├── settings.html │ ├── setup.html │ ├── shoppinglist_template.html │ ├── socialaccount │ │ ├── authentication_error.html │ │ ├── connections.html │ │ ├── login.html │ │ ├── signup.html │ │ └── snippets │ │ │ └── provider_list.html │ ├── space_manage.html │ ├── space_overview.html │ ├── system.html │ ├── test.html │ ├── test2.html │ ├── url_import.html │ └── user_settings.html ├── templatetags │ ├── __init__.py │ ├── custom_tags.py │ └── theming_tags.py ├── tests │ ├── __init__.py │ ├── api │ │ ├── __init__.py │ │ ├── docs │ │ │ └── reports │ │ │ │ └── tests │ │ │ │ ├── assets │ │ │ │ └── style.css │ │ │ │ ├── pytest.xml │ │ │ │ └── tests.html │ │ ├── test_api_access_token.py │ │ ├── test_api_connector_config.py │ │ ├── test_api_cook_log.py │ │ ├── test_api_food.py │ │ ├── test_api_food_shopping.py │ │ ├── test_api_import_log.py │ │ ├── test_api_ingredient.py │ │ ├── test_api_invitelinke.py │ │ ├── test_api_keyword.py │ │ ├── test_api_meal_plan.py │ │ ├── test_api_meal_type.py │ │ ├── test_api_plan_ical.py │ │ ├── test_api_property.py │ │ ├── test_api_property_type.py │ │ ├── test_api_recipe.py │ │ ├── test_api_recipe_book.py │ │ ├── test_api_recipe_book_entry.py │ │ ├── test_api_related_recipe.py │ │ ├── test_api_share_link.py │ │ ├── test_api_shopping_list_entryv2.py │ │ ├── test_api_shopping_list_recipe.py │ │ ├── test_api_shopping_recipe.py │ │ ├── test_api_space.py │ │ ├── test_api_step.py │ │ ├── test_api_storage.py │ │ ├── test_api_supermarket.py │ │ ├── test_api_sync.py │ │ ├── test_api_sync_log.py │ │ ├── test_api_unit.py │ │ ├── test_api_unit_conversion.py │ │ ├── test_api_user.py │ │ ├── test_api_userpreference.py │ │ ├── test_api_userspace.py │ │ └── test_api_view_log.py │ ├── conftest.py │ ├── edits │ │ ├── __init__.py │ │ ├── test_edits_connector_config.py │ │ ├── test_edits_recipe.py │ │ └── test_edits_storage.py │ ├── factories │ │ └── __init__.py │ ├── other │ │ ├── __init__.py │ │ ├── _recipes.py │ │ ├── docs │ │ │ └── reports │ │ │ │ └── tests │ │ │ │ ├── assets │ │ │ │ └── style.css │ │ │ │ ├── pytest.xml │ │ │ │ └── tests.html │ │ ├── test_automations.py │ │ ├── test_connector_manager.py │ │ ├── test_data │ │ │ ├── allrecipes.html │ │ │ ├── americastestkitchen.html │ │ │ ├── chefkoch.html │ │ │ ├── chefkoch2.html │ │ │ ├── cookpad.html │ │ │ ├── cookscountry.html │ │ │ ├── delish.html │ │ │ ├── foodnetwork.html │ │ │ ├── giallozafferano.html │ │ │ ├── journaldesfemmes.html │ │ │ ├── madamedessert.html │ │ │ ├── madamedessert.json │ │ │ ├── marmiton.html │ │ │ ├── regex_recipe.html │ │ │ ├── tasteofhome.html │ │ │ ├── thespruceeats.html │ │ │ └── tudogostoso.html │ │ ├── test_export.py │ │ ├── test_food_property.py │ │ ├── test_helpers.py │ │ ├── test_ingredient_parser.py │ │ ├── test_makenow_filter.py │ │ ├── test_permission_helper.py │ │ ├── test_recipe_full_text_search.py │ │ ├── test_theming.py │ │ ├── test_unit_conversion.py │ │ └── test_url_import.py │ ├── resources │ │ ├── image.jpg │ │ ├── image.png │ │ └── websites │ │ │ ├── ld_json_1.html │ │ │ ├── ld_json_2.html │ │ │ ├── ld_json_3.html │ │ │ ├── ld_json_4.html │ │ │ ├── ld_json_itemList.html │ │ │ ├── ld_json_multiple.html │ │ │ ├── micro_data_1.html │ │ │ ├── micro_data_2.html │ │ │ ├── micro_data_3.html │ │ │ └── micro_data_4.html │ └── views │ │ ├── __init__.py │ │ ├── test_views_api.py │ │ ├── test_views_general.py │ │ └── test_views_recipe_share.py ├── urls.py ├── version_info.py └── views │ ├── __init__.py │ ├── api.py │ ├── data.py │ ├── delete.py │ ├── edit.py │ ├── import_export.py │ ├── lists.py │ ├── new.py │ ├── telegram.py │ └── views.py ├── docs ├── CNAME ├── contribute │ ├── assets │ │ ├── flake8_watcher.png │ │ ├── isort_watcher.png │ │ ├── linting_error.png │ │ ├── prettier_watcher.png │ │ └── yapf_watcher.png │ ├── contribute.md │ ├── documentation.md │ ├── guidelines.md │ ├── installation.md │ ├── pycharm.md │ ├── related.md │ ├── translations.md │ └── vscode.md ├── faq.md ├── features │ ├── authentication.md │ ├── automation.md │ ├── connectors.md │ ├── external_recipes.md │ ├── import_export.md │ ├── shopping.md │ ├── telegram_bot.md │ └── templating.md ├── index.md ├── install │ ├── archlinux.md │ ├── docker.md │ ├── docker │ │ ├── ipv6_plain │ │ │ └── docker-compose.yml │ │ ├── nginx-proxy │ │ │ └── docker-compose.yml │ │ ├── plain │ │ │ └── docker-compose.yml │ │ └── traefik-nginx │ │ │ └── docker-compose.yml │ ├── homeassistant.md │ ├── k8s │ │ ├── 10-configmap.yaml │ │ ├── 15-secrets.yaml │ │ ├── 20-service-account.yaml │ │ ├── 30-pvc.yaml │ │ ├── 40-sts-postgresql.yaml │ │ ├── 45-service-db.yaml │ │ ├── 50-deployment.yaml │ │ ├── 60-service.yaml │ │ └── 70-ingress.yaml │ ├── kubernetes.md │ ├── kubesail.md │ ├── manual.md │ ├── other.md │ ├── swag.md │ ├── synology.md │ ├── traefik.md │ ├── truenas_portainer.md │ ├── unraid.md │ └── wsl.md ├── logo_color.svg ├── preview.png ├── preview.xcf ├── stylesheets │ └── extra.css ├── system │ ├── backup.md │ ├── configuration.md │ ├── migration_sqlite-postgres.md │ ├── permissions.md │ └── updating.md └── tests │ ├── assets │ └── style.css │ ├── pytest.xml │ └── tests.html ├── make_compile_messages.py ├── manage.py ├── mkdocs.yml ├── nginx └── conf.d │ ├── Recipes.conf │ └── errorpages │ └── http502.html ├── node_modules └── .yarn-integrity ├── openapitools.json ├── pyproject.toml ├── pytest.ini ├── recipes ├── __init__.py ├── locale │ ├── ar │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── bg │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ca │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── cs │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── da │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── de │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── el │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── fi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── he │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── hu_HU │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── hy │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── id │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── it │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── lv │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── nb_NO │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── nl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── rn │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ro │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── sl │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── sv │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── tr │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── uk │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── vi │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ ├── django.mo │ │ │ └── django.po │ └── zh_Hant │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── django.po ├── middleware.py ├── settings.py ├── test_settings.py ├── urls.py └── wsgi.py ├── requirements.txt ├── version.py ├── vue ├── .openapi-generator │ ├── FILES │ └── VERSION ├── .yarnrc.yml ├── babel.config.js ├── babel.config.js.c ├── package.json ├── src │ ├── apps │ │ ├── CookbookView │ │ │ ├── CookbookView.vue │ │ │ └── main.js │ │ ├── ExportResponseView │ │ │ ├── ExportResponseView.vue │ │ │ └── main.js │ │ ├── ExportView │ │ │ ├── ExportView.vue │ │ │ └── main.js │ │ ├── ImportResponseView │ │ │ ├── ImportResponseView.vue │ │ │ └── main.js │ │ ├── ImportView │ │ │ ├── ImportView.vue │ │ │ ├── ImportViewStepEditor.vue │ │ │ └── main.js │ │ ├── IngredientEditorView │ │ │ ├── IngredientEditorView.vue │ │ │ └── main.js │ │ ├── MealPlanView │ │ │ ├── MealPlanView.vue │ │ │ └── main.js │ │ ├── ModelListView │ │ │ ├── ModelListView.vue │ │ │ └── main.js │ │ ├── OfflineView │ │ │ ├── OfflineView.vue │ │ │ └── main.js │ │ ├── ProfileView │ │ │ ├── ProfileView.vue │ │ │ └── main.js │ │ ├── PropertyEditorView │ │ │ ├── PropertyEditorView.vue │ │ │ └── main.js │ │ ├── RecipeEditView │ │ │ ├── RecipeEditView.vue │ │ │ └── main.js │ │ ├── RecipeSearchView │ │ │ ├── RecipeSearchView.vue │ │ │ └── main.js │ │ ├── RecipeView │ │ │ ├── RecipeView.vue │ │ │ └── main.js │ │ ├── SettingsView │ │ │ ├── SettingsView.vue │ │ │ └── main.js │ │ ├── ShoppingListView │ │ │ ├── ShoppingListView.vue │ │ │ └── main.js │ │ ├── SpaceManageView │ │ │ ├── SpaceManageView.vue │ │ │ └── main.js │ │ ├── TestView │ │ │ ├── TestView.vue │ │ │ ├── TestViewBackup.vue │ │ │ └── main.js │ │ └── base_app.js │ ├── components │ │ ├── AddRecipeToBook.vue │ │ ├── AutoMealPlanModal.vue │ │ ├── Badges.vue │ │ ├── Badges │ │ │ ├── Help.vue │ │ │ ├── Icon.vue │ │ │ ├── LinkedRecipe.vue │ │ │ ├── OnHand.vue │ │ │ └── Shopping.vue │ │ ├── BetaWarning.vue │ │ ├── BottomNavigationBar.vue │ │ ├── Buttons │ │ │ ├── CopyToClipboard.vue │ │ │ ├── DownloadCSV.vue │ │ │ ├── DownloadPDF.vue │ │ │ └── RecipeSwitcher.vue │ │ ├── CompileComponent.vue │ │ ├── ContextMenu │ │ │ ├── ContextMenu.vue │ │ │ ├── ContextMenuItem.vue │ │ │ ├── GenericContextMenu.vue │ │ │ └── ModelMenu.vue │ │ ├── CookLog.vue │ │ ├── CookbookEditCard.vue │ │ ├── CookbookSlider.vue │ │ ├── CookbookToc.vue │ │ ├── CustomInputSpinButton.vue │ │ ├── FileEditor.vue │ │ ├── FileViewer.vue │ │ ├── FoodEditor.vue │ │ ├── GenericHorizontalCard.vue │ │ ├── GenericInfiniteCards.vue │ │ ├── GenericMultiselect.vue │ │ ├── GenericOrderedPill.vue │ │ ├── GenericPill.vue │ │ ├── ImageViewer.vue │ │ ├── IngredientComponent.vue │ │ ├── IngredientsCard.vue │ │ ├── KeywordsComponent.vue │ │ ├── LastCooked.vue │ │ ├── LoadingSpinner.vue │ │ ├── MarkdownEditorComponent.vue │ │ ├── MealPlanCalenderHeader.vue │ │ ├── MealPlanCard.vue │ │ ├── MealPlanEditModal.vue │ │ ├── Modals │ │ │ ├── AddRecipeToBook.vue │ │ │ ├── CheckboxInput.vue │ │ │ ├── ChoiceInput.vue │ │ │ ├── ColorInput.vue │ │ │ ├── DateInput.vue │ │ │ ├── FileInput.vue │ │ │ ├── GenericModalForm.vue │ │ │ ├── ImportTandoor.vue │ │ │ ├── LookupInput.vue │ │ │ ├── NumberInput.vue │ │ │ ├── ShoppingModal.vue │ │ │ ├── SmallText.vue │ │ │ ├── TextAreaInput.vue │ │ │ └── TextInput.vue │ │ ├── NumberScalerComponent.vue │ │ ├── NutritionComponent.vue │ │ ├── OpenDataImportComponent.vue │ │ ├── PdfViewer.vue │ │ ├── PinnedRecipeBar.vue │ │ ├── PropertyViewComponent.vue │ │ ├── RecipeCard.vue │ │ ├── RecipeContextMenu.vue │ │ ├── RecipeRating.vue │ │ ├── RecipeViewComponent.vue │ │ ├── ScalableNumber.vue │ │ ├── Settings │ │ │ ├── APISettingsComponent.vue │ │ │ ├── AccountSettingsComponent.vue │ │ │ ├── CosmeticSettingsComponent.vue │ │ │ ├── MealPlanSettingsComponent.vue │ │ │ ├── SearchSettingsComponent.vue │ │ │ └── ShoppingSettingsComponent.vue │ │ ├── ShoppingLineItem.vue │ │ ├── StepComponent.vue │ │ └── StorageQuota.vue │ ├── i18n.js │ ├── locales │ │ ├── ar.json │ │ ├── bg.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── da.json │ │ ├── de.json │ │ ├── el.json │ │ ├── en.json │ │ ├── es.json │ │ ├── fi.json │ │ ├── fr.json │ │ ├── he.json │ │ ├── hr.json │ │ ├── hu.json │ │ ├── hy.json │ │ ├── id.json │ │ ├── is.json │ │ ├── it.json │ │ ├── lt.json │ │ ├── lv.json │ │ ├── nb_NO.json │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt.json │ │ ├── pt_BR.json │ │ ├── ro.json │ │ ├── ru.json │ │ ├── sl.json │ │ ├── sv.json │ │ ├── tr.json │ │ ├── uk.json │ │ ├── zh_Hans.json │ │ └── zh_Hant.json │ ├── shims-tsx.d.ts │ ├── shims-vue.d.ts │ ├── stores │ │ ├── BaseStorePlugin.js │ │ ├── GenericApiStore.js │ │ ├── MealPlanStore.js │ │ ├── ShoppingListStore.js │ │ ├── UserPreferenceStore.js │ │ └── root.js │ ├── sw.js │ └── utils │ │ ├── api.js │ │ ├── apiv2.js │ │ ├── cm-widgets.ts │ │ ├── fractions.js │ │ ├── integration.js │ │ ├── models.js │ │ ├── openapi │ │ ├── .openapi-generator-ignore │ │ ├── .openapi-generator │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── api.ts │ │ ├── base.ts │ │ ├── common.ts │ │ ├── configuration.ts │ │ └── openapitools.json │ │ └── utils.js ├── tsconfig.json ├── vue.config.js └── yarn.lock └── yarn.lock /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = 3 | */apps.py, 4 | */migrations/*, 5 | */settings*, 6 | */test*, 7 | */tests/*, 8 | *urls.py, 9 | */wsgi*, 10 | manage.py, 11 | *__init__* 12 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | npm-debug.log 3 | Dockerfile* 4 | docker-compose* 5 | .dockerignore 6 | .gitignore 7 | README.md 8 | LICENSE 9 | .vscode 10 | .env 11 | .env.template 12 | .github 13 | .idea 14 | .prettierignore 15 | LICENSE.md 16 | docs 17 | update.sh 18 | .pytest_cache 19 | cookbook/tests 20 | mediafiles 21 | staticfiles 22 | db.sqlite3 23 | pytest.ini 24 | vue/**/*.vue 25 | vue/**/*.ts 26 | **/.openapi-generator 27 | mkdocs.yml 28 | vue/babel.config* 29 | vue/package.json 30 | vue/tsconfig.json 31 | vue/src/utils/openapi 32 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | extend-ignore = 3 | # Whitespace before ':' - Required for black compatibility 4 | E203, 5 | # Line break occurred before a binary operator - Required for black compatibility 6 | W503, 7 | # Comparison to False should be 'if cond is False:' or 'if not cond:' 8 | E712 9 | exclude = 10 | .git, 11 | **/__pycache__, 12 | **/.git, 13 | **/.svn, 14 | **/.hg, 15 | **/CVS, 16 | **/.DS_Store, 17 | .vscode, 18 | **/*.pyc 19 | per-file-ignores= 20 | cookbook/apps.py:F401 21 | max-line-length = 179 22 | 23 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [vabene1111] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: FAQs 4 | url: https://docs.tandoor.dev/faq/ 5 | about: Please take a look at the FAQs before creating a bug ticket. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md.bak: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/url_import.md.bak: -------------------------------------------------------------------------------- 1 | --- 2 | name: Website Import 3 | about: Anything related to website imports 4 | title: '' 5 | labels: enhancement, url_import 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Version 11 | Please provide your current version (can be found on the system page since v0.8.4) 12 | Version: 13 | 14 | ### Information 15 | Exact URL you are trying to import from: 16 | 17 | When did the issue happen: When pressing the search button with the url / when importing after the page has loaded 18 | 19 | Response/Message shown 20 | ``` 21 | Message 22 | ``` 23 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Make Docs 2 | on: 3 | # the 1st condition 4 | workflow_run: 5 | workflows: ["Continuous Integration"] 6 | branches: [master] 7 | types: 8 | - completed 9 | 10 | jobs: 11 | deploy: 12 | if: github.repository_owner == 'TandoorRecipes' && ${{ github.event.workflow_run.conclusion == 'success' }} 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v4 16 | - uses: actions/setup-python@v5 17 | with: 18 | python-version: 3.x 19 | - run: pip install mkdocs-material mkdocs-include-markdown-plugin 20 | - run: mkdocs gh-deploy --force 21 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/dictionaries/vaben.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | mealplan 5 | pinia 6 | selfhosted 7 | unapplied 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/dictionaries/vabene1111_PC.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | autosync 5 | chowdown 6 | csrftoken 7 | gunicorn 8 | ical 9 | invitelink 10 | mealie 11 | pepperplate 12 | safron 13 | traefik 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # generated files 2 | api.ts 3 | vue/src/apps/*.js 4 | vue/node_modules 5 | staticfiles/ 6 | docs/reports/ 7 | /vue3/src/openapi/ 8 | 9 | # ignored files - prettier interferes with django templates and github actions 10 | *.html 11 | *.yml 12 | *.yaml 13 | 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 179, 3 | "trailingComma": "es5", 4 | "tabWidth": 2, 5 | "semi": false, 6 | "experimentalTernaries": true 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.testing.pytestArgs": [ 3 | "cookbook/tests" 4 | ], 5 | "python.testing.unittestEnabled": false, 6 | "python.testing.pytestEnabled": true, 7 | "editor.formatOnSave": true, 8 | "editor.defaultFormatter": "esbenp.prettier-vscode", 9 | "[python]": { 10 | "editor.defaultFormatter": "eeyore.yapf", 11 | }, 12 | "yapf.args": [], 13 | "isort.args": [] 14 | } 15 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Since this software is still considered beta/WIP support is always only given for the latest version. There are no backports of security or any other fixes. 6 | 7 | ## Reporting a Vulnerability 8 | 9 | Please use GitHub Security Advisories to report any kind of security vulnerabilities. 10 | -------------------------------------------------------------------------------- /cookbook/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/__init__.py -------------------------------------------------------------------------------- /cookbook/connectors/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/connectors/__init__.py -------------------------------------------------------------------------------- /cookbook/helper/CustomStorageClass.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | 3 | from django.conf import settings 4 | from django.core.cache import cache 5 | from storages.backends.s3boto3 import S3Boto3Storage 6 | 7 | 8 | class CachedS3Boto3Storage(S3Boto3Storage): 9 | def url(self, name, **kwargs): 10 | key = hashlib.md5(f'recipes_media_urls_{name}'.encode('utf-8')).hexdigest() 11 | if result := cache.get(key): 12 | return result 13 | 14 | result = super(CachedS3Boto3Storage, self).url(name, **kwargs) 15 | 16 | timeout = int(settings.AWS_QUERYSTRING_EXPIRE * .95) 17 | cache.set(key, result, timeout) 18 | 19 | return result 20 | -------------------------------------------------------------------------------- /cookbook/helper/__init__.py: -------------------------------------------------------------------------------- 1 | from cookbook.helper.AllAuthCustomAdapter import AllAuthCustomAdapter 2 | 3 | __all__ = [ 4 | ] 5 | -------------------------------------------------------------------------------- /cookbook/helper/cache_helper.py: -------------------------------------------------------------------------------- 1 | class CacheHelper: 2 | space = None 3 | 4 | BASE_UNITS_CACHE_KEY = None 5 | PROPERTY_TYPE_CACHE_KEY = None 6 | 7 | def __init__(self, space): 8 | self.space = space 9 | 10 | self.BASE_UNITS_CACHE_KEY = f'SPACE_{space.id}_BASE_UNITS' 11 | self.PROPERTY_TYPE_CACHE_KEY = f'SPACE_{space.id}_PROPERTY_TYPES' 12 | -------------------------------------------------------------------------------- /cookbook/helper/context_processors.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | 4 | def context_settings(request): 5 | return { 6 | 'EMAIL_ENABLED': settings.EMAIL_HOST != '', 7 | 'SIGNUP_ENABLED': settings.ENABLE_SIGNUP, 8 | 'CAPTCHA_ENABLED': settings.HCAPTCHA_SITEKEY != '', 9 | 'HOSTED': settings.HOSTED, 10 | 'TERMS_URL': settings.TERMS_URL, 11 | 'PRIVACY_URL': settings.PRIVACY_URL, 12 | 'IMPRINT_URL': settings.IMPRINT_URL, 13 | 'SHOPPING_MIN_AUTOSYNC_INTERVAL': settings.SHOPPING_MIN_AUTOSYNC_INTERVAL, 14 | 'DISABLE_EXTERNAL_CONNECTORS': settings.DISABLE_EXTERNAL_CONNECTORS, 15 | } 16 | -------------------------------------------------------------------------------- /cookbook/helper/fdc_helper.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | 4 | def get_all_nutrient_types(): 5 | f = open('') # <--- download the foundation food or any other dataset and retrieve all nutrition ID's from it https://fdc.nal.usda.gov/download-datasets.html 6 | json_data = json.loads(f.read()) 7 | 8 | nutrients = {} 9 | for food in json_data['FoundationFoods']: 10 | for entry in food['foodNutrients']: 11 | nutrients[entry['nutrient']['id']] = {'name': entry['nutrient']['name'], 'unit': entry['nutrient']['unitName']} 12 | 13 | nutrient_ids = list(nutrients.keys()) 14 | nutrient_ids.sort() 15 | for nid in nutrient_ids: 16 | print('{', f'value: {nid}, text: "{nutrients[nid]["name"]} [{nutrients[nid]["unit"]}] ({nid})"', '},') 17 | 18 | 19 | get_all_nutrient_types() 20 | -------------------------------------------------------------------------------- /cookbook/helper/permission_config.py: -------------------------------------------------------------------------------- 1 | from cookbook.helper.permission_helper import CustomIsUser 2 | 3 | 4 | class PermissionConfig: 5 | BOOKS = { 6 | 'owner': True, 7 | 'groups': ['user'], 8 | 'drf': [CustomIsUser], 9 | } 10 | -------------------------------------------------------------------------------- /cookbook/locale/ar/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/ar/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/bg/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/bg/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/ca/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/ca/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/cs/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/cs/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/da/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/da/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/de/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/de/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/el/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/el/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/en/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/en/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/es/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/es/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/fi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/fi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/fr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/fr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/he/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/he/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/hu_HU/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/hu_HU/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/hy/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/hy/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/id/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/id/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/it/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/it/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/lv/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/lv/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/nb_NO/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/nb_NO/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/nl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/nl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/pl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/pl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/pt/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/pt/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/pt_BR/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/pt_BR/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/rn/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/rn/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/ro/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/ro/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/ru/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/ru/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/sl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/sl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/sv/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/sv/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/tr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/tr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/uk/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/uk/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/vi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/vi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/zh_CN/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/zh_CN/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/locale/zh_Hant/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/locale/zh_Hant/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /cookbook/management/commands/export.py: -------------------------------------------------------------------------------- 1 | from django.core.management.commands.dumpdata import Command as DumpdataCommand 2 | from django_scopes import scopes_disabled 3 | 4 | 5 | class Command(DumpdataCommand): 6 | def handle(self, *args, **options): 7 | with scopes_disabled(): 8 | return super().handle(*args, **options) 9 | -------------------------------------------------------------------------------- /cookbook/management/commands/import.py: -------------------------------------------------------------------------------- 1 | from django.core.management.commands.loaddata import Command as LoaddataCommand 2 | from django_scopes import scopes_disabled 3 | 4 | 5 | class Command(LoaddataCommand): 6 | def handle(self, *args, **options): 7 | with scopes_disabled(): 8 | return super().handle(*args, **options) 9 | -------------------------------------------------------------------------------- /cookbook/migrations/0002_auto_20191119_2035.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.7 on 2019-11-19 19:35 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='recipeingredients', 15 | old_name='ingredient', 16 | new_name='name', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0003_enable_pgtrm.py: -------------------------------------------------------------------------------- 1 | from django.contrib.postgres.operations import TrigramExtension 2 | from django.db import migrations 3 | 4 | 5 | class Migration(migrations.Migration): 6 | dependencies = [ 7 | ('cookbook', '0002_auto_20191119_2035'), 8 | ] 9 | 10 | operations = [ 11 | TrigramExtension(), 12 | ] 13 | -------------------------------------------------------------------------------- /cookbook/migrations/0004_storage_created_by.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0 on 2019-12-09 10:30 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('cookbook', '0003_enable_pgtrm'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AddField( 17 | model_name='storage', 18 | name='created_by', 19 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), 20 | preserve_default=False, 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /cookbook/migrations/0006_recipe_image.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.1 on 2019-12-25 15:11 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0005_recipebook_recipebookentry'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='image', 16 | field=models.ImageField(blank=True, null=True, upload_to='recipes/'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0007_auto_20191226_0852.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.1 on 2019-12-26 07:52 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0006_recipe_image'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='recipe', 15 | old_name='time', 16 | new_name='working_time', 17 | ), 18 | migrations.AddField( 19 | model_name='recipe', 20 | name='waiting_time', 21 | field=models.IntegerField(default=0), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0011_remove_recipeingredients_unit.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-01-30 10:16 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0010_auto_20200130_1059'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='recipeingredients', 15 | name='unit', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0012_auto_20200130_1116.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-01-30 10:16 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0011_remove_recipeingredients_unit'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='recipeingredients', 15 | old_name='unit_key', 16 | new_name='unit', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0015_auto_20200213_2334.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-13 22:34 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('cookbook', '0014_auto_20200213_2332'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AlterField( 17 | model_name='userpreference', 18 | name='user', 19 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0017_auto_20200216_2257.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 21:57 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0016_auto_20200213_2335'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='theme', 16 | field=models.CharField(choices=[('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero')], default='FLATLY', max_length=128), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0018_auto_20200216_2303.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:03 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0017_auto_20200216_2257'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameModel( 14 | old_name='RecipeIngredients', 15 | new_name='RecipeIngredient', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0019_ingredient.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:03 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0018_auto_20200216_2303'), 10 | ] 11 | 12 | operations = [ 13 | migrations.CreateModel( 14 | name='Ingredient', 15 | fields=[ 16 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 17 | ('name', models.CharField(max_length=128, unique=True)), 18 | ], 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0020_recipeingredient_ingredient.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:08 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0019_ingredient'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='recipeingredient', 16 | name='ingredient', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.Ingredient'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0022_remove_recipeingredient_name.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:11 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0021_auto_20200216_2309'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='recipeingredient', 15 | name='name', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0023_auto_20200216_2311.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:11 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0022_remove_recipeingredient_name'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='recipeingredient', 15 | old_name='ingredient', 16 | new_name='name', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0024_auto_20200216_2313.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 22:13 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0023_auto_20200216_2311'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='recipeingredient', 15 | old_name='name', 16 | new_name='ingredient', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0025_userpreference_nav_color.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-16 23:05 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0024_auto_20200216_2313'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='nav_color', 16 | field=models.CharField(choices=[('PRIMARY', 'Primary'), ('SECONDARY', 'Secondary'), ('SUCCESS', 'Success'), ('INFO', 'Info'), ('WARNING', 'Warning'), ('DANGER', 'Danger'), ('LIGHT', 'Light'), ('DARK', 'Dark')], default='PRIMARY', max_length=128), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0026_auto_20200219_1605.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.2 on 2020-02-19 15:05 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0025_userpreference_nav_color'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='cors_link', 16 | field=models.CharField(blank=True, max_length=1024, null=True), 17 | ), 18 | migrations.AlterField( 19 | model_name='recipe', 20 | name='link', 21 | field=models.CharField(blank=True, max_length=512, null=True), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0027_ingredient_recipe.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-03-17 17:31 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0026_auto_20200219_1605'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='ingredient', 16 | name='recipe', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cookbook.Recipe'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0028_auto_20200317_1901.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-03-17 18:01 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0027_ingredient_recipe'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='recipeingredient', 16 | name='ingredient', 17 | field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='cookbook.Ingredient'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0029_auto_20200317_1901.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-03-17 18:01 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0028_auto_20200317_1901'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='recipeingredient', 16 | name='unit', 17 | field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='cookbook.Unit'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0030_recipeingredient_note.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-03-17 18:02 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0029_auto_20200317_1901'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipeingredient', 15 | name='note', 16 | field=models.CharField(blank=True, max_length=64, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0031_auto_20200407_1841.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-04-07 16:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0030_recipeingredient_note'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='keyword', 15 | name='icon', 16 | field=models.CharField(blank=True, max_length=16, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0032_userpreference_default_unit.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-04-13 20:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0031_auto_20200407_1841'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='default_unit', 16 | field=models.CharField(default='g', max_length=32), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0033_userpreference_default_page.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.4 on 2020-04-13 20:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0032_userpreference_default_unit'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='default_page', 16 | field=models.CharField(choices=[('SEARCH', 'Search'), ('PLAN', 'Meal-Plan')], default='SEARCH', max_length=64), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0034_auto_20200426_1614.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-04-26 14:14 2 | 3 | from django.db import migrations 4 | from django_scopes import scopes_disabled 5 | 6 | 7 | def apply_migration(apps, schema_editor): 8 | with scopes_disabled(): 9 | Group = apps.get_model('auth', 'Group') 10 | Group.objects.bulk_create([ 11 | Group(name=u'guest'), 12 | Group(name=u'user'), 13 | Group(name=u'admin'), 14 | ]) 15 | 16 | 17 | class Migration(migrations.Migration): 18 | dependencies = [ 19 | ('cookbook', '0033_userpreference_default_page'), 20 | ] 21 | 22 | operations = [ 23 | migrations.RunPython(apply_migration) 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0036_auto_20200427_1800.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-04-27 16:00 2 | 3 | from django.db import migrations 4 | from django_scopes import scopes_disabled 5 | 6 | 7 | def apply_migration(apps, schema_editor): 8 | with scopes_disabled(): 9 | Group = apps.get_model('auth', 'Group') 10 | User = apps.get_model('auth', 'User') 11 | for u in User.objects.all(): 12 | if u.groups.count() < 1: 13 | u.groups.add(Group.objects.get(name='admin')) 14 | u.save() 15 | 16 | 17 | class Migration(migrations.Migration): 18 | dependencies = [ 19 | ('cookbook', '0035_auto_20200427_1637'), 20 | ] 21 | 22 | operations = [ 23 | migrations.RunPython(apply_migration) 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0037_userpreference_search_style.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-05-02 10:45 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0036_auto_20200427_1800'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='search_style', 16 | field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large')], default='LARGE', max_length=64), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0038_auto_20200502_1259.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-05-02 10:59 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0037_userpreference_search_style'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipebook', 15 | name='description', 16 | field=models.TextField(blank=True), 17 | ), 18 | migrations.AddField( 19 | model_name='recipebook', 20 | name='icon', 21 | field=models.CharField(blank=True, max_length=16, null=True), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0039_recipebook_shared.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-05-02 12:04 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 11 | ('cookbook', '0038_auto_20200502_1259'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='recipebook', 17 | name='shared', 18 | field=models.ManyToManyField(blank=True, related_name='shared_with', to=settings.AUTH_USER_MODEL), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0040_auto_20200502_1433.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-05-02 12:33 2 | 3 | import annoying.fields 4 | from django.conf import settings 5 | from django.db import migrations 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 13 | ('cookbook', '0039_recipebook_shared'), 14 | ] 15 | 16 | operations = [ 17 | migrations.AlterField( 18 | model_name='userpreference', 19 | name='user', 20 | field=annoying.fields.AutoOneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /cookbook/migrations/0041_auto_20200502_1446.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-05-02 12:46 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0040_auto_20200502_1433'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='mealplan', 16 | name='title', 17 | field=models.CharField(blank=True, default='', max_length=64), 18 | ), 19 | migrations.AlterField( 20 | model_name='mealplan', 21 | name='recipe', 22 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.Recipe'), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0045_userpreference_show_recent.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-06-02 08:51 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0044_viewlog'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='show_recent', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0048_auto_20200602_1140.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.5 on 2020-06-02 09:40 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0047_auto_20200602_1133'), 11 | ] 12 | 13 | operations = [ 14 | migrations.RemoveField( 15 | model_name='mealplan', 16 | name='meal', 17 | ), 18 | migrations.AlterField( 19 | model_name='mealplan', 20 | name='meal_type', 21 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.MealType'), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0049_mealtype_created_by.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-11 13:08 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('cookbook', '0048_auto_20200602_1140'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AddField( 17 | model_name='mealtype', 18 | name='created_by', 19 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0051_auto_20200611_1518.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-11 13:18 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('cookbook', '0050_auto_20200611_1509'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AlterField( 17 | model_name='mealtype', 18 | name='created_by', 19 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0052_userpreference_ingredient_decimals.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-11 20:14 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0051_auto_20200611_1518'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='ingredient_decimals', 16 | field=models.IntegerField(default=2), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0053_auto_20200611_2217.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-11 20:17 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0052_userpreference_ingredient_decimals'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='recipeingredient', 15 | name='amount', 16 | field=models.DecimalField(decimal_places=16, default=0, max_digits=32), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0055_auto_20200616_1236.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-16 10:36 2 | 3 | from django.db import migrations, models 4 | import uuid 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0054_sharelink'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='comments', 17 | field=models.BooleanField(default=True), 18 | ), 19 | migrations.AlterField( 20 | model_name='sharelink', 21 | name='uuid', 22 | field=models.UUIDField(default=uuid.UUID('a6e8f192-cc03-4dd4-8a03-58d7ab6b7df7')), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0057_auto_20200625_2127.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 19:27 2 | 3 | from django.db import migrations, models 4 | import uuid 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0056_auto_20200625_2118'), 11 | ] 12 | 13 | operations = [ 14 | migrations.RenameField( 15 | model_name='recipeingredient', 16 | old_name='ingredient', 17 | new_name='food', 18 | ), 19 | migrations.AlterField( 20 | model_name='sharelink', 21 | name='uuid', 22 | field=models.UUIDField(default=uuid.UUID('4a604ec8-c158-4011-ab5d-ddad7604c1e3')), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0058_auto_20200625_2128.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 19:28 2 | 3 | from django.db import migrations, models 4 | import uuid 5 | 6 | 7 | class Migration(migrations.Migration): 8 | atomic = False 9 | 10 | dependencies = [ 11 | ('cookbook', '0057_auto_20200625_2127'), 12 | ] 13 | 14 | operations = [ 15 | migrations.RenameModel( 16 | old_name='RecipeIngredient', 17 | new_name='Ingredient', 18 | ), 19 | migrations.AlterField( 20 | model_name='sharelink', 21 | name='uuid', 22 | field=models.UUIDField(default=uuid.UUID('27328011-54fb-46fa-8846-424d5828d858')), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0060_auto_20200625_2144.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 19:44 2 | 3 | from django.db import migrations, models 4 | import uuid 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0059_auto_20200625_2137'), 11 | ] 12 | 13 | operations = [ 14 | migrations.RemoveField( 15 | model_name='ingredient', 16 | name='recipe', 17 | ), 18 | migrations.AlterField( 19 | model_name='sharelink', 20 | name='uuid', 21 | field=models.UUIDField(default=uuid.UUID('a7a91b2e-ad33-4159-a35e-828a5244ede9')), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0061_merge_20200625_2209.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 20:09 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0056_auto_20200625_2157'), 10 | ('cookbook', '0060_auto_20200625_2144'), 11 | ] 12 | 13 | operations = [ 14 | ] 15 | -------------------------------------------------------------------------------- /cookbook/migrations/0063_auto_20200625_2230.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 20:30 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0062_auto_20200625_2219'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='recipe', 15 | name='ingredients', 16 | ), 17 | migrations.RemoveField( 18 | model_name='recipe', 19 | name='instructions', 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0064_auto_20200625_2329.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-25 21:29 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0063_auto_20200625_2230'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='recipe', 15 | name='file_path', 16 | field=models.CharField(blank=True, default='', max_length=512), 17 | ), 18 | migrations.AlterField( 19 | model_name='recipe', 20 | name='file_uid', 21 | field=models.CharField(blank=True, default='', max_length=256), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0065_auto_20200626_1444.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-26 12:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0064_auto_20200625_2329'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='ingredient', 15 | name='order', 16 | field=models.IntegerField(default=0), 17 | ), 18 | migrations.AddField( 19 | model_name='step', 20 | name='order', 21 | field=models.IntegerField(default=0), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0066_auto_20200626_1455.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-26 12:55 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0065_auto_20200626_1444'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='ingredient', 15 | options={'ordering': ['order', 'pk']}, 16 | ), 17 | migrations.AlterModelOptions( 18 | name='step', 19 | options={'ordering': ['order', 'pk']}, 20 | ), 21 | migrations.AddField( 22 | model_name='step', 23 | name='name', 24 | field=models.CharField(blank=True, default='', max_length=128), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /cookbook/migrations/0067_auto_20200629_1508.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-29 13:08 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0066_auto_20200626_1455'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='ingredient', 15 | name='note', 16 | field=models.CharField(blank=True, max_length=256, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0069_auto_20200629_2134.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-06-29 19:34 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0068_auto_20200629_2127'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='ingredient', 15 | old_name='header', 16 | new_name='is_header', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0070_auto_20200701_2007.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-07-01 18:07 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0069_auto_20200629_2134'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='step', 15 | name='time', 16 | field=models.IntegerField(blank=True, default=0), 17 | ), 18 | migrations.AlterField( 19 | model_name='step', 20 | name='kind', 21 | field=models.CharField(choices=[('TEXT', 'Text'), ('TIME', 'Time')], default='TEXT', max_length=16), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0071_auto_20200701_2048.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-07-01 18:48 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0070_auto_20200701_2007'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='step', 15 | old_name='kind', 16 | new_name='type', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0072_step_show_as_header.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-07-02 10:00 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0071_auto_20200701_2048'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='step', 15 | name='show_as_header', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0073_auto_20200708_2311.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-07-08 21:11 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0072_step_show_as_header'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sync', 15 | name='last_checked', 16 | field=models.DateTimeField(null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0074_remove_keyword_created_by.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-07-09 19:54 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0073_auto_20200708_2311'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='keyword', 15 | name='created_by', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0076_shoppinglist_entries.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-08-26 18:46 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0075_shoppinglist_shoppinglistentry_shoppinglistrecipe'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='shoppinglist', 15 | name='entries', 16 | field=models.ManyToManyField(blank=True, to='cookbook.ShoppingListEntry'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0078_invitelink_used_by.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-01 11:39 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('cookbook', '0077_invitelink'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AddField( 17 | model_name='invitelink', 18 | name='used_by', 19 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='used_by', to=settings.AUTH_USER_MODEL), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0079_invitelink_group.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-01 12:54 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('auth', '0011_update_proxy_permissions'), 11 | ('cookbook', '0078_invitelink_used_by'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='invitelink', 17 | name='group', 18 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='auth.Group'), 19 | preserve_default=False, 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0080_auto_20200921_2331.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-21 21:31 2 | 3 | import datetime 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0079_invitelink_group'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='shopping_auto_sync', 17 | field=models.BooleanField(default=True), 18 | ), 19 | migrations.AlterField( 20 | model_name='invitelink', 21 | name='valid_until', 22 | field=models.DateField(default=datetime.date(2020, 10, 5)), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0081_auto_20200921_2349.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-21 21:49 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0080_auto_20200921_2331'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='shopping_auto_sync', 16 | field=models.IntegerField(default=5), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0082_auto_20200922_1143.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-22 09:43 2 | 3 | import datetime 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0081_auto_20200921_2349'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='invitelink', 16 | name='valid_until', 17 | field=models.DateField(default=datetime.date(2020, 10, 6)), 18 | ), 19 | migrations.AlterField( 20 | model_name='shoppinglistentry', 21 | name='amount', 22 | field=models.DecimalField(decimal_places=16, default=0, max_digits=32), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0083_space.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-22 10:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0082_auto_20200922_1143'), 10 | ] 11 | 12 | operations = [ 13 | migrations.CreateModel( 14 | name='Space', 15 | fields=[ 16 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 17 | ('name', models.CharField(default='Default', max_length=128)), 18 | ('message', models.CharField(default='', max_length=512)), 19 | ], 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0084_auto_20200922_1233.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-22 10:33 2 | 3 | from django.db import migrations 4 | 5 | 6 | def create_default_space(apps, schema_editor): 7 | # Space = apps.get_model('cookbook', 'Space') 8 | # Space.objects.create( 9 | # name='Default', 10 | # message='' 11 | # ) 12 | pass # Beginning with the multi space tenancy version (~something around 1.3) a default space is no longer needed as the first user can create it after setup 13 | 14 | 15 | class Migration(migrations.Migration): 16 | dependencies = [ 17 | ('cookbook', '0083_space'), 18 | ] 19 | 20 | operations = [ 21 | migrations.RunPython(create_default_space), 22 | ] 23 | -------------------------------------------------------------------------------- /cookbook/migrations/0085_auto_20200922_1235.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-22 10:35 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0084_auto_20200922_1233'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='space', 15 | name='message', 16 | field=models.CharField(blank=True, default='', max_length=512), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0086_auto_20200929_1143.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-29 09:43 2 | 3 | import datetime 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0085_auto_20200922_1235'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='mealplan', 16 | name='recipe_multiplier', 17 | field=models.IntegerField(default=1), 18 | ), 19 | migrations.AlterField( 20 | model_name='invitelink', 21 | name='valid_until', 22 | field=models.DateField(default=datetime.date(2020, 10, 13)), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0087_auto_20200929_1152.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-09-29 09:52 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0086_auto_20200929_1143'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='mealplan', 15 | name='recipe_multiplier', 16 | field=models.DecimalField(decimal_places=4, default=1, max_digits=8), 17 | ), 18 | migrations.AlterField( 19 | model_name='shoppinglistrecipe', 20 | name='multiplier', 21 | field=models.DecimalField(decimal_places=4, default=1, max_digits=8), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0088_shoppinglist_finished.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.1 on 2020-09-29 11:55 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0087_auto_20200929_1152'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='shoppinglist', 15 | name='finished', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0090_auto_20201214_1359.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.3 on 2020-12-14 12:59 2 | 3 | import datetime 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0089_auto_20201117_2222'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='use_fractions', 17 | field=models.BooleanField(default=False), 18 | ), 19 | migrations.AlterField( 20 | model_name='invitelink', 21 | name='valid_until', 22 | field=models.DateField(default=datetime.date(2020, 12, 28)), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0091_auto_20201226_1551.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.4 on 2020-12-26 14:51 2 | 3 | from django.db import migrations 4 | 5 | 6 | def migrate_empty_units(apps, schema_editor): 7 | Unit = apps.get_model('cookbook', 'Unit') 8 | Ingredient = apps.get_model('cookbook', 'Ingredient') 9 | 10 | empty_units = Unit.objects.filter(name='').all() 11 | for x in empty_units: 12 | for i in Ingredient.objects.all(): 13 | if i.unit == x: 14 | i.unit = None 15 | i.save() 16 | x.delete() 17 | 18 | 19 | class Migration(migrations.Migration): 20 | dependencies = [ 21 | ('cookbook', '0090_auto_20201214_1359'), 22 | ] 23 | 24 | operations = [ 25 | migrations.RunPython(migrate_empty_units), 26 | ] 27 | -------------------------------------------------------------------------------- /cookbook/migrations/0092_recipe_servings.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.0.7 on 2020-08-30 13:32 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0091_auto_20201226_1551'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='servings', 16 | field=models.IntegerField(default=1), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0094_auto_20201231_1238.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.4 on 2020-12-31 11:38 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0093_auto_20201231_1236'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameField( 14 | model_name='shoppinglistrecipe', 15 | old_name='multiplier', 16 | new_name='servings', 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0095_auto_20210107_1804.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-07 17:04 2 | 3 | import datetime 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0094_auto_20201231_1238'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='sticky_navbar', 17 | field=models.BooleanField(default=True), 18 | ), 19 | migrations.AlterField( 20 | model_name='invitelink', 21 | name='valid_until', 22 | field=models.DateField(default=datetime.date(2021, 1, 21)), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /cookbook/migrations/0098_auto_20210113_1320.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-13 12:20 2 | 3 | import cookbook.models 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0097_auto_20210113_1315'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='invitelink', 16 | name='valid_until', 17 | field=models.DateField(default=cookbook.models.default_valid_until), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0099_auto_20210113_1518.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-13 14:18 2 | 3 | from django.db import migrations, models 4 | import django.utils.timezone 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0098_auto_20210113_1320'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='cooklog', 16 | name='created_at', 17 | field=models.DateTimeField(default=django.utils.timezone.now), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0100_recipe_servings_text.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-21 19:02 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0099_auto_20210113_1518'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='servings_text', 16 | field=models.CharField(blank=True, default='', max_length=32), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0101_storage_path.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-22 18:57 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0100_recipe_servings_text'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='storage', 15 | name='path', 16 | field=models.CharField(blank=True, default='', max_length=256), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0103_food_ignore_shopping.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-25 13:10 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0102_auto_20210125_1147'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='food', 15 | name='ignore_shopping', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0106_shoppinglist_supermarket.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-26 15:21 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0105_auto_20210126_1604'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='shoppinglist', 16 | name='supermarket', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='cookbook.supermarket'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0107_auto_20210128_1535.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.5 on 2021-01-28 14:35 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0106_shoppinglist_supermarket'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='supermarketcategoryrelation', 15 | options={'ordering': ('order',)}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0110_auto_20210221_1406.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.6 on 2021-02-21 13:06 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0109_auto_20210221_1204'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='userpreference', 16 | name='space', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0112_remove_synclog_space.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-16 23:21 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0111_space_created_by'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='synclog', 15 | name='space', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0113_auto_20210317_2017.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-17 19:17 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0112_remove_synclog_space'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='shoppinglistentry', 15 | name='space', 16 | ), 17 | migrations.RemoveField( 18 | model_name='shoppinglistrecipe', 19 | name='space', 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0117_space_max_recipes.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.1.7 on 2021-03-23 21:50 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0116_auto_20210319_0012'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='max_recipes', 16 | field=models.IntegerField(default=0), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0119_auto_20210411_2101.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2 on 2021-04-11 19:01 2 | from django.contrib.postgres.operations import UnaccentExtension, TrigramExtension 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0118_auto_20210406_1805'), 10 | ] 11 | 12 | operations = [ 13 | TrigramExtension(), 14 | UnaccentExtension(), 15 | ] 16 | -------------------------------------------------------------------------------- /cookbook/migrations/0121_auto_20210518_1638.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-05-18 14:38 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0120_bookmarklet'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='search_style', 16 | field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='LARGE', max_length=64), 17 | ), 18 | migrations.AlterField( 19 | model_name='userpreference', 20 | name='use_fractions', 21 | field=models.BooleanField(default=True), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0122_auto_20210527_1712.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-05-27 15:12 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0121_auto_20210518_1638'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='allow_files', 16 | field=models.BooleanField(default=True), 17 | ), 18 | migrations.AddField( 19 | model_name='space', 20 | name='max_users', 21 | field=models.IntegerField(default=0), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0123_invitelink_email.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-05-28 12:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0122_auto_20210527_1712'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='invitelink', 15 | name='email', 16 | field=models.EmailField(blank=True, max_length=254), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0124_alter_userpreference_theme.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-05-30 15:53 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0123_invitelink_email'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='theme', 16 | field=models.CharField(choices=[('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero'), ('TANDOOR', 'Tandoor')], default='FLATLY', max_length=128), 17 | ), 18 | ] -------------------------------------------------------------------------------- /cookbook/migrations/0125_space_demo.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-06-04 14:52 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0124_alter_userpreference_theme'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='demo', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0126_alter_userpreference_theme.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-06-05 15:11 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0125_space_demo'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='theme', 16 | field=models.CharField(choices=[('TANDOOR', 'Tandoor'), ('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero')], default='TANDOOR', max_length=128), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0127_remove_invitelink_username.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-06-07 14:21 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0126_alter_userpreference_theme'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='invitelink', 15 | name='username', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0129_auto_20210608_1233.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-06-08 10:33 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0128_userfile'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='space', 15 | name='allow_files', 16 | ), 17 | migrations.AddField( 18 | model_name='space', 19 | name='max_file_storage_mb', 20 | field=models.IntegerField(default=0, help_text='Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload.'), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /cookbook/migrations/0130_alter_userfile_file_size_kb.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.3 on 2021-06-08 10:42 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0129_auto_20210608_1233'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userfile', 15 | name='file_size_kb', 16 | field=models.IntegerField(blank=True, default=0), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0132_sharelink_request_count.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-12 18:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0131_auto_20210608_1929'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='sharelink', 15 | name='request_count', 16 | field=models.IntegerField(default=0), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0133_sharelink_abuse_blocked.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-12 18:53 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0132_sharelink_request_count'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='sharelink', 15 | name='abuse_blocked', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0134_space_allow_sharing.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-15 19:07 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0133_sharelink_abuse_blocked'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='allow_sharing', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0136_auto_20210617_1343.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-17 11:43 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0135_auto_20210615_2210'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='importlog', 15 | name='imported_recipes', 16 | field=models.IntegerField(default=0), 17 | ), 18 | migrations.AddField( 19 | model_name='importlog', 20 | name='total_recipes', 21 | field=models.IntegerField(default=0), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0139_space_created_at.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-22 16:14 2 | 3 | from django.db import migrations, models 4 | import django.utils.timezone 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0138_auto_20210617_1602'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='space', 16 | name='created_at', 17 | field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), 18 | preserve_default=False, 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0140_userpreference_created_at.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-06-22 16:19 2 | 3 | from django.db import migrations, models 4 | import django.utils.timezone 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0139_space_created_at'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='created_at', 17 | field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), 18 | preserve_default=False, 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0142_alter_userpreference_search_style.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.5 on 2021-07-29 14:50 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0141_auto_20210713_1042'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='search_style', 16 | field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='NEW', max_length=64), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0145_alter_userpreference_search_style.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2 on 2021-04-22 21:33 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0144_create_searchfields'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='search_style', 16 | field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='LARGE', max_length=64), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0146_alter_userpreference_use_fractions.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.4 on 2021-07-03 08:32 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0145_alter_userpreference_search_style'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='use_fractions', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0154_auto_20210922_1705.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.7 on 2021-09-22 15:05 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0153_auto_20210915_2327'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='mealtype', 15 | name='color', 16 | field=models.CharField(blank=True, max_length=7, null=True), 17 | ), 18 | migrations.AddField( 19 | model_name='mealtype', 20 | name='icon', 21 | field=models.CharField(blank=True, max_length=16, null=True), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0155_mealtype_default.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.7 on 2021-09-23 11:38 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0154_auto_20210922_1705'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='mealtype', 15 | name='default', 16 | field=models.BooleanField(blank=True, default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0156_searchpreference_trigram_threshold.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.7 on 2021-09-28 16:45 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0155_mealtype_default'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='searchpreference', 15 | name='trigram_threshold', 16 | field=models.DecimalField(decimal_places=2, default=0.1, max_digits=3), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0158_userpreference_use_kj.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.7 on 2021-10-25 05:21 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0157_alter_searchpreference_trigram'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='use_kj', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0161_alter_shoppinglistentry_food.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.8 on 2021-11-03 23:19 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0160_delete_shoppinglist_orphans'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='shoppinglistentry', 16 | name='food', 17 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shopping_entries', to='cookbook.food'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0162_userpreference_csv_delim.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.9 on 2021-11-30 22:00 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0161_alter_shoppinglistentry_food'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='csv_delim', 16 | field=models.CharField(default=',', max_length=2), 17 | ), 18 | migrations.AddField( 19 | model_name='userpreference', 20 | name='csv_prefix', 21 | field=models.CharField(blank=True, max_length=10), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0164_space_show_facet_count.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.11 on 2022-01-17 22:23 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0163_auto_20220105_0758'), 10 | ] 11 | 12 | operations = [ 13 | # migrations.AddField( 14 | # model_name='space', 15 | # name='show_facet_count', 16 | # field=models.BooleanField(default=False), 17 | # ), 18 | # removed due to quick fix in 0159 migration to maintain correct order 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0165_remove_step_type.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.11 on 2022-01-18 19:19 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0164_space_show_facet_count'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='step', 15 | name='type', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0167_userpreference_left_handed.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.11 on 2022-01-20 22:31 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0166_alter_userpreference_shopping_add_onhand'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userpreference', 15 | name='left_handed', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0168_add_unit_searchfields.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations 2 | 3 | from cookbook.models import SearchFields 4 | 5 | 6 | def create_searchfields(apps, schema_editor): 7 | SearchFields.objects.create(name='Units', field='steps__ingredients__unit__name') 8 | 9 | 10 | class Migration(migrations.Migration): 11 | 12 | dependencies = [ 13 | ('cookbook', '0167_userpreference_left_handed'), 14 | ] 15 | 16 | operations = [ 17 | migrations.RunPython( 18 | create_searchfields 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0171_alter_searchpreference_trigram_threshold.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.12 on 2022-02-15 00:08 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0170_auto_20220207_1848'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='searchpreference', 15 | name='trigram_threshold', 16 | field=models.DecimalField(decimal_places=2, default=0.2, max_digits=3), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0172_ingredient_original_text.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.12 on 2022-02-25 15:19 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0171_alter_searchpreference_trigram_threshold'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='ingredient', 15 | name='original_text', 16 | field=models.CharField(blank=True, default=None, max_length=512, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0173_recipe_source_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.12 on 2022-03-04 13:39 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0172_ingredient_original_text'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='source_url', 16 | field=models.CharField(blank=True, default=None, max_length=1024, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0175_remove_userpreference_space.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.4 on 2022-05-31 14:56 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0174_alter_food_substitute_userspace'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='userpreference', 15 | name='space', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0177_recipe_show_ingredient_overview.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.4 on 2022-06-26 10:26 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0176_alter_searchpreference_icontains_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipe', 15 | name='show_ingredient_overview', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0178_remove_userpreference_search_style_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.6 on 2022-07-12 18:04 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0177_recipe_show_ingredient_overview'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='userpreference', 15 | name='search_style', 16 | ), 17 | migrations.RemoveField( 18 | model_name='userpreference', 19 | name='show_recent', 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /cookbook/migrations/0180_invitelink_reusable.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.6 on 2022-07-14 09:20 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0179_recipe_private_recipe_shared'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='invitelink', 15 | name='reusable', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0181_space_image.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.6 on 2022-07-14 11:14 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0180_invitelink_reusable'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='space', 16 | name='image', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='space_image', to='cookbook.userfile'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0182_userpreference_image.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.6 on 2022-07-14 13:32 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0181_space_image'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='userpreference', 16 | name='image', 17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='user_image', to='cookbook.userfile'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0183_alter_space_image.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.6 on 2022-08-04 16:46 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0182_userpreference_image'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='space', 16 | name='image', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='space_image', to='cookbook.userfile'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0184_alter_userpreference_image.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.7 on 2022-09-12 10:29 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('cookbook', '0183_alter_space_image'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='userpreference', 16 | name='image', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='user_image', to='cookbook.userfile'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /cookbook/migrations/0187_alter_space_use_plural.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.4 on 2023-01-20 09:19 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0186_automation_order_alter_automation_type'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='space', 15 | name='use_plural', 16 | field=models.BooleanField(default=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0188_space_no_sharing_limit.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.4 on 2023-02-12 16:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0187_alter_space_use_plural'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='no_sharing_limit', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0193_space_internal_note.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.9 on 2023-06-21 13:19 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0192_food_food_unique_open_data_slug_per_space_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='internal_note', 16 | field=models.TextField(blank=True, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0194_alter_food_properties_food_amount.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.9 on 2023-06-26 13:28 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0193_space_internal_note'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='food', 15 | name='properties_food_amount', 16 | field=models.DecimalField(blank=True, decimal_places=2, default=100, max_digits=16), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0196_food_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.10 on 2023-07-22 06:45 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0195_invitelink_internal_note_userspace_internal_note_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='food', 15 | name='url', 16 | field=models.CharField(blank=True, default='', max_length=1024, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0197_step_show_ingredients_table_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.10 on 2023-08-24 08:43 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0196_food_url'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='step', 15 | name='show_ingredients_table', 16 | field=models.BooleanField(default=True), 17 | ), 18 | migrations.AddField( 19 | model_name='userpreference', 20 | name='show_step_ingredients', 21 | field=models.BooleanField(default=True), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0198_propertytype_order.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.10 on 2023-08-24 09:25 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0197_step_show_ingredients_table_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='propertytype', 15 | name='order', 16 | field=models.IntegerField(default=0), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0202_remove_space_show_facet_count.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.10 on 2023-09-12 13:37 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0201_rename_date_mealplan_from_date_mealplan_to_date'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='space', 15 | name='show_facet_count', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0203_alter_unique_contstraints.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.5 on 2023-09-14 12:26 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0202_remove_space_show_facet_count'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddConstraint( 14 | model_name='mealtype', 15 | constraint=models.UniqueConstraint(fields=('space', 'name', 'created_by'), name='mt_unique_name_per_space'), 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0204_propertytype_fdc_id.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2023-11-27 21:09 2 | 3 | from django.db import migrations, models 4 | from django_scopes import scopes_disabled 5 | 6 | 7 | 8 | 9 | class Migration(migrations.Migration): 10 | dependencies = [ 11 | ('cookbook', '0203_alter_unique_contstraints'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='propertytype', 17 | name='fdc_id', 18 | field=models.CharField(blank=True, default=None, max_length=128, null=True), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /cookbook/migrations/0208_space_app_name_userpreference_max_owned_spaces.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2024-01-14 23:06 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0207_space_logo_color_128_space_logo_color_144_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='space', 15 | name='app_name', 16 | field=models.CharField(blank=True, max_length=40, null=True), 17 | ), 18 | migrations.AddField( 19 | model_name='userpreference', 20 | name='max_owned_spaces', 21 | field=models.IntegerField(default=100), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /cookbook/migrations/0209_remove_space_use_plural.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2024-01-28 07:42 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0208_space_app_name_userpreference_max_owned_spaces'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name='space', 15 | name='use_plural', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /cookbook/migrations/0210_shoppinglistentry_updated_at.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2024-01-28 10:06 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0209_remove_space_use_plural'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='shoppinglistentry', 15 | name='updated_at', 16 | field=models.DateTimeField(auto_now=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0211_recipebook_order.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2024-02-16 19:09 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0210_shoppinglistentry_updated_at'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='recipebook', 15 | name='order', 16 | field=models.IntegerField(default=0), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0212_alter_property_property_amount.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.7 on 2024-02-18 07:51 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0211_recipebook_order'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='property', 15 | name='property_amount', 16 | field=models.DecimalField(decimal_places=4, default=None, max_digits=32, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0216_delete_shoppinglist.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.10 on 2024-02-28 16:21 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0215_connectorconfig'), 10 | ] 11 | 12 | operations = [ 13 | migrations.DeleteModel( 14 | name='ShoppingList', 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /cookbook/migrations/0217_alter_userpreference_default_page.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.10 on 2024-03-09 06:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0216_delete_shoppinglist'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='userpreference', 15 | name='default_page', 16 | field=models.CharField(choices=[('SEARCH', 'Search'), ('PLAN', 'Meal-Plan'), ('BOOKS', 'Books'), ('SHOPPING', 'Shopping')], default='SEARCH', max_length=64), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/0219_connectorconfig_supports_description_field.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.15 on 2024-09-15 10:30 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('cookbook', '0218_alter_mealplan_from_date_alter_mealplan_to_date'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='connectorconfig', 15 | name='supports_description_field', 16 | field=models.BooleanField(default=True, help_text='Does the todo entity support the description field'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /cookbook/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/migrations/__init__.py -------------------------------------------------------------------------------- /cookbook/provider/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/provider/__init__.py -------------------------------------------------------------------------------- /cookbook/static/assets/brand_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/brand_logo.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_128.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_144.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_180.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_192.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_32.png -------------------------------------------------------------------------------- /cookbook/static/assets/logo_color_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/assets/logo_color_512.png -------------------------------------------------------------------------------- /cookbook/static/custom/css/markdown_blockquote.css: -------------------------------------------------------------------------------- 1 | /* css classes needed to render markdown blockquotes */ 2 | blockquote { 3 | background: #f9f9f9; 4 | border-left: 4px solid #ccc; 5 | margin: 1.5em 10px; 6 | padding: .5em 10px; 7 | quotes: none; 8 | } 9 | 10 | blockquote:before { 11 | color: #ccc; 12 | content: open-quote; 13 | font-size: 4em; 14 | line-height: .1em; 15 | margin-right: .25em; 16 | vertical-align: -.4em; 17 | } 18 | 19 | blockquote p { 20 | display: inline; 21 | } -------------------------------------------------------------------------------- /cookbook/static/custom/js/form_multiselect.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('.multiselectwidget').select2(); 3 | }); -------------------------------------------------------------------------------- /cookbook/static/custom/js/form_select.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('.selectwidget').select2(); 3 | }); -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/annotation-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/annotation-insert.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/annotation-newparagraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/annotation-noicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/findbarButton-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/findbarButton-next.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/findbarButton-next@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/findbarButton-next@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/findbarButton-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/findbarButton-previous.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/findbarButton-previous@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/findbarButton-previous@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/grab.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/grab.cur -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/grabbing.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/grabbing.cur -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/loading-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/loading-icon.gif -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/loading-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/loading-small.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/loading-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/loading-small@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-documentProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-documentProperties.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-documentProperties@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-documentProperties@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-firstPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-firstPage.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-firstPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-firstPage@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-handTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-handTool.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-handTool@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-handTool@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-lastPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-lastPage.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-lastPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-lastPage@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCcw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCcw.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCcw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCcw@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCw.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-rotateCw@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollHorizontal@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollVertical.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollVertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollVertical@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollWrapped.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-scrollWrapped@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-scrollWrapped@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-selectTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-selectTool.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-selectTool@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-selectTool@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadEven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadEven.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadEven@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadEven@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadNone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadNone.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadNone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadNone@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadOdd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadOdd.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/secondaryToolbarButton-spreadOdd@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/secondaryToolbarButton-spreadOdd@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/shadow.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/texture.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-bookmark.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-bookmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-bookmark@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-download.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-download@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-download@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-menuArrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-menuArrows.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-menuArrows@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-menuArrows@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-openFile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-openFile.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-openFile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-openFile@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-pageDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-pageDown.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-pageDown@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-pageDown@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-pageUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-pageUp.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-pageUp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-pageUp@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-presentationMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-presentationMode.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-presentationMode@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-presentationMode@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-print.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-print@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-print@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-search.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-search@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-secondaryToolbarToggle.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-secondaryToolbarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-secondaryToolbarToggle@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-sidebarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-sidebarToggle.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-sidebarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-sidebarToggle@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewAttachments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewAttachments.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewAttachments@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewAttachments@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewOutline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewOutline.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewOutline@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewOutline@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewThumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewThumbnail.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-viewThumbnail@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-viewThumbnail@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-zoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-zoomIn.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-zoomIn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-zoomIn@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-zoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-zoomOut.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/toolbarButton-zoomOut@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/toolbarButton-zoomOut@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/treeitem-collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/treeitem-collapsed.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/treeitem-collapsed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/treeitem-collapsed@2x.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/treeitem-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/treeitem-expanded.png -------------------------------------------------------------------------------- /cookbook/static/pdfjs/images/treeitem-expanded@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/pdfjs/images/treeitem-expanded@2x.png -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /cookbook/static/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_devanagari_400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_devanagari_400.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_devanagari_500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_devanagari_500.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_devanagari_700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_devanagari_700.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_400.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_500.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_700.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_ext_400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_ext_400.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_ext_500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_ext_500.woff2 -------------------------------------------------------------------------------- /cookbook/static/webfonts/poppins_latin_ext_700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/static/webfonts/poppins_latin_ext_700.woff2 -------------------------------------------------------------------------------- /cookbook/templates/account/logout.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load crispy_forms_filters %} 3 | {% load i18n %} 4 | 5 | {% block title %}{% trans 'Sign Out' %}{% endblock %} 6 | 7 | 8 | {% block content %} 9 |

{% trans "Sign Out" %}

10 | 11 |

{% trans 'Are you sure you want to sign out?' %}

12 | 13 |
14 | {% csrf_token %} 15 | {% if redirect_field_value %} 16 | 17 | {% endif %} 18 | 19 |
20 | 21 | 22 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templates/account/password_reset_from_key_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | 4 | {% load i18n %} 5 | {% load account %} 6 | 7 | {% block title %}{% trans "Change Password" %}{% endblock %} 8 | 9 | {% block content %} 10 |
11 |
12 |
13 |

{% trans "Change Password" %}

14 | 15 | {% if user.is_authenticated %} 16 | {% include "account/snippets/already_logged_in.html" %} 17 | {% endif %} 18 | 19 |

{% trans 'Your password is now changed.' %}

20 |
21 |
22 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templates/account/signup_closed.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% load i18n %} 4 | 5 | {% block title %}{% trans "Sign Up Closed" %}{% endblock %} 6 | 7 | {% block content %} 8 |
9 |
10 |
11 |

{% trans "Sign Up Closed" %}

12 | 13 |

{% trans "We are sorry, but the sign up is currently closed." %}

14 | 15 | {% trans "Sign In" %} 16 |
17 |
18 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templates/api_info.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | {% load i18n %} 4 | 5 | {% block title %}{% trans "API Documentation" %}{% endblock %} 6 | 7 | {% block extra_head %} 8 | 9 | {% endblock %} 10 | 11 | {% block content_fluid %} 12 | 13 | 14 | 15 | 16 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templates/include/storage_backend_warning.html: -------------------------------------------------------------------------------- 1 | {% load i18n %} 2 | 3 | -------------------------------------------------------------------------------- /cookbook/templates/no_groups_info.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | {% load i18n %} 4 | 5 | {% block title %}{% trans "No Permissions" %}{% endblock %} 6 | 7 | 8 | {% block content %} 9 | 10 |
11 | 12 |

{% trans 'No Permissions' %}

13 |
14 | 15 | 16 | 17 | {% trans 'You do not have any groups and therefor cannot use this application.' %} 18 | {% trans 'Please contact your administrator.' %} 19 | 20 |
21 | 22 |
23 | 24 | {% endblock %} 25 | 26 | -------------------------------------------------------------------------------- /cookbook/templates/no_perm_info.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load static %} 3 | {% load i18n %} 4 | 5 | {% block title %}{% trans "No Permission" %}{% endblock %} 6 | 7 | 8 | {% block content %} 9 | 10 |
11 | 12 |

{% trans 'No Permission' %}

13 |
14 | 15 | {% trans 'You do not have the required permissions to view this page or perform this action.' %} {% trans 'Please contact your administrator.' %}
16 | 17 |
18 | 19 | {% endblock %} 20 | 21 | -------------------------------------------------------------------------------- /cookbook/templates/rest_framework/api.html: -------------------------------------------------------------------------------- 1 | {% extends "rest_framework/base.html" %} 2 | {% load i18n %} 3 | 4 | {% block branding %} 5 | {% trans 'Recipe Home' %} 6 | {% endblock %} 7 | 8 | {% block userlinks %} 9 | 20 | 21 | {{ block.super }} 22 | 23 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templates/test2.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% load crispy_forms_filters %} 3 | {% load i18n %} 4 | {% load static %} 5 | 6 | {% block title %}{% trans 'Export Recipes' %}{% endblock %} 7 | 8 | {% block extra_head %} 9 | {{ form.media }} 10 | {% endblock %} 11 | 12 | 13 | {% block content %} 14 |

{% trans 'Export' %}

15 |
16 |
17 |
18 | {% csrf_token %} 19 | {{ form|crispy }} 20 | 22 |
23 |
24 |
25 | {% endblock %} -------------------------------------------------------------------------------- /cookbook/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/templatetags/__init__.py -------------------------------------------------------------------------------- /cookbook/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/tests/__init__.py -------------------------------------------------------------------------------- /cookbook/tests/api/__init__.py: -------------------------------------------------------------------------------- 1 | from django.test import utils 2 | from django_scopes import scopes_disabled 3 | 4 | # disables scoping error in all queries used inside the test FUNCTIONS 5 | # FIXTURES need to have their own scopes_disabled!! 6 | # This is done by hook pytest_fixture_setup in conftest.py for all non yield fixtures 7 | utils.setup_databases = scopes_disabled()(utils.setup_databases) 8 | -------------------------------------------------------------------------------- /cookbook/tests/api/docs/reports/tests/pytest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cookbook/tests/edits/__init__.py: -------------------------------------------------------------------------------- 1 | from django.test import utils 2 | from django_scopes import scopes_disabled 3 | 4 | # disables scoping error in all queries used inside the test FUNCTIONS 5 | # FIXTURES need to have their own scopes_disabled!! 6 | # This is done by hook pytest_fixture_setup in conftest.py for all non yield fixtures 7 | utils.setup_databases = scopes_disabled()(utils.setup_databases) 8 | -------------------------------------------------------------------------------- /cookbook/tests/other/__init__.py: -------------------------------------------------------------------------------- 1 | from django.test import utils 2 | from django_scopes import scopes_disabled 3 | 4 | # disables scoping error in all queries used inside the test FUNCTIONS 5 | # FIXTURES need to have their own scopes_disabled!! 6 | # This is done by hook pytest_fixture_setup in conftest.py for all non yield fixtures 7 | utils.setup_databases = scopes_disabled()(utils.setup_databases) 8 | -------------------------------------------------------------------------------- /cookbook/tests/other/docs/reports/tests/pytest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cookbook/tests/other/test_helpers.py: -------------------------------------------------------------------------------- 1 | from cookbook.helper.HelperFunctions import validate_import_url 2 | 3 | 4 | def test_url_validator(): 5 | # neither local nor public urls without protocol are valid 6 | assert not validate_import_url('localhost:8080') 7 | assert not validate_import_url('www.google.com') 8 | 9 | # public urls with schema and parameters are valid 10 | assert validate_import_url('https://www.google.com') 11 | assert validate_import_url('https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html#case-2-application-can-send-requests-to-any-external-ip-address-or-domain-name') 12 | 13 | assert not validate_import_url('https://localhost') 14 | assert not validate_import_url('http://127.0.0.1') -------------------------------------------------------------------------------- /cookbook/tests/resources/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/tests/resources/image.jpg -------------------------------------------------------------------------------- /cookbook/tests/resources/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/cookbook/tests/resources/image.png -------------------------------------------------------------------------------- /cookbook/tests/views/__init__.py: -------------------------------------------------------------------------------- 1 | from django.test import utils 2 | from django_scopes import scopes_disabled 3 | 4 | # disables scoping error in all queries used inside the test FUNCTIONS 5 | # FIXTURES need to have their own scopes_disabled!! 6 | # This is done by hook pytest_fixture_setup in conftest.py for all non yield fixtures 7 | utils.setup_databases = scopes_disabled()(utils.setup_databases) 8 | -------------------------------------------------------------------------------- /cookbook/version_info.py: -------------------------------------------------------------------------------- 1 | TANDOOR_VERSION = "" 2 | TANDOOR_REF = "" 3 | VERSION_INFO = [] 4 | -------------------------------------------------------------------------------- /cookbook/views/__init__.py: -------------------------------------------------------------------------------- 1 | import cookbook.views.api 2 | import cookbook.views.data 3 | import cookbook.views.delete 4 | import cookbook.views.edit 5 | import cookbook.views.import_export 6 | import cookbook.views.lists 7 | import cookbook.views.new 8 | import cookbook.views.views 9 | import cookbook.views.telegram 10 | 11 | __all__ = [ 12 | 'api', 13 | 'data', 14 | 'delete', 15 | 'edit', 16 | 'import_export', 17 | 'lists', 18 | 'new', 19 | 'views', 20 | 'telegram', 21 | ] 22 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | docs.tandoor.dev -------------------------------------------------------------------------------- /docs/contribute/assets/flake8_watcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/contribute/assets/flake8_watcher.png -------------------------------------------------------------------------------- /docs/contribute/assets/isort_watcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/contribute/assets/isort_watcher.png -------------------------------------------------------------------------------- /docs/contribute/assets/linting_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/contribute/assets/linting_error.png -------------------------------------------------------------------------------- /docs/contribute/assets/prettier_watcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/contribute/assets/prettier_watcher.png -------------------------------------------------------------------------------- /docs/contribute/assets/yapf_watcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/contribute/assets/yapf_watcher.png -------------------------------------------------------------------------------- /docs/install/k8s/10-configmap.yaml: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | labels: 5 | app: recipes 6 | name: recipes-nginx-config 7 | data: 8 | nginx-config: |- 9 | events { 10 | worker_connections 1024; 11 | } 12 | http { 13 | include mime.types; 14 | server { 15 | listen 80; 16 | server_name _; 17 | 18 | client_max_body_size 16M; 19 | 20 | # serve static files 21 | location /static/ { 22 | alias /static/; 23 | } 24 | # serve media files 25 | location /media/ { 26 | alias /media/; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /docs/install/k8s/15-secrets.yaml: -------------------------------------------------------------------------------- 1 | kind: Secret 2 | apiVersion: v1 3 | metadata: 4 | name: recipes 5 | type: Opaque 6 | data: 7 | # echo -n 'db-password' | base64 8 | postgresql-password: ZGItcGFzc3dvcmQ= 9 | # echo -n 'postgres-user-password' | base64 10 | postgresql-postgres-password: cG9zdGdyZXMtdXNlci1wYXNzd29yZA== 11 | # echo -n 'secret-key' | sha256sum | awk '{ printf $1 }' | base64 12 | secret-key: ODVkYmUxNWQ3NWVmOTMwOGM3YWUwZjMzYzdhMzI0Y2M2ZjRiZjUxOWEyZWQyZjMwMjdiZDMzYzE0MGE0ZjlhYQ== 13 | -------------------------------------------------------------------------------- /docs/install/k8s/20-service-account.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: recipes 5 | -------------------------------------------------------------------------------- /docs/install/k8s/30-pvc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: recipes-media 5 | labels: 6 | app: recipes 7 | spec: 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 1Gi 13 | --- 14 | apiVersion: v1 15 | kind: PersistentVolumeClaim 16 | metadata: 17 | name: recipes-static 18 | labels: 19 | app: recipes 20 | spec: 21 | accessModes: 22 | - ReadWriteOnce 23 | resources: 24 | requests: 25 | storage: 1Gi 26 | -------------------------------------------------------------------------------- /docs/install/k8s/45-service-db.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | labels: 5 | app: recipes 6 | tier: database 7 | name: recipes-postgresql 8 | spec: 9 | ports: 10 | - name: postgresql 11 | port: 5432 12 | protocol: TCP 13 | targetPort: postgresql 14 | selector: 15 | app: recipes 16 | tier: database 17 | sessionAffinity: None 18 | type: ClusterIP 19 | -------------------------------------------------------------------------------- /docs/install/k8s/60-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: recipes 5 | labels: 6 | app: recipes 7 | tier: frontend 8 | spec: 9 | selector: 10 | app: recipes 11 | tier: frontend 12 | environment: production 13 | ports: 14 | - port: 80 15 | targetPort: http 16 | name: http 17 | protocol: TCP 18 | - port: 8080 19 | targetPort: gunicorn 20 | name: gunicorn 21 | protocol: TCP 22 | -------------------------------------------------------------------------------- /docs/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/preview.png -------------------------------------------------------------------------------- /docs/preview.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/docs/preview.xcf -------------------------------------------------------------------------------- /docs/stylesheets/extra.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --md-primary-fg-color: #ffcb76; 3 | --md-accent-fg-color: #FF6F00; 4 | 5 | --md-primary-fg-color--light: #ffcb76; 6 | 7 | /* not working part, has no effect */ 8 | --md-primary-bg-color: #272727; 9 | --md-default-bg-color: #272727; 10 | --md-default-bg-color--light: #272727; 11 | --md-default-bg-color--lighter: #272727; 12 | --md-default-bg-color--lightest: #272727; 13 | } 14 | 15 | /* 16 | flame dark orange #FF6F00 17 | background dark #272727 18 | tandoor #ffcb76 19 | */ -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recipes.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /nginx/conf.d/Recipes.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80 ipv6only=on; 4 | server_name localhost; 5 | 6 | client_max_body_size 128M; 7 | 8 | # serve media files 9 | location /media/ { 10 | alias /media/; 11 | add_header Content-Disposition 'attachment; filename="$args"'; 12 | } 13 | # pass requests for dynamic content to gunicorn 14 | location / { 15 | proxy_set_header Host $http_host; 16 | proxy_pass http://web_recipes:8080; 17 | 18 | error_page 502 /errors/http502.html; 19 | } 20 | 21 | location /errors/ { 22 | alias /etc/nginx/conf.d/errorpages/; 23 | internal; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /node_modules/.yarn-integrity: -------------------------------------------------------------------------------- 1 | { 2 | "systemParams": "win32-x64-93", 3 | "modulesFolders": [ 4 | "node_modules" 5 | ], 6 | "flags": [], 7 | "linkedModules": [], 8 | "topLevelPatterns": [], 9 | "lockfileEntries": {}, 10 | "files": [], 11 | "artifacts": {} 12 | } -------------------------------------------------------------------------------- /openapitools.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", 3 | "spaces": 2, 4 | "generator-cli": { 5 | "version": "6.2.1" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.yapf] 2 | column_limit = 179 3 | based_on_style = "pep8" 4 | DISABLE_ENDING_COMMA_HEURISTIC = false 5 | COALESCE_BRACKETS = true 6 | DEDENT_CLOSING_BRACKETS = true 7 | FORCE_MULTILINE_DICT = false 8 | 9 | [tool.isort] 10 | multi_line_output = 5 11 | skip = [".gitignore", ".dockerignore"] 12 | line_length = 179 13 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | DJANGO_SETTINGS_MODULE = recipes.test_settings 3 | testpaths = cookbook/tests 4 | python_files = tests.py test_*.py *_tests.py 5 | # uncomment to run coverage reports 6 | addopts = -n auto --cov=. --cov-report=html:docs/reports/coverage --cov-report=xml:docs/reports/coverage/coverage.xml --junitxml=docs/reports/tests/pytest.xml --html=docs/reports/tests/tests.html 7 | # addopts = -n auto --junitxml=docs/reports/tests/pytest.xml --html=docs/reports/tests/tests.html -------------------------------------------------------------------------------- /recipes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/__init__.py -------------------------------------------------------------------------------- /recipes/locale/ar/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/ar/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/bg/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/bg/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/ca/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/ca/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/cs/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/cs/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/da/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/da/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/de/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/de/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/el/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/el/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/en/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/en/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/es/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/es/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/fi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/fi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/fr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/fr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/he/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/he/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/hu_HU/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/hu_HU/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/hy/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/hy/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/id/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/id/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/it/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/it/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/lv/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/lv/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/nb_NO/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/nb_NO/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/nl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/nl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/pl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/pl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/pt/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/pt/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/pt_BR/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/pt_BR/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/rn/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/rn/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/ro/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/ro/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/ru/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/ru/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/sl/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/sl/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/sv/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/sv/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/tr/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/tr/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/uk/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/uk/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/vi/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/vi/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/zh_CN/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/zh_CN/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /recipes/locale/zh_Hant/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/recipes/locale/zh_Hant/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /vue/.openapi-generator/FILES: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .npmignore 3 | api.ts 4 | base.ts 5 | common.ts 6 | configuration.ts 7 | git_push.sh 8 | index.ts 9 | -------------------------------------------------------------------------------- /vue/.openapi-generator/VERSION: -------------------------------------------------------------------------------- 1 | 5.2.1 -------------------------------------------------------------------------------- /vue/.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | -------------------------------------------------------------------------------- /vue/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /vue/babel.config.js.c: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | "@vue/cli-plugin-babel/preset" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /vue/src/apps/CookbookView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './CookbookView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ExportResponseView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ExportResponseView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ExportView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ExportView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ImportResponseView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ImportResponseView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ImportView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ImportView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/IngredientEditorView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './IngredientEditorView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/MealPlanView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './MealPlanView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ModelListView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ModelListView' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/OfflineView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './OfflineView.vue' 3 | import i18n from "@/i18n"; 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ProfileView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './ProfileView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/PropertyEditorView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './PropertyEditorView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/RecipeEditView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './RecipeEditView' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/RecipeSearchView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './RecipeSearchView' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/RecipeView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './RecipeView.vue' 3 | import i18n from "@/i18n"; 4 | import {createPinia, PiniaVuePlugin} from 'pinia' 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/SettingsView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './SettingsView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/ShoppingListView/main.js: -------------------------------------------------------------------------------- 1 | import i18n from "@/i18n" 2 | import Vue from "vue" 3 | import App from "./ShoppingListView" 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + "vue/" 10 | if (process.env.NODE_ENV === "development") { 11 | publicPath = "http://localhost:8080/" 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: (h) => h(App), 22 | }).$mount("#app") 23 | -------------------------------------------------------------------------------- /vue/src/apps/SpaceManageView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './SpaceManageView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/TestView/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './TestView.vue' 3 | import i18n from '@/i18n' 4 | import {createPinia, PiniaVuePlugin} from "pinia"; 5 | 6 | Vue.config.productionTip = false 7 | 8 | // TODO move this and other default stuff to centralized JS file (verify nothing breaks) 9 | let publicPath = localStorage.STATIC_URL + 'vue/' 10 | if (process.env.NODE_ENV === 'development') { 11 | publicPath = 'http://localhost:8080/' 12 | } 13 | export default __webpack_public_path__ = publicPath // eslint-disable-line 14 | 15 | Vue.use(PiniaVuePlugin) 16 | const pinia = createPinia() 17 | 18 | new Vue({ 19 | pinia, 20 | i18n, 21 | render: h => h(App), 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vue/src/apps/base_app.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/vue/src/apps/base_app.js -------------------------------------------------------------------------------- /vue/src/components/Badges/Icon.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /vue/src/components/Badges/LinkedRecipe.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /vue/src/components/BetaWarning.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /vue/src/components/Buttons/DownloadPDF.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | -------------------------------------------------------------------------------- /vue/src/components/ContextMenu/ContextMenuItem.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /vue/src/components/ImageViewer.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 26 | -------------------------------------------------------------------------------- /vue/src/components/LastCooked.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 27 | 28 | -------------------------------------------------------------------------------- /vue/src/components/LoadingSpinner.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 22 | -------------------------------------------------------------------------------- /vue/src/components/Modals/SmallText.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | -------------------------------------------------------------------------------- /vue/src/components/PdfViewer.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 29 | -------------------------------------------------------------------------------- /vue/src/components/PinnedRecipeBar.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | -------------------------------------------------------------------------------- /vue/src/components/ScalableNumber.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 25 | -------------------------------------------------------------------------------- /vue/src/shims-tsx.d.ts: -------------------------------------------------------------------------------- 1 | import Vue, { VNode } from 'vue' 2 | 3 | declare global { 4 | namespace JSX { 5 | // tslint:disable no-empty-interface 6 | interface Element extends VNode {} 7 | // tslint:disable no-empty-interface 8 | interface ElementClass extends Vue {} 9 | interface IntrinsicElements { 10 | [elem: string]: any 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vue/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue' 3 | export default Vue 4 | } 5 | -------------------------------------------------------------------------------- /vue/src/stores/GenericApiStore.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/vue/src/stores/GenericApiStore.js -------------------------------------------------------------------------------- /vue/src/stores/root.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TandoorRecipes/recipes/f546a4d38247a2e6d783761dcfbf0ca7c4cce25c/vue/src/stores/root.js -------------------------------------------------------------------------------- /vue/src/utils/apiv2.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Utility functions to use OpenAPIs generically 3 | * */ 4 | import {ApiApiFactory} from "@/utils/openapi/api.ts"; 5 | 6 | import axios from "axios"; 7 | axios.defaults.xsrfCookieName = 'csrftoken' 8 | axios.defaults.xsrfHeaderName = "X-CSRFTOKEN" 9 | 10 | export class GenericAPI { 11 | constructor(model, action) { 12 | this.model = model; 13 | this.action = action; 14 | this.function_name = action + model 15 | } 16 | } -------------------------------------------------------------------------------- /vue/src/utils/cm-widgets.ts: -------------------------------------------------------------------------------- 1 | import {WidgetType} from "@codemirror/view"; 2 | 3 | class PlaceholderWidget extends WidgetType { 4 | constructor(readonly name: string) { 5 | super() 6 | } 7 | 8 | eq(other: PlaceholderWidget) { 9 | return this.name == other.name 10 | } 11 | 12 | toDOM() { 13 | const elt = document.createElement("span") 14 | elt.style.cssText = ` 15 | border: 1px solid blue; 16 | border-radius: 4px; 17 | padding: 0 3px; 18 | background: lightblue;` 19 | console.log('reading name', this.name) 20 | elt.textContent = this.name 21 | return elt 22 | } 23 | 24 | ignoreEvent() { 25 | return false 26 | } 27 | } -------------------------------------------------------------------------------- /vue/src/utils/openapi/.openapi-generator/FILES: -------------------------------------------------------------------------------- 1 | api.ts 2 | common.ts 3 | configuration.ts 4 | -------------------------------------------------------------------------------- /vue/src/utils/openapi/.openapi-generator/VERSION: -------------------------------------------------------------------------------- 1 | 5.1.0 -------------------------------------------------------------------------------- /vue/src/utils/openapi/openapitools.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", 3 | "spaces": 2, 4 | "generator-cli": { 5 | "version": "5.1.0" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | --------------------------------------------------------------------------------