From 5495516c740bce67170be4d36cac0b9c0109db57 Mon Sep 17 00:00:00 2001 From: Christopher Pickering Date: Wed, 8 Sep 2021 10:46:40 +0200 Subject: [PATCH] changed build system to poetry, added more dj tags, added pyproject.toml support, fixed #11, closed #12, closed #1 --- .github/workflows/python-publish.yml | 11 +- CHANGELOG.md | 9 - README.md | 46 +- docs/_static/icon-square.indd | Bin 0 -> 1069056 bytes docs/_static/icon-square.png | Bin 0 -> 722112 bytes docs/conf.py | 2 +- docs/djlint/changelog.rst | 41 + docs/djlint/configuration.rst | 19 +- docs/djlint/formatter.rst | 4 +- docs/djlint/usage.rst | 12 +- docs/index.rst | 48 +- poetry.lock | 429 +++ pyproject.toml | 43 +- setup.py | 65 - tests/config_custom_tags/html.html | 1 + tests/config_custom_tags/pyproject.toml | 3 + tests/config_extension/html.test | 1 + tests/config_extension/pyproject.toml | 3 + tests/config_ignores/html.html | 1 + tests/config_ignores/pyproject.toml | 3 + tests/config_indent/html.html | 1 + tests/config_indent/pyproject.toml | 3 + tests/conftest.py | 32 +- tests/django_admin/admin/404.html | 11 - tests/django_admin/admin/500.html | 21 - tests/django_admin/admin/actions.html | 44 - tests/django_admin/admin/app_index.html | 13 - tests/django_admin/admin/app_list.html | 63 - .../admin/auth/user/add_form.html | 13 - .../admin/auth/user/change_password.html | 85 - tests/django_admin/admin/base.html | 118 - tests/django_admin/admin/base_site.html | 13 - tests/django_admin/admin/change_form.html | 97 - .../admin/change_form_object_tools.html | 16 - tests/django_admin/admin/change_list.html | 111 - .../admin/change_list_object_tools.html | 13 - .../admin/change_list_results.html | 57 - tests/django_admin/admin/date_hierarchy.html | 25 - .../admin/delete_confirmation.html | 82 - .../admin/delete_selected_confirmation.html | 78 - .../admin/edit_inline/stacked.html | 53 - .../admin/edit_inline/tabular.html | 110 - tests/django_admin/admin/filter.html | 17 - .../django_admin/admin/includes/fieldset.html | 37 - .../admin/includes/object_delete_summary.html | 9 - tests/django_admin/admin/index.html | 51 - tests/django_admin/admin/invalid_setup.html | 13 - tests/django_admin/admin/login.html | 64 - tests/django_admin/admin/nav_sidebar.html | 11 - tests/django_admin/admin/object_history.html | 53 - tests/django_admin/admin/pagination.html | 23 - tests/django_admin/admin/popup_response.html | 10 - .../admin/prepopulated_fields_js.html | 2 - tests/django_admin/admin/search_form.html | 44 - tests/django_admin/admin/submit_line.html | 32 - .../admin/widgets/clearable_file_input.html | 19 - .../admin/widgets/foreign_key_raw_id.html | 11 - .../admin/widgets/many_to_many_raw_id.html | 1 - tests/django_admin/admin/widgets/radio.html | 1 - .../admin/widgets/related_widget_wrapper.html | 34 - .../admin/widgets/split_datetime.html | 11 - tests/django_admin/admin/widgets/url.html | 9 - .../django_admin/registration/logged_out.html | 16 - .../registration/password_change_done.html | 22 - .../registration/password_change_form.html | 69 - .../registration/password_reset_complete.html | 16 - .../registration/password_reset_confirm.html | 40 - .../registration/password_reset_done.html | 16 - .../registration/password_reset_email.html | 15 - .../registration/password_reset_form.html | 28 - .../admin/cms/extensions/change_form.html | 17 - tests/django_cms/admin/cms/mail/base.html | 71 - tests/django_cms/admin/cms/mail/base.txt | 10 - .../admin/cms/mail/page_user_change.html | 14 - .../admin/cms/mail/page_user_change.txt | 7 - .../admin/cms/page/change_form.html | 133 - .../admin/cms/page/close_frame.html | 37 - .../admin/cms/page/includes/fieldset.html | 1 - .../admin/cms/page/permissions.html | 73 - .../admin/cms/page/plugin/change_form.html | 16 - .../admin/cms/page/plugin/confirm_form.html | 1 - .../cms/page/plugin/delete_confirmation.html | 3 - .../admin/cms/page/plugin/error_form.html | 17 - .../admin/cms/page/plugin/submit_line.html | 22 - .../django_cms/admin/cms/page/submit_row.html | 32 - .../admin/cms/page/tree/actions_dropdown.html | 154 - .../admin/cms/page/tree/base.html.broken | 182 -- .../admin/cms/page/tree/copy_premissions.html | 16 - .../admin/cms/page/tree/filter.html | 13 - .../admin/cms/page/tree/legend.html | 75 - .../admin/cms/page/tree/menu.html.brocken | 282 -- .../admin/cms/usersettings/change_form.html | 48 - tests/django_cms/cms/content.html | 1 - tests/django_cms/cms/dummy.html | 1 - tests/django_cms/cms/plugins/alias.html | 4 - tests/django_cms/cms/toolbar/clipboard.html | 9 - tests/django_cms/cms/toolbar/content.html | 2 - tests/django_cms/cms/toolbar/dragbar.html | 66 - tests/django_cms/cms/toolbar/dragitem.html | 79 - .../cms/toolbar/dragitem_extra_menu.html | 20 - .../django_cms/cms/toolbar/dragitem_menu.html | 20 - tests/django_cms/cms/toolbar/items/break.html | 3 - .../django_cms/cms/toolbar/items/button.html | 4 - .../cms/toolbar/items/button_list.html | 16 - .../cms/toolbar/items/button_modal.html | 5 - .../cms/toolbar/items/button_sideframe.html | 5 - .../cms/toolbar/items/dropdown.html | 20 - .../cms/toolbar/items/dropdown_button.html | 5 - .../cms/toolbar/items/item_ajax.html | 12 - .../cms/toolbar/items/item_link.html | 9 - .../cms/toolbar/items/item_modal.html | 11 - .../cms/toolbar/items/item_sideframe.html | 11 - .../cms/toolbar/items/live_draft.html | 16 - tests/django_cms/cms/toolbar/items/login.html | 26 - tests/django_cms/cms/toolbar/items/logo.html | 6 - tests/django_cms/cms/toolbar/items/menu.html | 14 - tests/django_cms/cms/toolbar/plugin.html | 44 - tests/django_cms/cms/toolbar/structure.html | 16 - tests/django_cms/cms/toolbar/toolbar.html | 38 - .../cms/toolbar/toolbar_javascript.html | 150 - .../cms/toolbar/toolbar_with_structure.html | 105 - tests/django_cms/cms/welcome.html | 125 - .../cms/widgets/applicationconfigselect.html | 8 - .../cms/widgets/pageselectwidget.html | 2 - .../cms/widgets/pagesmartlinkwidget.html | 2 - tests/django_cms/cms/wizards/base.html | 18 - tests/django_cms/cms/wizards/create.html | 28 - tests/django_cms/cms/wizards/done.html | 10 - .../cms/wizards/includes/form_fields.html | 32 - tests/django_cms/cms/wizards/start.html | 22 - .../cms/wizards/wizardoptionwidget.html | 11 - tests/django_ledger/account_create.html | 24 - tests/django_ledger/account_create_child.html | 28 - tests/django_ledger/account_detail.html | 25 - tests/django_ledger/account_list.html | 19 - tests/django_ledger/account_update.html | 23 - tests/django_ledger/auth/login.html | 52 - tests/django_ledger/balance_sheet.html | 70 - tests/django_ledger/bank_account_create.html | 24 - tests/django_ledger/bank_account_list.html | 18 - tests/django_ledger/bank_account_update.html | 36 - tests/django_ledger/base.html | 40 - tests/django_ledger/bill_create.html | 115 - tests/django_ledger/bill_delete.html | 37 - tests/django_ledger/bill_detail.html | 168 - tests/django_ledger/bill_list.html | 121 - tests/django_ledger/bill_update.html | 234 -- tests/django_ledger/bill_void.html | 34 - tests/django_ledger/coa_update.html | 23 - tests/django_ledger/customer_create.html | 22 - tests/django_ledger/customer_list.html | 19 - tests/django_ledger/customer_update.html | 23 - tests/django_ledger/data_import_job_list.html | 17 - tests/django_ledger/data_import_job_txs.html | 21 - tests/django_ledger/data_import_ofx.html | 54 - tests/django_ledger/entitiy_list.html | 40 - tests/django_ledger/entity_create.html | 34 - tests/django_ledger/entity_dashboard.html | 120 - tests/django_ledger/entity_delete.html | 32 - tests/django_ledger/entity_update.html | 24 - tests/django_ledger/expense_create.html | 34 - tests/django_ledger/expense_list.html | 23 - tests/django_ledger/expense_update.html | 34 - tests/django_ledger/home.html | 25 - tests/django_ledger/includes/breadcrumbs.html | 8 - tests/django_ledger/includes/card_bill.html | 181 -- .../django_ledger/includes/card_customer.html | 47 - tests/django_ledger/includes/card_entity.html | 27 - .../django_ledger/includes/card_invoice.html | 161 - .../django_ledger/includes/card_markdown.html | 30 - tests/django_ledger/includes/card_po.html | 61 - tests/django_ledger/includes/card_vendor.html | 47 - tests/django_ledger/includes/footer.html | 20 - tests/django_ledger/includes/messages.html | 11 - tests/django_ledger/includes/nav.html | 39 - tests/django_ledger/includes/page_header.html | 52 - tests/django_ledger/includes/widget_bs.html | 28 - tests/django_ledger/includes/widget_ic.html | 34 - .../django_ledger/includes/widget_ratios.html | 72 - tests/django_ledger/income_statement.html | 70 - .../django_ledger/inventory_item_create.html | 34 - tests/django_ledger/inventory_item_list.html | 23 - .../django_ledger/inventory_item_update.html | 34 - tests/django_ledger/invoice_create.html | 104 - tests/django_ledger/invoice_delete.html | 35 - tests/django_ledger/invoice_detail.html | 152 - tests/django_ledger/invoice_list.html | 121 - tests/django_ledger/invoice_update.html | 200 -- tests/django_ledger/je_create.html | 23 - tests/django_ledger/je_detail.html | 22 - tests/django_ledger/je_list.html | 21 - tests/django_ledger/je_update.html | 23 - .../layouts/content_layout_1.html | 24 - .../layouts/content_layout_2.html | 12 - tests/django_ledger/ledger_create.html | 24 - tests/django_ledger/ledger_list.html | 16 - tests/django_ledger/ledger_update.html | 24 - tests/django_ledger/pns_list.html | 23 - tests/django_ledger/po_create.html | 17 - tests/django_ledger/po_delete.html | 35 - tests/django_ledger/po_detail.html | 107 - tests/django_ledger/po_list.html | 121 - tests/django_ledger/po_update.html | 95 - tests/django_ledger/product_create.html | 34 - tests/django_ledger/product_list.html | 23 - tests/django_ledger/product_update.html | 34 - .../django_ledger/tags/account_txs_table.html | 63 - tests/django_ledger/tags/accounts_table.html | 88 - tests/django_ledger/tags/activity_form.html | 24 - tests/django_ledger/tags/balance_sheet.html | 178 -- .../tags/bank_accounts_table.html | 55 - .../django_ledger/tags/bill_item_formset.html | 67 - tests/django_ledger/tags/bill_table.html | 78 - tests/django_ledger/tags/breadcrumbs.html | 38 - tests/django_ledger/tags/chart_container.html | 3 - tests/django_ledger/tags/customer_table.html | 41 - .../tags/data_import_job_list_table.html | 58 - .../tags/data_import_job_txs_imported.html | 32 - .../tags/data_import_job_txs_table.html | 53 - tests/django_ledger/tags/date_picker.html | 8 - tests/django_ledger/tags/default_entity.html | 10 - .../tags/expense_item_table.html | 43 - tests/django_ledger/tags/feedback_button.html | 83 - tests/django_ledger/tags/filters.html | 11 - tests/django_ledger/tags/icon.html | 1 - .../django_ledger/tags/income_statement.html | 98 - .../tags/inventory_item_table.html | 45 - .../tags/invoice_item_formset.html | 65 - tests/django_ledger/tags/invoice_table.html | 78 - tests/django_ledger/tags/jes_table.html | 68 - tests/django_ledger/tags/ledgers_table.html | 65 - tests/django_ledger/tags/menu.html | 54 - tests/django_ledger/tags/modals.html | 29 - .../django_ledger/tags/period_navigator.html | 54 - tests/django_ledger/tags/pns_table.html | 47 - tests/django_ledger/tags/po_item_formset.html | 87 - tests/django_ledger/tags/po_table.html | 55 - tests/django_ledger/tags/txs_table.html | 40 - tests/django_ledger/tags/uom_table.html | 49 - tests/django_ledger/tags/vendor_table.html | 46 - tests/django_ledger/txs.html | 47 - tests/django_ledger/unit_create.html | 31 - tests/django_ledger/unit_detail.html | 36 - tests/django_ledger/unit_list.html | 58 - tests/django_ledger/unit_update.html | 31 - tests/django_ledger/uom_create.html | 32 - tests/django_ledger/uom_list.html | 23 - tests/django_ledger/uom_update.html | 34 - tests/django_ledger/vendor_create.html | 22 - tests/django_ledger/vendor_list.html | 18 - tests/django_ledger/vendor_update.html | 23 - tests/django_oscar/flatpages/default.html | 33 - tests/django_oscar/oscar/403.html | 13 - tests/django_oscar/oscar/404.html | 13 - tests/django_oscar/oscar/500.html | 22 - tests/django_oscar/oscar/README.rst | 68 - tests/django_oscar/oscar/base.html | 48 - tests/django_oscar/oscar/basket/basket.html | 34 - .../oscar/basket/messages/addition.html | 14 - .../oscar/basket/messages/line_restored.html | 5 - .../oscar/basket/messages/line_saved.html | 5 - .../oscar/basket/messages/new_total.html | 26 - .../oscar/basket/messages/offer_gained.html | 6 - .../oscar/basket/messages/offer_lost.html | 6 - .../oscar/basket/partials/basket_content.html | 273 -- .../oscar/basket/partials/basket_quick.html | 69 - .../oscar/basket/partials/basket_totals.html | 265 -- .../django_oscar/oscar/catalogue/browse.html | 130 - .../oscar/catalogue/category.html | 54 - .../django_oscar/oscar/catalogue/detail.html | 208 -- .../partials/add_to_basket_form.html | 47 - .../partials/add_to_basket_form_compact.html | 18 - .../catalogue/partials/add_to_wishlist.html | 69 - .../oscar/catalogue/partials/gallery.html | 51 - .../oscar/catalogue/partials/product.html | 46 - .../oscar/catalogue/partials/review.html | 75 - .../catalogue/partials/stock_record.html | 35 - .../reviews/partials/review_stars.html | 30 - .../catalogue/reviews/review_detail.html | 41 - .../oscar/catalogue/reviews/review_form.html | 51 - .../oscar/catalogue/reviews/review_list.html | 51 - .../catalogue/reviews/review_product.html | 21 - .../django_oscar/oscar/checkout/checkout.html | 174 - .../django_oscar/oscar/checkout/gateway.html | 65 - tests/django_oscar/oscar/checkout/layout.html | 44 - tests/django_oscar/oscar/checkout/nav.html | 66 - .../oscar/checkout/payment_details.html | 47 - .../django_oscar/oscar/checkout/preview.html | 38 - .../oscar/checkout/shipping_address.html | 106 - .../oscar/checkout/shipping_methods.html | 70 - .../oscar/checkout/thank_you.html | 223 -- .../oscar/checkout/user_address_delete.html | 39 - .../oscar/checkout/user_address_form.html | 35 - .../communication/email/email_detail.html | 39 - .../oscar/communication/email/email_list.html | 31 - .../oscar/communication/emails/base.html | 302 -- .../oscar/communication/emails/base.txt | 4 - .../emails/commtype_email_changed_body.html | 31 - .../emails/commtype_email_changed_body.txt | 11 - .../emails/commtype_email_changed_subject.txt | 1 - .../emails/commtype_order_placed_body.html | 85 - .../emails/commtype_order_placed_body.txt | 24 - .../emails/commtype_order_placed_subject.txt | 1 - .../commtype_password_changed_body.html | 29 - .../emails/commtype_password_changed_body.txt | 14 - .../commtype_password_changed_subject.txt | 1 - .../emails/commtype_password_reset_body.html | 24 - .../emails/commtype_password_reset_body.txt | 9 - .../commtype_password_reset_subject.txt | 1 - .../emails/commtype_product_alert_body.html | 34 - .../emails/commtype_product_alert_body.txt | 14 - ...mtype_product_alert_confirmation_body.html | 21 - ...mmtype_product_alert_confirmation_body.txt | 17 - ...ype_product_alert_confirmation_subject.txt | 1 - .../emails/commtype_product_alert_subject.txt | 1 - .../emails/commtype_registration_body.html | 4 - .../emails/commtype_registration_body.txt | 1 - .../emails/commtype_registration_sms.txt | 0 .../emails/commtype_registration_subject.txt | 1 - .../communication/notifications/detail.html | 43 - .../communication/notifications/list.html | 91 - .../customer/address/address_delete.html | 25 - .../oscar/customer/address/address_form.html | 12 - .../oscar/customer/address/address_list.html | 67 - .../oscar/customer/alerts/alert_list.html | 45 - .../oscar/customer/alerts/form.html | 1 - .../oscar/customer/alerts/message.html | 5 - .../customer/alerts/message_subject.html | 4 - .../oscar/customer/anon_order.html | 121 - .../oscar/customer/baseaccountpage.html | 33 - .../history/recently_viewed_products.html | 16 - .../oscar/customer/login_registration.html | 56 - .../oscar/customer/order/order_detail.html | 198 -- .../oscar/customer/order/order_list.html | 82 - .../customer/partials/standard_tabs.html | 41 - .../profile/change_password_form.html | 5 - .../oscar/customer/profile/profile.html | 37 - .../customer/profile/profile_delete.html | 26 - .../oscar/customer/profile/profile_form.html | 5 - .../oscar/customer/registration.html | 42 - .../customer/wishlists/wishlists_delete.html | 46 - .../wishlists/wishlists_delete_product.html | 44 - .../customer/wishlists/wishlists_detail.html | 134 - .../customer/wishlists/wishlists_form.html | 56 - .../customer/wishlists/wishlists_list.html | 54 - tests/django_oscar/oscar/dashboard/base.html | 8 - .../attribute_option_group_delete.html | 75 - .../attribute_option_group_form.html | 165 - .../attribute_option_group_list.html | 42 - .../attribute_option_group_row_actions.html | 24 - .../attribute_option_group_row_name.html | 4 - ...ibute_option_group_row_option_summary.html | 4 - .../dashboard/catalogue/category_delete.html | 48 - .../dashboard/catalogue/category_form.html | 131 - .../dashboard/catalogue/category_list.html | 58 - .../catalogue/category_row_actions.html | 32 - .../catalogue/messages/product_saved.html | 47 - .../dashboard/catalogue/option_delete.html | 69 - .../dashboard/catalogue/option_form.html | 96 - .../dashboard/catalogue/option_list.html | 41 - .../catalogue/option_row_actions.html | 24 - .../dashboard/catalogue/option_row_name.html | 4 - .../catalogue/product_class_delete.html | 52 - .../catalogue/product_class_form.html | 157 - .../catalogue/product_class_list.html | 91 - .../dashboard/catalogue/product_delete.html | 71 - .../dashboard/catalogue/product_list.html | 100 - .../catalogue/product_row_actions.html | 25 - .../catalogue/product_row_image.html | 14 - .../catalogue/product_row_stockrecords.html | 5 - .../catalogue/product_row_title.html | 4 - .../catalogue/product_row_variants.html | 5 - .../dashboard/catalogue/product_update.html | 424 --- .../dashboard/catalogue/stockalert_list.html | 91 - .../oscar/dashboard/comms/detail.html | 174 - .../oscar/dashboard/comms/list.html | 65 - tests/django_oscar/oscar/dashboard/index.html | 238 -- .../django_oscar/oscar/dashboard/layout.html | 164 - tests/django_oscar/oscar/dashboard/login.html | 35 - .../oscar/dashboard/offers/benefit_form.html | 36 - .../dashboard/offers/condition_form.html | 34 - .../oscar/dashboard/offers/metadata_form.html | 8 - .../oscar/dashboard/offers/offer_delete.html | 42 - .../oscar/dashboard/offers/offer_detail.html | 235 -- .../oscar/dashboard/offers/offer_list.html | 197 -- .../oscar/dashboard/offers/progress.html | 49 - .../dashboard/offers/restrictions_form.html | 13 - .../oscar/dashboard/offers/step_form.html | 104 - .../oscar/dashboard/offers/summary.html | 87 - .../oscar/dashboard/orders/line_detail.html | 236 -- .../oscar/dashboard/orders/order_detail.html | 1049 ------ .../oscar/dashboard/orders/order_list.html | 211 -- .../orders/shippingaddress_form.html | 45 - .../oscar/dashboard/orders/statistics.html | 83 - .../oscar/dashboard/pages/delete.html | 55 - .../oscar/dashboard/pages/index.html | 120 - .../oscar/dashboard/pages/messages/saved.html | 16 - .../oscar/dashboard/pages/update.html | 37 - .../partials/advanced_search_modal.html | 28 - .../dashboard/partials/alert_messages.html | 40 - .../oscar/dashboard/partials/form.html | 22 - .../oscar/dashboard/partials/form_field.html | 60 - .../oscar/dashboard/partials/form_fields.html | 20 - .../partials/form_fields_inline.html | 20 - .../oscar/dashboard/partials/pagination.html | 31 - .../dashboard/partials/product_images.html | 37 - .../oscar/dashboard/partials/stock_info.html | 13 - .../partners/messages/user_unlinked.html | 7 - .../dashboard/partners/partner_delete.html | 46 - .../dashboard/partners/partner_form.html | 30 - .../dashboard/partners/partner_list.html | 139 - .../dashboard/partners/partner_manage.html | 86 - .../dashboard/partners/partner_user_form.html | 48 - .../dashboard/partners/partner_user_list.html | 87 - .../partners/partner_user_select.html | 100 - .../ranges/messages/range_products_saved.html | 55 - .../ranges/messages/range_saved.html | 16 - .../oscar/dashboard/ranges/range_delete.html | 45 - .../oscar/dashboard/ranges/range_form.html | 52 - .../oscar/dashboard/ranges/range_list.html | 113 - .../dashboard/ranges/range_product_list.html | 169 - .../oscar/dashboard/reports/index.html | 49 - .../reports/partials/offer_report.html | 28 - .../reports/partials/open_basket_report.html | 44 - .../reports/partials/order_report.html | 48 - .../reports/partials/product_report.html | 26 - .../partials/submitted_basket_report.html | 42 - .../reports/partials/user_report.html | 42 - .../reports/partials/voucher_report.html | 32 - .../dashboard/reviews/review_delete.html | 83 - .../oscar/dashboard/reviews/review_list.html | 166 - .../dashboard/reviews/review_update.html | 94 - .../shipping/messages/band_created.html | 8 - .../shipping/messages/band_deleted.html | 7 - .../shipping/messages/band_updated.html | 4 - .../shipping/messages/method_created.html | 8 - .../shipping/messages/method_deleted.html | 8 - .../shipping/messages/method_updated.html | 8 - .../shipping/weight_band_delete.html | 62 - .../dashboard/shipping/weight_band_form.html | 50 - .../shipping/weight_based_delete.html | 46 - .../shipping/weight_based_detail.html | 105 - .../dashboard/shipping/weight_based_form.html | 61 - .../dashboard/shipping/weight_based_list.html | 76 - tests/django_oscar/oscar/dashboard/table.html | 34 - .../oscar/dashboard/users/alerts/delete.html | 60 - .../oscar/dashboard/users/alerts/list.html | 112 - .../users/alerts/partials/alert.html | 48 - .../oscar/dashboard/users/alerts/update.html | 55 - .../oscar/dashboard/users/detail.html | 274 -- .../oscar/dashboard/users/index.html | 64 - .../oscar/dashboard/users/table.html | 29 - .../dashboard/users/user_row_actions.html | 4 - .../dashboard/users/user_row_checkbox.html | 1 - .../partials/voucher_details_table.html | 39 - .../partials/voucher_set_details_table.html | 50 - .../dashboard/vouchers/voucher_delete.html | 70 - .../dashboard/vouchers/voucher_detail.html | 176 -- .../dashboard/vouchers/voucher_form.html | 59 - .../dashboard/vouchers/voucher_list.html | 207 -- .../vouchers/voucher_set_delete.html | 57 - .../vouchers/voucher_set_detail.html | 184 -- .../dashboard/vouchers/voucher_set_form.html | 57 - .../dashboard/vouchers/voucher_set_list.html | 102 - .../dashboard/widgets/popup_response.html | 10 - .../related_multiple_widget_wrapper.html | 28 - .../widgets/related_widget_wrapper.html | 26 - tests/django_oscar/oscar/error.html | 23 - .../oscar/forms/widgets/date_time_picker.html | 14 - .../forms/widgets/image_input_widget.html | 18 - tests/django_oscar/oscar/layout.html | 63 - tests/django_oscar/oscar/layout_2_col.html | 31 - tests/django_oscar/oscar/layout_3_col.html | 28 - tests/django_oscar/oscar/login_forbidden.html | 7 - tests/django_oscar/oscar/offer/detail.html | 68 - tests/django_oscar/oscar/offer/list.html | 52 - tests/django_oscar/oscar/offer/range.html | 40 - .../oscar/order/partials/basket_totals.html | 174 - .../oscar/partials/alert_messages.html | 39 - tests/django_oscar/oscar/partials/brand.html | 8 - .../oscar/partials/extrascripts.html | 4 - tests/django_oscar/oscar/partials/footer.html | 7 - .../oscar/partials/footer_checkout.html | 3 - tests/django_oscar/oscar/partials/form.html | 24 - .../oscar/partials/form_field.html | 62 - .../oscar/partials/form_fields.html | 18 - .../oscar/partials/form_fields_inline.html | 20 - .../oscar/partials/google_analytics.html | 15 - .../google_analytics_transaction.html | 24 - .../oscar/partials/mini_basket.html | 27 - .../oscar/partials/nav_accounts.html | 88 - .../oscar/partials/nav_checkout.html | 35 - .../oscar/partials/nav_primary.html | 80 - .../oscar/partials/pagination.html | 31 - tests/django_oscar/oscar/partials/search.html | 7 - .../registration/password_reset_complete.html | 33 - .../registration/password_reset_confirm.html | 44 - .../registration/password_reset_done.html | 36 - .../registration/password_reset_form.html | 34 - .../search/indexes/product/item_text.txt | 3 - .../oscar/search/partials/facet.html | 25 - tests/django_oscar/oscar/search/results.html | 106 - tests/django_rest/admin.html | 305 -- tests/django_rest/admin/detail.html | 13 - tests/django_rest/admin/dict_value.html | 11 - tests/django_rest/admin/list.html | 29 - tests/django_rest/admin/list_value.html | 11 - .../django_rest/admin/simple_list_value.html | 5 - tests/django_rest/api.html | 2 - tests/django_rest/base.html | 383 --- tests/django_rest/docs/auth/basic.html | 44 - tests/django_rest/docs/auth/session.html | 39 - tests/django_rest/docs/auth/token.html | 70 - tests/django_rest/docs/document.html | 34 - tests/django_rest/docs/error.html | 71 - tests/django_rest/docs/index.html | 51 - tests/django_rest/docs/interact.html | 57 - .../docs/langs/javascript-intro.html | 7 - tests/django_rest/docs/langs/javascript.html | 17 - .../django_rest/docs/langs/python-intro.html | 5 - tests/django_rest/docs/langs/python.html | 15 - tests/django_rest/docs/langs/shell-intro.html | 5 - tests/django_rest/docs/langs/shell.html | 8 - tests/django_rest/docs/link.html | 185 -- tests/django_rest/docs/sidebar.html | 90 - tests/django_rest/filters/base.html | 18 - tests/django_rest/filters/ordering.html | 17 - tests/django_rest/filters/search.html | 15 - tests/django_rest/horizontal/checkbox.html | 18 - .../horizontal/checkbox_multiple.html | 41 - tests/django_rest/horizontal/dict_field.html | 12 - tests/django_rest/horizontal/fieldset.html | 16 - tests/django_rest/horizontal/form.html | 6 - tests/django_rest/horizontal/input.html | 21 - tests/django_rest/horizontal/list_field.html | 12 - .../django_rest/horizontal/list_fieldset.html | 14 - tests/django_rest/horizontal/radio.html | 60 - tests/django_rest/horizontal/select.html | 41 - .../horizontal/select_multiple.html | 40 - tests/django_rest/horizontal/textarea.html | 21 - tests/django_rest/inline/checkbox.html | 10 - .../django_rest/inline/checkbox_multiple.html | 16 - tests/django_rest/inline/dict_field.html | 6 - tests/django_rest/inline/fieldset.html | 6 - tests/django_rest/inline/form.html | 6 - tests/django_rest/inline/input.html | 12 - tests/django_rest/inline/list_field.html | 6 - tests/django_rest/inline/list_fieldset.html | 1 - tests/django_rest/inline/radio.html | 28 - tests/django_rest/inline/select.html | 29 - tests/django_rest/inline/select_multiple.html | 28 - tests/django_rest/inline/textarea.html | 7 - tests/django_rest/login.html | 2 - tests/django_rest/login_base.html | 79 - tests/django_rest/pagination/numbers.html | 47 - .../pagination/previous_and_next.html | 20 - tests/django_rest/raw_data_form.html | 11 - tests/django_rest/schema.js | 3 - tests/django_rest/vertical/checkbox.html | 16 - .../vertical/checkbox_multiple.html | 43 - tests/django_rest/vertical/dict_field.html | 12 - tests/django_rest/vertical/fieldset.html | 15 - tests/django_rest/vertical/form.html | 6 - tests/django_rest/vertical/input.html | 21 - tests/django_rest/vertical/list_field.html | 12 - tests/django_rest/vertical/list_fieldset.html | 12 - tests/django_rest/vertical/radio.html | 59 - tests/django_rest/vertical/select.html | 41 - .../django_rest/vertical/select_multiple.html | 40 - tests/django_rest/vertical/textarea.html | 21 - .../flask_admin/bootstrap2/admin/actions.html | 40 - tests/flask_admin/bootstrap2/admin/base.html | 79 - .../bootstrap2/admin/file/form.html | 6 - .../bootstrap2/admin/file/list.html | 211 -- .../bootstrap2/admin/file/modals/form.html | 15 - tests/flask_admin/bootstrap2/admin/index.html | 2 - .../flask_admin/bootstrap2/admin/layout.html | 105 - tests/flask_admin/bootstrap2/admin/lib.html | 257 -- .../flask_admin/bootstrap2/admin/master.html | 1 - .../bootstrap2/admin/model/create.html | 26 - .../bootstrap2/admin/model/details.html | 54 - .../bootstrap2/admin/model/edit.html | 40 - .../admin/model/inline_field_list.html | 14 - .../bootstrap2/admin/model/inline_form.html | 4 - .../admin/model/inline_list_base.html | 55 - .../bootstrap2/admin/model/layout.html | 130 - .../bootstrap2/admin/model/list.html | 194 -- .../bootstrap2/admin/model/modals/create.html | 21 - .../admin/model/modals/details.html | 36 - .../bootstrap2/admin/model/modals/edit.html | 21 - .../bootstrap2/admin/model/row_actions.html | 37 - .../bootstrap2/admin/rediscli/console.html | 24 - .../bootstrap2/admin/rediscli/response.html | 35 - .../flask_admin/bootstrap2/admin/static.html | 3 - .../flask_admin/bootstrap3/admin/actions.html | 40 - tests/flask_admin/bootstrap3/admin/base.html | 96 - .../bootstrap3/admin/file/form.html | 6 - .../bootstrap3/admin/file/list.html | 209 -- .../bootstrap3/admin/file/modals/form.html | 19 - tests/flask_admin/bootstrap3/admin/index.html | 2 - .../flask_admin/bootstrap3/admin/layout.html | 109 - tests/flask_admin/bootstrap3/admin/lib.html | 252 -- .../flask_admin/bootstrap3/admin/master.html | 1 - .../bootstrap3/admin/model/create.html | 26 - .../bootstrap3/admin/model/details.html | 52 - .../bootstrap3/admin/model/edit.html | 40 - .../admin/model/inline_field_list.html | 14 - .../bootstrap3/admin/model/inline_form.html | 4 - .../admin/model/inline_list_base.html | 61 - .../bootstrap3/admin/model/layout.html | 136 - .../bootstrap3/admin/model/list.html | 196 -- .../bootstrap3/admin/model/modals/create.html | 23 - .../admin/model/modals/details.html | 38 - .../bootstrap3/admin/model/modals/edit.html | 25 - .../bootstrap3/admin/model/row_actions.html | 37 - .../bootstrap3/admin/rediscli/console.html | 24 - .../bootstrap3/admin/rediscli/response.html | 35 - .../flask_admin/bootstrap3/admin/static.html | 3 - .../flask_admin/bootstrap4/admin/actions.html | 43 - tests/flask_admin/bootstrap4/admin/base.html | 99 - .../bootstrap4/admin/file/form.html | 6 - .../bootstrap4/admin/file/list.html | 204 -- .../bootstrap4/admin/file/modals/form.html | 19 - tests/flask_admin/bootstrap4/admin/index.html | 2 - .../flask_admin/bootstrap4/admin/layout.html | 118 - tests/flask_admin/bootstrap4/admin/lib.html | 312 -- .../flask_admin/bootstrap4/admin/master.html | 1 - .../bootstrap4/admin/model/create.html | 28 - .../bootstrap4/admin/model/details.html | 54 - .../bootstrap4/admin/model/edit.html | 42 - .../admin/model/inline_field_list.html | 14 - .../bootstrap4/admin/model/inline_form.html | 4 - .../admin/model/inline_list_base.html | 62 - .../bootstrap4/admin/model/layout.html | 138 - .../bootstrap4/admin/model/list.html | 198 -- .../bootstrap4/admin/model/modals/create.html | 31 - .../admin/model/modals/details.html | 38 - .../bootstrap4/admin/model/modals/edit.html | 27 - .../bootstrap4/admin/model/row_actions.html | 37 - .../bootstrap4/admin/rediscli/console.html | 24 - .../bootstrap4/admin/rediscli/response.html | 35 - .../flask_admin/bootstrap4/admin/static.html | 3 - tests/jinja_adminlte/calendar.html | 345 -- tests/jinja_adminlte/charts-chartjs.html | 383 --- tests/jinja_adminlte/charts-flot.html | 483 --- tests/jinja_adminlte/charts-inline.html | 611 ---- tests/jinja_adminlte/examples-404.html | 85 - tests/jinja_adminlte/examples-500.html | 83 - tests/jinja_adminlte/examples-blank.html | 83 - tests/jinja_adminlte/examples-contacts.html | 572 ---- tests/jinja_adminlte/examples-e-commerce.html | 249 -- .../examples-forgot-password.html | 72 - .../examples-invoice-print.html | 206 -- tests/jinja_adminlte/examples-invoice.html | 279 -- .../examples-language-menu.html | 83 - .../examples-legacy-user-menu.html | 81 - tests/jinja_adminlte/examples-lockscreen.html | 77 - tests/jinja_adminlte/examples-login.html | 101 - tests/jinja_adminlte/examples-profile.html | 516 --- .../jinja_adminlte/examples-project-add.html | 149 - .../examples-project-detail.html | 253 -- .../jinja_adminlte/examples-project-edit.html | 252 -- tests/jinja_adminlte/examples-projects.html | 615 ---- .../examples-recover-password.html | 75 - tests/jinja_adminlte/examples-register.html | 114 - tests/jinja_adminlte/forms-advanced.html | 949 ------ tests/jinja_adminlte/forms-editors.html | 115 - tests/jinja_adminlte/forms-general.html | 814 ----- tests/jinja_adminlte/forms-validation.html | 170 - tests/jinja_adminlte/gallery.html | 380 --- tests/jinja_adminlte/includes/footer.html | 17 - tests/jinja_adminlte/includes/navigation.html | 156 - tests/jinja_adminlte/includes/scripts.html | 34 - tests/jinja_adminlte/includes/sidebar.html | 702 ---- tests/jinja_adminlte/index.html | 812 ----- tests/jinja_adminlte/index2.html | 1189 ------- tests/jinja_adminlte/index3.html | 321 -- tests/jinja_adminlte/layout-boxed.html | 94 - .../layout-collapsed-sidebar.html | 94 - tests/jinja_adminlte/layout-fixed-footer.html | 94 - .../jinja_adminlte/layout-fixed-sidebar.html | 98 - tests/jinja_adminlte/layout-fixed-topnav.html | 94 - .../layout-top-nav-sidebar.html | 125 - .../layouts/base-fullscreen.html | 21 - tests/jinja_adminlte/layouts/base.html | 31 - tests/jinja_adminlte/login.html | 101 - tests/jinja_adminlte/mailbox-compose.html | 253 -- tests/jinja_adminlte/mailbox-read-mail.html | 348 -- tests/jinja_adminlte/mailbox.html | 700 ---- tests/jinja_adminlte/page-403.html | 85 - tests/jinja_adminlte/page-404.html | 84 - tests/jinja_adminlte/page-500.html | 83 - tests/jinja_adminlte/page-blank.html | 83 - tests/jinja_adminlte/register.html | 114 - tests/jinja_adminlte/tables-data.html | 2096 ------------ tests/jinja_adminlte/tables-jsgrid.html | 94 - tests/jinja_adminlte/tables-simple.html | 1011 ------ tests/jinja_adminlte/ui-buttons.html | 2180 ------------- tests/jinja_adminlte/ui-general.html | 1490 --------- tests/jinja_adminlte/ui-icons.html | 79 - tests/jinja_adminlte/ui-modals.html | 742 ----- tests/jinja_adminlte/ui-navbar.html | 1088 ------- tests/jinja_adminlte/ui-ribbons.html | 271 -- tests/jinja_adminlte/ui-sliders.html | 363 --- tests/jinja_adminlte/ui-timeline.html | 190 -- tests/jinja_adminlte/widgets.html | 2811 ----------------- tests/test_config.py | 65 + tests/test_django.py | 259 ++ tests/test_djlint.py | 321 +- tests/test_handlebars.py | 56 + tests/test_html.py | 92 + tests/test_linter.py | 180 ++ tests/test_nunjucks.py | 39 + tox.ini | 5 +- 714 files changed, 1379 insertions(+), 58893 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 docs/_static/icon-square.indd create mode 100644 docs/_static/icon-square.png create mode 100644 docs/djlint/changelog.rst create mode 100644 poetry.lock delete mode 100644 setup.py create mode 100644 tests/config_custom_tags/html.html create mode 100644 tests/config_custom_tags/pyproject.toml create mode 100644 tests/config_extension/html.test create mode 100644 tests/config_extension/pyproject.toml create mode 100644 tests/config_ignores/html.html create mode 100644 tests/config_ignores/pyproject.toml create mode 100644 tests/config_indent/html.html create mode 100644 tests/config_indent/pyproject.toml delete mode 100644 tests/django_admin/admin/404.html delete mode 100644 tests/django_admin/admin/500.html delete mode 100644 tests/django_admin/admin/actions.html delete mode 100644 tests/django_admin/admin/app_index.html delete mode 100644 tests/django_admin/admin/app_list.html delete mode 100644 tests/django_admin/admin/auth/user/add_form.html delete mode 100644 tests/django_admin/admin/auth/user/change_password.html delete mode 100644 tests/django_admin/admin/base.html delete mode 100644 tests/django_admin/admin/base_site.html delete mode 100644 tests/django_admin/admin/change_form.html delete mode 100644 tests/django_admin/admin/change_form_object_tools.html delete mode 100644 tests/django_admin/admin/change_list.html delete mode 100644 tests/django_admin/admin/change_list_object_tools.html delete mode 100644 tests/django_admin/admin/change_list_results.html delete mode 100644 tests/django_admin/admin/date_hierarchy.html delete mode 100644 tests/django_admin/admin/delete_confirmation.html delete mode 100644 tests/django_admin/admin/delete_selected_confirmation.html delete mode 100644 tests/django_admin/admin/edit_inline/stacked.html delete mode 100644 tests/django_admin/admin/edit_inline/tabular.html delete mode 100644 tests/django_admin/admin/filter.html delete mode 100644 tests/django_admin/admin/includes/fieldset.html delete mode 100644 tests/django_admin/admin/includes/object_delete_summary.html delete mode 100644 tests/django_admin/admin/index.html delete mode 100644 tests/django_admin/admin/invalid_setup.html delete mode 100644 tests/django_admin/admin/login.html delete mode 100644 tests/django_admin/admin/nav_sidebar.html delete mode 100644 tests/django_admin/admin/object_history.html delete mode 100644 tests/django_admin/admin/pagination.html delete mode 100644 tests/django_admin/admin/popup_response.html delete mode 100644 tests/django_admin/admin/prepopulated_fields_js.html delete mode 100644 tests/django_admin/admin/search_form.html delete mode 100644 tests/django_admin/admin/submit_line.html delete mode 100644 tests/django_admin/admin/widgets/clearable_file_input.html delete mode 100644 tests/django_admin/admin/widgets/foreign_key_raw_id.html delete mode 100644 tests/django_admin/admin/widgets/many_to_many_raw_id.html delete mode 100644 tests/django_admin/admin/widgets/radio.html delete mode 100644 tests/django_admin/admin/widgets/related_widget_wrapper.html delete mode 100644 tests/django_admin/admin/widgets/split_datetime.html delete mode 100644 tests/django_admin/admin/widgets/url.html delete mode 100644 tests/django_admin/registration/logged_out.html delete mode 100644 tests/django_admin/registration/password_change_done.html delete mode 100644 tests/django_admin/registration/password_change_form.html delete mode 100644 tests/django_admin/registration/password_reset_complete.html delete mode 100644 tests/django_admin/registration/password_reset_confirm.html delete mode 100644 tests/django_admin/registration/password_reset_done.html delete mode 100644 tests/django_admin/registration/password_reset_email.html delete mode 100644 tests/django_admin/registration/password_reset_form.html delete mode 100644 tests/django_cms/admin/cms/extensions/change_form.html delete mode 100644 tests/django_cms/admin/cms/mail/base.html delete mode 100644 tests/django_cms/admin/cms/mail/base.txt delete mode 100644 tests/django_cms/admin/cms/mail/page_user_change.html delete mode 100644 tests/django_cms/admin/cms/mail/page_user_change.txt delete mode 100644 tests/django_cms/admin/cms/page/change_form.html delete mode 100644 tests/django_cms/admin/cms/page/close_frame.html delete mode 100644 tests/django_cms/admin/cms/page/includes/fieldset.html delete mode 100644 tests/django_cms/admin/cms/page/permissions.html delete mode 100644 tests/django_cms/admin/cms/page/plugin/change_form.html delete mode 100644 tests/django_cms/admin/cms/page/plugin/confirm_form.html delete mode 100644 tests/django_cms/admin/cms/page/plugin/delete_confirmation.html delete mode 100644 tests/django_cms/admin/cms/page/plugin/error_form.html delete mode 100644 tests/django_cms/admin/cms/page/plugin/submit_line.html delete mode 100644 tests/django_cms/admin/cms/page/submit_row.html delete mode 100644 tests/django_cms/admin/cms/page/tree/actions_dropdown.html delete mode 100644 tests/django_cms/admin/cms/page/tree/base.html.broken delete mode 100644 tests/django_cms/admin/cms/page/tree/copy_premissions.html delete mode 100644 tests/django_cms/admin/cms/page/tree/filter.html delete mode 100644 tests/django_cms/admin/cms/page/tree/legend.html delete mode 100644 tests/django_cms/admin/cms/page/tree/menu.html.brocken delete mode 100644 tests/django_cms/admin/cms/usersettings/change_form.html delete mode 100644 tests/django_cms/cms/content.html delete mode 100644 tests/django_cms/cms/dummy.html delete mode 100644 tests/django_cms/cms/plugins/alias.html delete mode 100644 tests/django_cms/cms/toolbar/clipboard.html delete mode 100644 tests/django_cms/cms/toolbar/content.html delete mode 100644 tests/django_cms/cms/toolbar/dragbar.html delete mode 100644 tests/django_cms/cms/toolbar/dragitem.html delete mode 100644 tests/django_cms/cms/toolbar/dragitem_extra_menu.html delete mode 100644 tests/django_cms/cms/toolbar/dragitem_menu.html delete mode 100644 tests/django_cms/cms/toolbar/items/break.html delete mode 100644 tests/django_cms/cms/toolbar/items/button.html delete mode 100644 tests/django_cms/cms/toolbar/items/button_list.html delete mode 100644 tests/django_cms/cms/toolbar/items/button_modal.html delete mode 100644 tests/django_cms/cms/toolbar/items/button_sideframe.html delete mode 100644 tests/django_cms/cms/toolbar/items/dropdown.html delete mode 100644 tests/django_cms/cms/toolbar/items/dropdown_button.html delete mode 100644 tests/django_cms/cms/toolbar/items/item_ajax.html delete mode 100644 tests/django_cms/cms/toolbar/items/item_link.html delete mode 100644 tests/django_cms/cms/toolbar/items/item_modal.html delete mode 100644 tests/django_cms/cms/toolbar/items/item_sideframe.html delete mode 100644 tests/django_cms/cms/toolbar/items/live_draft.html delete mode 100644 tests/django_cms/cms/toolbar/items/login.html delete mode 100644 tests/django_cms/cms/toolbar/items/logo.html delete mode 100644 tests/django_cms/cms/toolbar/items/menu.html delete mode 100644 tests/django_cms/cms/toolbar/plugin.html delete mode 100644 tests/django_cms/cms/toolbar/structure.html delete mode 100644 tests/django_cms/cms/toolbar/toolbar.html delete mode 100644 tests/django_cms/cms/toolbar/toolbar_javascript.html delete mode 100644 tests/django_cms/cms/toolbar/toolbar_with_structure.html delete mode 100644 tests/django_cms/cms/welcome.html delete mode 100644 tests/django_cms/cms/widgets/applicationconfigselect.html delete mode 100644 tests/django_cms/cms/widgets/pageselectwidget.html delete mode 100644 tests/django_cms/cms/widgets/pagesmartlinkwidget.html delete mode 100755 tests/django_cms/cms/wizards/base.html delete mode 100755 tests/django_cms/cms/wizards/create.html delete mode 100644 tests/django_cms/cms/wizards/done.html delete mode 100755 tests/django_cms/cms/wizards/includes/form_fields.html delete mode 100755 tests/django_cms/cms/wizards/start.html delete mode 100644 tests/django_cms/cms/wizards/wizardoptionwidget.html delete mode 100644 tests/django_ledger/account_create.html delete mode 100644 tests/django_ledger/account_create_child.html delete mode 100644 tests/django_ledger/account_detail.html delete mode 100644 tests/django_ledger/account_list.html delete mode 100644 tests/django_ledger/account_update.html delete mode 100644 tests/django_ledger/auth/login.html delete mode 100644 tests/django_ledger/balance_sheet.html delete mode 100644 tests/django_ledger/bank_account_create.html delete mode 100644 tests/django_ledger/bank_account_list.html delete mode 100644 tests/django_ledger/bank_account_update.html delete mode 100644 tests/django_ledger/base.html delete mode 100644 tests/django_ledger/bill_create.html delete mode 100644 tests/django_ledger/bill_delete.html delete mode 100644 tests/django_ledger/bill_detail.html delete mode 100644 tests/django_ledger/bill_list.html delete mode 100644 tests/django_ledger/bill_update.html delete mode 100644 tests/django_ledger/bill_void.html delete mode 100644 tests/django_ledger/coa_update.html delete mode 100644 tests/django_ledger/customer_create.html delete mode 100644 tests/django_ledger/customer_list.html delete mode 100644 tests/django_ledger/customer_update.html delete mode 100644 tests/django_ledger/data_import_job_list.html delete mode 100644 tests/django_ledger/data_import_job_txs.html delete mode 100644 tests/django_ledger/data_import_ofx.html delete mode 100644 tests/django_ledger/entitiy_list.html delete mode 100644 tests/django_ledger/entity_create.html delete mode 100644 tests/django_ledger/entity_dashboard.html delete mode 100644 tests/django_ledger/entity_delete.html delete mode 100644 tests/django_ledger/entity_update.html delete mode 100644 tests/django_ledger/expense_create.html delete mode 100644 tests/django_ledger/expense_list.html delete mode 100644 tests/django_ledger/expense_update.html delete mode 100644 tests/django_ledger/home.html delete mode 100644 tests/django_ledger/includes/breadcrumbs.html delete mode 100644 tests/django_ledger/includes/card_bill.html delete mode 100644 tests/django_ledger/includes/card_customer.html delete mode 100644 tests/django_ledger/includes/card_entity.html delete mode 100644 tests/django_ledger/includes/card_invoice.html delete mode 100644 tests/django_ledger/includes/card_markdown.html delete mode 100644 tests/django_ledger/includes/card_po.html delete mode 100644 tests/django_ledger/includes/card_vendor.html delete mode 100644 tests/django_ledger/includes/footer.html delete mode 100644 tests/django_ledger/includes/messages.html delete mode 100644 tests/django_ledger/includes/nav.html delete mode 100644 tests/django_ledger/includes/page_header.html delete mode 100644 tests/django_ledger/includes/widget_bs.html delete mode 100644 tests/django_ledger/includes/widget_ic.html delete mode 100644 tests/django_ledger/includes/widget_ratios.html delete mode 100644 tests/django_ledger/income_statement.html delete mode 100644 tests/django_ledger/inventory_item_create.html delete mode 100644 tests/django_ledger/inventory_item_list.html delete mode 100644 tests/django_ledger/inventory_item_update.html delete mode 100644 tests/django_ledger/invoice_create.html delete mode 100644 tests/django_ledger/invoice_delete.html delete mode 100644 tests/django_ledger/invoice_detail.html delete mode 100644 tests/django_ledger/invoice_list.html delete mode 100644 tests/django_ledger/invoice_update.html delete mode 100644 tests/django_ledger/je_create.html delete mode 100644 tests/django_ledger/je_detail.html delete mode 100644 tests/django_ledger/je_list.html delete mode 100644 tests/django_ledger/je_update.html delete mode 100644 tests/django_ledger/layouts/content_layout_1.html delete mode 100644 tests/django_ledger/layouts/content_layout_2.html delete mode 100644 tests/django_ledger/ledger_create.html delete mode 100644 tests/django_ledger/ledger_list.html delete mode 100644 tests/django_ledger/ledger_update.html delete mode 100644 tests/django_ledger/pns_list.html delete mode 100644 tests/django_ledger/po_create.html delete mode 100644 tests/django_ledger/po_delete.html delete mode 100644 tests/django_ledger/po_detail.html delete mode 100644 tests/django_ledger/po_list.html delete mode 100644 tests/django_ledger/po_update.html delete mode 100644 tests/django_ledger/product_create.html delete mode 100644 tests/django_ledger/product_list.html delete mode 100644 tests/django_ledger/product_update.html delete mode 100644 tests/django_ledger/tags/account_txs_table.html delete mode 100644 tests/django_ledger/tags/accounts_table.html delete mode 100644 tests/django_ledger/tags/activity_form.html delete mode 100644 tests/django_ledger/tags/balance_sheet.html delete mode 100644 tests/django_ledger/tags/bank_accounts_table.html delete mode 100644 tests/django_ledger/tags/bill_item_formset.html delete mode 100644 tests/django_ledger/tags/bill_table.html delete mode 100644 tests/django_ledger/tags/breadcrumbs.html delete mode 100644 tests/django_ledger/tags/chart_container.html delete mode 100644 tests/django_ledger/tags/customer_table.html delete mode 100644 tests/django_ledger/tags/data_import_job_list_table.html delete mode 100644 tests/django_ledger/tags/data_import_job_txs_imported.html delete mode 100644 tests/django_ledger/tags/data_import_job_txs_table.html delete mode 100644 tests/django_ledger/tags/date_picker.html delete mode 100644 tests/django_ledger/tags/default_entity.html delete mode 100644 tests/django_ledger/tags/expense_item_table.html delete mode 100644 tests/django_ledger/tags/feedback_button.html delete mode 100644 tests/django_ledger/tags/filters.html delete mode 100644 tests/django_ledger/tags/icon.html delete mode 100644 tests/django_ledger/tags/income_statement.html delete mode 100644 tests/django_ledger/tags/inventory_item_table.html delete mode 100644 tests/django_ledger/tags/invoice_item_formset.html delete mode 100644 tests/django_ledger/tags/invoice_table.html delete mode 100644 tests/django_ledger/tags/jes_table.html delete mode 100644 tests/django_ledger/tags/ledgers_table.html delete mode 100644 tests/django_ledger/tags/menu.html delete mode 100644 tests/django_ledger/tags/modals.html delete mode 100644 tests/django_ledger/tags/period_navigator.html delete mode 100644 tests/django_ledger/tags/pns_table.html delete mode 100644 tests/django_ledger/tags/po_item_formset.html delete mode 100644 tests/django_ledger/tags/po_table.html delete mode 100644 tests/django_ledger/tags/txs_table.html delete mode 100644 tests/django_ledger/tags/uom_table.html delete mode 100644 tests/django_ledger/tags/vendor_table.html delete mode 100644 tests/django_ledger/txs.html delete mode 100644 tests/django_ledger/unit_create.html delete mode 100644 tests/django_ledger/unit_detail.html delete mode 100644 tests/django_ledger/unit_list.html delete mode 100644 tests/django_ledger/unit_update.html delete mode 100644 tests/django_ledger/uom_create.html delete mode 100644 tests/django_ledger/uom_list.html delete mode 100644 tests/django_ledger/uom_update.html delete mode 100644 tests/django_ledger/vendor_create.html delete mode 100644 tests/django_ledger/vendor_list.html delete mode 100644 tests/django_ledger/vendor_update.html delete mode 100644 tests/django_oscar/flatpages/default.html delete mode 100644 tests/django_oscar/oscar/403.html delete mode 100644 tests/django_oscar/oscar/404.html delete mode 100644 tests/django_oscar/oscar/500.html delete mode 100644 tests/django_oscar/oscar/README.rst delete mode 100644 tests/django_oscar/oscar/base.html delete mode 100644 tests/django_oscar/oscar/basket/basket.html delete mode 100644 tests/django_oscar/oscar/basket/messages/addition.html delete mode 100644 tests/django_oscar/oscar/basket/messages/line_restored.html delete mode 100644 tests/django_oscar/oscar/basket/messages/line_saved.html delete mode 100644 tests/django_oscar/oscar/basket/messages/new_total.html delete mode 100644 tests/django_oscar/oscar/basket/messages/offer_gained.html delete mode 100644 tests/django_oscar/oscar/basket/messages/offer_lost.html delete mode 100644 tests/django_oscar/oscar/basket/partials/basket_content.html delete mode 100644 tests/django_oscar/oscar/basket/partials/basket_quick.html delete mode 100644 tests/django_oscar/oscar/basket/partials/basket_totals.html delete mode 100644 tests/django_oscar/oscar/catalogue/browse.html delete mode 100644 tests/django_oscar/oscar/catalogue/category.html delete mode 100644 tests/django_oscar/oscar/catalogue/detail.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/add_to_basket_form.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/add_to_basket_form_compact.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/add_to_wishlist.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/gallery.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/product.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/review.html delete mode 100644 tests/django_oscar/oscar/catalogue/partials/stock_record.html delete mode 100644 tests/django_oscar/oscar/catalogue/reviews/partials/review_stars.html delete mode 100644 tests/django_oscar/oscar/catalogue/reviews/review_detail.html delete mode 100644 tests/django_oscar/oscar/catalogue/reviews/review_form.html delete mode 100644 tests/django_oscar/oscar/catalogue/reviews/review_list.html delete mode 100644 tests/django_oscar/oscar/catalogue/reviews/review_product.html delete mode 100644 tests/django_oscar/oscar/checkout/checkout.html delete mode 100644 tests/django_oscar/oscar/checkout/gateway.html delete mode 100644 tests/django_oscar/oscar/checkout/layout.html delete mode 100644 tests/django_oscar/oscar/checkout/nav.html delete mode 100644 tests/django_oscar/oscar/checkout/payment_details.html delete mode 100644 tests/django_oscar/oscar/checkout/preview.html delete mode 100644 tests/django_oscar/oscar/checkout/shipping_address.html delete mode 100644 tests/django_oscar/oscar/checkout/shipping_methods.html delete mode 100644 tests/django_oscar/oscar/checkout/thank_you.html delete mode 100644 tests/django_oscar/oscar/checkout/user_address_delete.html delete mode 100644 tests/django_oscar/oscar/checkout/user_address_form.html delete mode 100644 tests/django_oscar/oscar/communication/email/email_detail.html delete mode 100644 tests/django_oscar/oscar/communication/email/email_list.html delete mode 100644 tests/django_oscar/oscar/communication/emails/base.html delete mode 100644 tests/django_oscar/oscar/communication/emails/base.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_email_changed_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_order_placed_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_changed_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_password_reset_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_product_alert_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_registration_body.html delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_registration_body.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_registration_sms.txt delete mode 100644 tests/django_oscar/oscar/communication/emails/commtype_registration_subject.txt delete mode 100644 tests/django_oscar/oscar/communication/notifications/detail.html delete mode 100644 tests/django_oscar/oscar/communication/notifications/list.html delete mode 100644 tests/django_oscar/oscar/customer/address/address_delete.html delete mode 100644 tests/django_oscar/oscar/customer/address/address_form.html delete mode 100644 tests/django_oscar/oscar/customer/address/address_list.html delete mode 100644 tests/django_oscar/oscar/customer/alerts/alert_list.html delete mode 100644 tests/django_oscar/oscar/customer/alerts/form.html delete mode 100644 tests/django_oscar/oscar/customer/alerts/message.html delete mode 100644 tests/django_oscar/oscar/customer/alerts/message_subject.html delete mode 100644 tests/django_oscar/oscar/customer/anon_order.html delete mode 100644 tests/django_oscar/oscar/customer/baseaccountpage.html delete mode 100644 tests/django_oscar/oscar/customer/history/recently_viewed_products.html delete mode 100644 tests/django_oscar/oscar/customer/login_registration.html delete mode 100644 tests/django_oscar/oscar/customer/order/order_detail.html delete mode 100644 tests/django_oscar/oscar/customer/order/order_list.html delete mode 100644 tests/django_oscar/oscar/customer/partials/standard_tabs.html delete mode 100644 tests/django_oscar/oscar/customer/profile/change_password_form.html delete mode 100644 tests/django_oscar/oscar/customer/profile/profile.html delete mode 100644 tests/django_oscar/oscar/customer/profile/profile_delete.html delete mode 100644 tests/django_oscar/oscar/customer/profile/profile_form.html delete mode 100644 tests/django_oscar/oscar/customer/registration.html delete mode 100644 tests/django_oscar/oscar/customer/wishlists/wishlists_delete.html delete mode 100644 tests/django_oscar/oscar/customer/wishlists/wishlists_delete_product.html delete mode 100644 tests/django_oscar/oscar/customer/wishlists/wishlists_detail.html delete mode 100644 tests/django_oscar/oscar/customer/wishlists/wishlists_form.html delete mode 100644 tests/django_oscar/oscar/customer/wishlists/wishlists_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/base.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_actions.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_name.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_option_summary.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/category_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/category_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/category_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/category_row_actions.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/messages/product_saved.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/option_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/option_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/option_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/option_row_actions.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/option_row_name.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_class_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_class_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_class_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_row_actions.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_row_image.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_row_stockrecords.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_row_title.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_row_variants.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/product_update.html delete mode 100644 tests/django_oscar/oscar/dashboard/catalogue/stockalert_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/comms/detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/comms/list.html delete mode 100644 tests/django_oscar/oscar/dashboard/index.html delete mode 100644 tests/django_oscar/oscar/dashboard/layout.html delete mode 100644 tests/django_oscar/oscar/dashboard/login.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/benefit_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/condition_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/metadata_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/offer_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/offer_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/offer_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/progress.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/restrictions_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/step_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/offers/summary.html delete mode 100644 tests/django_oscar/oscar/dashboard/orders/line_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/orders/order_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/orders/order_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/orders/shippingaddress_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/orders/statistics.html delete mode 100644 tests/django_oscar/oscar/dashboard/pages/delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/pages/index.html delete mode 100644 tests/django_oscar/oscar/dashboard/pages/messages/saved.html delete mode 100644 tests/django_oscar/oscar/dashboard/pages/update.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/advanced_search_modal.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/alert_messages.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/form.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/form_field.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/form_fields.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/form_fields_inline.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/pagination.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/product_images.html delete mode 100644 tests/django_oscar/oscar/dashboard/partials/stock_info.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/messages/user_unlinked.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_manage.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_user_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_user_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/partners/partner_user_select.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/messages/range_products_saved.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/messages/range_saved.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/range_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/range_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/range_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/ranges/range_product_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/index.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/offer_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/open_basket_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/order_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/product_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/submitted_basket_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/user_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reports/partials/voucher_report.html delete mode 100644 tests/django_oscar/oscar/dashboard/reviews/review_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/reviews/review_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/reviews/review_update.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/band_created.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/band_deleted.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/band_updated.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/method_created.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/method_deleted.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/messages/method_updated.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_band_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_band_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_based_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_based_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_based_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/shipping/weight_based_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/table.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/alerts/delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/alerts/list.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/alerts/partials/alert.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/alerts/update.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/index.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/table.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/user_row_actions.html delete mode 100644 tests/django_oscar/oscar/dashboard/users/user_row_checkbox.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_details_table.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_set_details_table.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_set_delete.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_set_detail.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_set_form.html delete mode 100644 tests/django_oscar/oscar/dashboard/vouchers/voucher_set_list.html delete mode 100644 tests/django_oscar/oscar/dashboard/widgets/popup_response.html delete mode 100644 tests/django_oscar/oscar/dashboard/widgets/related_multiple_widget_wrapper.html delete mode 100644 tests/django_oscar/oscar/dashboard/widgets/related_widget_wrapper.html delete mode 100644 tests/django_oscar/oscar/error.html delete mode 100644 tests/django_oscar/oscar/forms/widgets/date_time_picker.html delete mode 100644 tests/django_oscar/oscar/forms/widgets/image_input_widget.html delete mode 100644 tests/django_oscar/oscar/layout.html delete mode 100644 tests/django_oscar/oscar/layout_2_col.html delete mode 100644 tests/django_oscar/oscar/layout_3_col.html delete mode 100644 tests/django_oscar/oscar/login_forbidden.html delete mode 100644 tests/django_oscar/oscar/offer/detail.html delete mode 100644 tests/django_oscar/oscar/offer/list.html delete mode 100644 tests/django_oscar/oscar/offer/range.html delete mode 100644 tests/django_oscar/oscar/order/partials/basket_totals.html delete mode 100644 tests/django_oscar/oscar/partials/alert_messages.html delete mode 100644 tests/django_oscar/oscar/partials/brand.html delete mode 100644 tests/django_oscar/oscar/partials/extrascripts.html delete mode 100644 tests/django_oscar/oscar/partials/footer.html delete mode 100644 tests/django_oscar/oscar/partials/footer_checkout.html delete mode 100644 tests/django_oscar/oscar/partials/form.html delete mode 100644 tests/django_oscar/oscar/partials/form_field.html delete mode 100644 tests/django_oscar/oscar/partials/form_fields.html delete mode 100644 tests/django_oscar/oscar/partials/form_fields_inline.html delete mode 100644 tests/django_oscar/oscar/partials/google_analytics.html delete mode 100644 tests/django_oscar/oscar/partials/google_analytics_transaction.html delete mode 100644 tests/django_oscar/oscar/partials/mini_basket.html delete mode 100644 tests/django_oscar/oscar/partials/nav_accounts.html delete mode 100644 tests/django_oscar/oscar/partials/nav_checkout.html delete mode 100644 tests/django_oscar/oscar/partials/nav_primary.html delete mode 100644 tests/django_oscar/oscar/partials/pagination.html delete mode 100644 tests/django_oscar/oscar/partials/search.html delete mode 100644 tests/django_oscar/oscar/registration/password_reset_complete.html delete mode 100644 tests/django_oscar/oscar/registration/password_reset_confirm.html delete mode 100644 tests/django_oscar/oscar/registration/password_reset_done.html delete mode 100644 tests/django_oscar/oscar/registration/password_reset_form.html delete mode 100644 tests/django_oscar/oscar/search/indexes/product/item_text.txt delete mode 100644 tests/django_oscar/oscar/search/partials/facet.html delete mode 100644 tests/django_oscar/oscar/search/results.html delete mode 100644 tests/django_rest/admin.html delete mode 100644 tests/django_rest/admin/detail.html delete mode 100644 tests/django_rest/admin/dict_value.html delete mode 100644 tests/django_rest/admin/list.html delete mode 100644 tests/django_rest/admin/list_value.html delete mode 100644 tests/django_rest/admin/simple_list_value.html delete mode 100644 tests/django_rest/api.html delete mode 100644 tests/django_rest/base.html delete mode 100644 tests/django_rest/docs/auth/basic.html delete mode 100644 tests/django_rest/docs/auth/session.html delete mode 100644 tests/django_rest/docs/auth/token.html delete mode 100644 tests/django_rest/docs/document.html delete mode 100644 tests/django_rest/docs/error.html delete mode 100644 tests/django_rest/docs/index.html delete mode 100644 tests/django_rest/docs/interact.html delete mode 100644 tests/django_rest/docs/langs/javascript-intro.html delete mode 100644 tests/django_rest/docs/langs/javascript.html delete mode 100644 tests/django_rest/docs/langs/python-intro.html delete mode 100644 tests/django_rest/docs/langs/python.html delete mode 100644 tests/django_rest/docs/langs/shell-intro.html delete mode 100644 tests/django_rest/docs/langs/shell.html delete mode 100644 tests/django_rest/docs/link.html delete mode 100644 tests/django_rest/docs/sidebar.html delete mode 100644 tests/django_rest/filters/base.html delete mode 100644 tests/django_rest/filters/ordering.html delete mode 100644 tests/django_rest/filters/search.html delete mode 100644 tests/django_rest/horizontal/checkbox.html delete mode 100644 tests/django_rest/horizontal/checkbox_multiple.html delete mode 100644 tests/django_rest/horizontal/dict_field.html delete mode 100644 tests/django_rest/horizontal/fieldset.html delete mode 100644 tests/django_rest/horizontal/form.html delete mode 100644 tests/django_rest/horizontal/input.html delete mode 100644 tests/django_rest/horizontal/list_field.html delete mode 100644 tests/django_rest/horizontal/list_fieldset.html delete mode 100644 tests/django_rest/horizontal/radio.html delete mode 100644 tests/django_rest/horizontal/select.html delete mode 100644 tests/django_rest/horizontal/select_multiple.html delete mode 100644 tests/django_rest/horizontal/textarea.html delete mode 100644 tests/django_rest/inline/checkbox.html delete mode 100644 tests/django_rest/inline/checkbox_multiple.html delete mode 100644 tests/django_rest/inline/dict_field.html delete mode 100644 tests/django_rest/inline/fieldset.html delete mode 100644 tests/django_rest/inline/form.html delete mode 100644 tests/django_rest/inline/input.html delete mode 100644 tests/django_rest/inline/list_field.html delete mode 100644 tests/django_rest/inline/list_fieldset.html delete mode 100644 tests/django_rest/inline/radio.html delete mode 100644 tests/django_rest/inline/select.html delete mode 100644 tests/django_rest/inline/select_multiple.html delete mode 100644 tests/django_rest/inline/textarea.html delete mode 100644 tests/django_rest/login.html delete mode 100644 tests/django_rest/login_base.html delete mode 100644 tests/django_rest/pagination/numbers.html delete mode 100644 tests/django_rest/pagination/previous_and_next.html delete mode 100644 tests/django_rest/raw_data_form.html delete mode 100644 tests/django_rest/schema.js delete mode 100644 tests/django_rest/vertical/checkbox.html delete mode 100644 tests/django_rest/vertical/checkbox_multiple.html delete mode 100644 tests/django_rest/vertical/dict_field.html delete mode 100644 tests/django_rest/vertical/fieldset.html delete mode 100644 tests/django_rest/vertical/form.html delete mode 100644 tests/django_rest/vertical/input.html delete mode 100644 tests/django_rest/vertical/list_field.html delete mode 100644 tests/django_rest/vertical/list_fieldset.html delete mode 100644 tests/django_rest/vertical/radio.html delete mode 100644 tests/django_rest/vertical/select.html delete mode 100644 tests/django_rest/vertical/select_multiple.html delete mode 100644 tests/django_rest/vertical/textarea.html delete mode 100644 tests/flask_admin/bootstrap2/admin/actions.html delete mode 100644 tests/flask_admin/bootstrap2/admin/base.html delete mode 100644 tests/flask_admin/bootstrap2/admin/file/form.html delete mode 100644 tests/flask_admin/bootstrap2/admin/file/list.html delete mode 100644 tests/flask_admin/bootstrap2/admin/file/modals/form.html delete mode 100644 tests/flask_admin/bootstrap2/admin/index.html delete mode 100644 tests/flask_admin/bootstrap2/admin/layout.html delete mode 100644 tests/flask_admin/bootstrap2/admin/lib.html delete mode 100644 tests/flask_admin/bootstrap2/admin/master.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/create.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/details.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/edit.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/inline_field_list.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/inline_form.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/inline_list_base.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/layout.html delete mode 100755 tests/flask_admin/bootstrap2/admin/model/list.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/modals/create.html delete mode 100755 tests/flask_admin/bootstrap2/admin/model/modals/details.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/modals/edit.html delete mode 100644 tests/flask_admin/bootstrap2/admin/model/row_actions.html delete mode 100644 tests/flask_admin/bootstrap2/admin/rediscli/console.html delete mode 100644 tests/flask_admin/bootstrap2/admin/rediscli/response.html delete mode 100644 tests/flask_admin/bootstrap2/admin/static.html delete mode 100644 tests/flask_admin/bootstrap3/admin/actions.html delete mode 100644 tests/flask_admin/bootstrap3/admin/base.html delete mode 100644 tests/flask_admin/bootstrap3/admin/file/form.html delete mode 100644 tests/flask_admin/bootstrap3/admin/file/list.html delete mode 100644 tests/flask_admin/bootstrap3/admin/file/modals/form.html delete mode 100644 tests/flask_admin/bootstrap3/admin/index.html delete mode 100644 tests/flask_admin/bootstrap3/admin/layout.html delete mode 100644 tests/flask_admin/bootstrap3/admin/lib.html delete mode 100644 tests/flask_admin/bootstrap3/admin/master.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/create.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/details.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/edit.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/inline_field_list.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/inline_form.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/inline_list_base.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/layout.html delete mode 100755 tests/flask_admin/bootstrap3/admin/model/list.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/modals/create.html delete mode 100755 tests/flask_admin/bootstrap3/admin/model/modals/details.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/modals/edit.html delete mode 100644 tests/flask_admin/bootstrap3/admin/model/row_actions.html delete mode 100644 tests/flask_admin/bootstrap3/admin/rediscli/console.html delete mode 100644 tests/flask_admin/bootstrap3/admin/rediscli/response.html delete mode 100644 tests/flask_admin/bootstrap3/admin/static.html delete mode 100644 tests/flask_admin/bootstrap4/admin/actions.html delete mode 100644 tests/flask_admin/bootstrap4/admin/base.html delete mode 100644 tests/flask_admin/bootstrap4/admin/file/form.html delete mode 100644 tests/flask_admin/bootstrap4/admin/file/list.html delete mode 100644 tests/flask_admin/bootstrap4/admin/file/modals/form.html delete mode 100644 tests/flask_admin/bootstrap4/admin/index.html delete mode 100644 tests/flask_admin/bootstrap4/admin/layout.html delete mode 100644 tests/flask_admin/bootstrap4/admin/lib.html delete mode 100644 tests/flask_admin/bootstrap4/admin/master.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/create.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/details.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/edit.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/inline_field_list.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/inline_form.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/inline_list_base.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/layout.html delete mode 100755 tests/flask_admin/bootstrap4/admin/model/list.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/modals/create.html delete mode 100755 tests/flask_admin/bootstrap4/admin/model/modals/details.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/modals/edit.html delete mode 100644 tests/flask_admin/bootstrap4/admin/model/row_actions.html delete mode 100644 tests/flask_admin/bootstrap4/admin/rediscli/console.html delete mode 100644 tests/flask_admin/bootstrap4/admin/rediscli/response.html delete mode 100644 tests/flask_admin/bootstrap4/admin/static.html delete mode 100644 tests/jinja_adminlte/calendar.html delete mode 100644 tests/jinja_adminlte/charts-chartjs.html delete mode 100644 tests/jinja_adminlte/charts-flot.html delete mode 100644 tests/jinja_adminlte/charts-inline.html delete mode 100644 tests/jinja_adminlte/examples-404.html delete mode 100644 tests/jinja_adminlte/examples-500.html delete mode 100644 tests/jinja_adminlte/examples-blank.html delete mode 100644 tests/jinja_adminlte/examples-contacts.html delete mode 100644 tests/jinja_adminlte/examples-e-commerce.html delete mode 100644 tests/jinja_adminlte/examples-forgot-password.html delete mode 100644 tests/jinja_adminlte/examples-invoice-print.html delete mode 100644 tests/jinja_adminlte/examples-invoice.html delete mode 100644 tests/jinja_adminlte/examples-language-menu.html delete mode 100644 tests/jinja_adminlte/examples-legacy-user-menu.html delete mode 100644 tests/jinja_adminlte/examples-lockscreen.html delete mode 100644 tests/jinja_adminlte/examples-login.html delete mode 100644 tests/jinja_adminlte/examples-profile.html delete mode 100644 tests/jinja_adminlte/examples-project-add.html delete mode 100644 tests/jinja_adminlte/examples-project-detail.html delete mode 100644 tests/jinja_adminlte/examples-project-edit.html delete mode 100644 tests/jinja_adminlte/examples-projects.html delete mode 100644 tests/jinja_adminlte/examples-recover-password.html delete mode 100644 tests/jinja_adminlte/examples-register.html delete mode 100644 tests/jinja_adminlte/forms-advanced.html delete mode 100644 tests/jinja_adminlte/forms-editors.html delete mode 100644 tests/jinja_adminlte/forms-general.html delete mode 100644 tests/jinja_adminlte/forms-validation.html delete mode 100644 tests/jinja_adminlte/gallery.html delete mode 100644 tests/jinja_adminlte/includes/footer.html delete mode 100644 tests/jinja_adminlte/includes/navigation.html delete mode 100644 tests/jinja_adminlte/includes/scripts.html delete mode 100644 tests/jinja_adminlte/includes/sidebar.html delete mode 100644 tests/jinja_adminlte/index.html delete mode 100644 tests/jinja_adminlte/index2.html delete mode 100644 tests/jinja_adminlte/index3.html delete mode 100644 tests/jinja_adminlte/layout-boxed.html delete mode 100644 tests/jinja_adminlte/layout-collapsed-sidebar.html delete mode 100644 tests/jinja_adminlte/layout-fixed-footer.html delete mode 100644 tests/jinja_adminlte/layout-fixed-sidebar.html delete mode 100644 tests/jinja_adminlte/layout-fixed-topnav.html delete mode 100644 tests/jinja_adminlte/layout-top-nav-sidebar.html delete mode 100644 tests/jinja_adminlte/layouts/base-fullscreen.html delete mode 100644 tests/jinja_adminlte/layouts/base.html delete mode 100644 tests/jinja_adminlte/login.html delete mode 100644 tests/jinja_adminlte/mailbox-compose.html delete mode 100644 tests/jinja_adminlte/mailbox-read-mail.html delete mode 100644 tests/jinja_adminlte/mailbox.html delete mode 100644 tests/jinja_adminlte/page-403.html delete mode 100644 tests/jinja_adminlte/page-404.html delete mode 100644 tests/jinja_adminlte/page-500.html delete mode 100644 tests/jinja_adminlte/page-blank.html delete mode 100644 tests/jinja_adminlte/register.html delete mode 100644 tests/jinja_adminlte/tables-data.html delete mode 100644 tests/jinja_adminlte/tables-jsgrid.html delete mode 100644 tests/jinja_adminlte/tables-simple.html delete mode 100644 tests/jinja_adminlte/ui-buttons.html delete mode 100644 tests/jinja_adminlte/ui-general.html delete mode 100644 tests/jinja_adminlte/ui-icons.html delete mode 100644 tests/jinja_adminlte/ui-modals.html delete mode 100644 tests/jinja_adminlte/ui-navbar.html delete mode 100644 tests/jinja_adminlte/ui-ribbons.html delete mode 100644 tests/jinja_adminlte/ui-sliders.html delete mode 100644 tests/jinja_adminlte/ui-timeline.html delete mode 100644 tests/jinja_adminlte/widgets.html create mode 100644 tests/test_config.py create mode 100644 tests/test_django.py create mode 100644 tests/test_handlebars.py create mode 100644 tests/test_html.py create mode 100644 tests/test_linter.py create mode 100644 tests/test_nunjucks.py diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 3bfabfc..4fffde7 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -22,15 +22,12 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '3.x' + python-version: 3.x - name: Install dependencies run: | python -m pip install --upgrade pip - pip install build - - name: Build package - run: python -m build - - name: Publish package - uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 + pip install poetry + - name: Build and publish package + users: JRubics/poetry-publish@v1.8 with: - user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index bfd4899..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# Changelog - -## 0.0.8 - -Added rules. - -## 0.0.1 - -Initial release. diff --git a/README.md b/README.md index e26b537..6566cca 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,51 @@ ![djLint Logo](https://raw.githubusercontent.com/Riverside-Healthcare/djlint/master/docs/_static/icon.png) -Simple html template linter and reformatter to find common formatting issues. djLint is intended as a django template linter and django template formatter. +Find common formatting issues and *reformat* HTML templates. + + +

+ Django + Jinja + Nunjucks + Handlebars +

Ps, ```--check``` it out on Jinja and Handlebar templates as well! -[![codecov](https://codecov.io/gh/Riverside-Healthcare/djlint/branch/master/graph/badge.svg?token=eNTG721BAA)](https://codecov.io/gh/Riverside-Healthcare/djlint) [![test](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml/badge.svg)](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/dba6338b0e7a4de896b45b382574f369)](https://www.codacy.com/gh/Riverside-Healthcare/djlint/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Riverside-Healthcare/djlint&utm_campaign=Badge_Grade) [![Maintainability](https://api.codeclimate.com/v1/badges/5febe4111a36c7e0d2ed/maintainability)](https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability) [![Downloads](https://pepy.tech/badge/djlint)](https://pepy.tech/project/djlint) +[![codecov](https://codecov.io/gh/Riverside-Healthcare/djlint/branch/master/graph/badge.svg?token=eNTG721BAA)](https://codecov.io/gh/Riverside-Healthcare/djlint) [![test](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml/badge.svg)](https://github.com/Riverside-Healthcare/djlint/actions/workflows/test.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/dba6338b0e7a4de896b45b382574f369)](https://www.codacy.com/gh/Riverside-Healthcare/djlint/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Riverside-Healthcare/djlint&utm_campaign=Badge_Grade) [![Maintainability](https://api.codeclimate.com/v1/badges/5febe4111a36c7e0d2ed/maintainability)](https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability) [![Downloads](https://pepy.tech/badge/djlint)](https://pepy.tech/project/djlint)[![chat](https://img.shields.io/badge/chat-discord-green)](https://discord.gg/taghAqebzU) ## Documentation Read the [documentation](https://djlint.readthedocs.io) - ## Installation and Usage -djLint can be installed with `pip install djlint`, and is easy to run: +**djLint** can be installed with `pip install djlint`, and is easy to run: ```sh # to lint a directory @@ -35,7 +67,7 @@ djlint /path --reformat --quiet Add a badge to your projects ```readme.md```: ```md -[![Code style: black](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://github.com/Riverside-Healthcare/djlint) +[![Code style: djlint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://github.com/Riverside-Healthcare/djlint) ``` Add a badge to your ```readme.rst```: @@ -49,6 +81,6 @@ Looks like this: [![djlint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://github.com/Riverside-Healthcare/djlint) -## Contributing - Please Help! +## Contributing -Checkout the [issue](https://github.com/Riverside-Healthcare/djlint/issues) list and help where you can! +Checkout the [issue](https://github.com/Riverside-Healthcare/djlint/issues) list and help where you can. diff --git a/docs/_static/icon-square.indd b/docs/_static/icon-square.indd new file mode 100644 index 0000000000000000000000000000000000000000..40edaf89ca085674789a297c4e3ee461f8d2cfe5 GIT binary patch literal 1069056 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 z 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
(hr_g0O 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 Z_~$fKYC8%zH<*0+?^I9 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 literal 0 HcmV?d00001 diff --git a/docs/conf.py b/docs/conf.py index c78186d..e200932 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,7 +12,7 @@ project = "djlint" copyright = "2021, Riverside Healthcare" author = "Christopher Pickering" -release = "0.3.4" +release = "0.3.5" version = release # -- General configuration --------------------------------------------------- diff --git a/docs/djlint/changelog.rst b/docs/djlint/changelog.rst new file mode 100644 index 0000000..9894171 --- /dev/null +++ b/docs/djlint/changelog.rst @@ -0,0 +1,41 @@ +Changelog +========= + +0.3.5 +----- +- Added support for more Django blocks +- Added support for custom blocks +- Added support for config in ``pyproject.toml`` + +0.3.4 +----- +- Fixed Nunjucks spaceless tag ``-%}`` format + +0.3.3 +----- +- Allowed short ``div`` tags to be single line + +0.3.2 +----- +- Fixed Django comment formatting +- Ignored textarea from formatting + +0.3.1 +----- +- Updated attribute formatting regex +- Updated lint rule W010 + +0.3.0 +----- +- Changed exit code to 1 if there were any formatting changes +- Added support for Jinja ``asset`` tags + +0.2.9 +----- +- Updated W018 regex +- Removed duplicate lint messages +- Updated E001 for Handlebars + +0.2.8 +----- +- Fixed progress bar error for old Click version diff --git a/docs/djlint/configuration.rst b/docs/djlint/configuration.rst index 2c09494..161a20f 100644 --- a/docs/djlint/configuration.rst +++ b/docs/djlint/configuration.rst @@ -1,7 +1,10 @@ Configuration ============= -Linter rules can easily be ignored with the `-i` or `--ignore` flag. +Ignoring Linter Rules +--------------------- + +Linter rules can be ignored with the `-i` or `--ignore` flag. For example: @@ -10,7 +13,15 @@ For example: djlint src -i "W013,W014" -Help needed! ------------- +Pyproject.toml Configuration +---------------------------- -Ideally we'd also like to be able to ignore rules through pyproject.toml/tox.ini/setup.cfg. +Configuration options can also be added to your projects `pyproject.toml` file. Command line args will always override any settings in `pyproject.toml`. + +.. code:: toml + + [tool.djlint] + ignore = "W013" + extension = "html.dj" + custom_blocks = "toc,example" # custom code blocks {% toc %}...{% endtoc %} + indent = " " # change indentation level diff --git a/docs/djlint/formatter.rst b/docs/djlint/formatter.rst index e43e05c..dd3df23 100644 --- a/docs/djlint/formatter.rst +++ b/docs/djlint/formatter.rst @@ -3,11 +3,9 @@ Formatter djLint's formatter will take sloppy html templates and make it look pretty nice! -For an example of what the output will be, check out the `/tests/ `_ folder to see over 300 **formatted** templates from the top django and flask projects. - Before ------ -.. code :: html +.. code :: {% load admin_list %} {% load i18n %}

diff --git a/docs/djlint/usage.rst b/docs/djlint/usage.rst index ab4b817..c1a775e 100644 --- a/docs/djlint/usage.rst +++ b/docs/djlint/usage.rst @@ -18,10 +18,10 @@ Linter Usage # with custom extensions djlint src -e html.dj -Reformatter Usage +Formatter Usage ----------------- -Reforamtting is a beta product. Check the output before applying changes. +Foramtting is a beta tool. ``--check`` the output before applying changes. Reformatting does not work with long json/html embedded into attribute data. @@ -29,16 +29,16 @@ To check what may change in formatting run: .. code:: sh - djlint src --check --ignore="W013,W014" + djlint . --check --ignore="W013,W014" -To reformat run: +To format code run: .. code:: sh - djlint src --reformat + djlint . --reformat CLI Args -------------- +-------- .. code:: sh diff --git a/docs/index.rst b/docs/index.rst index 9265adf..05a8921 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,7 +1,7 @@ .. djlint documentation master file, created by sphinx-quickstart on Tue Jul 27 15:28:35 2021. -Html Template Linter and Formatter +HTML Template Linter and Formatter ================================== .. toctree:: @@ -15,21 +15,57 @@ Html Template Linter and Formatter djlint/rules djlint/formatter djlint/configuration + djlint/changelog .. toctree:: :hidden: GitHub ↪ PyPI ↪ + Discord ↪ -Simple html template linter and reformatter to find common formatting issues with and *reformat* django html templates +Find common formatting issues and *reformat* HTML templates. -Ps, ``--check`` it out on Jinja and Handlebar templates as well! +.. raw:: html + +

+ Django + Jinja + Nunjucks + Handlebars +

+ +Ps, ``--check`` it out on other templates as well! .. image:: /_static/demo.gif -|codecov| |test| |Codacy Badge| |Maintainability| |Downloads| +|codecov| |test| |Codacy Badge| |Maintainability| |Downloads| |chat| .. note:: djLint is not an html parser or syntax validator. @@ -40,7 +76,7 @@ Add a badge to your projects `readme.md`: .. code-block:: md - [![Code style: black](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://github.com/Riverside-Healthcare/djlint) + [![Code style: djlint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://github.com/Riverside-Healthcare/djlint) Add a badge to your `readme.rst`: @@ -72,3 +108,5 @@ Checkout the `issue `_ li :target: https://codeclimate.com/github/Riverside-Healthcare/djlint/maintainability .. |Downloads| image:: https://img.shields.io/pypi/dm/djlint.svg :target: https://pypi.org/project/djlint/ +.. |chat| image:: https://discord.gg/taghAqebzU + :target: https://img.shields.io/badge/chat-discord-green diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..2963c1c --- /dev/null +++ b/poetry.lock @@ -0,0 +1,429 @@ +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.2.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] + +[[package]] +name = "click" +version = "8.0.1" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coverage" +version = "5.5" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" + +[package.extras] +toml = ["toml"] + +[[package]] +name = "importlib-metadata" +version = "4.8.1" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "packaging" +version = "21.0" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2" + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "py" +version = "1.10.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "pytest" +version = "6.2.5" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +toml = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "2.12.1" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +coverage = ">=5.2.1" +pytest = ">=4.6" +toml = "*" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] + +[[package]] +name = "pyyaml" +version = "5.4.1" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[[package]] +name = "regex" +version = "2021.8.28" +description = "Alternative regular expression module, to replace re." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomlkit" +version = "0.7.2" +description = "Style preserving TOML library" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "tqdm" +version = "4.62.2" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "3.10.0.2" +description = "Backported and Experimental Type Hints for Python 3.5+" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "zipp" +version = "3.5.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[metadata] +lock-version = "1.1" +python-versions = "^3.6" +content-hash = "0acb2ff4e9339c8cbcb21b6be1c0da5c0356b582cc60766a9dfd3b7b7c718ca6" + +[metadata.files] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, + {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, +] +click = [ + {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, + {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +coverage = [ + {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"}, + {file = "coverage-5.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b"}, + {file = "coverage-5.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669"}, + {file = "coverage-5.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90"}, + {file = "coverage-5.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c"}, + {file = "coverage-5.5-cp27-cp27m-win32.whl", hash = "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a"}, + {file = "coverage-5.5-cp27-cp27m-win_amd64.whl", hash = "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5"}, + {file = "coverage-5.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81"}, + {file = "coverage-5.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6"}, + {file = "coverage-5.5-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0"}, + {file = "coverage-5.5-cp310-cp310-win_amd64.whl", hash = "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae"}, + {file = "coverage-5.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb"}, + {file = "coverage-5.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160"}, + {file = "coverage-5.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"}, + {file = "coverage-5.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701"}, + {file = "coverage-5.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793"}, + {file = "coverage-5.5-cp35-cp35m-win32.whl", hash = "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e"}, + {file = "coverage-5.5-cp35-cp35m-win_amd64.whl", hash = "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3"}, + {file = "coverage-5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066"}, + {file = "coverage-5.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a"}, + {file = "coverage-5.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465"}, + {file = "coverage-5.5-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb"}, + {file = "coverage-5.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821"}, + {file = "coverage-5.5-cp36-cp36m-win32.whl", hash = "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45"}, + {file = "coverage-5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184"}, + {file = "coverage-5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a"}, + {file = "coverage-5.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53"}, + {file = "coverage-5.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d"}, + {file = "coverage-5.5-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638"}, + {file = "coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3"}, + {file = "coverage-5.5-cp37-cp37m-win32.whl", hash = "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a"}, + {file = "coverage-5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a"}, + {file = "coverage-5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6"}, + {file = "coverage-5.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2"}, + {file = "coverage-5.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759"}, + {file = "coverage-5.5-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873"}, + {file = "coverage-5.5-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a"}, + {file = "coverage-5.5-cp38-cp38-win32.whl", hash = "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6"}, + {file = "coverage-5.5-cp38-cp38-win_amd64.whl", hash = "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502"}, + {file = "coverage-5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b"}, + {file = "coverage-5.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529"}, + {file = "coverage-5.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b"}, + {file = "coverage-5.5-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff"}, + {file = "coverage-5.5-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b"}, + {file = "coverage-5.5-cp39-cp39-win32.whl", hash = "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6"}, + {file = "coverage-5.5-cp39-cp39-win_amd64.whl", hash = "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03"}, + {file = "coverage-5.5-pp36-none-any.whl", hash = "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079"}, + {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"}, + {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"}, + {file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +packaging = [ + {file = "packaging-21.0-py3-none-any.whl", hash = "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"}, + {file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +py = [ + {file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"}, + {file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"}, +] +pyparsing = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] +pytest = [ + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, +] +pytest-cov = [ + {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"}, + {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, +] +pyyaml = [ + {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, + {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, + {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, + {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, + {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, + {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, + {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, + {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, + {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, +] +regex = [ + {file = "regex-2021.8.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d05ad5367c90814099000442b2125535e9d77581855b9bee8780f1b41f2b1a2"}, + {file = "regex-2021.8.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3bf1bc02bc421047bfec3343729c4bbbea42605bcfd6d6bfe2c07ade8b12d2a"}, + {file = "regex-2021.8.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f6a808044faae658f546dd5f525e921de9fa409de7a5570865467f03a626fc0"}, + {file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a617593aeacc7a691cc4af4a4410031654f2909053bd8c8e7db837f179a630eb"}, + {file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79aef6b5cd41feff359acaf98e040844613ff5298d0d19c455b3d9ae0bc8c35a"}, + {file = "regex-2021.8.28-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0fc1f8f06977c2d4f5e3d3f0d4a08089be783973fc6b6e278bde01f0544ff308"}, + {file = "regex-2021.8.28-cp310-cp310-win32.whl", hash = "sha256:6eebf512aa90751d5ef6a7c2ac9d60113f32e86e5687326a50d7686e309f66ed"}, + {file = "regex-2021.8.28-cp310-cp310-win_amd64.whl", hash = "sha256:ac88856a8cbccfc14f1b2d0b829af354cc1743cb375e7f04251ae73b2af6adf8"}, + {file = "regex-2021.8.28-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c206587c83e795d417ed3adc8453a791f6d36b67c81416676cad053b4104152c"}, + {file = "regex-2021.8.28-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8690ed94481f219a7a967c118abaf71ccc440f69acd583cab721b90eeedb77c"}, + {file = "regex-2021.8.28-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:328a1fad67445550b982caa2a2a850da5989fd6595e858f02d04636e7f8b0b13"}, + {file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c7cb4c512d2d3b0870e00fbbac2f291d4b4bf2634d59a31176a87afe2777c6f0"}, + {file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66256b6391c057305e5ae9209941ef63c33a476b73772ca967d4a2df70520ec1"}, + {file = "regex-2021.8.28-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e44769068d33e0ea6ccdf4b84d80c5afffe5207aa4d1881a629cf0ef3ec398f"}, + {file = "regex-2021.8.28-cp36-cp36m-win32.whl", hash = "sha256:08d74bfaa4c7731b8dac0a992c63673a2782758f7cfad34cf9c1b9184f911354"}, + {file = "regex-2021.8.28-cp36-cp36m-win_amd64.whl", hash = "sha256:abb48494d88e8a82601af905143e0de838c776c1241d92021e9256d5515b3645"}, + {file = "regex-2021.8.28-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4c220a1fe0d2c622493b0a1fd48f8f991998fb447d3cd368033a4b86cf1127a"}, + {file = "regex-2021.8.28-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a332404baa6665b54e5d283b4262f41f2103c255897084ec8f5487ce7b9e8e"}, + {file = "regex-2021.8.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c61dcc1cf9fd165127a2853e2c31eb4fb961a4f26b394ac9fe5669c7a6592892"}, + {file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ee329d0387b5b41a5dddbb6243a21cb7896587a651bebb957e2d2bb8b63c0791"}, + {file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60667673ff9c249709160529ab39667d1ae9fd38634e006bec95611f632e759"}, + {file = "regex-2021.8.28-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b844fb09bd9936ed158ff9df0ab601e2045b316b17aa8b931857365ea8586906"}, + {file = "regex-2021.8.28-cp37-cp37m-win32.whl", hash = "sha256:4cde065ab33bcaab774d84096fae266d9301d1a2f5519d7bd58fc55274afbf7a"}, + {file = "regex-2021.8.28-cp37-cp37m-win_amd64.whl", hash = "sha256:1413b5022ed6ac0d504ba425ef02549a57d0f4276de58e3ab7e82437892704fc"}, + {file = "regex-2021.8.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ed4b50355b066796dacdd1cf538f2ce57275d001838f9b132fab80b75e8c84dd"}, + {file = "regex-2021.8.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28fc475f560d8f67cc8767b94db4c9440210f6958495aeae70fac8faec631797"}, + {file = "regex-2021.8.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdc178caebd0f338d57ae445ef8e9b737ddf8fbc3ea187603f65aec5b041248f"}, + {file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:999ad08220467b6ad4bd3dd34e65329dd5d0df9b31e47106105e407954965256"}, + {file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:808ee5834e06f57978da3e003ad9d6292de69d2bf6263662a1a8ae30788e080b"}, + {file = "regex-2021.8.28-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d5111d4c843d80202e62b4fdbb4920db1dcee4f9366d6b03294f45ed7b18b42e"}, + {file = "regex-2021.8.28-cp38-cp38-win32.whl", hash = "sha256:473858730ef6d6ff7f7d5f19452184cd0caa062a20047f6d6f3e135a4648865d"}, + {file = "regex-2021.8.28-cp38-cp38-win_amd64.whl", hash = "sha256:31a99a4796bf5aefc8351e98507b09e1b09115574f7c9dbb9cf2111f7220d2e2"}, + {file = "regex-2021.8.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:04f6b9749e335bb0d2f68c707f23bb1773c3fb6ecd10edf0f04df12a8920d468"}, + {file = "regex-2021.8.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b006628fe43aa69259ec04ca258d88ed19b64791693df59c422b607b6ece8bb"}, + {file = "regex-2021.8.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:121f4b3185feaade3f85f70294aef3f777199e9b5c0c0245c774ae884b110a2d"}, + {file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a577a21de2ef8059b58f79ff76a4da81c45a75fe0bfb09bc8b7bb4293fa18983"}, + {file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1743345e30917e8c574f273f51679c294effba6ad372db1967852f12c76759d8"}, + {file = "regex-2021.8.28-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e1e8406b895aba6caa63d9fd1b6b1700d7e4825f78ccb1e5260551d168db38ed"}, + {file = "regex-2021.8.28-cp39-cp39-win32.whl", hash = "sha256:ed283ab3a01d8b53de3a05bfdf4473ae24e43caee7dcb5584e86f3f3e5ab4374"}, + {file = "regex-2021.8.28-cp39-cp39-win_amd64.whl", hash = "sha256:610b690b406653c84b7cb6091facb3033500ee81089867ee7d59e675f9ca2b73"}, + {file = "regex-2021.8.28.tar.gz", hash = "sha256:f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomlkit = [ + {file = "tomlkit-0.7.2-py2.py3-none-any.whl", hash = "sha256:173ad840fa5d2aac140528ca1933c29791b79a374a0861a80347f42ec9328117"}, + {file = "tomlkit-0.7.2.tar.gz", hash = "sha256:d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754"}, +] +tqdm = [ + {file = "tqdm-4.62.2-py2.py3-none-any.whl", hash = "sha256:80aead664e6c1672c4ae20dc50e1cdc5e20eeff9b14aa23ecd426375b28be588"}, + {file = "tqdm-4.62.2.tar.gz", hash = "sha256:a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5"}, +] +typing-extensions = [ + {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, + {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, + {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"}, +] +zipp = [ + {file = "zipp-3.5.0-py3-none-any.whl", hash = "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3"}, + {file = "zipp-3.5.0.tar.gz", hash = "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"}, +] diff --git a/pyproject.toml b/pyproject.toml index 29cc4f6..cff69f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,50 @@ [build-system] -requires = ["setuptools>=41.0", "setuptools-scm", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["poetry_core>=1.0.0"] +build-backend = "poetry.core.masonry.api" [tool] - +[tool.poetry] +name="djlint" +version="0.3.5" +description="HTML Template Linter and Formatter" +license="GPL-3.0-or-later" +authors=["Christopher Pickering "] +maintainers=["Christopher Pickering "] +readme="README.md" +repository="https://github.com/Riverside-Healthcare/djlint" +documentation="https://djlint.readthedocs.io" +classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Operating System :: OS Independent", + ] +packages = [ + { include = "djlint", from = "src" }, +] +include = ["rules.yaml"] [tool.black] max_line_length = 99 quiet = true +[tool.poetry.dependencies] +python = "^3.6" +click = "^8.0.1" +PyYAML = "^5.4.1" +colorama = "^0.4.4" +regex = "^2021.8.28" +tqdm = "^4.62.2" +tomlkit = "^0.7.2" +coverage = { version = "^5.5", optional = true } +pytest = { version = "^6.2.5", optional = true } +pytest-cov = { version = "^2.12.1", optional = true } + +[tool.poetry.extras] +test = ["coverage", "pytest", "pytest-cov"] + +[tool.poetry.scripts] +djlint = "djlint:main" [tool.isort] multi_line_output = 3 @@ -22,4 +57,4 @@ quiet = true [tool.pylint.messages_control] -disable = "E1120, R0914, E0401, R0912, R0916, R0913, W0104, R0801, W1404" +disable = "E1120, R0914, E0401, R0912, R0916, R0913, W0104, R0801, W1404, R0902, R0903" diff --git a/setup.py b/setup.py deleted file mode 100644 index b671380..0000000 --- a/setup.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Djlint setup.""" - -from pathlib import Path - -from setuptools import find_packages, setup - -project_path = Path(__file__).parent - -__version__ = "0.3.4" - - -def long_description(): - """Build long description from readme and changelog.""" - return ( - (project_path / "README.md").read_text(encoding="utf8") - + "\n\n" - + (project_path / "CHANGELOG.md").read_text(encoding="utf8") - ) - - -test_deps = ["coverage", "pytest", "pytest-xdist", "pytest-cov"] - -extras = { - "test": test_deps, -} - -setup( - name="djlint", - version=__version__, - author="Christopher Pickering", - author_email="cpickering@rhc.net", - description="Django Template Linter", - long_description=long_description(), - long_description_content_type="text/markdown", - project_urls={ - "Documentation": "https://djlint.readthedocs.io", - "Source": "https://github.com/Riverside-Healthcare/djlint", - }, - url="", - include_package_data=True, - package_data={"djlint": ["rules.yaml"]}, - classifiers=[ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", - "Operating System :: OS Independent", - ], - package_dir={"": "src"}, - packages=find_packages(where="src"), - python_requires=">=3.6", - install_requires=[ - "click>=7.1.2", - "pyyaml>=5.4.1", - "colorama>=0.4.3", - "regex>=2020.11.13", - "tqdm>=4.61.2", - ], - test_suite="tests.test_djlint", - entry_points={ - "console_scripts": [ - "djlint=djlint:main", - ] - }, - tests_require=test_deps, - extras_require=extras, -) diff --git a/tests/config_custom_tags/html.html b/tests/config_custom_tags/html.html new file mode 100644 index 0000000..93612a3 --- /dev/null +++ b/tests/config_custom_tags/html.html @@ -0,0 +1 @@ +{% example stuff %}

this is a long paragraph

{% endexample %} diff --git a/tests/config_custom_tags/pyproject.toml b/tests/config_custom_tags/pyproject.toml new file mode 100644 index 0000000..79f11a9 --- /dev/null +++ b/tests/config_custom_tags/pyproject.toml @@ -0,0 +1,3 @@ +[tool] +[tool.djlint] +custom_blocks = "toc,example" diff --git a/tests/config_extension/html.test b/tests/config_extension/html.test new file mode 100644 index 0000000..7c89b54 --- /dev/null +++ b/tests/config_extension/html.test @@ -0,0 +1 @@ +
diff --git a/tests/config_extension/pyproject.toml b/tests/config_extension/pyproject.toml new file mode 100644 index 0000000..c919327 --- /dev/null +++ b/tests/config_extension/pyproject.toml @@ -0,0 +1,3 @@ +[tool] +[tool.djlint] +extension = "test" diff --git a/tests/config_ignores/html.html b/tests/config_ignores/html.html new file mode 100644 index 0000000..75c1c4b --- /dev/null +++ b/tests/config_ignores/html.html @@ -0,0 +1 @@ +{{missing space}} diff --git a/tests/config_ignores/pyproject.toml b/tests/config_ignores/pyproject.toml new file mode 100644 index 0000000..ee335bf --- /dev/null +++ b/tests/config_ignores/pyproject.toml @@ -0,0 +1,3 @@ +[tool] +[tool.djlint] +ignore = "E001" diff --git a/tests/config_indent/html.html b/tests/config_indent/html.html new file mode 100644 index 0000000..ac91174 --- /dev/null +++ b/tests/config_indent/html.html @@ -0,0 +1 @@ +

diff --git a/tests/config_indent/pyproject.toml b/tests/config_indent/pyproject.toml new file mode 100644 index 0000000..ca52acd --- /dev/null +++ b/tests/config_indent/pyproject.toml @@ -0,0 +1,3 @@ +[tool] +[tool.djlint] +indent = " " diff --git a/tests/conftest.py b/tests/conftest.py index 53aa597..2fb8fbb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,18 +1,38 @@ +"""Djlint test config.""" import os import tempfile +from pathlib import Path +from typing import Generator, TextIO import pytest from click.testing import CliRunner - -@pytest.fixture -def runner(): - yield CliRunner() +from src.djlint import main as djlint -@pytest.fixture -def tmp_file(): +@pytest.fixture() +def runner() -> CliRunner: + """Click runner for djlint tests.""" + return CliRunner() + + +@pytest.fixture() +def tmp_file() -> Generator: + """Create a temp file for formatting.""" + # pylint: disable=R1732 tmp = tempfile.NamedTemporaryFile(delete=False) yield tmp tmp.close() os.unlink(tmp.name) + + +def write_to_file(the_file: str, the_text: bytes) -> None: + """Shortcode for write some bytes to a file.""" + with open(the_file, mode="w+b") as open_file: + open_file.write(the_text) + + +def reformat(the_file: TextIO, runner: CliRunner, the_text: bytes) -> dict: + write_to_file(the_file.name, the_text) + result = runner.invoke(djlint, [the_file.name, "--reformat"]) + return {"text": Path(the_file.name).read_text(), "exit_code": result.exit_code} diff --git a/tests/django_admin/admin/404.html b/tests/django_admin/admin/404.html deleted file mode 100644 index d7b0b72..0000000 --- a/tests/django_admin/admin/404.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block title %} - {% translate 'Page not found' %} -{% endblock %} -{% block content %} -

{% translate 'Page not found' %}

-

- {% translate 'We’re sorry, but the requested page could not be found.' %} -

-{% endblock %} diff --git a/tests/django_admin/admin/500.html b/tests/django_admin/admin/500.html deleted file mode 100644 index 6a8d0aa..0000000 --- a/tests/django_admin/admin/500.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block breadcrumbs %} -
-{% endblock %} -{% block title %} - {% translate 'Server error (500)' %} -{% endblock %} -{% block content %} -

- {% translate 'Server Error - (500) - ' %} -

-

- {% translate 'There’s been an error. It’s been reported to the site administrators via email and should be fixed shortly. Thanks for your patience.' %} -

-{% endblock %} diff --git a/tests/django_admin/admin/actions.html b/tests/django_admin/admin/actions.html deleted file mode 100644 index 2604981..0000000 --- a/tests/django_admin/admin/actions.html +++ /dev/null @@ -1,44 +0,0 @@ -{% load i18n %} -
- {% block actions %} - {% block actions-form %} - {% for field in action_form %} - {% if field.label %} - {% endif %} - {% endfor %} - {% endblock %} - {% block actions-submit %} - - {% endblock %} - {% block actions-counter %} - {% if actions_selection_counter %} - - {{ selection_note }} - - {% if cl.result_count != cl.result_list|length %} - - - - {% endif %} - {% endif %} - {% endblock %} - {% endblock %} -
diff --git a/tests/django_admin/admin/app_index.html b/tests/django_admin/admin/app_index.html deleted file mode 100644 index 819b2e5..0000000 --- a/tests/django_admin/admin/app_index.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "admin/index.html" %} -{% load i18n %} -{% block bodyclass %}{{ block.super }} app-{{ app_label }}{% endblock %} -{% if not is_popup %} - {% block breadcrumbs %} - - {% endblock %} -{% endif %} -{% block sidebar %}{% endblock %} diff --git a/tests/django_admin/admin/app_list.html b/tests/django_admin/admin/app_list.html deleted file mode 100644 index 7159a9b..0000000 --- a/tests/django_admin/admin/app_list.html +++ /dev/null @@ -1,63 +0,0 @@ -{% load i18n %} -{% if app_list %} - {% for app in app_list %} -
- - - {% for model in app.models %} - - {% if model.admin_url %} - - {% else %} - - {% endif %} - {% if model.add_url %} - - {% else %} - - {% endif %} - {% if model.admin_url and show_changelinks %} - {% if model.view_only %} - - {% else %} - - {% endif %} - {% elif show_changelinks %} - - {% endif %} - - {% endfor %} -
- - {{ app.name }} - -
- - {{ model.name }} - - {{ model.name }} - - {% translate 'Add' %} - - - - {% translate 'View' %} - - - - {% translate 'Change' %} - -
-
- {% endfor %} -{% else %} -

- {% translate 'You don’t have permission to view or edit anything.' %} -

-{% endif %} diff --git a/tests/django_admin/admin/auth/user/add_form.html b/tests/django_admin/admin/auth/user/add_form.html deleted file mode 100644 index f757af4..0000000 --- a/tests/django_admin/admin/auth/user/add_form.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n %} -{% block form_top %} - {% if not is_popup %} -

- {% translate 'First, enter a username and password. Then, you’ll be able to edit more user options.' %} -

- {% else %} -

- {% translate "Enter a username and password." %} -

- {% endif %} -{% endblock %} diff --git a/tests/django_admin/admin/auth/user/change_password.html b/tests/django_admin/admin/auth/user/change_password.html deleted file mode 100644 index 9892bf5..0000000 --- a/tests/django_admin/admin/auth/user/change_password.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% load admin_urls %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block bodyclass %} - {{ block.super }} {{ opts.app_label }}-{{ opts.model_name }} change-form -{% endblock %} -{% if not is_popup %} - {% block breadcrumbs %} - - {% endblock %} -{% endif %} -{% block content %} -
-
- {% csrf_token %} - {% block form_top %}{% endblock %} - -
- {% if is_popup %} - - {% endif %} - {% if form.errors %} -

- {% if form.errors.items|length == 1 %} - {% translate "Please correct the error below." %} - {% else %} - {% translate "Please correct the errors below." %} - {% endif %} -

- {% endif %} -

- {% blocktranslate with username=original %} - Enter a new password for the user - {{ username }} - . - {% endblocktranslate %} -

-
-
- {{ form.password1.errors }} - {{ form.password1.label_tag }} {{ form.password1 }} - {% if form.password1.help_text %} -
- {{ form.password1.help_text|safe }} -
- {% endif %} -
-
- {{ form.password2.errors }} - {{ form.password2.label_tag }} {{ form.password2 }} - {% if form.password2.help_text %} -
- {{ form.password2.help_text|safe }} -
- {% endif %} -
-
-
- -
-
-
-
-{% endblock %} diff --git a/tests/django_admin/admin/base.html b/tests/django_admin/admin/base.html deleted file mode 100644 index f0e74af..0000000 --- a/tests/django_admin/admin/base.html +++ /dev/null @@ -1,118 +0,0 @@ -{% load i18n static %} - -{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %} - - - {% block title %}{% endblock %} - - {% if not is_popup and is_nav_sidebar_enabled %} - - - {% endif %} - {% block extrastyle %}{% endblock %} - {% if LANGUAGE_BIDI %} - - {% endif %} - {% block extrahead %}{% endblock %} - {% block responsive %} - - - {% if LANGUAGE_BIDI %} - - {% endif %} - {% endblock %} - {% block blockbots %}{% endblock %} - - - -
- {% if not is_popup %} - - {% block header %} - {% endblock %} - - {% block breadcrumbs %} - - {% endblock %}{% endif %} -
- {% if not is_popup and is_nav_sidebar_enabled %} - {% block nav-sidebar %} - {% include "admin/nav_sidebar.html" %}{% endblock %}{% endif %} -
- {% block messages %} - {% if messages %} -
    - {% for message in messages %} - {{ message|capfirst }} - - {% endfor %} -
- {% endif %} - {% endblock messages %} - -
- {% block pretitle %}{% endblock %} - {% block content_title %}{% if title %} -

{{ title }}

- {% endif %}{% endblock %} - {% block content_subtitle %}{% if subtitle %} -

{{ subtitle }}

- {% endif %}{% endblock %} - {% block content %} - {% block object-tools %}{% endblock %} - {{ content }} - {% endblock %} - {% block sidebar %}{% endblock %} -
-
- - {% block footer %} - - {% endblock %} -
-
-
- - - diff --git a/tests/django_admin/admin/base_site.html b/tests/django_admin/admin/base_site.html deleted file mode 100644 index 524ced2..0000000 --- a/tests/django_admin/admin/base_site.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "admin/base.html" %} -{% block title %} - {% if subtitle %}{{ subtitle }} |{% endif %} - {{ title }} | {{ site_title|default:_('Django site admin') }} -{% endblock %} -{% block branding %} -

- - {{ site_header|default:_('Django administration') }} - -

-{% endblock %} -{% block nav-global %}{% endblock %} diff --git a/tests/django_admin/admin/change_form.html b/tests/django_admin/admin/change_form.html deleted file mode 100644 index e187223..0000000 --- a/tests/django_admin/admin/change_form.html +++ /dev/null @@ -1,97 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n admin_urls static admin_modify %} -{% block extrahead %} - {{ block.super }} - - {{ media }} -{% endblock %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block coltype %}colM{% endblock %} -{% block bodyclass %} - {{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form -{% endblock %} -{% if not is_popup %} - {% block breadcrumbs %} - - {% endblock %}{% endif %} - {% block content %} -
- {% block object-tools %} - {% if change %} - {% if not is_popup %} -
    - {% block object-tools-items %} - {% change_form_object_tools %} - {% endblock %} -
- {% endif %} - {% endif %} - {% endblock %} -
- {% csrf_token %}{% block form_top %}{% endblock %} -
- {% if is_popup %} - - {% endif %} - {% if to_field %} - - {% endif %} - {% if save_on_top %} - {% block submit_buttons_top %} - {% submit_row %}{% endblock %}{% endif %} - {% if errors %} -

- {% if errors|length == 1 %}{% translate "Please correct the error below." %}{% else %} - {% translate "Please correct the errors below." %}{% endif %} -

- {{ adminform.form.non_field_errors }} - {% endif %} - {% block field_sets %} - {% for fieldset in adminform %} - {% include "admin/includes/fieldset.html" %}{% endfor %} - {% endblock %} - {% block after_field_sets %}{% endblock %} - {% block inline_field_sets %} - {% for inline_admin_formset in inline_admin_formsets %} - {% include inline_admin_formset.opts.template %}{% endfor %} - {% endblock %} - {% block after_related_objects %}{% endblock %} - {% block submit_buttons_bottom %} - {% submit_row %}{% endblock %} - {% block admin_change_form_document_ready %} - - {% endblock %} - {# JavaScript for prepopulated fields #} - {% prepopulated_fields_js %} -
-
-
- {% endblock %} diff --git a/tests/django_admin/admin/change_form_object_tools.html b/tests/django_admin/admin/change_form_object_tools.html deleted file mode 100644 index 6772453..0000000 --- a/tests/django_admin/admin/change_form_object_tools.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n admin_urls %} -{% block object-tools-items %} -
  • - {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %} - - {% translate "History" %} - -
  • - {% if has_absolute_url %} -
  • - - {% translate "View on site" %} - -
  • - {% endif %} -{% endblock %} diff --git a/tests/django_admin/admin/change_list.html b/tests/django_admin/admin/change_list.html deleted file mode 100644 index b967395..0000000 --- a/tests/django_admin/admin/change_list.html +++ /dev/null @@ -1,111 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n admin_urls static admin_list %} -{% block extrastyle %} - {{ block.super }} - - {% if cl.formset %} - - {% endif %} - {% if cl.formset or action_form %} - - {% endif %} - {{ media.css }} - {% if not actions_on_top and not actions_on_bottom %} - - {% endif %} -{% endblock %} -{% block extrahead %} - {{ block.super }} - {{ media.js }} -{% endblock %} -{% block bodyclass %} - {{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-list -{% endblock %} -{% if not is_popup %} - {% block breadcrumbs %} - - {% endblock %} -{% endif %} -{% block coltype %}{% endblock %} -{% block content %} -
    - {% block object-tools %} -
      - {% block object-tools-items %} - {% change_list_object_tools %} - {% endblock %} -
    - {% endblock %} - {% if cl.formset and cl.formset.errors %} -

    - {% if cl.formset.total_error_count == 1 %} - {% translate "Please correct the error below." %} - {% else %} - {% translate "Please correct the errors below." %} - {% endif %} -

    - {{ cl.formset.non_form_errors }} - {% endif %} -
    -
    - {% block search %} - {% search_form cl %} - {% endblock %} - {% block date_hierarchy %} - {% if cl.date_hierarchy %} - {% date_hierarchy cl %} - {% endif %} - {% endblock %} -
    - {% csrf_token %} - {% if cl.formset %} -
    - {{ cl.formset.management_form }} -
    - {% endif %} - {% block result_list %} - {% if action_form and actions_on_top and cl.show_admin_actions %} - {% admin_actions %} - {% endif %} - {% result_list cl %} - {% if action_form and actions_on_bottom and cl.show_admin_actions %} - {% admin_actions %} - {% endif %} - {% endblock %} - {% block pagination %} - {% pagination cl %} - {% endblock %} -
    -
    - {% block filters %} - {% if cl.has_filters %} -
    -

    {% translate 'Filter' %}

    - {% if cl.has_active_filters %} -

    - ✖ {% translate "Clear all filters" %} -

    - {% endif %} - {% for spec in cl.filter_specs %} - {% admin_list_filter cl spec %} - {% endfor %} -
    - {% endif %} - {% endblock %} -
    -
    -{% endblock %} diff --git a/tests/django_admin/admin/change_list_object_tools.html b/tests/django_admin/admin/change_list_object_tools.html deleted file mode 100644 index 26b5d47..0000000 --- a/tests/django_admin/admin/change_list_object_tools.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load i18n admin_urls %} -{% block object-tools-items %} - {% if has_add_permission %} -
  • - {% url cl.opts|admin_urlname:'add' as add_url %} - - {% blocktranslate with cl.opts.verbose_name as name %} - Add {{ name }} - {% endblocktranslate %} - -
  • - {% endif %} -{% endblock %} diff --git a/tests/django_admin/admin/change_list_results.html b/tests/django_admin/admin/change_list_results.html deleted file mode 100644 index a43e3ea..0000000 --- a/tests/django_admin/admin/change_list_results.html +++ /dev/null @@ -1,57 +0,0 @@ -{% load i18n %} -{% if result_hidden_fields %} -
    - {# DIV for HTML validation #} - {% for item in result_hidden_fields %}{{ item }}{% endfor %} -
    -{% endif %} -{% if results %} -
    - - - - {% for header in result_headers %} - - {% endfor %} - - - - {% for result in results %} - {% if result.form and result.form.non_field_errors %} - - - - {% endif %} - - {% for item in result %}{{ item }}{% endfor %} - - {% endfor %} - -
    - {% if header.sortable %} - {% if header.sort_priority > 0 %} -
    - - {% if num_sorted_fields > 1 %} - - {{ header.sort_priority }} - - {% endif %} - -
    - {% endif %} - {% endif %} -
    - {% if header.sortable %} - {{ header.text|capfirst }} - {% else %} - {{ header.text|capfirst }} - {% endif %} -
    -
    -
    {{ result.form.non_field_errors }}
    -
    -{% endif %} diff --git a/tests/django_admin/admin/date_hierarchy.html b/tests/django_admin/admin/date_hierarchy.html deleted file mode 100644 index 3975689..0000000 --- a/tests/django_admin/admin/date_hierarchy.html +++ /dev/null @@ -1,25 +0,0 @@ -{% if show %} -
    - -
    -
    -{% endif %} diff --git a/tests/django_admin/admin/delete_confirmation.html b/tests/django_admin/admin/delete_confirmation.html deleted file mode 100644 index 2b2717e..0000000 --- a/tests/django_admin/admin/delete_confirmation.html +++ /dev/null @@ -1,82 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n admin_urls static %} -{% block extrahead %} - {{ block.super }} - {{ media }} - -{% endblock %} -{% block bodyclass %} - {{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} - {% if perms_lacking %} -

    - {% blocktranslate with escaped_object=object %} - Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects: - {% endblocktranslate %} -

    -
      - {% for obj in perms_lacking %} -
    • - {{ obj }} -
    • - {% endfor %} -
    - {% elif protected %} -

    - {% blocktranslate with escaped_object=object %} - Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects: - {% endblocktranslate %} -

    -
      - {% for obj in protected %} -
    • - {{ obj }} -
    • - {% endfor %} -
    - {% else %} -

    - {% blocktranslate with escaped_object=object %} - Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted: - {% endblocktranslate %} -

    - {% include "admin/includes/object_delete_summary.html" %} -

    {% translate "Objects" %}

    -
      - {{ deleted_objects|unordered_list }} -
    -
    - {% csrf_token %} -
    - - {% if is_popup %} - - {% endif %} - {% if to_field %} - - {% endif %} - - {% translate "No, take me back" %} -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_admin/admin/delete_selected_confirmation.html b/tests/django_admin/admin/delete_selected_confirmation.html deleted file mode 100644 index 6ca5d5d..0000000 --- a/tests/django_admin/admin/delete_selected_confirmation.html +++ /dev/null @@ -1,78 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n l10n admin_urls static %} -{% block extrahead %} - {{ block.super }} - {{ media }} - -{% endblock %} -{% block bodyclass %} - {{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} delete-confirmation delete-selected-confirmation -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} - {% if perms_lacking %} -

    - {% blocktranslate %} - Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects: - {% endblocktranslate %} -

    -
      - {% for obj in perms_lacking %} -
    • - {{ obj }} -
    • - {% endfor %} -
    - {% elif protected %} -

    - {% blocktranslate %} - Deleting the selected {{ objects_name }} would require deleting the following protected related objects: - {% endblocktranslate %} -

    -
      - {% for obj in protected %} -
    • - {{ obj }} -
    • - {% endfor %} -
    - {% else %} -

    - {% blocktranslate %} - Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted: - {% endblocktranslate %} -

    - {% include "admin/includes/object_delete_summary.html" %} -

    {% translate "Objects" %}

    - {% for deletable_object in deletable_objects %} -
      - {{ deletable_object|unordered_list }} -
    - {% endfor %} -
    - {% csrf_token %} -
    - {% for obj in queryset %} - - {% endfor %} - - - - {% translate "No, take me back" %} -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_admin/admin/edit_inline/stacked.html b/tests/django_admin/admin/edit_inline/stacked.html deleted file mode 100644 index 610b3ff..0000000 --- a/tests/django_admin/admin/edit_inline/stacked.html +++ /dev/null @@ -1,53 +0,0 @@ -{% load i18n admin_urls %} -
    -
    - {% if inline_admin_formset.formset.max_num == 1 %} -

    {{ inline_admin_formset.opts.verbose_name|capfirst }}

    - {% else %} -

    {{ inline_admin_formset.opts.verbose_name_plural|capfirst }}

    - {% endif %} - {{ inline_admin_formset.formset.management_form }} - {{ inline_admin_formset.formset.non_form_errors }} - {% for inline_admin_form in inline_admin_formset %} -
    -

    - - {{ inline_admin_formset.opts.verbose_name|capfirst }}: - - - {% if inline_admin_form.original %} - {{ inline_admin_form.original }} - {% if inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %} - - {% if inline_admin_formset.has_change_permission %}{% translate "Change" %}{% else %}{% translate "View" %}{% endif %} - - {% endif %} - {% else %} - #{{ forloop.counter }} - {% endif %} - - {% if inline_admin_form.show_url %} - - {% translate "View on site" %} - - {% endif %} - {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission and inline_admin_form.original %} - - {{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }} - - {% endif %} -

    - {% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %} - {% for fieldset in inline_admin_form %} - {% include "admin/includes/fieldset.html" %}{% endfor %} - {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %} - {% if inline_admin_form.fk_field %}{{ inline_admin_form.fk_field.field }}{% endif %} -
    - {% endfor %} -
    -
    diff --git a/tests/django_admin/admin/edit_inline/tabular.html b/tests/django_admin/admin/edit_inline/tabular.html deleted file mode 100644 index 23cdeec..0000000 --- a/tests/django_admin/admin/edit_inline/tabular.html +++ /dev/null @@ -1,110 +0,0 @@ -{% load i18n admin_urls static admin_modify %} -
    - -
    diff --git a/tests/django_admin/admin/filter.html b/tests/django_admin/admin/filter.html deleted file mode 100644 index e13d963..0000000 --- a/tests/django_admin/admin/filter.html +++ /dev/null @@ -1,17 +0,0 @@ -{% load i18n %} -

    - {% blocktranslate with filter_title=title %} - By {{ filter_title }} - {% endblocktranslate %} -

    - diff --git a/tests/django_admin/admin/includes/fieldset.html b/tests/django_admin/admin/includes/fieldset.html deleted file mode 100644 index 738498b..0000000 --- a/tests/django_admin/admin/includes/fieldset.html +++ /dev/null @@ -1,37 +0,0 @@ -
    - {% if fieldset.name %}

    {{ fieldset.name }}

    {% endif %} - {% if fieldset.description %} -
    - {{ fieldset.description|safe }} -
    - {% endif %} - {% for line in fieldset %} -
    - {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %} - {% for field in line %} -
    - {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %} - {% if field.is_checkbox %} - {{ field.field }}{{ field.label_tag }} - {% else %} - {{ field.label_tag }} - {% if field.is_readonly %} -
    - {{ field.contents }} -
    - {% else %} - {{ field.field }} - {% endif %} - {% endif %} - {% if field.field.help_text %} -
    - {{ field.field.help_text|safe }} -
    - {% endif %} -
    - {% endfor %} -
    - {% endfor %} -
    diff --git a/tests/django_admin/admin/includes/object_delete_summary.html b/tests/django_admin/admin/includes/object_delete_summary.html deleted file mode 100644 index ac8a4f6..0000000 --- a/tests/django_admin/admin/includes/object_delete_summary.html +++ /dev/null @@ -1,9 +0,0 @@ -{% load i18n %} -

    {% translate "Summary" %}

    -
      - {% for model_name, object_count in model_count %} -
    • - {{ model_name|capfirst }}: {{ object_count }} -
    • - {% endfor %} -
    diff --git a/tests/django_admin/admin/index.html b/tests/django_admin/admin/index.html deleted file mode 100644 index 4046a9d..0000000 --- a/tests/django_admin/admin/index.html +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block coltype %}colMS{% endblock %} -{% block bodyclass %}{{ block.super }} dashboard{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block nav-sidebar %}{% endblock %} -{% block content %} -
    - {% include "admin/app_list.html" with app_list=app_list show_changelinks=True %} -
    -{% endblock %} -{% block sidebar %} - -{% endblock %} diff --git a/tests/django_admin/admin/invalid_setup.html b/tests/django_admin/admin/invalid_setup.html deleted file mode 100644 index affaa9c..0000000 --- a/tests/django_admin/admin/invalid_setup.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -

    - {% translate 'Something’s wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.' %} -

    -{% endblock %} diff --git a/tests/django_admin/admin/login.html b/tests/django_admin/admin/login.html deleted file mode 100644 index af36a68..0000000 --- a/tests/django_admin/admin/login.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% block extrastyle %} - {{ block.super }} - - {{ form.media }} -{% endblock %} -{% block bodyclass %}{{ block.super }} login{% endblock %} -{% block usertools %}{% endblock %} -{% block nav-global %}{% endblock %} -{% block nav-sidebar %}{% endblock %} -{% block content_title %}{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block content %} - {% if form.errors and not form.non_field_errors %} -

    - {% if form.errors.items|length == 1 %} - {% translate "Please correct the error below." %} - {% else %} - {% translate "Please correct the errors below." %} - {% endif %} -

    - {% endif %} - {% if form.non_field_errors %} - {% for error in form.non_field_errors %} -

    - {{ error }} -

    - {% endfor %} - {% endif %} -
    - {% if user.is_authenticated %} -

    - {% blocktranslate trimmed %} - You are authenticated as {{ username }}, but are not authorized to - access this page. Would you like to login to a different account? - {% endblocktranslate %} -

    - {% endif %} -
    - {% csrf_token %} -
    - {{ form.username.errors }} - {{ form.username.label_tag }} {{ form.username }} -
    -
    - {{ form.password.errors }} - {{ form.password.label_tag }} {{ form.password }} - -
    - {% url 'admin_password_reset' as password_reset_url %} - {% if password_reset_url %} - - {% endif %} -
    - -
    -
    -
    -{% endblock %} diff --git a/tests/django_admin/admin/nav_sidebar.html b/tests/django_admin/admin/nav_sidebar.html deleted file mode 100644 index 4764137..0000000 --- a/tests/django_admin/admin/nav_sidebar.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n %} - - diff --git a/tests/django_admin/admin/object_history.html b/tests/django_admin/admin/object_history.html deleted file mode 100644 index a28f59f..0000000 --- a/tests/django_admin/admin/object_history.html +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n admin_urls %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -
    -
    - {% if action_list %} - - - - - - - - - - {% for action in action_list %} - - - - - - {% endfor %} - -
    {% translate 'Date/time' %}{% translate 'User' %}{% translate 'Action' %}
    {{ action.action_time|date:"DATETIME_FORMAT" }} - {{ action.user.get_username }} - {% if action.user.get_full_name %}({{ action.user.get_full_name }}){% endif %} - {{ action.get_change_message }}
    - {% else %} -

    - {% translate 'This object doesn’t have a change history. It probably wasn’t added via this admin site.' %} -

    - {% endif %} -
    -
    -{% endblock %} diff --git a/tests/django_admin/admin/pagination.html b/tests/django_admin/admin/pagination.html deleted file mode 100644 index 891bdd6..0000000 --- a/tests/django_admin/admin/pagination.html +++ /dev/null @@ -1,23 +0,0 @@ -{% load admin_list %} -{% load i18n %} -

    - {% if pagination_required %} - {% for i in page_range %} - {% paginator_number cl i %} - {% endfor %} - {% endif %} - {{ cl.result_count }} - {% if cl.result_count == 1 %} - {{ cl.opts.verbose_name }} - {% else %} - {{ cl.opts.verbose_name_plural }} - {% endif %} - {% if show_all_url %} - - {% translate 'Show all' %} - - {% endif %} - {% if cl.formset and cl.result_count %} - - {% endif %} -

    diff --git a/tests/django_admin/admin/popup_response.html b/tests/django_admin/admin/popup_response.html deleted file mode 100644 index 830bbc3..0000000 --- a/tests/django_admin/admin/popup_response.html +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n static %} - - - - {% translate 'Popup closing…' %} - - - - - diff --git a/tests/django_admin/admin/prepopulated_fields_js.html b/tests/django_admin/admin/prepopulated_fields_js.html deleted file mode 100644 index c42ebcd..0000000 --- a/tests/django_admin/admin/prepopulated_fields_js.html +++ /dev/null @@ -1,2 +0,0 @@ -{% load static %} - diff --git a/tests/django_admin/admin/search_form.html b/tests/django_admin/admin/search_form.html deleted file mode 100644 index adf76c7..0000000 --- a/tests/django_admin/admin/search_form.html +++ /dev/null @@ -1,44 +0,0 @@ -{% load i18n static %} -{% if cl.search_fields %} -
    - -
    -{% endif %} diff --git a/tests/django_admin/admin/submit_line.html b/tests/django_admin/admin/submit_line.html deleted file mode 100644 index dee59b6..0000000 --- a/tests/django_admin/admin/submit_line.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load i18n admin_urls %} -
    - {% block submit-row %} - {% if show_save %} - - {% endif %} - {% if show_delete_link and original %} - {% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %} - - {% endif %} - {% if show_save_as_new %} - - {% endif %} - {% if show_save_and_add_another %} - - {% endif %} - {% if show_save_and_continue %} - - {% endif %} - {% if show_close %} - - {% translate 'Close' %} - - {% endif %} - {% endblock %} -
    diff --git a/tests/django_admin/admin/widgets/clearable_file_input.html b/tests/django_admin/admin/widgets/clearable_file_input.html deleted file mode 100644 index 0197dab..0000000 --- a/tests/django_admin/admin/widgets/clearable_file_input.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if widget.is_initial %} -

    - {{ widget.initial_text }}: - {{ widget.value }} - {% if not widget.required %} - - - - - {% endif %} -
    - {{ widget.input_text }}: - {% endif %} - - {% if widget.is_initial %}

    {% endif %} diff --git a/tests/django_admin/admin/widgets/foreign_key_raw_id.html b/tests/django_admin/admin/widgets/foreign_key_raw_id.html deleted file mode 100644 index ee61804..0000000 --- a/tests/django_admin/admin/widgets/foreign_key_raw_id.html +++ /dev/null @@ -1,11 +0,0 @@ -{% include 'django/forms/widgets/input.html' %} -{% if related_url %} - -{% endif %} -{% if link_label %} - - {% if link_url %}{% endif %} - {{ link_label }} - {% if link_url %}{% endif %} - -{% endif %} diff --git a/tests/django_admin/admin/widgets/many_to_many_raw_id.html b/tests/django_admin/admin/widgets/many_to_many_raw_id.html deleted file mode 100644 index 0dd0331..0000000 --- a/tests/django_admin/admin/widgets/many_to_many_raw_id.html +++ /dev/null @@ -1 +0,0 @@ -{% include 'admin/widgets/foreign_key_raw_id.html' %} diff --git a/tests/django_admin/admin/widgets/radio.html b/tests/django_admin/admin/widgets/radio.html deleted file mode 100644 index 780899a..0000000 --- a/tests/django_admin/admin/widgets/radio.html +++ /dev/null @@ -1 +0,0 @@ -{% include "django/forms/widgets/multiple_input.html" %} diff --git a/tests/django_admin/admin/widgets/related_widget_wrapper.html b/tests/django_admin/admin/widgets/related_widget_wrapper.html deleted file mode 100644 index 295f23d..0000000 --- a/tests/django_admin/admin/widgets/related_widget_wrapper.html +++ /dev/null @@ -1,34 +0,0 @@ -{% load i18n static %} - diff --git a/tests/django_admin/admin/widgets/split_datetime.html b/tests/django_admin/admin/widgets/split_datetime.html deleted file mode 100644 index 9355a62..0000000 --- a/tests/django_admin/admin/widgets/split_datetime.html +++ /dev/null @@ -1,11 +0,0 @@ -

    - {{ date_label }} - {% with widget=widget.subwidgets.0 %} - {% include widget.template_name %} - {% endwith %} -
    - {{ time_label }} - {% with widget=widget.subwidgets.1 %} - {% include widget.template_name %} - {% endwith %} -

    diff --git a/tests/django_admin/admin/widgets/url.html b/tests/django_admin/admin/widgets/url.html deleted file mode 100644 index 2777d8a..0000000 --- a/tests/django_admin/admin/widgets/url.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if url_valid %} -

    - {{ current_label }} - {{ widget.value }} -
    - {{ change_label }} - {% endif %} - {% include "django/forms/widgets/input.html" %} - {% if url_valid %}

    {% endif %} diff --git a/tests/django_admin/registration/logged_out.html b/tests/django_admin/registration/logged_out.html deleted file mode 100644 index be03861..0000000 --- a/tests/django_admin/registration/logged_out.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block nav-sidebar %}{% endblock %} -{% block content %} -

    - {% translate "Thanks for spending some quality time with the Web site today." %} -

    -

    - {% translate 'Log in again' %} -

    -{% endblock %} diff --git a/tests/django_admin/registration/password_change_done.html b/tests/django_admin/registration/password_change_done.html deleted file mode 100644 index 27a1a2e..0000000 --- a/tests/django_admin/registration/password_change_done.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block userlinks %} - {% url 'django-admindocs-docroot' as docsroot %} - {% if docsroot %} - {% translate 'Documentation' %} - / - {% endif %} - {% translate 'Change password' %} / - {% translate 'Log out' %} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -

    - {% translate 'Your password was changed.' %} -

    -{% endblock %} diff --git a/tests/django_admin/registration/password_change_form.html b/tests/django_admin/registration/password_change_form.html deleted file mode 100644 index 058fecc..0000000 --- a/tests/django_admin/registration/password_change_form.html +++ /dev/null @@ -1,69 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block userlinks %} - {% url 'django-admindocs-docroot' as docsroot %} - {% if docsroot %} - {% translate 'Documentation' %} - / - {% endif %} - {% translate 'Change password' %} / - {% translate 'Log out' %} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -
    -
    - {% csrf_token %} -
    - {% if form.errors %} -

    - {% if form.errors.items|length == 1 %} - {% translate "Please correct the error below." %} - {% else %} - {% translate "Please correct the errors below." %} - {% endif %} -

    - {% endif %} -

    - {% translate 'Please enter your old password, for security’s sake, and then enter your new password twice so we can verify you typed it in correctly.' %} -

    -
    -
    - {{ form.old_password.errors }} - {{ form.old_password.label_tag }} {{ form.old_password }} -
    -
    - {{ form.new_password1.errors }} - {{ form.new_password1.label_tag }} {{ form.new_password1 }} - {% if form.new_password1.help_text %} -
    - {{ form.new_password1.help_text|safe }} -
    - {% endif %} -
    -
    - {{ form.new_password2.errors }} - {{ form.new_password2.label_tag }} {{ form.new_password2 }} - {% if form.new_password2.help_text %} -
    - {{ form.new_password2.help_text|safe }} -
    - {% endif %} -
    -
    -
    - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_admin/registration/password_reset_complete.html b/tests/django_admin/registration/password_reset_complete.html deleted file mode 100644 index 2ed2b87..0000000 --- a/tests/django_admin/registration/password_reset_complete.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -

    - {% translate "Your password has been set. You may go ahead and log in now." %} -

    -

    - {% translate 'Log in' %} -

    -{% endblock %} diff --git a/tests/django_admin/registration/password_reset_confirm.html b/tests/django_admin/registration/password_reset_confirm.html deleted file mode 100644 index be40a0e..0000000 --- a/tests/django_admin/registration/password_reset_confirm.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} - {% if validlink %} -

    - {% translate "Please enter your new password twice so we can verify you typed it in correctly." %} -

    -
    - {% csrf_token %} -
    - -
    - {{ form.new_password1.errors }} - - {{ form.new_password1 }} -
    -
    - {{ form.new_password2.errors }} - - {{ form.new_password2 }} -
    - -
    -
    - {% else %} -

    - {% translate "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %} -

    - {% endif %} -{% endblock %} diff --git a/tests/django_admin/registration/password_reset_done.html b/tests/django_admin/registration/password_reset_done.html deleted file mode 100644 index c4dfd5f..0000000 --- a/tests/django_admin/registration/password_reset_done.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -

    - {% translate 'We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.' %} -

    -

    - {% translate 'If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.' %} -

    -{% endblock %} diff --git a/tests/django_admin/registration/password_reset_email.html b/tests/django_admin/registration/password_reset_email.html deleted file mode 100644 index da66e81..0000000 --- a/tests/django_admin/registration/password_reset_email.html +++ /dev/null @@ -1,15 +0,0 @@ -{% load i18n %} -{% autoescape off %} -{% blocktranslate %} - You're receiving this email because you requested a password reset for your user account at {{ site_name }}. -{% endblocktranslate %} -{% translate "Please go to the following page and choose a new password:" %} -{% block reset_link %} - {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} -{% endblock %} -{% translate 'Your username, in case you’ve forgotten:' %} {{ user.get_username }} -{% translate "Thanks for using our site!" %} -{% blocktranslate %} - The {{ site_name }} team -{% endblocktranslate %} -{% endautoescape %} diff --git a/tests/django_admin/registration/password_reset_form.html b/tests/django_admin/registration/password_reset_form.html deleted file mode 100644 index a9bee27..0000000 --- a/tests/django_admin/registration/password_reset_form.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} -{% block extrastyle %} - {{ block.super }} - -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -

    - {% translate 'Forgotten your password? Enter your email address below, and we’ll email instructions for setting a new one.' %} -

    -
    - {% csrf_token %} -
    -
    - {{ form.email.errors }} - - {{ form.email }} -
    - -
    -
    -{% endblock %} diff --git a/tests/django_cms/admin/cms/extensions/change_form.html b/tests/django_cms/admin/cms/extensions/change_form.html deleted file mode 100644 index 13c2e7d..0000000 --- a/tests/django_cms/admin/cms/extensions/change_form.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n admin_urls %} -{% block submit_buttons_bottom %} -
    - - {% if not add %} - - {% endif %} -
    -{% endblock %} diff --git a/tests/django_cms/admin/cms/mail/base.html b/tests/django_cms/admin/cms/mail/base.html deleted file mode 100644 index 90e6e0e..0000000 --- a/tests/django_cms/admin/cms/mail/base.html +++ /dev/null @@ -1,71 +0,0 @@ -{% load i18n %} - - - - {{ title }} - - - - - - - - - - - - -
    -
    -

    {{ title }}

    - {% block header %}{% endblock %} -
    - {% block content %}{% endblock %} -
    -

    - {% blocktrans %} - Log in to administration - here - . - {% endblocktrans %} -

    -

    - Generated by - django cms - {% now "d.m.Y H:i:s" %}. -

    -
    - - diff --git a/tests/django_cms/admin/cms/mail/base.txt b/tests/django_cms/admin/cms/mail/base.txt deleted file mode 100644 index 9e7d387..0000000 --- a/tests/django_cms/admin/cms/mail/base.txt +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n %} - -{{ title }} --------------- -{% block header %}{% endblock %} -{% block content %}{% endblock %} - -{% blocktrans %}Login url: {{ login_url }}{% endblocktrans %} - -[Generated by: http://www.django-cms.org {% now "d.m.Y H:i:s" %}.] diff --git a/tests/django_cms/admin/cms/mail/page_user_change.html b/tests/django_cms/admin/cms/mail/page_user_change.html deleted file mode 100644 index 571e384..0000000 --- a/tests/django_cms/admin/cms/mail/page_user_change.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends 'admin/cms/mail/base.html' %} -{% load i18n %} -{% block content %} - - - - - - - - - -
    {% trans 'Username:' %}{{ user.username }}
    {% trans 'Password:' %}{{ password }}
    -{% endblock %} diff --git a/tests/django_cms/admin/cms/mail/page_user_change.txt b/tests/django_cms/admin/cms/mail/page_user_change.txt deleted file mode 100644 index e901847..0000000 --- a/tests/django_cms/admin/cms/mail/page_user_change.txt +++ /dev/null @@ -1,7 +0,0 @@ -{% extends 'admin/cms/mail/base.txt' %} -{% load i18n %} - -{% block content %} - {% trans 'Username:' %} {{ user.username }} - {% trans 'Password:' %} {{ password }} -{% endblock %} diff --git a/tests/django_cms/admin/cms/page/change_form.html b/tests/django_cms/admin/cms/page/change_form.html deleted file mode 100644 index c5a5b74..0000000 --- a/tests/django_cms/admin/cms/page/change_form.html +++ /dev/null @@ -1,133 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n admin_urls static admin_modify admin_urls cms_admin cms_static %} -{% block title %} - {% if add %} - {% trans 'Add a page' %} - {% else %} - {% trans "Change a page" %} - {% endif %} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block extrahead %} - - - - - {{ block.super }} -{% endblock %} -{% block content_title %} - {% if title %}

    {{ title }}

    {% endif %} - {% if not popup and not add %} - - {% endif %} -{% endblock %} -{% block content %} -
    - {% block object-tools %}{% endblock %} -
    - {% csrf_token %} - {% block form_top %}{% endblock %} -
    - {% if show_language_tabs and not show_permissions %} -
    - {% for lang_code, lang_name in language_tabs %} - - {% endfor %} -
    -
    - {% endif %} -
    - {% if is_popup %}{% endif %} - {% if save_on_top %}{% submit_row %}{% endif %} - {% if errors %} -

    - {% blocktrans count errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} -

    -
      {% for error in adminform.form.non_field_errors %}
    • {{ error }}
    • {% endfor %}
    - {% endif %} - {% for fieldset in adminform %} - {% include "admin/cms/page/includes/fieldset.html" %}{% endfor %} - {% for inline_admin_formset in inline_admin_formsets %} - {% include inline_admin_formset.opts.template %}{% endfor %} - {% if show_permissions %} - {% if CMS_PERMISSION and can_change_permissions %} -
    - -
    - {% endif %} - {% endif %} - {% block after_related_objects %}{% endblock %} - {% if add %} -
    - - -
    - {% else %} - {% page_submit_row %} - {% endif %} -
    -
    -
    - {% block admin_change_form_document_ready %} - {{ block.super }} - {% endblock %} - {% for url in unihandecode_urls %}{% endfor %} - {% if unihandecode_urls %} - - {% endif %} - {# JavaScript for prepopulated fields #} - {% prepopulated_fields_js %} - {% endblock %} diff --git a/tests/django_cms/admin/cms/page/close_frame.html b/tests/django_cms/admin/cms/page/close_frame.html deleted file mode 100644 index dd8df67..0000000 --- a/tests/django_cms/admin/cms/page/close_frame.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n l10n static cms_static %} -{% block title %} - {% trans "Change a page" %} -{% endblock %} -{% block content %} - {# trick for cms to understand that the plugin was actually correctly saved #} -
    -
    -
    - - -{% endblock %} diff --git a/tests/django_cms/admin/cms/page/includes/fieldset.html b/tests/django_cms/admin/cms/page/includes/fieldset.html deleted file mode 100644 index e95a550..0000000 --- a/tests/django_cms/admin/cms/page/includes/fieldset.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "admin/includes/fieldset.html" %} diff --git a/tests/django_cms/admin/cms/page/permissions.html b/tests/django_cms/admin/cms/page/permissions.html deleted file mode 100644 index a0d7ca4..0000000 --- a/tests/django_cms/admin/cms/page/permissions.html +++ /dev/null @@ -1,73 +0,0 @@ -{% load i18n cms_admin cms_tags admin_urls %} -{% if rows %} - - - - - - - - - - - - - - - - - - {% for row in rows %} - {% with permission=row.permission %} - - - - - - - - - - - - - - {% endwith %} - {% endfor %} - -
    {% trans "Page" %}{% trans "User" %}{% trans "Group" %}{% trans "Can edit" %}{% trans "Can add" %}{% trans "Can delete" %}{% trans "Can publish" %}{% trans "Can change permissions" %}{% trans "Can move" %}{% trans "Can view" %}{% trans "Grant on" %}
    - {% if row.is_global %} - {% if row.can_change %} - - {% trans "(global)" %} - - {% else %} - {% trans "(global)" %} - {% endif %} - {% else %} - {% if permission.page_id == page.id %} - {% trans "(current)" %} - {% else %} - {% if row.can_change %} - - {{ permission.page }} - - {% else %} - {{ permission.page }} - {% endif %} - {% endif %} - {% endif %} - {{ permission.user|default_if_none:"-" }}{{ permission.group|default_if_none:"-" }}{{ permission.can_change|boolean_icon }}{{ permission.can_add|boolean_icon }}{{ permission.can_delete|boolean_icon }}{{ permission.can_publish|boolean_icon }} - {{ permission.can_change_permissions|boolean_icon }} - {{ permission.can_move_page|boolean_icon }}{{ permission.can_view|boolean_icon }} - {% if row.is_global %} - {% trans "All" %} - {% else %} - {{ permission.get_grant_on_display }} - {% endif %} -
    -{% else %} -

    - {% trans "Page doesn't inherit any permissions." %} -

    -{% endif %} diff --git a/tests/django_cms/admin/cms/page/plugin/change_form.html b/tests/django_cms/admin/cms/page/plugin/change_form.html deleted file mode 100644 index 7ee17e1..0000000 --- a/tests/django_cms/admin/cms/page/plugin/change_form.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load cms_admin cms_static %} -{% block extrahead %} - {# in case plugins require widgets, they need to have bundle here #} - - - {{ block.super }} -{% endblock %} -{% block submit_buttons_bottom %} - {% submit_row_plugin %} -{% endblock %} diff --git a/tests/django_cms/admin/cms/page/plugin/confirm_form.html b/tests/django_cms/admin/cms/page/plugin/confirm_form.html deleted file mode 100644 index abf89d7..0000000 --- a/tests/django_cms/admin/cms/page/plugin/confirm_form.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "admin/cms/page/close_frame.html" %} diff --git a/tests/django_cms/admin/cms/page/plugin/delete_confirmation.html b/tests/django_cms/admin/cms/page/plugin/delete_confirmation.html deleted file mode 100644 index e99f71e..0000000 --- a/tests/django_cms/admin/cms/page/plugin/delete_confirmation.html +++ /dev/null @@ -1,3 +0,0 @@ -{% extends "admin/delete_confirmation.html" %} -{% load i18n admin_urls cms_tags %} -{% block breadcrumbs %}{% endblock %} diff --git a/tests/django_cms/admin/cms/page/plugin/error_form.html b/tests/django_cms/admin/cms/page/plugin/error_form.html deleted file mode 100644 index e9fee09..0000000 --- a/tests/django_cms/admin/cms/page/plugin/error_form.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n l10n static %} -{% block title %} - {% trans "Edit model" %} -{% endblock %} -{% block content %} -
    - {% csrf_token %} -
    -
    -
    - {{ message }} -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_cms/admin/cms/page/plugin/submit_line.html b/tests/django_cms/admin/cms/page/plugin/submit_line.html deleted file mode 100644 index 852a398..0000000 --- a/tests/django_cms/admin/cms/page/plugin/submit_line.html +++ /dev/null @@ -1,22 +0,0 @@ -{% load i18n admin_urls cms_tags %} -
    - {% if show_save %} - - {% endif %} - {% if show_delete_link %} - - {% endif %} - {% if show_save_as_new %} - - {% endif %} - {% if show_save_and_add_another %} - - {% endif %} - {% if show_save_and_continue %} - - {% endif %} -
    diff --git a/tests/django_cms/admin/cms/page/submit_row.html b/tests/django_cms/admin/cms/page/submit_row.html deleted file mode 100644 index f159527..0000000 --- a/tests/django_cms/admin/cms/page/submit_row.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load i18n cms_tags admin_urls %} -
    - {% if show_save %} - - {% endif %} - - {% if show_save_as_new %} - - {% endif %} - {% if show_save_and_add_another %} - - {% endif %} - {% if show_save_and_continue %} - - {% endif %} -
    diff --git a/tests/django_cms/admin/cms/page/tree/actions_dropdown.html b/tests/django_cms/admin/cms/page/tree/actions_dropdown.html deleted file mode 100644 index fd35e8c..0000000 --- a/tests/django_cms/admin/cms/page/tree/actions_dropdown.html +++ /dev/null @@ -1,154 +0,0 @@ -{% load i18n admin_urls %} -{% spaceless %} - - {% endspaceless %} diff --git a/tests/django_cms/admin/cms/page/tree/base.html.broken b/tests/django_cms/admin/cms/page/tree/base.html.broken deleted file mode 100644 index 891ca49..0000000 --- a/tests/django_cms/admin/cms/page/tree/base.html.broken +++ /dev/null @@ -1,182 +0,0 @@ -{% extends "admin/change_list.html" %} -{% load i18n admin_list static admin_urls cms_admin cms_js_tags cms_static cms_tags %} - -{# TODO might not need that #} -{% block title %}{% trans "List of pages" %}{% endblock %} -{% block bodyclass %}{{ block.super }} change-list cms-pagetree-wrapper{% endblock %} -{% block coltype %}flex{% endblock %} -{% block date_hierarchy %}{% endblock %} -{% block pagination %}{% endblock %} - -{% block extrahead %} - {{ block.super }} - {# INFO: we need to add styles here instead of "extrastyle" to avoid conflicts with adminstyle #} - - - - -{% endblock extrahead %} - -{% if not is_popup %} - {% block breadcrumbs %} - - {% endblock %} -{% endif %} - -{% block content_title %}{% endblock %} - -{% block content %} - {% spaceless %} -
    -
    -
    -
    -
    -
    -
    -

    - {% trans "Page Tree" %} ({{ tree.site.name }}) -

    -
    - - {% if tree.is_filtered or request.GET.q %} - {# INFO: show reset button when filtering is active #} - {% trans "Reset filter"|lower %} - {% endif %} -
    - -
    -
    - -
    - {# INFO: hidden search field with dynamic content #} -
    -
    - -
    -
    -
    - - {# INFO: dropdown for changing sites and recover deleted pages #} -
    - - - -
    - -
    - {# INFO: hidden site form when using the dropdown site switcher #} -
    - - {% csrf_token %} -
    -
    - - {# INFO: "new page" button #} - {% if has_add_permission %} - - {% blocktrans with opts.verbose_name|title as name %} - New {{ name }} - {% endblocktrans %} - - {% endif %} -
    -
    - -
    {% csrf_token %} -
    -

    {% trans "Main Navigation" %}

    -
    - {% if has_add_permission %} - - {% endif %} -
    -
    - - {# INFO: javascript is loaded from cms.pagetree.js #} - -
    - - {# INFO: used when copying nodes #} -
    -
    -
    - {% endspaceless %} -{% endblock content %} diff --git a/tests/django_cms/admin/cms/page/tree/copy_premissions.html b/tests/django_cms/admin/cms/page/tree/copy_premissions.html deleted file mode 100644 index 357da2f..0000000 --- a/tests/django_cms/admin/cms/page/tree/copy_premissions.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -
    -

    {% trans "Copy options" %}

    -

    - {% trans "Choose copy options" %} -

    -
    - {% csrf_token %} - {{ form.as_p }} -
    - - -
    -
    -
    -
    diff --git a/tests/django_cms/admin/cms/page/tree/filter.html b/tests/django_cms/admin/cms/page/tree/filter.html deleted file mode 100644 index fdb9299..0000000 --- a/tests/django_cms/admin/cms/page/tree/filter.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load i18n %} -

    {{ field.label }}

    - diff --git a/tests/django_cms/admin/cms/page/tree/legend.html b/tests/django_cms/admin/cms/page/tree/legend.html deleted file mode 100644 index a0d65b4..0000000 --- a/tests/django_cms/admin/cms/page/tree/legend.html +++ /dev/null @@ -1,75 +0,0 @@ -{% load i18n %} -{% spaceless %} -
    - -
    - - {% trans "Legend" %} -
    -
    -
      -
    • - - - {% trans "Published" %} - -
    • -
    • - - - {% trans "Changed" %} - -
    • -
    • - - - {% trans "Unpublished" %} - -
    • -
    • - - - {% trans "Empty" %} - -
    • -
    • - - - {% trans "In menu" %} - -
    • -
    • - - - {% trans "Not in menu" %} - -
    • -
    • - - - {% trans "View page" %} - -
    • -
    • - - - {% trans "Home" %} - -
    • -
    • - - - {% trans "Softroot" %} - -
    • -
    • - - - {% trans "Apphook" %} - -
    • -
    -
    -
    -
    -{% endspaceless %} diff --git a/tests/django_cms/admin/cms/page/tree/menu.html.brocken b/tests/django_cms/admin/cms/page/tree/menu.html.brocken deleted file mode 100644 index b2be5f5..0000000 --- a/tests/django_cms/admin/cms/page/tree/menu.html.brocken +++ /dev/null @@ -1,282 +0,0 @@ -{% load i18n cms_admin admin_urls %} - -{# INFO: columns are defined in base.html options #} -{% spaceless %} - -{% endspaceless %} diff --git a/tests/django_cms/admin/cms/usersettings/change_form.html b/tests/django_cms/admin/cms/usersettings/change_form.html deleted file mode 100644 index 5b8006b..0000000 --- a/tests/django_cms/admin/cms/usersettings/change_form.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n cms_tags %} -{% block extrahead %} - {{ block.super }} - -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block object-tools %}{% endblock %} -{% block submit_buttons_bottom %} -
    - -
    -{% endblock %} diff --git a/tests/django_cms/cms/content.html b/tests/django_cms/cms/content.html deleted file mode 100644 index cddd070..0000000 --- a/tests/django_cms/cms/content.html +++ /dev/null @@ -1 +0,0 @@ -{{ content }} diff --git a/tests/django_cms/cms/dummy.html b/tests/django_cms/cms/dummy.html deleted file mode 100644 index f04fcf5..0000000 --- a/tests/django_cms/cms/dummy.html +++ /dev/null @@ -1 +0,0 @@ -{% extends template %} diff --git a/tests/django_cms/cms/plugins/alias.html b/tests/django_cms/cms/plugins/alias.html deleted file mode 100644 index 2982692..0000000 --- a/tests/django_cms/cms/plugins/alias.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load cms_alias_tags %} -{% if request and not instance.is_recursive %} - {% render_alias_plugin instance %} -{% endif %} diff --git a/tests/django_cms/cms/toolbar/clipboard.html b/tests/django_cms/cms/toolbar/clipboard.html deleted file mode 100644 index 58c14fe..0000000 --- a/tests/django_cms/cms/toolbar/clipboard.html +++ /dev/null @@ -1,9 +0,0 @@ -{% load i18n cms_admin %} -
    -
    -
    - {% if clipboard_plugin %} - {% include cms_toolbar.templates.drag_item_template with clipboard="true" plugin=clipboard_plugin %} - {% endif %} -
    -
    diff --git a/tests/django_cms/cms/toolbar/content.html b/tests/django_cms/cms/toolbar/content.html deleted file mode 100644 index 4a428d2..0000000 --- a/tests/django_cms/cms/toolbar/content.html +++ /dev/null @@ -1,2 +0,0 @@ -{% if edit and placeholder %}{{ placeholder }}{% endif %} -{{ content }} diff --git a/tests/django_cms/cms/toolbar/dragbar.html b/tests/django_cms/cms/toolbar/dragbar.html deleted file mode 100644 index 841b57f..0000000 --- a/tests/django_cms/cms/toolbar/dragbar.html +++ /dev/null @@ -1,66 +0,0 @@ -{% load i18n l10n cms_tags %} -
    -
    - -
    -
    -
    -
    - - {% for language in placeholder.get_filled_languages %} - {% if language.code != LANGUAGE_CODE %} - - {% endif %} - {% endfor %} - - - {% render_extra_menu_items placeholder %} -
    -
    -
    -
    - -
    - {# plugin child classes here #} -
    -
    - {{ placeholder.get_label }} - {% if placeholder.is_static %} - - - - {% endif %} - - - {% trans "Expand all" %} - - - {% trans "Collapse all" %} - - -
    -
    diff --git a/tests/django_cms/cms/toolbar/dragitem.html b/tests/django_cms/cms/toolbar/dragitem.html deleted file mode 100644 index 5bee299..0000000 --- a/tests/django_cms/cms/toolbar/dragitem.html +++ /dev/null @@ -1,79 +0,0 @@ -{% load i18n l10n cms_tags %} -{% with allow_children=plugin.get_plugin_class.allow_children disable_child_plugins=plugin.get_plugin_class.disable_child_plugins %} -
    -
    - {% if not disabled_child %} -
    - -
    -
    - {% if not allow_children %} - - {% else %} - - {% endif %} -
    -
    - {% else %} -
    - -
    - {% endif %} -
    -
    - - - - - {% render_extra_menu_items plugin %} -
    -
    - {% if not clipboard %} -
    -
    - -
    - {# plugin child classes here #} -
    - {% endif %} - - {{ plugin.get_plugin_name }} - {{ plugin.get_short_description }} - -
    -
    - {% if plugin.child_plugin_instances %} - {% for child in plugin.child_plugin_instances %} - {% include cms_toolbar.templates.drag_item_template with plugin=child disabled_child=disable_child_plugins %}{% endfor %} - {% endif %} -
    -
    - {% endwith %} diff --git a/tests/django_cms/cms/toolbar/dragitem_extra_menu.html b/tests/django_cms/cms/toolbar/dragitem_extra_menu.html deleted file mode 100644 index 623feec..0000000 --- a/tests/django_cms/cms/toolbar/dragitem_extra_menu.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load i18n %} - -{% for item in items %} - -{% endfor %} diff --git a/tests/django_cms/cms/toolbar/dragitem_menu.html b/tests/django_cms/cms/toolbar/dragitem_menu.html deleted file mode 100644 index b0d379b..0000000 --- a/tests/django_cms/cms/toolbar/dragitem_menu.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load i18n %} -{% regroup plugin_menu by module as module_list %} -{% for module in module_list %} -
    - - {% if module.grouper %} - {{ module.grouper|capfirst }} - {% else %} - {% trans "Available plugins" %} - {% endif %} - -
    - {% for p in module.list %} - {% if p.value != 'AliasPlugin' and p.value != 'PlaceholderPlugin' %} - - {% endif %} - {% endfor %} -{% endfor %} diff --git a/tests/django_cms/cms/toolbar/items/break.html b/tests/django_cms/cms/toolbar/items/break.html deleted file mode 100644 index b457173..0000000 --- a/tests/django_cms/cms/toolbar/items/break.html +++ /dev/null @@ -1,3 +0,0 @@ -
  • - ----- -
  • diff --git a/tests/django_cms/cms/toolbar/items/button.html b/tests/django_cms/cms/toolbar/items/button.html deleted file mode 100644 index 4b0c543..0000000 --- a/tests/django_cms/cms/toolbar/items/button.html +++ /dev/null @@ -1,4 +0,0 @@ - - {{ name }} - diff --git a/tests/django_cms/cms/toolbar/items/button_list.html b/tests/django_cms/cms/toolbar/items/button_list.html deleted file mode 100644 index bd11efb..0000000 --- a/tests/django_cms/cms/toolbar/items/button_list.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -{% if 'cms-toolbar-item-cms-mode-switcher' in extra_classes %} -
    - - - -
    -{% else %} -
    - {% for button in buttons %}{{ button.render }}{% endfor %} -
    -{% endif %} diff --git a/tests/django_cms/cms/toolbar/items/button_modal.html b/tests/django_cms/cms/toolbar/items/button_modal.html deleted file mode 100644 index 190e93d..0000000 --- a/tests/django_cms/cms/toolbar/items/button_modal.html +++ /dev/null @@ -1,5 +0,0 @@ - - {{ name }} - diff --git a/tests/django_cms/cms/toolbar/items/button_sideframe.html b/tests/django_cms/cms/toolbar/items/button_sideframe.html deleted file mode 100644 index e8f61e0..0000000 --- a/tests/django_cms/cms/toolbar/items/button_sideframe.html +++ /dev/null @@ -1,5 +0,0 @@ - - {{ name }} - diff --git a/tests/django_cms/cms/toolbar/items/dropdown.html b/tests/django_cms/cms/toolbar/items/dropdown.html deleted file mode 100644 index 2cea9cb..0000000 --- a/tests/django_cms/cms/toolbar/items/dropdown.html +++ /dev/null @@ -1,20 +0,0 @@ -
    - {% if primary_button.has_no_action %} - {{ primary_button.render }} - {% else %} -
    - {{ primary_button.render }} - - - -
    - {% endif %} -
      - {% for button in buttons %} -
    • - {{ button.render }} -
    • - {% endfor %} -
    -
    diff --git a/tests/django_cms/cms/toolbar/items/dropdown_button.html b/tests/django_cms/cms/toolbar/items/dropdown_button.html deleted file mode 100644 index ecdc8b6..0000000 --- a/tests/django_cms/cms/toolbar/items/dropdown_button.html +++ /dev/null @@ -1,5 +0,0 @@ - - {{ name }} - - diff --git a/tests/django_cms/cms/toolbar/items/item_ajax.html b/tests/django_cms/cms/toolbar/items/item_ajax.html deleted file mode 100644 index 7df7dd0..0000000 --- a/tests/django_cms/cms/toolbar/items/item_ajax.html +++ /dev/null @@ -1,12 +0,0 @@ -
  • - - - {{ name }} - - -
  • diff --git a/tests/django_cms/cms/toolbar/items/item_link.html b/tests/django_cms/cms/toolbar/items/item_link.html deleted file mode 100644 index 9a14832..0000000 --- a/tests/django_cms/cms/toolbar/items/item_link.html +++ /dev/null @@ -1,9 +0,0 @@ -
  • - - - {{ name }} - - -
  • diff --git a/tests/django_cms/cms/toolbar/items/item_modal.html b/tests/django_cms/cms/toolbar/items/item_modal.html deleted file mode 100644 index 137ffca..0000000 --- a/tests/django_cms/cms/toolbar/items/item_modal.html +++ /dev/null @@ -1,11 +0,0 @@ -
  • - - - {{ name }} - - -
  • diff --git a/tests/django_cms/cms/toolbar/items/item_sideframe.html b/tests/django_cms/cms/toolbar/items/item_sideframe.html deleted file mode 100644 index 1081c7f..0000000 --- a/tests/django_cms/cms/toolbar/items/item_sideframe.html +++ /dev/null @@ -1,11 +0,0 @@ -
  • - - - {{ name }} - - -
  • diff --git a/tests/django_cms/cms/toolbar/items/live_draft.html b/tests/django_cms/cms/toolbar/items/live_draft.html deleted file mode 100644 index 81c448b..0000000 --- a/tests/django_cms/cms/toolbar/items/live_draft.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -{% spaceless %} -
    - {% if cms_toolbar.edit_mode_active %} - - {% trans "View published" %} - - {% else %} - - {% trans "Edit" %} - - {% endif %} -
    -{% endspaceless %} diff --git a/tests/django_cms/cms/toolbar/items/login.html b/tests/django_cms/cms/toolbar/items/login.html deleted file mode 100644 index fb0f3a6..0000000 --- a/tests/django_cms/cms/toolbar/items/login.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n sekizai_tags cms_tags %} -{% url 'logout' as logout_url %} - diff --git a/tests/django_cms/cms/toolbar/items/logo.html b/tests/django_cms/cms/toolbar/items/logo.html deleted file mode 100644 index 0001196..0000000 --- a/tests/django_cms/cms/toolbar/items/logo.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load i18n %} - diff --git a/tests/django_cms/cms/toolbar/items/menu.html b/tests/django_cms/cms/toolbar/items/menu.html deleted file mode 100644 index 4549960..0000000 --- a/tests/django_cms/cms/toolbar/items/menu.html +++ /dev/null @@ -1,14 +0,0 @@ -
  • - - - {{ title }} - - - {% if items %} -
      - {% for item in items %}{{ item.render }}{% endfor %} -
    - {% endif %} -
  • diff --git a/tests/django_cms/cms/toolbar/plugin.html b/tests/django_cms/cms/toolbar/plugin.html deleted file mode 100644 index aa4dc11..0000000 --- a/tests/django_cms/cms/toolbar/plugin.html +++ /dev/null @@ -1,44 +0,0 @@ -{% spaceless %} - {% load i18n l10n sekizai_tags static cms_tags %} - -{% endspaceless %} -{% if content %} - {{ content }}{% elif render_model_icon %} - -{% elif render_model_add %} - -{% else %} - {{ rendered_content }} -{% endif %} -{% spaceless %} - - {% addtoblock "js" %} - -CMS._plugins.push(['cms-plugin-{% if generic %}{{ generic.app_label }}-{{ generic.model_name }}-{% if attribute_name %}{{ attribute_name|slugify }}-{% endif %}{% endif %}{{ instance.pk|unlocalize }}', { - type: {% if generic %}'generic'{% else %}'plugin'{% endif %}, - placeholder_id: '{{ instance.placeholder_id|unlocalize }}', - plugin_name: '{{ instance.get_plugin_name|default:"" }}', - plugin_type: '{{ instance.plugin_type }}', - plugin_id: '{{ instance.pk|unlocalize }}', - plugin_language: '{{ instance.language|default:"" }}', - {% if instance.node_id %} - plugin_parent: '{{ instance.parent_page.pk|unlocalize }}', - {% else %} - plugin_parent: '{{ instance.parent_id|unlocalize }}', - {% endif %} - plugin_order: '{{ instance.plugin_order }}',{% language request.toolbar.toolbar_language %} - plugin_restriction: [{% for cls in allowed_child_classes %}"{{ cls }}"{% if not forloop.last %},{% endif %}{% endfor %}], - plugin_parent_restriction: [{% for cls in allowed_parent_classes %}"{{ cls }}"{% if not forloop.last %},{% endif %}{% endfor %}], - onClose: {% if refresh_page %}'REFRESH_PAGE'{% else %}{% if redirect_on_close %}'{{ redirect_on_close }}'{% else %}false{% endif %}{% endif %}, - addPluginHelpTitle: '{% trans "Add plugin to" %} {{ instance.get_plugin_name|escapejs }}', - urls: { - add_plugin: '{% if add_url %}{{ add_url }}{% else %}{% cms_admin_url "cms_page_add_plugin" %}{% endif %}', - edit_plugin: '{% if edit_url %}{{ edit_url }}{% elif instance %}{% cms_admin_url "cms_page_edit_plugin" instance.pk %}{% endif %}', - move_plugin: '{% if move_url %}{{ move_url }}{% else %}{% cms_admin_url "cms_page_move_plugin" %}{% endif %}', - delete_plugin: '{% if delete_url %}{{ delete_url }}{% elif instance %}{% cms_admin_url "cms_page_delete_plugin" instance.pk %}{% endif %}', - copy_plugin: '{% if copy_url %}{{ copy_url }}{% else %}{% cms_admin_url "cms_page_copy_plugins" %}{% endif %}' - } {% endlanguage %} -}]); - - {% endaddtoblock %} -{% endspaceless %} diff --git a/tests/django_cms/cms/toolbar/structure.html b/tests/django_cms/cms/toolbar/structure.html deleted file mode 100644 index 031284d..0000000 --- a/tests/django_cms/cms/toolbar/structure.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load cms_tags cms_js_tags i18n sekizai_tags %} - - - - - {{ object.get_page_title }} - {% render_block "css" %} - - - {% cms_toolbar %} - {% render_block "js" %} - {% language cms_toolbar.toolbar_language %} - {% render_cms_structure_js cms_toolbar.structure_renderer object %} - {% endlanguage %} - - diff --git a/tests/django_cms/cms/toolbar/toolbar.html b/tests/django_cms/cms/toolbar/toolbar.html deleted file mode 100644 index 24208e7..0000000 --- a/tests/django_cms/cms/toolbar/toolbar.html +++ /dev/null @@ -1,38 +0,0 @@ -{% load i18n l10n cms_tags cms_js_tags %} -
    - {% block toolbar_top %}{% endblock toolbar_top %} - {# start: toolbar #} -
    -
    -
    - {% include "cms/toolbar/items/logo.html" %} - {% if not user.is_authenticated %} - {% include "cms/toolbar/items/login.html" %} - {% else %} - - {% endif %} -
    -
    - {% for item in cms_toolbar.get_right_items %} - {{ item.render }} - {% endfor %} -
    -
    - {# end: toolbar #} - {% block toolbar_bottom %}{% endblock toolbar_bottom %} -
    diff --git a/tests/django_cms/cms/toolbar/toolbar_javascript.html b/tests/django_cms/cms/toolbar/toolbar_javascript.html deleted file mode 100644 index aebe60f..0000000 --- a/tests/django_cms/cms/toolbar/toolbar_javascript.html +++ /dev/null @@ -1,150 +0,0 @@ -{% load i18n l10n sekizai_tags static cms_tags cms_js_tags cms_static %} -{% addtoblock "css" %} - -{% endaddtoblock %} -{% for css in cms_toolbar.media.render_css %} - {% addtoblock "css" %} - {{ css }} - {% endaddtoblock %} -{% endfor %} -{% addtoblock "js" %} - - -{% endaddtoblock %} -{% if cms_toolbar.clipboard_plugin %}{% render_plugin_init_js cms_toolbar.clipboard_plugin %}{% endif %} -{% for js in cms_toolbar.media.render_js %} - {% addtoblock "js" %}{{ js }}{% endaddtoblock %} - {% endfor %} diff --git a/tests/django_cms/cms/toolbar/toolbar_with_structure.html b/tests/django_cms/cms/toolbar/toolbar_with_structure.html deleted file mode 100644 index 23134ea..0000000 --- a/tests/django_cms/cms/toolbar/toolbar_with_structure.html +++ /dev/null @@ -1,105 +0,0 @@ -{% extends "cms/toolbar/toolbar.html" %} -{% load i18n l10n %} -{% block toolbar_top %} -
    - {% trans "Double-click to edit" %} - -
    -
    - {% trans "Tap to edit" %} - -
    -{% endblock %} -{% block toolbar_bottom %} - {# start: messages #} -
    -
    - -
    -
    -
    - {# end: messages #} -
    -
    -
    -
    -
    - {% spaceless %} -
    -
    - - -
    -
    - -
    -
    - {% endspaceless %} -
    - {% if cms_toolbar.edit_mode_active %} - {% include 'cms/toolbar/clipboard.html' with clipboard_plugin=cms_toolbar.clipboard_plugin %} - {% endif %} -
    -
    - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - {# start: structure #} -
    -
    - {% if cms_renderer.load_structure %} - {% for placeholder in cms_renderer.get_rendered_editable_placeholders %} -
    - {% include cms_toolbar.templates.dragbar_template with placeholder=placeholder %} -
    -
    - {% trans "Drop a plugin here" %} -
    - {% for plugin in placeholder.get_cached_plugins %} - {% include cms_toolbar.templates.drag_item_template with plugin=plugin %} - {% endfor %} -
    -
    - {% endfor %} - {% endif %} -
    -
    - {# end: structure #} - {% if cms_toolbar.redirect_url %} -
    -
    -

    {% trans "This page has no preview!" %}

    -

    - {% trans "It is being redirected to:" %} - {{ cms_toolbar.redirect_url }} -

    -
    -
    - {% endif %} - - {% endblock toolbar_bottom %} diff --git a/tests/django_cms/cms/welcome.html b/tests/django_cms/cms/welcome.html deleted file mode 100644 index b503ef8..0000000 --- a/tests/django_cms/cms/welcome.html +++ /dev/null @@ -1,125 +0,0 @@ - -{% load i18n static cms_tags cms_static sekizai_tags %} - - - - - {% trans "django CMS" %} - - - {% render_block "css" %} - - - - - {% cms_toolbar %} - {% language request.toolbar.toolbar_language %} -
    -
    -

    - - {% trans "Installation successful!" %} -

    - -
    - {{ request.version }} -
    -

    - {% if user.is_authenticated %} - {% trans "Add your first page" %} - {% else %} - {% trans "Please log in" %} - {% endif %} -

    -

    - {% blocktrans %} - Welcome to django CMS version - {{ cms_version }} - . - {% endblocktrans %} -

    -

    - {% url "admin:cms_page_add" as admin_add_page %} - {% if user.is_authenticated %} - {% blocktrans %} - - Add the first page - - to the system to continue. - {% endblocktrans %} - {% else %} - {% blocktrans %} - JavaScript seems to be disabled so please - - add a page - - manually. - {% endblocktrans %} - {% endif %} -

    -
    -
    -

    {% trans "Installation Notes" %}

    - - {% blocktrans %} -

    - If you don't see the django CMS logo at the top, make sure - you linked the - - static/cms - - folder to your - static files. -

    - {% endblocktrans %} - {% if django_debug %} - {% blocktrans %} -

    - You're seeing this message because you have - - DEBUG = True - - in your django settings file and - haven't added any pages yet. -

    - {% endblocktrans %} - {% endif %} -
    -
    - {% endlanguage %} - {% render_block "js" %} - {% language request.toolbar.toolbar_language %} - - {% endlanguage %} - - diff --git a/tests/django_cms/cms/widgets/applicationconfigselect.html b/tests/django_cms/cms/widgets/applicationconfigselect.html deleted file mode 100644 index f46061e..0000000 --- a/tests/django_cms/cms/widgets/applicationconfigselect.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n static %} -{% include 'django/forms/widgets/select.html' %} -{{ widget.script_init|safe }} - diff --git a/tests/django_cms/cms/widgets/pageselectwidget.html b/tests/django_cms/cms/widgets/pageselectwidget.html deleted file mode 100644 index db16509..0000000 --- a/tests/django_cms/cms/widgets/pageselectwidget.html +++ /dev/null @@ -1,2 +0,0 @@ -{% include 'django/forms/widgets/multiwidget.html' %} -{{ widget.script_init|safe }} diff --git a/tests/django_cms/cms/widgets/pagesmartlinkwidget.html b/tests/django_cms/cms/widgets/pagesmartlinkwidget.html deleted file mode 100644 index 81514a1..0000000 --- a/tests/django_cms/cms/widgets/pagesmartlinkwidget.html +++ /dev/null @@ -1,2 +0,0 @@ -{% include 'django/forms/widgets/text.html' %} -{{ widget.script_init|safe }} diff --git a/tests/django_cms/cms/wizards/base.html b/tests/django_cms/cms/wizards/base.html deleted file mode 100755 index 26d901c..0000000 --- a/tests/django_cms/cms/wizards/base.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load static cms_static %} -{% block extrastyle %}{{ block.super }}{% endblock %} -{% block bodyclass %}cms-admin cms-admin-modal{% endblock %} -{% block content %} -
    - {% block wizard %}{% endblock %}
    {% endblock %} - {% block extrahead %} - {{ block.super }} - - - {{ form.media }} - {% endblock %} diff --git a/tests/django_cms/cms/wizards/create.html b/tests/django_cms/cms/wizards/create.html deleted file mode 100755 index 8b5f654..0000000 --- a/tests/django_cms/cms/wizards/create.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "cms/wizards/base.html" %} -{% load i18n admin_urls %} -{% block wizard %} -

    {% trans "Create" %} {{ wizard_entry.title }}

    -
    - {% csrf_token %} - {{ wizard.management_form }} - {% if form.errors %} -

    - {% blocktrans count form.errors|length as counter %} - Please correct the error below.{% plural %}Please correct the errors below. - {% endblocktrans %} -

    - {% endif %} -
    - {% include "cms/wizards/includes/form_fields.html" %} -
    -
    - - -
    -
    -{% endblock %} diff --git a/tests/django_cms/cms/wizards/done.html b/tests/django_cms/cms/wizards/done.html deleted file mode 100644 index 56215f7..0000000 --- a/tests/django_cms/cms/wizards/done.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/tests/django_cms/cms/wizards/includes/form_fields.html b/tests/django_cms/cms/wizards/includes/form_fields.html deleted file mode 100755 index ec1db95..0000000 --- a/tests/django_cms/cms/wizards/includes/form_fields.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load i18n %} -{% csrf_token %} -{{ inlineformset.management_form }} -{% for hidden in form.hidden_fields %}{{ hidden }}{% endfor %} -
    - {% for field in form.visible_fields %} -
    - {% if field.errors %} -
      - {% for error in field.errors %} -
    • - {{ error }} -
    • - {% endfor %} -
    - {% endif %} -
    - - {{ field }} - {% if field.help_text %} -

    - {{ field.help_text }} -

    - {% endif %} -
    -
    - {% endfor %} -
    diff --git a/tests/django_cms/cms/wizards/start.html b/tests/django_cms/cms/wizards/start.html deleted file mode 100755 index eb8bd61..0000000 --- a/tests/django_cms/cms/wizards/start.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "cms/wizards/base.html" %} -{% load i18n %} -{% block wizard %} -

    {% trans "Create" %}

    - -{% endblock %} diff --git a/tests/django_cms/cms/wizards/wizardoptionwidget.html b/tests/django_cms/cms/wizards/wizardoptionwidget.html deleted file mode 100644 index 536899b..0000000 --- a/tests/django_cms/cms/wizards/wizardoptionwidget.html +++ /dev/null @@ -1,11 +0,0 @@ -{% for group, entries, index in widget.optgroups %} - {% for entry in entries %} - - {% endfor %} -{% endfor %} diff --git a/tests/django_ledger/account_create.html b/tests/django_ledger/account_create.html deleted file mode 100644 index 82ebda5..0000000 --- a/tests/django_ledger/account_create.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/account_create_child.html b/tests/django_ledger/account_create_child.html deleted file mode 100644 index 0d84e25..0000000 --- a/tests/django_ledger/account_create_child.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -

    {{ page_title }}

    -

    - {{ account }} -

    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/account_detail.html b/tests/django_ledger/account_detail.html deleted file mode 100644 index fd32dc7..0000000 --- a/tests/django_ledger/account_detail.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block aux_menu %} - {% period_navigation 'account-detail' %} -{% endblock %} -{% block view_content %} -
    -
    -

    {{ account.code }}: {{ account.name }}

    -

    {% trans 'Account Transaction List Report' %}

    -

    - {% if view_date %} - {{ from_date | date:'m/d/Y' }} - {% else %} - {{ from_date | date:'m/d/Y' }} - {{ to_date | date:'m/d/Y' }} - {% endif %} -

    -
    -
    - {% account_txs_table transactions %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/account_list.html b/tests/django_ledger/account_list.html deleted file mode 100644 index aa126eb..0000000 --- a/tests/django_ledger/account_list.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - - {% trans 'Create Account' %} - - - {% trans 'Back' %} - - {% accounts_table asset_accounts 'Asset Accounts' %} - {% accounts_table liability_accounts 'Liability Accounts' %} - {% accounts_table equity_accounts 'Equity Accounts' %} -
    -{% endblock %} diff --git a/tests/django_ledger/account_update.html b/tests/django_ledger/account_update.html deleted file mode 100644 index 64508ba..0000000 --- a/tests/django_ledger/account_update.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/auth/login.html b/tests/django_ledger/auth/login.html deleted file mode 100644 index 316e116..0000000 --- a/tests/django_ledger/auth/login.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load static %} -{% block nav %}{% endblock %} -{% block header %}{% endblock %} -{% block content %} -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - {# -

    - #} - {# Hero title#} - {# -

    - #} - {# -

    - #} - {# Hero subtitle#} - {# -

    - #} -
    - {% csrf_token %} -
    -
    - {{ form }} -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -{% endblock %} -{% block footer %}{% endblock %} diff --git a/tests/django_ledger/balance_sheet.html b/tests/django_ledger/balance_sheet.html deleted file mode 100644 index 7f9b993..0000000 --- a/tests/django_ledger/balance_sheet.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block aux_menu %} - {% if entity %} -
    - {% period_navigation 'entity-bs' %} -
    - {% elif ledger %} -
    - {% period_navigation 'ledger-bs' %} -
    - {% elif unit_model %} -
    - {% period_navigation 'unit-bs' %} -
    - {% endif %} -{% endblock %} -{% block view_content %} -
    -
    -
    -
    -
    - {% if entity %} -

    {% session_entity_name %}

    - {% elif ledger %} -

    {{ ledger.name }}

    - {% elif unit_model %} -

    {{ ledger.name }}

    - {% endif %} -

    {% trans 'Balance Sheet' %}

    - {% if unit_model %} -

    - {{ unit_model.name }} {% trans 'Unit' %} -

    - {% endif %} -

    - {% if quarter %} - {{ year }} | Q{{ quarter }} - {% elif month %}{{ from_date | date:'F, Y' }} - {% else %} - {% trans 'Fiscal Year' %} {{ year }} - {% endif %} -

    -

    - As Of {{ to_date | date:'m/d/Y' }} -

    -
    -
    -
    - {% balance_sheet_table io_model=object to_date=to_date %} - {% if entity %} - - {% trans 'Go Back' %} - - {% elif ledger %} - - {% trans 'Go Back' %} - - {% endif %} - - {% trans 'By Unit' %} - -
    -
    -{% endblock %} diff --git a/tests/django_ledger/bank_account_create.html b/tests/django_ledger/bank_account_create.html deleted file mode 100644 index e720948..0000000 --- a/tests/django_ledger/bank_account_create.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/bank_account_list.html b/tests/django_ledger/bank_account_list.html deleted file mode 100644 index ee0e99f..0000000 --- a/tests/django_ledger/bank_account_list.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - - {% bank_account_table bank_accounts %} -
    -{% endblock %} diff --git a/tests/django_ledger/bank_account_update.html b/tests/django_ledger/bank_account_update.html deleted file mode 100644 index 709d44f..0000000 --- a/tests/django_ledger/bank_account_update.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {{ bank_account.name }}

    -

    - {% trans 'Account' %}: {{ bank_account.account_number }} -

    -

    - {% trans 'Routing' %}: {{ bank_account.routing_number }} -

    -

    {% trans 'ABA' %}: {{ bank_account.aba_number }}

    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/base.html b/tests/django_ledger/base.html deleted file mode 100644 index 11822ea..0000000 --- a/tests/django_ledger/base.html +++ /dev/null @@ -1,40 +0,0 @@ -{% load static %} -{% load django_ledger %} -{% load cache %} - - - - - - {% session_entity_name %} | {{ page_title }} - - - - - {% block nav %} - {% include 'django_ledger/includes/nav.html' %}{% endblock %} - {% block header %} - {% include 'django_ledger/includes/page_header.html' with header_title=header_title %}{% endblock %} - {% block breadcrumbs %}{% endblock %} - {% block messages %} - {% include 'django_ledger/includes/messages.html' with messages=messages %}{% endblock %} - {% block content %}{% endblock %} - {% block footer %} - {% include 'django_ledger/includes/footer.html' %}{% endblock %} - {% block script_bottom %} - - - {% endblock %} - - diff --git a/tests/django_ledger/bill_create.html b/tests/django_ledger/bill_create.html deleted file mode 100644 index 63dca76..0000000 --- a/tests/django_ledger/bill_create.html +++ /dev/null @@ -1,115 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    - {% csrf_token %} - {% if po_model %} -
    -

    {% trans 'Bill for' %} {{ po_model.po_number }}

    -

    {% trans 'Bill for' %} {{ po_model.po_title }}

    - {% for po_item in po_items %} -

    - {{ po_item }} -

    - {% endfor %} -
    - {% endif %} -
    -
    -
    -
    -
    -

    - {% trans 'Vendor Information' %} -

    -
    -
    -
    -
    - {{ form.vendor }} -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Bill Amount & Terms' %} -

    -
    -
    -
    -
    - {{ form.xref }} -
    -
    -
    -
    - {{ form.date }} -
    -
    -
    - -
    - {{ form.terms }} -
    -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Connected Accounts' %} -

    -
    -
    -
    - -
    - {{ form.cash_account }} -
    -
    -
    - -
    - {{ form.prepaid_account }} -
    -
    -
    - -
    - {{ form.unearned_account }} -
    -
    -
    -
    -
    -
    - - - Back - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/bill_delete.html b/tests/django_ledger/bill_delete.html deleted file mode 100644 index e2fc517..0000000 --- a/tests/django_ledger/bill_delete.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% csrf_token %} -
    -
    -

    - Are you sure you want to delete - Bill {{ bill.bill_number }} -

    -
    -
    -

    - All transactions associated with this Bill will be deleted. - If you want to void the bill instead, click - - here - -

    -
    -
    - - {% trans 'Go Back' %} - - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/bill_detail.html b/tests/django_ledger/bill_detail.html deleted file mode 100644 index f7fa2dc..0000000 --- a/tests/django_ledger/bill_detail.html +++ /dev/null @@ -1,168 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% include 'django_ledger/includes/card_bill.html' with bill=bill entity_slug=view.kwargs.entity_slug style='bill-detail' %} -
    -
    - {% include 'django_ledger/includes/card_vendor.html' with vendor=bill.vendor %} -
    - -
    -
    -
    -
    - {% if bill.is_configured %} -
    - -
    - {% endif %} -
    -
    -
    -

    - {% icon 'grommet-icons:transaction' 36 %} - {% trans 'Bill Items' %} -

    -
    -
    -
    - - - - - - - - - - - - - {% for bill_item in bill_items %} - - - - - - - - - {% endfor %} - - - - - - - - - - - -
    {% trans 'Item' %}{% trans 'Entity Unit' %}{% trans 'Unit Cost' %}{% trans 'Quantity' %}{% trans 'Total' %}{% trans 'PO' %}
    {{ bill_item.item_model }} - {% if bill_item.entity_unit %}{{ bill_item.entity_unit }}{% endif %} - {% currency_symbol %}{{ bill_item.unit_cost | currency_format }}{{ bill_item.quantity }}{% currency_symbol %}{{ bill_item.total_amount | currency_format }} - {% if bill_item.po_model_id %} - - {% trans 'View PO' %} - - {% endif %} -
    {% trans 'Total' %}{% currency_symbol %}{{ total_amount_due | currency_format }}
    -
    -
    -
    -
    -
    -
    -
    -

    - {% icon 'grommet-icons:transaction' 36 %} - {% trans 'Bill Transactions' %} -

    -
    -
    - {% bill_txs_table bill %} -
    -
    -
    -
    -
    -
    - {% endblock %} diff --git a/tests/django_ledger/bill_list.html b/tests/django_ledger/bill_list.html deleted file mode 100644 index 18ec04a..0000000 --- a/tests/django_ledger/bill_list.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    - {% if month %} -

    {{ month | date:'F Y' }}

    - {% elif year %} -

    - Year {{ year | date:'Y' }} - Bills -

    - {% else %} -

    {% trans 'Latest Bills' %}

    - {% endif %} -
    - -
    -
    - {% if previous_month %} - - {% endif %} - {% if next_month %} - - {% endif %} - {% if previous_year %} - - {% endif %} - {% if next_year %} - - {% endif %} - {% if page_obj %} - {% if page_obj.has_previous %} - - {% endif %} -
    -

    - page {{ page_obj.number }} - of {{ page_obj.paginator.num_pages }} -

    -
    - {% if page_obj.has_next %} - - {% endif %} - {% endif %} -
    -
    - {% bill_table bills %} - {% if year %} -
    {% trans 'Go to month:' %}
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date | date:'F' }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% else %} -
    {% trans 'Go to year:' %}
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date.year }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% endif %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/bill_update.html b/tests/django_ledger/bill_update.html deleted file mode 100644 index c98bcb2..0000000 --- a/tests/django_ledger/bill_update.html +++ /dev/null @@ -1,234 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - {% if form.errors %}{{ form.errors }}{% endif %} - {% csrf_token %} -
    -
    - {% include 'django_ledger/includes/card_vendor.html' with vendor=bill.vendor %} -
    -
    -
    -
    -

    - {% trans 'Bill Amount & Terms' %} -

    -
    -
    -
    -

    - Bill Amount: - ${{ bill.amount_due | currency_format }} - -

    - -

    Bill Date: {{ bill.date }}

    -

    Terms: {{ bill.get_terms_display }}

    -

    - External Reference: {{ bill.xref }} - -

    -

    Accrue Bill: {{ form.accrue }}

    - -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Bill State' %} -

    -
    -
    -
    - - {% csrf_token %} -
    - -
    - {{ form.amount_paid }} -
    -
    -
    - -
    -
    - -
    - {{ form.paid_date }} -
    -
    -
    - -
    - {{ form.progress }} -
    -
    - - - {% trans 'Bill List' %} - - - {% trans 'Dashboard' %} - - -
    -
    -
    -
    - {% if bill.is_configured %} -
    -
    -
    -

    - {% trans 'Bill State' %} -

    -
    -
    -
    -
    -
    -

    {% trans 'Bill State' %}

    -

    - {{ bill.cash_account }}: - ${{ bill.get_amount_cash | currency_format }} -

    -

    - {{ bill.prepaid_account }}: - ${{ bill.get_amount_receivable | currency_format }} -

    -

    - {{ bill.unearned_account }}: - ${{ bill.get_amount_payable | currency_format }} -

    -

    - {{ bill.earnings_account }}: - ${{ bill.get_amount_earned | currency_format }} -

    -
    -
    -

    {% trans 'Ledger State' %}

    -

    - {{ bill.cash_account }}: ${{ bill.amount_paid | currency_format }} -

    -

    - {{ bill.prepaid_account }}: - ${{ bill.amount_receivable | currency_format }} -

    -

    - {{ bill.unearned_account }}: - ${{ bill.amount_unearned | currency_format }} -

    -

    - {{ bill.earnings_account }}: - ${{ bill.amount_earned | currency_format }} -

    -
    - {% now "Y" as current_year %} - {% now "m" as current_month %} - - - -
    -
    -
    -
    -
    - {% else %} -
    -
    -
    -

    - {% trans 'Bill Configuration' %} -

    -
    -
    -
    -
    -
    - - {{ form.cash_account }} -
    -
    -
    -
    - - {{ form.prepaid_account }} -
    -
    -
    -
    - - {{ form.unearned_account }} -
    -
    -
    -
    -
    -
    - {% endif %} -
    - - {% bill_item_formset_table item_formset %} -{% endblock %} diff --git a/tests/django_ledger/bill_void.html b/tests/django_ledger/bill_void.html deleted file mode 100644 index ee8794e..0000000 --- a/tests/django_ledger/bill_void.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% csrf_token %} -
    -
    -

    - Are you sure you want to void - Bill {{ bill.bill_number }}? -

    -
    -
    -

    - All transactions associated with this Bill will be reversed as of today - {% now "jS F Y" %}. -

    -
    -
    - - {% trans 'Go Back' %} - - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/coa_update.html b/tests/django_ledger/coa_update.html deleted file mode 100644 index e77e146..0000000 --- a/tests/django_ledger/coa_update.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/customer_create.html b/tests/django_ledger/customer_create.html deleted file mode 100644 index 1d5e617..0000000 --- a/tests/django_ledger/customer_create.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {{ form.as_p }} - {% csrf_token %} -
    -
    - - - {% trans 'Go Back' %} - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/customer_list.html b/tests/django_ledger/customer_list.html deleted file mode 100644 index 34576c3..0000000 --- a/tests/django_ledger/customer_list.html +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} - - -{% endblock %} diff --git a/tests/django_ledger/customer_update.html b/tests/django_ledger/customer_update.html deleted file mode 100644 index d7eb630..0000000 --- a/tests/django_ledger/customer_update.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {{ form.as_p }} - {% csrf_token %} -
    -
    - - - {% trans 'Go Back' %} - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/data_import_job_list.html b/tests/django_ledger/data_import_job_list.html deleted file mode 100644 index 7ed07cf..0000000 --- a/tests/django_ledger/data_import_job_list.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - - {% trans 'Import OFX File' %} - - - {% trans 'Back' %} - - {% data_import_job_list_table %} -
    -{% endblock %} diff --git a/tests/django_ledger/data_import_job_txs.html b/tests/django_ledger/data_import_job_txs.html deleted file mode 100644 index d41c933..0000000 --- a/tests/django_ledger/data_import_job_txs.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -

    Pending Transactions

    - {% data_import_job_txs_pending %} -
    -
    -

    Imported Transactions

    - {% data_import_job_txs_imported %} -
    -
    - Back -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/data_import_ofx.html b/tests/django_ledger/data_import_ofx.html deleted file mode 100644 index 3bae24a..0000000 --- a/tests/django_ledger/data_import_ofx.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -
    - {% csrf_token %} -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -{% endblock %} -{% block script_bottom %} - {{ block.super }} - -{% endblock %} diff --git a/tests/django_ledger/entitiy_list.html b/tests/django_ledger/entitiy_list.html deleted file mode 100644 index 85c08f9..0000000 --- a/tests/django_ledger/entitiy_list.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load i18n %} -{% load static %} -{% block content %} -
    -
    -
    -
    -
    -
    -
    - {% trans 'My Entities' %} -
    -
    -
    - - - {% trans 'New Entity' %} - -
    -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/entity_create.html b/tests/django_ledger/entity_create.html deleted file mode 100644 index f71c84c..0000000 --- a/tests/django_ledger/entity_create.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_2.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    - {% csrf_token %} -
    -
    -
    -

    - - - - {% trans 'New Entity Information' %} -

    -
    -
    - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/entity_dashboard.html b/tests/django_ledger/entity_dashboard.html deleted file mode 100644 index 62b89a5..0000000 --- a/tests/django_ledger/entity_dashboard.html +++ /dev/null @@ -1,120 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block content %} -
    -
    -
    -
    -
    -
    - {% if view.kwargs.unit_slug or request.GET.unit %} - {% period_navigation 'unit-dashboard' %} - {% else %} - {% period_navigation 'entity-dashboard' %} - {% endif %} -
    -
    - {% navigation_menu 'desktop' %} -
    -
    -
    -
    -
    -
    - {% include 'django_ledger/includes/widget_bs.html' with tx_digest=tx_digest %} -
    -
    - {% include 'django_ledger/includes/widget_ic.html' with tx_digest=equity_digest %} -
    -
    -
    - {% chart_container pnl_chart_id pnl_chart_endpoint %} -
    -
    -
    - {% include 'django_ledger/includes/widget_ratios.html' with tx_digest=tx_digest %} -
    -
    -
    -
    -
    -
    - {# RECEIVABLES SECTION START #} -
    -
    -
    -

    {% trans 'Receivables' %}

    -

    - {% icon "ic:baseline-business" 16 %} - {{ entity.name }} -

    -
    -
    -
    -
    -
    -
    - {% if invoices %} -
    -
    - {% chart_container receivables_chart_id receivables_chart_endpoint %} -
    -
    - {% endif %} - {% for invoice in invoices %} -
    - {% include 'django_ledger/includes/card_invoice.html' with invoice=invoice entity_slug=entity.slug style='dashboard' %} -
    - {% endfor %} -
    - {% include 'django_ledger/includes/card_invoice.html' with create_invoice=True entity_slug=entity.slug %} -
    -
    -
    -
    - {# RECEIVABLES SECTION END #} - {# PAYABLES SECTION START #} -
    -
    -
    -

    {% trans 'Payables' %}

    -

    - {% icon "ic:baseline-business" 16 %} - {{ entity.name }} -

    -
    -
    -
    -
    -
    -
    - {% if bills %} -
    -
    - {% chart_container payables_chart_id payables_chart_endpoint %} -
    -
    - {% endif %} - {% for bill in bills %} -
    - {% include 'django_ledger/includes/card_bill.html' with bill=bill entity_slug=entity.slug style='dashboard' %} -
    - {% endfor %} -
    - {% include 'django_ledger/includes/card_bill.html' with create_bill=True entity_slug=entity.slug style='dashboard' %} -
    -
    -
    -
    - {# PAYABLES SECTION END #} -{% endblock %} -{% block script_bottom %} - {{ block.super }} - -{% endblock %} diff --git a/tests/django_ledger/entity_delete.html b/tests/django_ledger/entity_delete.html deleted file mode 100644 index 019773a..0000000 --- a/tests/django_ledger/entity_delete.html +++ /dev/null @@ -1,32 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_2.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% csrf_token %} -
    -
    -

    - Are you sure you want to delete - Entity {{ entity.name }}? -

    -
    -
    -

    - All data associated with this entity will be deleted. -

    -
    -
    - - {% trans 'Go Back' %} - - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/entity_update.html b/tests/django_ledger/entity_update.html deleted file mode 100644 index 26e5cf5..0000000 --- a/tests/django_ledger/entity_update.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load i18n %} -{% load static %} -{% block content %} -
    -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/expense_create.html b/tests/django_ledger/expense_create.html deleted file mode 100644 index 36dd25d..0000000 --- a/tests/django_ledger/expense_create.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/expense_list.html b/tests/django_ledger/expense_list.html deleted file mode 100644 index 05f77d1..0000000 --- a/tests/django_ledger/expense_list.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'The Things I Pay For' %}

    -
    - -
    -
    - {% expense_item_table expense_list %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/expense_update.html b/tests/django_ledger/expense_update.html deleted file mode 100644 index cfcbd76..0000000 --- a/tests/django_ledger/expense_update.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/home.html b/tests/django_ledger/home.html deleted file mode 100644 index 92e559b..0000000 --- a/tests/django_ledger/home.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block content %} -
    -
    -
    - {% for entity in entities %} -
    - {% include 'django_ledger/includes/card_entity.html' with entity=entity %} -
    - {% endfor %} -
    - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/includes/breadcrumbs.html b/tests/django_ledger/includes/breadcrumbs.html deleted file mode 100644 index 72ec318..0000000 --- a/tests/django_ledger/includes/breadcrumbs.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load django_ledger %} -
    -
    -
    - {% nav_breadcrumbs %} -
    -
    -
    diff --git a/tests/django_ledger/includes/card_bill.html b/tests/django_ledger/includes/card_bill.html deleted file mode 100644 index a170873..0000000 --- a/tests/django_ledger/includes/card_bill.html +++ /dev/null @@ -1,181 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -{% if not create_bill %} - {% if style == 'dashboard' %} -
    -
    -

    - {% icon "ri:bill-line" 16 %} - {% trans 'Bill' %} -

    -

    - {{ bill.vendor.vendor_name }} -

    -

    - {{ bill.vendor.address_1 }} -

    - {% if not bill.is_past_due %} -

    - Due in: {{ bill.due_date | timeuntil }} -

    - {% else %} -

    - Past Due: {{ bill.due_date | timesince }} ago -

    - {% endif %} - {% if bill.progressible %} -

    - Is Accrued: - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} -

    - Is Progressible: - {% icon 'maki:roadblock-11' 24 %} - {% endif %} -

    - You Still Owe: - {% currency_symbol %}{{ bill.get_amount_open | currency_format }} -

    -

    - Amount Paid: {% currency_symbol %}{{ bill.amount_paid | currency_format }} -

    -

    - Progressed: {{ bill.get_progress | percentage }} -

    -
    - - {{ bill.get_progress | percentage }} - - {# MARK AS PAID MODAL #} - {% mark_as_paid bill %} -
    - -
    - {% elif style == 'bill-detail' %} -
    -
    -

    - {% icon 'uil:bill' 36 %} - {% trans 'Bill Info' %} -

    -
    -
    - {% if bill.paid %} -

    - Is Paid - - {% icon 'ant-design:check-circle-filled' 48 %} - -

    -

    - Amount Paid: - - {% currency_symbol %}{{ bill.amount_paid | currency_format }} - -

    - {% else %} - {% if not bill.void %} -

    - Bill Amount: - - {% currency_symbol %}{{ bill.amount_due | currency_format }} - -

    - {% if not bill.is_past_due %} -

    - Due in: {{ bill.due_date | timeuntil }} -

    - {% else %} -

    - Due in: {{ bill.due_date | date }} -

    -

    - Past - Due: {{ bill.due_date | timesince }} ago -

    - {% endif %} -

    - You Still Owe: - {% currency_symbol %}{{ bill.get_amount_open | currency_format }} -

    - {% if bill.accrue %} -

    - Is Accrued: - {% icon 'ant-design:check-circle-filled' 24 %} -

    - {% else %} -

    - Is Accrued: - {% icon 'maki:roadblock-11' 24 %} -

    - {% endif %} -

    - Amount Paid: {% currency_symbol %}{{ bill.amount_paid | currency_format }} -

    -

    - Progressed: {{ bill.get_progress | percentage }} -

    -
    - - {{ bill.get_progress | percentage }} - - - {# MARK AS PAID MODAL #} - {% mark_as_paid bill %} - {% else %} -

    - Bill Amount: - - {% currency_symbol %}{{ bill.amount_due | currency_format }} - -

    -

    - VOIDED {{ bill.void_date | date }} -

    - {% endif %} - {% endif %} -
    -
    - {% endif %} - {% else %} - - {% endif %} diff --git a/tests/django_ledger/includes/card_customer.html b/tests/django_ledger/includes/card_customer.html deleted file mode 100644 index 7c4cc69..0000000 --- a/tests/django_ledger/includes/card_customer.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load i18n %} -{% load django_ledger %} -
    -
    -

    - {% icon 'bi:person-lines-fill' 36 %} - {% trans 'Customer Information' %} -

    -
    -
    -
    -

    {{ customer.customer_name }}

    -

    - {% if customer.address_1 %} - {{ customer.address_1 }} -
    - {% endif %} - {% if customer.address_2 %} - {{ customer.address_2 }} -
    - {% endif %} - {% if customer.get_cszc %} - {{ customer.get_cszc }} -
    - {% endif %} - {% if customer.phone %} - {{ customer.phone }} -
    - {% endif %} - {% if customer.email %} - {{ customer.email }} -
    - {% endif %} - {% if customer.website %} - {{ customer.website }} -
    - {% endif %} -

    -
    -
    - -
    diff --git a/tests/django_ledger/includes/card_entity.html b/tests/django_ledger/includes/card_entity.html deleted file mode 100644 index 9be7184..0000000 --- a/tests/django_ledger/includes/card_entity.html +++ /dev/null @@ -1,27 +0,0 @@ -{% load django_ledger %} -{% now "Y" as current_year %} -
    -
    -

    - {% icon "ic:baseline-business" 36 %} - {{ entity.name }} -

    -

    - {{ entity.address_1 }} -

    -

    - Created: {{ entity.created | timesince }} ago -

    -
    - -
    diff --git a/tests/django_ledger/includes/card_invoice.html b/tests/django_ledger/includes/card_invoice.html deleted file mode 100644 index de44b5a..0000000 --- a/tests/django_ledger/includes/card_invoice.html +++ /dev/null @@ -1,161 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -{% if not create_invoice %} - {% if style == 'dashboard' %} -
    -
    -

    - {% icon "bi:cash-stack" 16 %} - {% trans 'Invoice' %} -

    -

    - {{ invoice.customer.customer_name }} -

    -

    - {{ invoice.customer.address_1 }} -

    - {% if not invoice.is_past_due %} -

    - Due in: {{ invoice.due_date | timeuntil }} -

    - {% else %} -

    - Past - Due: {{ invoice.due_date | timesince }} ago -

    - {% endif %} - {% if invoice.progressible %} -

    - Is Progressible: - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} -

    - Is Progressible: - {% icon 'maki:roadblock-11' 24 %} - {% endif %} -

    - Owed to You: {% currency_symbol %}{{ invoice.get_amount_open | currency_format }} -

    -

    - Amount Paid: {% currency_symbol %}{{ invoice.amount_paid | currency_format }} -

    -

    - Progressed: {{ invoice.get_progress | percentage }} -

    -
    - - {{ invoice.get_progress | percentage }} - - {# MARK AS PAID MODAL #} - {% mark_as_paid invoice %} -
    - -
    - {% elif style == 'invoice-detail' %} -
    -
    -

    - {% icon 'uil:bill' 36 %} - {% trans 'Invoice Info' %} -

    -
    -
    - {% if invoice.paid %} -

    - Is Paid - - {% icon 'ant-design:check-circle-filled' 48 %} - -

    -

    - Amount Paid: - - {% currency_symbol %}{{ invoice.amount_paid | currency_format }} - -

    - {% else %} -

    - Invoice Amount: - - {% currency_symbol %}{{ invoice.amount_due | currency_format }} - -

    - {% if not invoice.is_past_due %} -

    - Due in: {{ invoice.due_date | timeuntil }} -

    - {% else %} -

    - Past - Due: {{ invoice.due_date | timesince }} ago -

    - {% endif %} -

    - Owed to You: {% currency_symbol %}{{ invoice.get_amount_open | currency_format }} -

    - {% if invoice.progressible %} -

    - Is Progressible: - {% icon 'ant-design:check-circle-filled' 24 %} -

    - {% else %} -

    - Is Progressible: - {% icon 'maki:roadblock-11' 24 %} -

    - {% endif %} -

    - Amount Paid: {% currency_symbol %}{{ invoice.amount_paid | currency_format }} -

    -

    - Progressed: {{ invoice.get_progress_percent }}% -

    -
    - - {{ invoice.get_progress | percentage }} - - {% endif %} - {# MARK AS PAID MODAL #} - {% mark_as_paid invoice %} -
    - -
    - {% endif %} - {% else %} - - {% endif %} diff --git a/tests/django_ledger/includes/card_markdown.html b/tests/django_ledger/includes/card_markdown.html deleted file mode 100644 index 8095004..0000000 --- a/tests/django_ledger/includes/card_markdown.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load trans from i18n %} -{% load django_ledger %} -{% if style == 'card_1' %} -
    -
    -
    -

    - {% if title %} - {{ title }} - {% else %} - {% trans 'Notes' %} - {% endif %} -

    -
    -
    -
    -
    - {% if notes_html %} - {% autoescape off %} - {{ notes_html | safe }} - {% endautoescape %} - {% else %} -

    - {% trans 'No available notes to display...' %} -

    - {% endif %} -
    -
    -
    -{% endif %} diff --git a/tests/django_ledger/includes/card_po.html b/tests/django_ledger/includes/card_po.html deleted file mode 100644 index 2161a29..0000000 --- a/tests/django_ledger/includes/card_po.html +++ /dev/null @@ -1,61 +0,0 @@ -{% load i18n %} -{% load django_ledger %} -{% if not create_po %} - {% if style == 'po-detail' %} -
    -
    -

    - {% icon 'uil:bill' 36 %} - {% trans 'Purchase Order Info' %} -

    -
    -
    -

    {{ po_model.po_number }}

    -

    - Status: - - {{ po_model.get_po_status_display }} - -

    -

    - Inventory Purchase: - {% if po_model.for_inventory %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} -

    -

    - Fulfilled: - {% if po_model.fulfilled %} - {% icon 'ant-design:check-circle-filled' 24 %} - {{ po_model.fulfillment_date | date }} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} -

    -
    - -
    - {% endif %} -{% else %} - -{% endif %} diff --git a/tests/django_ledger/includes/card_vendor.html b/tests/django_ledger/includes/card_vendor.html deleted file mode 100644 index db5e206..0000000 --- a/tests/django_ledger/includes/card_vendor.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load i18n %} -{% load django_ledger %} -
    -
    -

    - {% icon 'bi:person-lines-fill' 36 %} - {% trans 'Vendor Info' %} -

    -
    -
    -
    -

    {{ vendor.vendor_name }}

    -

    - {% if vendor.address_1 %} - {{ vendor.address_1 }} -
    - {% endif %} - {% if vendor.address_2 %} - {{ vendor.address_2 }} -
    - {% endif %} - {% if vendor.get_cszc %} - {{ vendor.get_cszc }} -
    - {% endif %} - {% if vendor.phone %} - {{ vendor.phone }} -
    - {% endif %} - {% if vendor.email %} - {{ vendor.email }} -
    - {% endif %} - {% if vendor.website %} - {{ vendor.website }} -
    - {% endif %} -

    -
    -
    - -
    diff --git a/tests/django_ledger/includes/footer.html b/tests/django_ledger/includes/footer.html deleted file mode 100644 index a526f4f..0000000 --- a/tests/django_ledger/includes/footer.html +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/tests/django_ledger/includes/messages.html b/tests/django_ledger/includes/messages.html deleted file mode 100644 index 2c3fa2a..0000000 --- a/tests/django_ledger/includes/messages.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if messages %} - {# Messages Container #} -
    - {% for msg in messages %} -
    - - {{ msg | safe }} -
    - {% endfor %} -
    -{% endif %} diff --git a/tests/django_ledger/includes/nav.html b/tests/django_ledger/includes/nav.html deleted file mode 100644 index b0ceaee..0000000 --- a/tests/django_ledger/includes/nav.html +++ /dev/null @@ -1,39 +0,0 @@ -{% load static %} -{% load django_ledger %} -{% load cache %} -{% load i18n %} -{% now "Y" as current_year %} - diff --git a/tests/django_ledger/includes/page_header.html b/tests/django_ledger/includes/page_header.html deleted file mode 100644 index 12597e7..0000000 --- a/tests/django_ledger/includes/page_header.html +++ /dev/null @@ -1,52 +0,0 @@ -{% load static %} -{% load i18n %} -{% load django_ledger %} -{% if not header_style %} -
    -
    -
    -
    - {% if header_subtitle_icon %} -
    - {% icon header_subtitle_icon 36 %} -
    -
    - {% icon header_subtitle_icon 48 %} -
    -
    - {% icon header_subtitle_icon 60 %} -
    - {% endif %} -
    -

    {{ header_title }}

    - {% if header_subtitle %}

    {{ header_subtitle }}

    {% endif %} -
    -
    -
    -
    - {% else %} -
    -
    -
    -
    -
    -
    - - - -
    -
    -
    - {% if header_title %} -
    -
    -

    - {{ header_title }} -

    -
    -
    - {% endif %} -
    -
    -
    - {% endif %} diff --git a/tests/django_ledger/includes/widget_bs.html b/tests/django_ledger/includes/widget_bs.html deleted file mode 100644 index ea64d64..0000000 --- a/tests/django_ledger/includes/widget_bs.html +++ /dev/null @@ -1,28 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    -

    - {% trans 'Assets' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_ASSETS | currency_format }} -

    -

    - {% trans 'Liabilities' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_LIABILITIES | currency_format }} -

    -

    - {% trans 'Equity' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EQUITY | currency_format }} -

    -

    - {% trans 'Cash' %} -

    -

    - {% currency_symbol %}{{ tx_digest.role_balance.ASSET_CA_CASH | currency_format }} -

    -
    diff --git a/tests/django_ledger/includes/widget_ic.html b/tests/django_ledger/includes/widget_ic.html deleted file mode 100644 index aa03c25..0000000 --- a/tests/django_ledger/includes/widget_ic.html +++ /dev/null @@ -1,34 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    -

    - {% trans 'Revenue' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_INCOME | currency_format }} -

    -

    - {% trans 'Expenses' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EXPENSES | reverse_sing | currency_format }} -

    -

    - {% trans 'Earnings (Loss)' %} -

    -

    - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EARNINGS | currency_format }} -

    -

    - {% trans 'Accounting Period' %} -

    - {% if not has_date %} -

    - {{ from_date | date }} - {% trans 'thru' %} - {{ to_date | date }} -

    - {% else %} -

    {{ from_date | date }}

    - {% endif %} -
    diff --git a/tests/django_ledger/includes/widget_ratios.html b/tests/django_ledger/includes/widget_ratios.html deleted file mode 100644 index 8159e55..0000000 --- a/tests/django_ledger/includes/widget_ratios.html +++ /dev/null @@ -1,72 +0,0 @@ -{% load django_ledger %} -
    -

    - Financial Analysis -

    -

    Solvency:

    -
    - Current - Ratio: {{ tx_digest.ratios.current_ratio | currency_format }} -
    - - {{ tx_digest.ratios.current_ratio }} - -
    - Quick - Ratio: {{ tx_digest.ratios.quick_ratio | currency_format }} -
    - - {{ tx_digest.ratios.current_ratio }} - -

    Leverage:

    -
    - Debt to - Equity: {{ tx_digest.ratios.debt_to_equity | currency_format }} -
    - - {{ tx_digest.ratios.debt_to_equity }} - -

    Profitability:

    -
    - Return on - Equity: {{ tx_digest.ratios.return_on_equity | percentage }} -
    - - {{ tx_digest.ratios.return_on_equity }} - -
    - Return on - Assets: {{ tx_digest.ratios.return_on_assets | percentage }} -
    - - {{ tx_digest.ratios.return_on_assets }} - -
    - Net Profit - Margin: {{ tx_digest.ratios.net_profit_margin | percentage }} -
    - - {{ tx_digest.ratios.net_profit_margin }} - -
    - Gross Profit - Margin: {{ tx_digest.ratios.gross_profit_margin | percentage }} -
    - - {{ tx_digest.ratios.gross_profit_margin }} - -
    diff --git a/tests/django_ledger/income_statement.html b/tests/django_ledger/income_statement.html deleted file mode 100644 index 210f23a..0000000 --- a/tests/django_ledger/income_statement.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block aux_menu %} - {% if unit_model %} -
    - {% period_navigation 'unit-ic' %} -
    - {% elif entity %} -
    - {% period_navigation 'entity-ic' %} -
    - {% elif ledger %} -
    - {% period_navigation 'ledger-ic' %} -
    - {% endif %} -{% endblock %} -{% block view_content %} -
    -
    -
    -
    -
    - {% if entity %} -

    {% session_entity_name %}

    - {% elif ledger %} -

    {{ ledger.name }}

    - {% endif %} - {% if unit_model %} -

    - {{ unit_model.name }} {% trans 'Unit' %} -

    - {% endif %} -

    {% trans 'Income Statement' %}

    -

    - {% if quarter %} - {{ year }} | Q{{ quarter }} - {% elif month %}{{ start_date | date:'F, Y' }} - {% else %} - Fiscal Year {{ year }} - {% endif %} -

    -

    - {{ from_date | date:'m/d/Y' }} - {{ to_date | date:'m/d/Y' }} -

    -
    -
    -
    - {% income_statement_table io_model=object from_date=from_date to_date=to_date %} - {% if ledger %} - - Go - Back - - {% elif entity %} - - Go - Back - - {% endif %} - - {% trans 'By Unit' %} - -
    -
    -{% endblock %} diff --git a/tests/django_ledger/inventory_item_create.html b/tests/django_ledger/inventory_item_create.html deleted file mode 100644 index 8911619..0000000 --- a/tests/django_ledger/inventory_item_create.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/inventory_item_list.html b/tests/django_ledger/inventory_item_list.html deleted file mode 100644 index d9cdb09..0000000 --- a/tests/django_ledger/inventory_item_list.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'My Inventory Items' %}

    -
    - -
    -
    - {% inventory_item_table inventory_item_list %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/inventory_item_update.html b/tests/django_ledger/inventory_item_update.html deleted file mode 100644 index add90ae..0000000 --- a/tests/django_ledger/inventory_item_update.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/invoice_create.html b/tests/django_ledger/invoice_create.html deleted file mode 100644 index 4341f2c..0000000 --- a/tests/django_ledger/invoice_create.html +++ /dev/null @@ -1,104 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    - {% csrf_token %} -
    -
    -
    -
    -
    -

    - {% trans 'Customer Information' %} -

    -
    -
    -
    -
    - {{ form.customer }} -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Invoice Amount & Terms' %} -

    -
    -
    -
    -
    - {{ form.date }} -
    -
    -
    -
    - {{ form.amount_due }} -
    -
    -
    - -
    - {{ form.terms }} -
    -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Connected Accounts' %} -

    -
    -
    -
    - -
    - {{ form.cash_account }} -
    -
    -
    - -
    - {{ form.prepaid_account }} -
    -
    -
    - -
    - {{ form.unearned_account }} -
    -
    -
    -
    -
    -
    - - - Back - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/invoice_delete.html b/tests/django_ledger/invoice_delete.html deleted file mode 100644 index 36c1369..0000000 --- a/tests/django_ledger/invoice_delete.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% csrf_token %} -
    -
    -

    - Are you sure you want to delete - Invoice {{ invoice.invoice_number }} -

    -
    -
    -

    - All transactions associated with this invoice will be deleted. - If you want to void the invoice instead, click here -

    -
    -
    - - {% trans 'Go Back' %} - - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/invoice_detail.html b/tests/django_ledger/invoice_detail.html deleted file mode 100644 index 815ffb1..0000000 --- a/tests/django_ledger/invoice_detail.html +++ /dev/null @@ -1,152 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% include 'django_ledger/includes/card_invoice.html' with invoice=invoice entity_slug=view.kwargs.entity_slug style='invoice-detail' %} -
    -
    - {% include 'django_ledger/includes/card_customer.html' with customer=invoice.customer %} -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -

    - {% icon 'grommet-icons:transaction' 36 %} - {% trans 'Invoice Items' %} -

    -
    - {# todo: make this table a template... #} -
    -
    - - - - - - - - - - - {% for invoice_item in invoice_items %} - - - - - - - {% endfor %} - - - - - - - - - -
    {% trans 'Item' %}{% trans 'Unit Cost' %}{% trans 'Quantity' %}{% trans 'Total' %}
    {{ invoice_item.item_model }}{% currency_symbol %}{{ invoice_item.unit_cost | currency_format }}{{ invoice_item.quantity }}{% currency_symbol %}{{ invoice_item.total_amount | currency_format }}
    {% trans 'Total' %}{% currency_symbol %}{{ total_amount_due | currency_format }}
    -
    -
    -
    -
    -
    -
    -
    -

    - {% icon 'grommet-icons:transaction' 36 %} - {% trans 'Invoice Transactions' %} -

    -
    -
    - {% invoice_txs_table invoice %} -
    -
    -
    -
    -
    -
    - {% endblock %} diff --git a/tests/django_ledger/invoice_list.html b/tests/django_ledger/invoice_list.html deleted file mode 100644 index c6347ea..0000000 --- a/tests/django_ledger/invoice_list.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    - {% if month %} -

    {{ month | date:'F Y' }}

    - {% elif year %} -

    - Year {{ year | date:'Y' }} - {% trans 'Invoices' %} -

    - {% else %} -

    {% trans 'Latest Invoices' %}

    - {% endif %} -
    - -
    -
    - {% if previous_month %} - - {% endif %} - {% if next_month %} - - {% endif %} - {% if previous_year %} - - {% endif %} - {% if next_year %} - - {% endif %} - {% if page_obj %} - {% if page_obj.has_previous %} - - {% endif %} -
    -

    - page {{ page_obj.number }} - of {{ page_obj.paginator.num_pages }} -

    -
    - {% if page_obj.has_next %} - - {% endif %} - {% endif %} -
    -
    - {% invoice_table %} - {% if year %} -
    Go to month:
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date | date:'F' }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% else %} -
    Go to year:
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date.year }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% endif %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/invoice_update.html b/tests/django_ledger/invoice_update.html deleted file mode 100644 index 49c6a37..0000000 --- a/tests/django_ledger/invoice_update.html +++ /dev/null @@ -1,200 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - {% if form.errors %}{{ form.errors }}{% endif %} - {% csrf_token %} -
    -
    - {% include 'django_ledger/includes/card_customer.html' with customer=invoice.customer %} -
    -
    -
    -
    -

    - {% trans 'Invoice Amount & Terms' %} -

    -
    -
    -
    -

    - {% trans 'Invoice Amount:' %} - ${{ invoice.amount_due | currency_format }} - -

    - -

    Invoice Date: {{ object.date }}

    -

    Terms: {{ object.get_terms_display }}

    -

    Accrue Invoice: {{ form.accrue }}

    -
    -
    -
    -
    -
    -
    -
    -

    - {% trans 'Invoice State' %} -

    -
    -
    -
    - - {% csrf_token %} -
    - -
    - {{ form.amount_paid }} -
    -
    -
    - -
    -
    - -
    - {{ form.paid_date }} -
    -
    -
    - -
    - {{ form.progress }} -
    -
    - - - {% trans 'Invoice List' %} - - - {% trans 'Dashboard' %} - - -
    -
    -
    -
    -
    - {# todo: change the format of the state... show only account balances, move to detail view? #} -
    -
    -

    - {% trans 'Invoice State' %} -

    -
    -
    -
    -
    -
    -

    {% trans 'Ledger State' %}

    -

    - {{ invoice.cash_account }}: - ${{ invoice.get_amount_cash | currency_format }} -

    -

    - {{ invoice.prepaid_account }}: - ${{ invoice.get_amount_receivable | currency_format }} -

    -

    - {{ invoice.unearned_account }}: - ${{ invoice.get_amount_payable | currency_format }} -

    -

    - {{ invoice.earnings_account }}: - ${{ invoice.get_amount_earned | currency_format }} -

    -
    -
    -

    {% trans 'Invoice State' %}

    -

    - {{ invoice.cash_account }}: ${{ invoice.amount_paid | currency_format }} -

    -

    - {{ invoice.prepaid_account }}: - ${{ invoice.amount_receivable | currency_format }} -

    -

    - {{ invoice.unearned_account }}: - ${{ invoice.amount_unearned | currency_format }} -

    -

    - {{ invoice.earnings_account }}: - ${{ invoice.amount_earned | currency_format }} -

    -
    -
    -

    - Ledger is Posted: - {% if invoice.ledger.posted %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} -

    -

    - Ledger Locked: - {% if invoice.ledger.locked %} - {% icon 'bi:lock-fill' 24 %} - {% else %} - {% icon 'bx:bx-lock-open-alt' 24 %} - {% endif %} -

    -
    - {% now "Y" as current_year %} - {% now "m" as current_month %} - - - -
    -
    -
    -
    -
    -
    - - {% invoice_item_formset_table item_formset %} -{% endblock %} diff --git a/tests/django_ledger/je_create.html b/tests/django_ledger/je_create.html deleted file mode 100644 index 03c1496..0000000 --- a/tests/django_ledger/je_create.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/je_detail.html b/tests/django_ledger/je_detail.html deleted file mode 100644 index 67f2195..0000000 --- a/tests/django_ledger/je_detail.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% journal_entry_txs_table journal_entry %} - - Edit - Txs - - - Back - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/je_list.html b/tests/django_ledger/je_list.html deleted file mode 100644 index 26792aa..0000000 --- a/tests/django_ledger/je_list.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - - Add - - - Back - - {% jes_table %} -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/je_update.html b/tests/django_ledger/je_update.html deleted file mode 100644 index 6161f69..0000000 --- a/tests/django_ledger/je_update.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/layouts/content_layout_1.html b/tests/django_ledger/layouts/content_layout_1.html deleted file mode 100644 index d256ce0..0000000 --- a/tests/django_ledger/layouts/content_layout_1.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% load navigation_menu from django_ledger %} -{% block content %} -
    -
    -
    - {# SIDE MENU #} - {% if not hide_menu %} -
    -
    - {% block aux_menu %}{% endblock %} -
    - {% navigation_menu 'desktop' %} -
    -
    -
    - {% endif %} -
    - {% block view_content %}{% endblock %} -
    -
    -
    -
    -{% endblock content %} diff --git a/tests/django_ledger/layouts/content_layout_2.html b/tests/django_ledger/layouts/content_layout_2.html deleted file mode 100644 index 6f8cb99..0000000 --- a/tests/django_ledger/layouts/content_layout_2.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends 'django_ledger/base.html' %} -{% block content %} -
    -
    -
    -
    - {% block view_content %}{% endblock %} -
    -
    -
    -
    -{% endblock content %} diff --git a/tests/django_ledger/ledger_create.html b/tests/django_ledger/ledger_create.html deleted file mode 100644 index c3a8bc5..0000000 --- a/tests/django_ledger/ledger_create.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/ledger_list.html b/tests/django_ledger/ledger_list.html deleted file mode 100644 index 158c482..0000000 --- a/tests/django_ledger/ledger_list.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    - - Add - - - Back - - {% ledgers_table %} -
    -{% endblock %} diff --git a/tests/django_ledger/ledger_update.html b/tests/django_ledger/ledger_update.html deleted file mode 100644 index 4f6d842..0000000 --- a/tests/django_ledger/ledger_update.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - Back - -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/pns_list.html b/tests/django_ledger/pns_list.html deleted file mode 100644 index 9c18d31..0000000 --- a/tests/django_ledger/pns_list.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Products & Services List' %}

    -
    - -
    -
    - {% items_table pns_list %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/po_create.html b/tests/django_ledger/po_create.html deleted file mode 100644 index ddff223..0000000 --- a/tests/django_ledger/po_create.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    - {% csrf_token %} -
    - {{ form }} - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/po_delete.html b/tests/django_ledger/po_delete.html deleted file mode 100644 index 96a93bc..0000000 --- a/tests/django_ledger/po_delete.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {% csrf_token %} -
    -
    -

    - Are you sure you want to delete - Purchase Order {{ po_model.po_number }} -

    -
    -
    -

    - All transactions associated with this Purchase Order will be deleted. - If you want to void the PO instead, click here -

    -
    -
    - - {% trans 'Go Back' %} - - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/po_detail.html b/tests/django_ledger/po_detail.html deleted file mode 100644 index af797f3..0000000 --- a/tests/django_ledger/po_detail.html +++ /dev/null @@ -1,107 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load trans from i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% include 'django_ledger/includes/card_po.html' with po_model=po_model entity_slug=view.kwargs.entity_slug style='po-detail' %} -
    - -
    -
    -
    - -
    -
    -

    {{ po_model.po_title }}

    -
    -
    -
    - - - - - - - - - - - - - {% for item in po_items %} - - - - - - - - - {% endfor %} - - - - - - - - - - - -
    {% trans 'Item' %}{% trans 'Quantity' %}{% trans 'Unit Cost' %}{% trans 'Total Cost' %}{% trans 'Status' %}{% trans 'Billed' %}
    {{ item.item_model }}{{ item.quantity }}{{ item.unit_cost }} - {% currency_symbol %}{{ item.total_amount | currency_format }} - - {% if item.po_item_status %}{{ item.get_po_item_status_display }}{% endif %} - - {% if item.bill_model_id %} - - View Bill - - {% endif %} -
    Total PO Amount - {% currency_symbol %}{{ total_amount_due | currency_format }} -
    -
    -
    -
    - {% include 'django_ledger/includes/card_markdown.html' with style='card_1' title='PO Notes' notes_html=po_model.notes_html %} -
    -
    -
    -
    - {% endblock %} diff --git a/tests/django_ledger/po_list.html b/tests/django_ledger/po_list.html deleted file mode 100644 index f05aca2..0000000 --- a/tests/django_ledger/po_list.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    - {% if month %} -

    {{ month | date:'F Y' }}

    - {% elif year %} -

    - Year {{ year | date:'Y' }} - Bills -

    - {% else %} -

    {% trans 'Latest Purchase Orders' %}

    - {% endif %} -
    - -
    -
    - {% if previous_month %} - - {% endif %} - {% if next_month %} - - {% endif %} - {% if previous_year %} - - {% endif %} - {% if next_year %} - - {% endif %} - {% if page_obj %} - {% if page_obj.has_previous %} - - {% endif %} -
    -

    - page {{ page_obj.number }} - of {{ page_obj.paginator.num_pages }} -

    -
    - {% if page_obj.has_next %} - - {% endif %} - {% endif %} -
    -
    - {% po_table po_list %} - {% if year %} -
    {% trans 'Go to month:' %}
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date | date:'F' }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% else %} -
    {% trans 'Go to year:' %}
    -

    - - {% trans 'All' %} | - - {% for date in date_list %} - - {{ date.year }} - {% if not forloop.last %}>{% endif %} - - {% endfor %} -

    - {% endif %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/po_update.html b/tests/django_ledger/po_update.html deleted file mode 100644 index 8852765..0000000 --- a/tests/django_ledger/po_update.html +++ /dev/null @@ -1,95 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -

    {% trans 'Update Purchase Order' %}

    -

    {{ po_model.po_number }}

    -
    -
    -
    - {% csrf_token %} - {% if form.errors %}{{ form.errors }}{% endif %} -
    -
    -
    - -
    - {{ form.po_title }} -
    -
    -
    - -
    - {{ form.po_date }} -
    -
    -
    - -
    - {{ form.po_status }} -
    -
    -
    - -
    - {{ form.fulfillment_date }} -
    -
    -
    - -
    - {{ form.fulfilled }} -
    -
    -
    -
    -
    - - {{ form.markdown_notes }} -
    -
    - -
    -

    - {% trans 'Purchase Order Amount' %}: - {% currency_symbol %}{{ po_model.po_amount | currency_format }} -

    -

    - {% trans 'Received Amount' %}: - {% currency_symbol %}{{ po_model.po_amount_received | currency_format }} -

    -
    -
    -
    -
    - {% po_item_formset_table item_formset %} -{% endblock %} diff --git a/tests/django_ledger/product_create.html b/tests/django_ledger/product_create.html deleted file mode 100644 index 947dcff..0000000 --- a/tests/django_ledger/product_create.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/product_list.html b/tests/django_ledger/product_list.html deleted file mode 100644 index 6ffade7..0000000 --- a/tests/django_ledger/product_list.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Products & Services List' %}

    -
    - -
    -
    - {% pns_table pns_list %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/product_update.html b/tests/django_ledger/product_update.html deleted file mode 100644 index f5677c1..0000000 --- a/tests/django_ledger/product_update.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/tags/account_txs_table.html b/tests/django_ledger/tags/account_txs_table.html deleted file mode 100644 index c443b66..0000000 --- a/tests/django_ledger/tags/account_txs_table.html +++ /dev/null @@ -1,63 +0,0 @@ -{% load django_ledger %} -{% load trans from i18n %} -
    - - - - - - - - - {% for tx in transactions %} - - - - - - - - {% endfor %} - - - - - - - -
    DateCreditDebitDescriptionActions
    {{ tx.journal_entry.date }} - {% if tx.tx_type == 'credit' %}${{ tx.amount | currency_format }}{% endif %} - - {% if tx.tx_type == 'debit' %}${{ tx.amount | currency_format }}{% endif %} - {{ tx.description }} - -
    Total${{ total_credits | currency_format }}${{ total_debits | currency_format }}
    -
    diff --git a/tests/django_ledger/tags/accounts_table.html b/tests/django_ledger/tags/accounts_table.html deleted file mode 100644 index 4d13597..0000000 --- a/tests/django_ledger/tags/accounts_table.html +++ /dev/null @@ -1,88 +0,0 @@ -{% load i18n %} -{% load django_ledger %} -
    - - - {% if title %} - - - - - - - - - - - {% endif %} - - - - - - - - - - - - - {% for account in accounts %} - - - - - - - - - - - {% endfor %} -
    -

    {{ title }}

    -
    {% trans 'Role' %}{% trans 'Parent' %}{% trans 'Code' %}{% trans 'Account Name' %}{% trans 'Balance Type' %}{% trans 'Active' %}{% trans 'Locked' %}{% trans 'Actions' %}
    {{ account.get_role_display }}{{ account.parent.code }}{{ account.code }}{{ account.name }} - {% if account.is_debit %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif account.is_credit %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - - {% if account.active %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% endif %} - - {% if account.locked %} - {% icon 'bi:lock-fill' 24 %} - {% elif not account.locked %} - {% icon 'bx:bx-lock-open-alt' 24 %} - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/activity_form.html b/tests/django_ledger/tags/activity_form.html deleted file mode 100644 index 9fa937b..0000000 --- a/tests/django_ledger/tags/activity_form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% load i18n %} -
    -
    -
    - -
    -
    -
    -
    -
    - {{ activity_form.activity }} -
    -
    -
    - -
    -
    -
    -
    -
    diff --git a/tests/django_ledger/tags/balance_sheet.html b/tests/django_ledger/tags/balance_sheet.html deleted file mode 100644 index a2a1249..0000000 --- a/tests/django_ledger/tags/balance_sheet.html +++ /dev/null @@ -1,178 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - {% if by_unit %} - - {% endif %} - - - - - - - - - {% if by_unit %}{% endif %} - - - - {# ASSETS #} - {% for acc in tx_digest.group_account.GROUP_ASSETS %} - - - - {% if by_unit %} - - {% endif %} - - - - {% endfor %} - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %}{% endif %} - - - - {# LIABILITIES #} - {% for acc in tx_digest.group_account.GROUP_LIABILITIES %} - - - - {% if by_unit %} - - {% endif %} - - - - {% endfor %} - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %}{% endif %} - - - - {# CAPITAL #} - {% for acc in tx_digest.group_account.GROUP_CAPITAL %} - - - - {% if by_unit %} - - {% endif %} - - - - {% endfor %} - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %} - - {% endif %} - - - - - - - {% if by_unit %} - - {% endif %} - - - - -
    {% trans 'Account Number' %}{% trans 'Account Name' %}{% trans 'Unit' %}{% trans 'Balance Type' %}{% trans 'Balance' %}
    -

    {% trans 'Assets' %}

    -
    {{ acc.code }}{{ acc.name }} - {% if acc.unit_name %}{{ acc.unit_name }}{% endif %} - - {% if acc.balance_type == 'debit' %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif acc.balance_type == 'credit' %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - {% currency_symbol %}{{ acc.balance | currency_format }}
    {% trans 'Total Assets' %} - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_ASSETS | currency_format }} -
    -

    {% trans 'Liabilities' %}

    -
    {{ acc.code }}{{ acc.name }} - {% if acc.unit_name %}{{ acc.unit_name }}{% endif %} - - {% if acc.balance_type == 'debit' %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif acc.balance_type == 'credit' %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - {% currency_symbol %}{{ acc.balance | currency_format }}
    {% trans 'Total Liabilities' %} - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_LIABILITIES | currency_format }} -
    -

    {% trans 'Equity' %}

    -
    - {{ acc.code }} - - {{ acc.name }} - - {% if acc.unit_name %}{{ acc.unit_name }}{% endif %} - - {% if acc.balance_type == 'debit' %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif acc.balance_type == 'credit' %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - - {% currency_symbol %}{{ acc.balance | currency_format }} -
    - {% trans 'Total Capital' %} - - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_CAPITAL | currency_format }} -
    - {% trans 'Retained Earnings' %} - - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EARNINGS | currency_format }} -
    - {% trans 'Total Equity' %} - - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EQUITY | currency_format }} -
    - {% trans 'Total Equity + Liabilities' %} - - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_LIABILITIES_EQUITY | currency_format }} -
    -
    diff --git a/tests/django_ledger/tags/bank_accounts_table.html b/tests/django_ledger/tags/bank_accounts_table.html deleted file mode 100644 index 28600d1..0000000 --- a/tests/django_ledger/tags/bank_accounts_table.html +++ /dev/null @@ -1,55 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - - {% for bank_acc in bank_account_qs %} - - - - - - - - - - {% endfor %} - -
    NameAccount NumberRouting NumberTypeCash AccountActiveActions
    {{ bank_acc.name }}{{ bank_acc.account_number | last_four }}{{ bank_acc.routing_number | last_four }}{{ bank_acc.get_account_type_display }}{{ bank_acc.cash_account }} - {% if bank_acc.active %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/bill_item_formset.html b/tests/django_ledger/tags/bill_item_formset.html deleted file mode 100644 index 60eaab3..0000000 --- a/tests/django_ledger/tags/bill_item_formset.html +++ /dev/null @@ -1,67 +0,0 @@ -{% load trans from i18n %} -{% load django_ledger %} -
    -
    -
    -

    {% trans 'Bill Items' %}

    -
    -
    -
    - {% csrf_token %} - {{ item_formset.non_form_errors }} - {{ item_formset.management_form }} - - - - - - - - - - - - - {% for f in item_formset %} - - - - - - - - - {% endfor %} - - - - - - - - - - - -
    {% trans 'Item' %}{% trans 'Unit Cost' %}{% trans 'Quantity' %}{% trans 'Unit' %}{% trans 'Total' %}{% trans 'Delete' %}
    - {% for hidden_field in f.hidden_fields %} - {{ hidden_field }} - {% endfor %} - {{ f.item_model }} - {{ f.unit_cost }}{{ f.quantity }}{{ f.entity_unit }} - {% currency_symbol %}{{ f.instance.total_amount | currency_format }} - - {% if item_formset.can_delete %}{{ f.DELETE }}{% endif %} -
    {% trans 'Total' %} - {% currency_symbol %}{{ total_amount_due | currency_format }} -
    -
    -
    -
    - - {% trans 'New Item' %} - - -
    -
    -
    diff --git a/tests/django_ledger/tags/bill_table.html b/tests/django_ledger/tags/bill_table.html deleted file mode 100644 index 6205ad3..0000000 --- a/tests/django_ledger/tags/bill_table.html +++ /dev/null @@ -1,78 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - - - {% for bill in bills %} - - - - - - - - - - - {% endfor %} - -
    Bill NumberBill DateBill FromAmountPaymentsIs Paid?Past Due?Actions
    {{ bill.bill_number }}{{ bill.date }}{{ bill.vendor.vendor_name }}${{ bill.amount_due | currency_format }}${{ bill.amount_paid | currency_format }} - {% if bill.paid %} - {% icon 'bi:check-circle-fill' 24 %} - {% else %} - {% icon 'clarity:no-access-solid' 24 %} - {% endif %} - - {% if bill.is_past_due %} - {% icon 'bi:check-circle-fill' 24 %} - {% else %} - {% icon 'clarity:no-access-solid' 24 %} - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/breadcrumbs.html b/tests/django_ledger/tags/breadcrumbs.html deleted file mode 100644 index d1e1b82..0000000 --- a/tests/django_ledger/tags/breadcrumbs.html +++ /dev/null @@ -1,38 +0,0 @@ - diff --git a/tests/django_ledger/tags/chart_container.html b/tests/django_ledger/tags/chart_container.html deleted file mode 100644 index 2d66ad2..0000000 --- a/tests/django_ledger/tags/chart_container.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - -
    diff --git a/tests/django_ledger/tags/customer_table.html b/tests/django_ledger/tags/customer_table.html deleted file mode 100644 index 245c19a..0000000 --- a/tests/django_ledger/tags/customer_table.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - {% for customer in customers %} - - - - - - {% endfor %} - -
    CustomerAddressActions
    {{ customer.customer_name }}{{ customer.address_1 }} - -
    -
    diff --git a/tests/django_ledger/tags/data_import_job_list_table.html b/tests/django_ledger/tags/data_import_job_list_table.html deleted file mode 100644 index b461fd0..0000000 --- a/tests/django_ledger/tags/data_import_job_list_table.html +++ /dev/null @@ -1,58 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - {% for job in import_jobs %} - - - - - - - - - {% endfor %} - -
    StatusDescriptionLedgerCreatedCompletedActions
    {{ job.status }}{{ job.description }}{{ job.ledger }}{{ job.created }} - {% if job.completed %} - - - - {% else %} - - - - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/data_import_job_txs_imported.html b/tests/django_ledger/tags/data_import_job_txs_imported.html deleted file mode 100644 index 49f40c7..0000000 --- a/tests/django_ledger/tags/data_import_job_txs_imported.html +++ /dev/null @@ -1,32 +0,0 @@ -
    - - - - - - - - - - - - - {% for imported_tx in imported_txs %} - - - - - - - - - {% endfor %} - -
    Dated PostedDescriptionAmountMap ToTXActions
    {{ imported_tx.date_posted }}{{ imported_tx.name }} - ${{ imported_tx.amount }} - {{ imported_tx.earnings_account }}{{ imported_tx.tx }} - - View - -
    -
    diff --git a/tests/django_ledger/tags/data_import_job_txs_table.html b/tests/django_ledger/tags/data_import_job_txs_table.html deleted file mode 100644 index c3c9770..0000000 --- a/tests/django_ledger/tags/data_import_job_txs_table.html +++ /dev/null @@ -1,53 +0,0 @@ -{% load i18n %} -
    - {{ staged_txs_formset.non_form_errors }} - {% if staged_txs_formset.errors %}{{ staged_txs_formset.errors }}{% endif %} - {{ staged_txs_formset.management_form }} - {% csrf_token %} -
    - - - - - - - - - {# - - #} - - - - {% for txf in staged_txs_formset %} - - {% for hidden_field in txf.hidden_fields %} - {{ hidden_field }} - {% endfor %} - - - - - - - {% endfor %} - -
    Dated PostedDescriptionAmountMap ToCommit TXTX
    {{ txf.date_posted.value }}{{ txf.name.value }} - ${{ txf.amount.value }} - {{ txf.earnings_account }}{{ txf.tx_import }}
    -
    -
    -
    - -
    - -
    -
    diff --git a/tests/django_ledger/tags/date_picker.html b/tests/django_ledger/tags/date_picker.html deleted file mode 100644 index cbe5666..0000000 --- a/tests/django_ledger/tags/date_picker.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} -{% if date_navigation_url %} - -{% endif %} diff --git a/tests/django_ledger/tags/default_entity.html b/tests/django_ledger/tags/default_entity.html deleted file mode 100644 index 1a61d95..0000000 --- a/tests/django_ledger/tags/default_entity.html +++ /dev/null @@ -1,10 +0,0 @@ -
    - {% csrf_token %} -
    -
    -
    - {{ default_entity_form.entity_model }} -
    -
    -
    -
    diff --git a/tests/django_ledger/tags/expense_item_table.html b/tests/django_ledger/tags/expense_item_table.html deleted file mode 100644 index 1e7c423..0000000 --- a/tests/django_ledger/tags/expense_item_table.html +++ /dev/null @@ -1,43 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - {% for expense_item in expense_list %} - - - - - - - {% endfor %} - -
    ItemUOMExpense AccountActions
    {{ expense_item.name }}{{ expense_item.uom }}{{ expense_item.expense_account }} - -
    -
    diff --git a/tests/django_ledger/tags/feedback_button.html b/tests/django_ledger/tags/feedback_button.html deleted file mode 100644 index 04d9184..0000000 --- a/tests/django_ledger/tags/feedback_button.html +++ /dev/null @@ -1,83 +0,0 @@ -{% load i18n %} -{% load icon from django_ledger %} - -{# BUG MODAL #} - -{# FEATURE MODAL #} - diff --git a/tests/django_ledger/tags/filters.html b/tests/django_ledger/tags/filters.html deleted file mode 100644 index 8c5d44d..0000000 --- a/tests/django_ledger/tags/filters.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load django_ledger %} -
    -
    -

    - Filters -

    -
    -
    - {% activity_filter %} -
    -
    diff --git a/tests/django_ledger/tags/icon.html b/tests/django_ledger/tags/icon.html deleted file mode 100644 index 0e7d770..0000000 --- a/tests/django_ledger/tags/icon.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/django_ledger/tags/income_statement.html b/tests/django_ledger/tags/income_statement.html deleted file mode 100644 index 93a40f4..0000000 --- a/tests/django_ledger/tags/income_statement.html +++ /dev/null @@ -1,98 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %}{% endif %} - - - - {% for acc in tx_digest.group_account.GROUP_INCOME %} - - - - {% if by_unit %} - - {% endif %} - - - - {% endfor %} - - - - {% if by_unit %}{% endif %} - - - - - - - - {% if by_unit %}{% endif %} - - - {% for acc in tx_digest.group_account.GROUP_EXPENSES %} - - - - {% if by_unit %} - - {% endif %} - - - - {% endfor %} - - - - {% if by_unit %}{% endif %} - - - - - - - {% if by_unit %}{% endif %} - - - -
    Account NumberDescriptionUnitBalance TypeBalance
    -

    {% trans 'Income' %}

    -
    {{ acc.code }}{{ acc.name }} - {% if acc.unit_name %}{{ acc.unit_name }}{% endif %} - - {% if acc.balance_type == 'debit' %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif acc.balance_type == 'credit' %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - {% currency_symbol %}{{ acc.balance | currency_format }}
    Total Income - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_INCOME | currency_format }} -
    -

    {% trans 'Expenses' %}

    -
    {{ acc.code }}{{ acc.name }} - {% if acc.unit_name %}{{ acc.unit_name }}{% endif %} - - {% if acc.balance_type == 'debit' %} - {% icon 'bi:arrow-bar-down' 24 %} - {% elif acc.balance_type == 'credit' %} - {% icon 'bi:arrow-bar-up' 24 %} - {% endif %} - {% currency_symbol %}{{ acc.balance | reverse_sing | currency_format }}
    Total Expenses - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EXPENSES | reverse_sing | currency_format }} -
    - Total Income (Loss) - - {% currency_symbol %}{{ tx_digest.group_balance.GROUP_EARNINGS | currency_format }} -
    -
    diff --git a/tests/django_ledger/tags/inventory_item_table.html b/tests/django_ledger/tags/inventory_item_table.html deleted file mode 100644 index 8a1dc40..0000000 --- a/tests/django_ledger/tags/inventory_item_table.html +++ /dev/null @@ -1,45 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - {% for inv_item in inventory_item_list %} - - - - - - - - {% endfor %} - -
    ItemUOMInventory AccountCOGS AccountActions
    {{ inv_item.name }}{{ inv_item.uom }}{{ inv_item.inventory_account }}{{ inv_item.cogs_account }} - -
    -
    diff --git a/tests/django_ledger/tags/invoice_item_formset.html b/tests/django_ledger/tags/invoice_item_formset.html deleted file mode 100644 index 9172a26..0000000 --- a/tests/django_ledger/tags/invoice_item_formset.html +++ /dev/null @@ -1,65 +0,0 @@ -{% load trans from i18n %} -{% load django_ledger %} -
    -
    -
    -

    {% trans 'Invoice Items' %}

    -
    -
    -
    - {% csrf_token %} - {{ item_formset.non_form_errors }} - {{ item_formset.management_form }} - - - - - - - - - - - - {% for f in item_formset %} - - - - - - - - {% endfor %} - - - - - - - - - - -
    {% trans 'Item' %}{% trans 'Unit Cost' %}{% trans 'Quantity' %}{% trans 'Total' %}{% trans 'Delete' %}
    - {% for hidden_field in f.hidden_fields %} - {{ hidden_field }} - {% endfor %} - {{ f.item_model }} - {{ f.unit_cost }}{{ f.quantity }} - {% currency_symbol %}{{ f.instance.total_amount | currency_format }} - - {% if item_formset.can_delete %}{{ f.DELETE }}{% endif %} -
    {% trans 'Total' %} - {% currency_symbol %}{{ total_amount_due | currency_format }} -
    -
    -
    -
    - - {% trans 'New Item' %} - - -
    -
    -
    diff --git a/tests/django_ledger/tags/invoice_table.html b/tests/django_ledger/tags/invoice_table.html deleted file mode 100644 index 6659e20..0000000 --- a/tests/django_ledger/tags/invoice_table.html +++ /dev/null @@ -1,78 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - - - {% for invoice in invoices %} - - - - - - - - - - - {% endfor %} - -
    Invoice NumberInvoice DateInvoiced ToAmountPaymentsIs Paid?Past Due?Actions
    {{ invoice.invoice_number }}{{ invoice.date }}{{ invoice.customer.customer_name }}${{ invoice.amount_due | currency_format }}${{ invoice.amount_paid | currency_format }} - {% if invoice.paid %} - {% icon 'bi:check-circle-fill' 24 %} - {% else %} - {% icon 'clarity:no-access-solid' 24 %} - {% endif %} - - {% if invoice.is_past_due %} - {% icon 'bi:check-circle-fill' 24 %} - {% else %} - {% icon 'clarity:no-access-solid' 24 %} - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/jes_table.html b/tests/django_ledger/tags/jes_table.html deleted file mode 100644 index bac6e1d..0000000 --- a/tests/django_ledger/tags/jes_table.html +++ /dev/null @@ -1,68 +0,0 @@ -{% load django_ledger %} -
    - - - - - - - - - - - - - - {% for je in jes %} - - - - - - - - - - {% endfor %} - -
    DescriptionActivityJE DatePostedLockedCreatedActions
    {{ je.description }}{{ je.get_activity_display }}{{ je.date }} - {% if je.posted %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} - - {% if je.locked %} - {% icon 'bi:lock-fill' 24 %} - {% else %} - {% icon 'bx:bx-lock-open-alt' 24 %} - {% endif %} - {{ je.created | timesince }} - -
    -
    diff --git a/tests/django_ledger/tags/ledgers_table.html b/tests/django_ledger/tags/ledgers_table.html deleted file mode 100644 index bd03bb9..0000000 --- a/tests/django_ledger/tags/ledgers_table.html +++ /dev/null @@ -1,65 +0,0 @@ -{% now "Y" as current_year %} -{% load icon from django_ledger %} -
    - - - - - - - - - - - - - - {% for ledger in ledgers %} - - - - - - - - - - {% endfor %} - -
    NameDetailBalance SheetIncome StatementPostedLockedActions
    {{ ledger.name }} - - Journal - Entries - - - - Balance - Sheet - - - - Income - Statement - - - {% if ledger.posted %} - {% icon 'ant-design:check-circle-filled' 24 %} - {% else %} - {% icon 'maki:roadblock-11' 24 %} - {% endif %} - - {% if ledger.locked %} - {% icon 'bi:lock-fill' 24 %} - {% else %} - {% icon 'bx:bx-lock-open-alt' 24 %} - {% endif %} - - - Edit - -
    -
    diff --git a/tests/django_ledger/tags/menu.html b/tests/django_ledger/tags/menu.html deleted file mode 100644 index 442c7b0..0000000 --- a/tests/django_ledger/tags/menu.html +++ /dev/null @@ -1,54 +0,0 @@ -{% load django_ledger %} -{% load trans from i18n %} -{% if style == 'desktop' %} -
    - -
    - {# A menu that renders only on mobile devices when the burger menu is opened #} -{% elif style == 'mobile' %} - -{% endif %} diff --git a/tests/django_ledger/tags/modals.html b/tests/django_ledger/tags/modals.html deleted file mode 100644 index 05f2e0f..0000000 --- a/tests/django_ledger/tags/modals.html +++ /dev/null @@ -1,29 +0,0 @@ -{% load i18n %} - diff --git a/tests/django_ledger/tags/period_navigator.html b/tests/django_ledger/tags/period_navigator.html deleted file mode 100644 index 849408f..0000000 --- a/tests/django_ledger/tags/period_navigator.html +++ /dev/null @@ -1,54 +0,0 @@ -{% load django_ledger %} -{% load trans from i18n %} -
    -
    -
    -

    - {% if has_month %}{{ to_date | date:"F Y" }}{% endif %} - {% if has_quarter %}Q{{ quarter }} {{ year }}{% endif %} - {% if has_date %}{{ to_date | date }}{% endif %} -

    -
    -

    - Year: - - << {{ previous_year }} - - | - {{ year }} - | - {{ next_year }} >> -

    -

    - Quarter: - {% for q_url in quarter_urls %} - {{ q_url.quarter_name }} - {% if not forloop.last %}|{% endif %} - {% endfor %} -

    -

    - Month: - {% for m_url in month_urls %} - {{ m_url.month_abbr }} - {% if not forloop.last %}|{% endif %} - {% endfor %} -

    -
    - {% if has_date %} -

    - {{ from_date | date:"m/d/Y" }} -

    - {% else %} -

    - {{ from_date | date:"m/d/Y" }} - {% trans 'thru' %} - {{ to_date | date:"m/d/Y" }} -

    - {% endif %} - {% trans 'Go To Current Month' %} -
    -
    - {% date_picker date_navigation_url %} -
    -
    -
    diff --git a/tests/django_ledger/tags/pns_table.html b/tests/django_ledger/tags/pns_table.html deleted file mode 100644 index 3e898f4..0000000 --- a/tests/django_ledger/tags/pns_table.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - {% for pns in pns_list %} - - - - - - - - - {% endfor %} - -
    ItemUOMSKUUPCEarnings AccountActions
    {{ pns.name }}{{ pns.uom }}{{ pns.sku }}{{ pns.upc }}{{ pns.earnings_account }} - -
    -
    diff --git a/tests/django_ledger/tags/po_item_formset.html b/tests/django_ledger/tags/po_item_formset.html deleted file mode 100644 index ec2938e..0000000 --- a/tests/django_ledger/tags/po_item_formset.html +++ /dev/null @@ -1,87 +0,0 @@ -{% load trans from i18n %} -{% load django_ledger %} -
    -
    -
    -

    {% trans 'Purchase Order Items' %}

    -
    -
    -
    - {% csrf_token %} - {{ item_formset.non_form_errors }} - {{ item_formset.management_form }} - - - - - - - - - - {% if item_formset.can_delete %} - - {% endif %} - - - - - {% for f in item_formset %} - - - - - - - - {% if item_formset.can_delete %}{% endif %} - - - {% endfor %} - - - - - - - - - - {% if item_formset.can_delete %}{% endif %} - - - -
    {% trans 'Item' %}{% trans 'Unit Cost' %}{% trans 'Quantity' %}{% trans 'Unit' %}{% trans 'Total' %}{% trans 'Status' %}{% trans 'Delete' %}{% trans 'Create Bill' %}
    - {% for hidden_field in f.hidden_fields %} - {{ hidden_field }} - {% endfor %} - {{ f.item_model }} - {% if f.errors %}{{ f.errors }}{% endif %} - {{ f.unit_cost }}{{ f.quantity }}{{ f.entity_unit }} - {% currency_symbol %}{{ f.instance.total_amount | currency_format }} - {{ f.po_item_status }}{{ f.DELETE }} - {% if f.instance.can_create_bill %} - {{ f.create_bill }} - {% elif f.instance.bill_model %} - - View - Bill - - {# -{% else %} - #} - {% endif %} -
    {% trans 'Total' %} - {% currency_symbol %}{{ total_amount_due | currency_format }} -
    -
    -
    -
    - - {% trans 'New Item' %} - - -
    -
    -
    diff --git a/tests/django_ledger/tags/po_table.html b/tests/django_ledger/tags/po_table.html deleted file mode 100644 index bd0aed1..0000000 --- a/tests/django_ledger/tags/po_table.html +++ /dev/null @@ -1,55 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - - - - - {% for po in po_list %} - - - - - - - - - - {% endfor %} - -
    PO NumberDescriptionPO DatePO StatusFulfilment DatePO AmountActions
    {{ po.po_number }}{{ po.po_title }}{{ po.po_date }}{{ po.get_po_status_display }} - {% if po.fulfillment_date %}{{ po.fulfillment_date }}{% endif %} - {% currency_symbol %}{{ po.po_amount | currency_format }} - -
    -
    diff --git a/tests/django_ledger/tags/txs_table.html b/tests/django_ledger/tags/txs_table.html deleted file mode 100644 index 161ccdd..0000000 --- a/tests/django_ledger/tags/txs_table.html +++ /dev/null @@ -1,40 +0,0 @@ -{% load django_ledger %} -
    - - - - - - - - - - - {% for tx in txs %} - - - - - - - - - - {% endfor %} - - - - - - - - - -
    DateAccountAccount NameUnitCreditDebitDescription
    {{ tx.journal_entry.date }}{{ tx.account.code }}{{ tx.account.name }} - {% if tx.journal_entry.entity_unit %}{{ tx.journal_entry.entity_unit }}{% endif %} - - {% if tx.tx_type == 'credit' %}${{ tx.amount | currency_format }}{% endif %} - - {% if tx.tx_type == 'debit' %}${{ tx.amount | currency_format }}{% endif %} - {{ tx.description }}
    Total{% currency_symbol %}{{ total_credits | currency_format }}{% currency_symbol %}{{ total_debits | currency_format }}
    -
    diff --git a/tests/django_ledger/tags/uom_table.html b/tests/django_ledger/tags/uom_table.html deleted file mode 100644 index 94b0af6..0000000 --- a/tests/django_ledger/tags/uom_table.html +++ /dev/null @@ -1,49 +0,0 @@ -{% load trans from i18n %} -{% load icon from django_ledger %} -
    - - - - - - - - - - - {% for uom in uom_list %} - - - - - - - {% endfor %} - -
    {% trans 'UOM' %}{% trans 'Abbreviation' %}{% trans 'Active' %}{% trans 'Actions' %}
    {{ uom.name }}{{ uom.unit_abbr }} - {% if uom.is_active %} - {% icon 'bi:check-circle-fill' 24 %} - {% else %} - {% icon 'clarity:no-access-solid' 24 %} - {% endif %} - - -
    -
    diff --git a/tests/django_ledger/tags/vendor_table.html b/tests/django_ledger/tags/vendor_table.html deleted file mode 100644 index 908e87a..0000000 --- a/tests/django_ledger/tags/vendor_table.html +++ /dev/null @@ -1,46 +0,0 @@ -{% load django_ledger %} -{% load i18n %} -
    - - - - - - - - - - {% for vendor in vendors %} - - - - - - {% endfor %} - -
    VendorAddressActions
    {{ vendor.vendor_name }}{{ vendor.address_1 }} - -
    -
    diff --git a/tests/django_ledger/txs.html b/tests/django_ledger/txs.html deleted file mode 100644 index 7b27ab3..0000000 --- a/tests/django_ledger/txs.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% block view_content %} -
    -
    - {% csrf_token %} -
    -
    - {{ txs_formset.non_form_errors }} - {{ txs_formset.management_form }} -
    -
    - - - - - - - {% if txs_formset.can_delete %}{% endif %} - - {% for f in txs_formset %} - - - - - - - - {% endfor %} -
    AccountTX TypeAmountDescriptionDelete
    - {% for hidden_field in f.hidden_fields %} - {{ hidden_field }} - {% endfor %} - {{ f.account }} - {{ f.tx_type }}{{ f.amount }}{{ f.description }} - {% if txs_formset.can_delete %}{{ f.DELETE }}{% endif %} -
    -
    -
    - - Done -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/unit_create.html b/tests/django_ledger/unit_create.html deleted file mode 100644 index 82a403f..0000000 --- a/tests/django_ledger/unit_create.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Create Entity Unit' %}

    -
    -
    -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/unit_detail.html b/tests/django_ledger/unit_detail.html deleted file mode 100644 index 708189b..0000000 --- a/tests/django_ledger/unit_detail.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} - -{% endblock %} diff --git a/tests/django_ledger/unit_list.html b/tests/django_ledger/unit_list.html deleted file mode 100644 index cffd4fe..0000000 --- a/tests/django_ledger/unit_list.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Entity Units List' %}

    -
    - -
    -
    -
    - {% for unit in unit_list %} -
    -
    -
    - {# -

    - #} - {# -{% icon "bi:cash-stack" 16 %} - #} - {# {% trans 'Unit' %} -

    - #} -

    - {{ unit.name }} -

    -
    - -
    -
    -{% endfor %} -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/unit_update.html b/tests/django_ledger/unit_update.html deleted file mode 100644 index 6e2482b..0000000 --- a/tests/django_ledger/unit_update.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Update Entity Unit' %}

    -
    -
    -
    -
    -
    -
    - {% csrf_token %} - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/uom_create.html b/tests/django_ledger/uom_create.html deleted file mode 100644 index b97b964..0000000 --- a/tests/django_ledger/uom_create.html +++ /dev/null @@ -1,32 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/uom_list.html b/tests/django_ledger/uom_list.html deleted file mode 100644 index 0000655..0000000 --- a/tests/django_ledger/uom_list.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    -
    -

    {% trans 'Unit of Measures List' %}

    -
    - -
    -
    - {% uom_table uom_list %} -
    -
    -{% endblock %} diff --git a/tests/django_ledger/uom_update.html b/tests/django_ledger/uom_update.html deleted file mode 100644 index 97c22b6..0000000 --- a/tests/django_ledger/uom_update.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    -
    - {% csrf_token %} -
    -

    - - {% icon 'ic:baseline-production-quantity-limits' 36 %} - - {{ page_title }} -

    -
    -
    - {{ form.as_p }} - - - {% trans 'Back' %} - -
    -
    -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/vendor_create.html b/tests/django_ledger/vendor_create.html deleted file mode 100644 index 6f02e8c..0000000 --- a/tests/django_ledger/vendor_create.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {{ form.as_p }} - {% csrf_token %} -
    -
    - - - {% trans 'Go Back' %} - -
    -
    -
    -{% endblock %} diff --git a/tests/django_ledger/vendor_list.html b/tests/django_ledger/vendor_list.html deleted file mode 100644 index a05b9d9..0000000 --- a/tests/django_ledger/vendor_list.html +++ /dev/null @@ -1,18 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load static %} -{% load django_ledger %} -{% block view_content %} - -{% endblock %} diff --git a/tests/django_ledger/vendor_update.html b/tests/django_ledger/vendor_update.html deleted file mode 100644 index c1c42fe..0000000 --- a/tests/django_ledger/vendor_update.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'django_ledger/layouts/content_layout_1.html' %} -{% load i18n %} -{% load django_ledger %} -{% block view_content %} -
    -
    -
    - {{ form.as_p }} - {% csrf_token %} -
    -
    - - - {% trans 'Go Back' %} - -
    -
    -
    -{% endblock %} diff --git a/tests/django_oscar/flatpages/default.html b/tests/django_oscar/flatpages/default.html deleted file mode 100644 index 08a80e0..0000000 --- a/tests/django_oscar/flatpages/default.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block title %}{{ flatpage.title }} | {{ block.super }}{% endblock %} -{% block header %} - -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block content %} -
    - {{ flatpage.content }} -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/403.html b/tests/django_oscar/oscar/403.html deleted file mode 100644 index af016f7..0000000 --- a/tests/django_oscar/oscar/403.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "oscar/error.html" %} -{% load i18n %} -{% block title %} - {% trans 'Permission denied!' %} | {{ block.super }} -{% endblock %} -{% block error_heading %} - {% trans "Permission denied!" %} -{% endblock %} -{% block error_message %} -

    - {% trans "We're sorry but you are not permitted to access this page." %} -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/404.html b/tests/django_oscar/oscar/404.html deleted file mode 100644 index 0946e84..0000000 --- a/tests/django_oscar/oscar/404.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "oscar/error.html" %} -{% load i18n %} -{% block title %} - {% trans 'Page not found' %} | {{ block.super }} -{% endblock %} -{% block error_heading %} - {% trans "Page not found!" %} -{% endblock %} -{% block error_message %} -

    - {% trans "We're sorry but the page you are looking for can't be found." %} -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/500.html b/tests/django_oscar/oscar/500.html deleted file mode 100644 index b7df5d0..0000000 --- a/tests/django_oscar/oscar/500.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - Server error! - - - - -

    Server error!

    -

    - We're sorry but something went terribly wrong and we've been unable to generate the page you requested. -

    -

    - This incident has been logged and will be addressed by an engineer as soon as possible. -

    -

    - Return to previous page -
    - Go to homepage -

    - - diff --git a/tests/django_oscar/oscar/README.rst b/tests/django_oscar/oscar/README.rst deleted file mode 100644 index 2738fe9..0000000 --- a/tests/django_oscar/oscar/README.rst +++ /dev/null @@ -1,68 +0,0 @@ -================== -Template Structure -================== - -Markup ------- - -Template markup for the most part has been written in accordance with Twitter Bootstrap. -Documentation on Bootstrap HTML markup and classes used see (http://twitter.github.com/bootstrap/index.html). - -Layouts -------- - -Currently there are 5 different layouts that extend the base.html - -layout.html : - For single column layouts -* detail.html -* basket.html -* flatpages/default.html - -layout_2_col.html : - For two column layouts whereby first column is subservient (aside) to the main column -* home.html -* browse.html - -layout_3_col.html : - For three column layouts whereby first and third columns are subservient (aside) to the main middlecolumn -* Currently NOT used - -checkout/layout.html : - For the checkout pages, removes the main navigation and uses a single column by default -* checkout.html -* gateway.html -* thank_you.html - -dashboard/layout.html : - For dashboard section specifically different from the other frontend features: -* separate css -* separate js -* single column 100% page width - -Forms ------ - -Forms are rendered using either of these two partial templates - -* form_fields.html -* form_fields_inline.html - -form_fields.html : - This is used for the majority of the forms in the frontend and dashboard, using a horizontal label / field stack - -form_fields_inline.html : - Used for smaller forms to reduced screen space (mainly in the dashboard section for search forms) - -Partials form_fields:: - - 'include "oscar/partials/form_fields.html" with form=form' - -Partials form_fields_inline:: - - 'include "oscar/partials/form_fields_inline.html" with form=form' - -Conventions ------------ - -Template names should use underscores, not hyphens. diff --git a/tests/django_oscar/oscar/base.html b/tests/django_oscar/oscar/base.html deleted file mode 100644 index 5c7cd8a..0000000 --- a/tests/django_oscar/oscar/base.html +++ /dev/null @@ -1,48 +0,0 @@ -{% load i18n %} -{% load static %} - - - - - {% block title %}{{ shop_name }} - {{ shop_tagline }}{% endblock %} - - - - - - {% block favicon %} - - {% endblock %} - {# Block where global CSS will go. #} - {% block styles %}{% endblock %} - {# Additional CSS - specific to certain pages #} - {% block extrastyles %}{% endblock %} - {% block extrahead %}{% endblock %} - {% block tracking %} - {# Default to using Google analytics #} - {% include "oscar/partials/google_analytics.html" %} - {% endblock %} - - - {# Main content goes in this 'layout' block #} - {% block layout %}{% endblock %} - {# Scripts loaded from a CDN. #} - {% block cdn_scripts %} - - - - {% endblock %} - {# Local scripts #} - {% block scripts %}{% endblock %} - {# Additional JS scripts #} - {% block extrascripts %}{% endblock %} - {# Block for body onload functions #} - - {# Page meta-data - this is populated by the 'metadata' template context processor #} - - diff --git a/tests/django_oscar/oscar/basket/basket.html b/tests/django_oscar/oscar/basket/basket.html deleted file mode 100644 index 58c60ee..0000000 --- a/tests/django_oscar/oscar/basket/basket.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block title %} - {% trans "Basket" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{# Hide mini-basket so we don't have two baskets to keep in sync #} -{% block mini_basket %}{% endblock %} -{% block headertext %} - {% trans "Basket" %} -{% endblock %} -{% block content %} - {# Use a partial template so that AJAX can be used to re-render basket #} - {% include 'oscar/basket/partials/basket_content.html' %} -{% endblock content %} -{% block onbodyload %} - {{ block.super }} - {# We pass in the URL to send AJAX requests to #} - var options = { - 'basketURL': '{% url 'basket:summary' %}' - }; - oscar.basket.init(options); -{% endblock %} diff --git a/tests/django_oscar/oscar/basket/messages/addition.html b/tests/django_oscar/oscar/basket/messages/addition.html deleted file mode 100644 index 073db55..0000000 --- a/tests/django_oscar/oscar/basket/messages/addition.html +++ /dev/null @@ -1,14 +0,0 @@ -{% load i18n %} -{% if quantity == 1 %} - {% blocktrans with title=product.get_title %} - {{ title }} - has been added to your basket. - {% endblocktrans %} -{% else %} - {% blocktrans with title=product.get_title quantity=quantity %} - {{ quantity }} - copies of - {{ title }} - have been added to your basket. - {% endblocktrans %} -{% endif %} diff --git a/tests/django_oscar/oscar/basket/messages/line_restored.html b/tests/django_oscar/oscar/basket/messages/line_restored.html deleted file mode 100644 index 10f321c..0000000 --- a/tests/django_oscar/oscar/basket/messages/line_restored.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load i18n %} -{% blocktrans with title=line.product.get_title %} - {{ title }} - has been moved back to your basket. -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/basket/messages/line_saved.html b/tests/django_oscar/oscar/basket/messages/line_saved.html deleted file mode 100644 index c67cf7d..0000000 --- a/tests/django_oscar/oscar/basket/messages/line_saved.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load i18n %} -{% blocktrans with title=line.product.get_title %} - {{ title }} - has been saved for later -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/basket/messages/new_total.html b/tests/django_oscar/oscar/basket/messages/new_total.html deleted file mode 100644 index c8d0720..0000000 --- a/tests/django_oscar/oscar/basket/messages/new_total.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n %} -{% load currency_filters %} -{% if basket.is_empty %} - {% trans "Your basket is now empty" %} -{% else %} - {% if basket.is_tax_known %} - {% blocktrans with total=basket.total_incl_tax|currency:basket.currency %} - Your basket total is now - {{ total }} - {% endblocktrans %} - {% else %} - {% blocktrans with total=basket.total_excl_tax|currency:basket.currency %} - Your basket total is now - {{ total }} - {% endblocktrans %} - {% endif %} -{% endif %} -{% if include_buttons %} -
    - - {% trans "View basket" %} - - - {% trans "Checkout now" %} - -{% endif %} diff --git a/tests/django_oscar/oscar/basket/messages/offer_gained.html b/tests/django_oscar/oscar/basket/messages/offer_gained.html deleted file mode 100644 index c9f9cdd..0000000 --- a/tests/django_oscar/oscar/basket/messages/offer_gained.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load i18n %} -{% blocktrans with name=offer.name %} - Your basket now qualifies for the - {{ name }} - offer. -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/basket/messages/offer_lost.html b/tests/django_oscar/oscar/basket/messages/offer_lost.html deleted file mode 100644 index 3852d17..0000000 --- a/tests/django_oscar/oscar/basket/messages/offer_lost.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load i18n %} -{% blocktrans with name=offer.name %} - Your basket no longer qualifies for the - {{ name }} - offer. -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/basket/partials/basket_content.html b/tests/django_oscar/oscar/basket/partials/basket_content.html deleted file mode 100644 index 94fb96f..0000000 --- a/tests/django_oscar/oscar/basket/partials/basket_content.html +++ /dev/null @@ -1,273 +0,0 @@ -{% load i18n %} -{% load image_tags %} -{% load currency_filters %} -{% load purchase_info_tags %} -{% load widget_tweaks %} -{% if basket_warnings %} -
    {% trans "Important messages about items in your basket" %}
    - {% for warning in basket_warnings %} -
    - {{ warning }} -
    - {% endfor %} -{% endif %} -{% if upsell_messages %} -
    -

    {% trans "You could be missing out on offers!" %}

    - {% for upsell in upsell_messages %} - {% blocktrans with message=upsell.message url=upsell.offer.get_absolute_url offer_name=upsell.offer.name %} -
    - {{ message }} to qualify for the - {{ offer_name }} - special offer -
    - {% endblocktrans %} - {% endfor %} -
    -{% endif %} -{% if not basket.is_empty %} - {% block basket_form_headers %} -
    -
    -

    {% trans "Items to buy now" %}

    -

    {% trans "Quantity" %}

    -

    {% trans "Price" %}

    -

    {% trans "Total" %}

    -
    -
    - {% endblock %} - {% block basket_form_main %} -
    - {% csrf_token %} - {{ formset.management_form }} - {% for form in formset %} - {% with line=form.instance product=form.instance.product %} - {% purchase_info_for_line request line as session %} -
    -
    -
    - {{ form.id }} - {% with image=product.primary_image %} - {% oscar_thumbnail image.original "100x100" upscale=False as thumb %} - - {{ product.get_title }} - - {% endwith %} -
    -
    -

    - {{ line.description }} -

    -

    - {{ session.availability.message }} -

    -
    -
    -
    -
    - {% render_field form.quantity class+="form-control" %} -
    - -
    -
    -
    -
    - - {% trans "Remove" %} - - {% if user.is_authenticated %} - | - - {% trans "Save for later" %} - - {% endif %} -
    - {{ form.save_for_later }} - {{ form.DELETE }} -
    - {% for field_errors in form.errors.values %} - {% for error in field_errors %} - - - {{ error }} - - {% endfor %} - {% endfor %} -
    -
    -
    - {% if not line.unit_price_incl_tax and not line.unit_tax_excl_tax %} -

    - — -

    - {% else %} -

    - {% trans "Price" %}: - {% if line.is_tax_known %} - {{ line.unit_price_incl_tax|currency:line.price_currency }} - {% else %} - {{ line.unit_price_excl_tax|currency:line.price_currency }} - {% endif %} -

    - {% endif %} -
    -
    - {% if not line.line_price_incl_tax and not line_price_excl_tax %} -

    - — -

    - {% else %} -

    - {% trans "Total" %}: - {% if line.is_tax_known %} - {{ line.line_price_incl_tax|currency:line.price_currency }} - {% else %} - {{ line.line_price_excl_tax|currency:line.price_currency }} - {% endif %} -

    - {% endif %} -
    -
    -
    - {% endwith %} - {% endfor %} -
    - {% endblock %} -
    - {% block vouchers %} - {# Hide the entire section if a custom BasketView doesn't pass in a voucher form #} - {% if voucher_form %} -
    -
    -

    {% trans "Voucher/promo code" %}

    -
    - - -
    - {% endif %} - {% endblock vouchers %} - {% block baskettotals %} -
    -
    -

    {% trans "Totals" %}

    -
    - {% include 'oscar/basket/partials/basket_totals.html' with editable=1 %} -
    - {% endblock baskettotals %} -
    - {% block formactions %} - - {% endblock formactions %} -{% else %} - {% block emptybasket %} -

    - {% trans "Your basket is empty." %} - {% trans "Continue shopping" %} -

    - {% endblock %} -{% endif %} -{% block savedbasket %} - {% if user.is_authenticated and saved_formset %} -
    -
    -

    {% trans "Items to buy later" %}

    -
    -
    -
    - {% trans "Items" %} -
    -
    - {% trans "Price" %} -
    -
    -   -
    -
    -
    - {% csrf_token %} - {{ saved_formset.management_form }} - {% for form in saved_formset %} - {% purchase_info_for_product request form.instance.product as session %} -
    -
    -
    - {{ form.id }} - {% with image=form.instance.product.primary_image %} - {% oscar_thumbnail image.original "100x100" upscale=False as thumb %} - - {{ form.instance.product.get_title }} - - {% endwith %} -
    -
    -

    - - {{ form.instance.description }} - -

    -

    - {{ session.availability.message }} -

    - - {% trans "Remove" %} - -
    - {{ form.move_to_basket }} - {{ form.DELETE }} -
    -
    - {% purchase_info_for_product request form.instance.product as saved %} -
    -

    - {% if saved.price.is_tax_known %} - {{ saved.price.incl_tax|currency:saved.price.currency }} - {% else %} - {{ saved.price.excl_tax|currency:saved.price.currency }} - {% endif %} -

    -
    - -
    -
    - {% endfor %} -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/basket/partials/basket_quick.html b/tests/django_oscar/oscar/basket/partials/basket_quick.html deleted file mode 100644 index e138866..0000000 --- a/tests/django_oscar/oscar/basket/partials/basket_quick.html +++ /dev/null @@ -1,69 +0,0 @@ -{% load history_tags %} -{% load basket_tags %} -{% load currency_filters %} -{% load image_tags %} -{% load i18n %} -
      - {% if request.basket.num_lines %} - {% for line in request.basket.all_lines %} -
    • -
      -
      -
      - {% with image=line.product.primary_image %} - {% oscar_thumbnail image.original "100x100" upscale=False as thumb %} - - {{ line.product.get_title }} - - {% endwith %} -
      -
      - -
      - {% trans "Qty" %} - {{ line.quantity }} -
      -
      - {{ line.unit_price_excl_tax|currency:request.basket.currency }} -
      -
      -
    • - {% endfor %} -
    • -

      - {% if request.basket.is_tax_known %} - - {% trans "Total:" %} {{ request.basket.total_incl_tax|currency:request.basket.currency }} - - {% else %} - - {% trans "Total:" %} {{ request.basket.total_excl_tax|currency:request.basket.currency }} - - {% endif %} -

      - - {% trans "View basket" %} - - - - {% trans "Checkout" %} - -
    • - {% else %} -
    • -

      - {% trans "Your basket is empty." %} -

      -
    • - {% endif %} -
    diff --git a/tests/django_oscar/oscar/basket/partials/basket_totals.html b/tests/django_oscar/oscar/basket/partials/basket_totals.html deleted file mode 100644 index 62b5232..0000000 --- a/tests/django_oscar/oscar/basket/partials/basket_totals.html +++ /dev/null @@ -1,265 +0,0 @@ -{% load i18n %} -{% load currency_filters %} -{% load shipping_tags %} -
    - - - {% block basket_header %} - - - - {% endblock %} - {% with offer_discounts=basket.offer_discounts voucher_discounts=basket.grouped_voucher_discounts %} - {% block discount_totals %} - {% if offer_discounts or voucher_discounts %} - {# Basket total will be discounted so we show a before and after version #} - - - - - {% for discount in offer_discounts %} - - - - - {% endfor %} - {% if voucher_discounts %} - - - - {% for discount in voucher_discounts %} - - - - - {% endfor %} - {% endif %} - {% endif %} - {% endblock %} - {% block basket_total %} - {% if offer_discounts or voucher_discounts %} - - - - - {% else %} - {# No discounts to basket #} - - - - - {% endif %} - {% endblock %} - {% endwith %} - {% block shipping_totals %} - - - - - - - - {% if not shipping_method.is_discounted %} - - - - - {% else %} - {% shipping_charge_discount shipping_method basket as shipping_discount %} - {% shipping_charge_excl_discount shipping_method basket as shipping_charge_excl_discount %} - {# As shipping is discounted, we break it down into its original charge and a discount #} - - - - - - - - - {# This section needs adjustment to when taxes are shown separately #} - - - - - - - - - {% endif %} - {% endblock %} - {% block surcharges %} - {% if surcharges %} - - - - - - - - {% for surcharge in surcharges %} - - - - - {% endfor %} - {% endif %} - {% endblock %} - {% block tax_totals %} - {% if show_tax_separately %} - - - - - - - - - - - - - - - - {% endif %} - {% endblock %} - {% block post_order_action_totals %} - {% if basket.post_order_actions %} - - - - - - - - - {% for discount in basket.post_order_actions %} - - - - {% endfor %} - {% endif %} - {% endblock %} - {% block order_total %} - - - - - - - - - {% if not order_total.is_tax_known %} - - - - {% endif %} - {% endblock %} - -
    -

    {% trans "Basket" %}

    -
    {% trans "Basket total (before discounts)" %} - {% if basket.is_tax_known and not show_tax_separately %} - {{ basket.total_incl_tax_excl_discounts|currency:basket.currency }} - {% else %} - {{ basket.total_excl_tax_excl_discounts|currency:basket.currency }} - {% endif %} -
    - {% trans "Discount" %} - {{ discount.name }} - {% if discount.description %} -
    - - {{ discount.description }} - - {% endif %} -
    -{{ discount.discount|currency:basket.currency }}
    -

    {% trans "Vouchers" %}

    -
    - {{ discount.voucher.name }} ({{ discount.voucher.code }}) - {% if editable %} -
    - {% csrf_token %} - -
    - {% endif %} -
    -{{ discount.discount|currency:basket.currency }}
    {% trans "Basket total (after discounts)" %} - {% if not show_tax_separately and basket.is_tax_known %} - {{ basket.total_incl_tax|currency:basket.currency }} - {% else %} - {{ basket.total_excl_tax|currency:basket.currency }} - {% endif %} -
    {% trans "Basket total" %} - {% if not show_tax_separately and basket.is_tax_known %} - {{ basket.total_incl_tax|currency:basket.currency }} - {% else %} - {{ basket.total_excl_tax|currency:basket.currency }} - {% endif %} -
     
    -

    {% trans "Shipping" %}

    - {% if shipping_methods|length > 1 and editable %} - - {% trans "Alternative shipping methods can be chosen during checkout" %} - - {% endif %} -
    {{ shipping_method.name }} - {% if not show_tax_separately and shipping_charge.is_tax_known %} - {{ shipping_charge.incl_tax|currency:basket.currency }} - {% else %} - {{ shipping_charge.excl_tax|currency:basket.currency }} - {% endif %} -
    {% trans "Shipping method" %}{{ shipping_method.name }}
    {% trans "Shipping total (before discounts)" %} - {% if not show_tax_separately and shipping_charge_excl_discount.is_tax_known %} - {{ shipping_charge_excl_discount.incl_tax|currency:basket.currency }} - {% else %} - {{ shipping_charge_excl_discount.excl_tax|currency:basket.currency }} - {% endif %} -
    - {% trans "Discount" %} - {{ shipping_method.discount_name }} - -{{ shipping_discount|currency:basket.currency }}
    {% trans "Shipping total (after discounts)" %} - {% if not show_tax_separately and shipping_charge.is_tax_known %} - {{ shipping_charge.incl_tax|currency:basket.currency }} - {% else %} - {{ shipping_charge.excl_tax|currency:basket.currency }} - {% endif %} -
     
    -

    {% trans "Surcharges" %}

    -
    {{ surcharge.surcharge.name }} - {% if not show_tax_separately and surcharge.price.is_tax_known %} - {{ surcharge.price.incl_tax|currency:basket.currency }} - {% else %} - {{ surcharge.price.excl_tax|currency:basket.currency }} - {% endif %} -
     
    -

    {% trans "Tax" %}

    -
    {% trans "Basket" %}{{ basket.total_tax|currency:basket.currency }}
    {% trans "Shipping" %}{{ shipping_charge.tax|currency:basket.currency }}
     
    -

    {% trans "Post order actions" %}

    - - {% trans "These will be applied once your order is placed." %} - -
    - {{ discount.name }} -
    -

    - {{ discount.description }} -

    -
     
    -

    {% trans "Order total" %}

    -
    -

    - {% if order_total.is_tax_known %} - {{ order_total.incl_tax|currency:basket.currency }} - {% else %} - {{ order_total.excl_tax|currency:basket.currency }} - {% endif %} -

    -
    - - {% trans "Taxes will be added during checkout." %} - -
    -
    diff --git a/tests/django_oscar/oscar/catalogue/browse.html b/tests/django_oscar/oscar/catalogue/browse.html deleted file mode 100644 index af0c568..0000000 --- a/tests/django_oscar/oscar/catalogue/browse.html +++ /dev/null @@ -1,130 +0,0 @@ -{% extends "oscar/layout_2_col.html" %} -{% load basket_tags %} -{% load category_tags %} -{% load product_tags %} -{% load i18n %} -{% block title %} - {% if summary %}{{ summary }} |{% endif %} - {{ block.super }} -{% endblock %} -{% block headertext %}{{ summary }}{% endblock %} -{% block breadcrumbs %} - -{% endblock breadcrumbs %} -{% block column_left %} - {% category_tree as tree_categories %} - {% if tree_categories %} -

    {% trans "Show results for" %}

    -
    - -
    -{% endif %} -{% if has_facets %} -

    {% trans "Refine by" %}

    -
    - {% for field, data in facet_data.items %} - {% if data.results %} - {% include 'oscar/search/partials/facet.html' with name=data.name items=data.results %} - {% endif %} - {% endfor %} -
    -{% endif %} -{% endblock %} -{% block content %} -
    - {# Render other search params as hidden inputs #} - {% for value in selected_facets %} - - {% endfor %} - - {% if paginator.count %} - {% if paginator.num_pages > 1 %} - {% blocktrans with start=page_obj.start_index end=page_obj.end_index count num_results=paginator.count %} - {{ num_results }} - result - showing - {{ start }} - to - {{ end }} - . - {% plural %} - {{ num_results }} - results - showing - {{ start }} - to - {{ end }} - . - {% endblocktrans %} - {% else %} - {% blocktrans count num_results=paginator.count %} - {{ num_results }} - result. - {% plural %} - {{ num_results }} - results. - {% endblocktrans %} - {% endif %} - {% if form %} -
    - {% include "oscar/partials/form_field.html" with field=form.sort_by style='horizontal' %} -
    - {% endif %} - {% else %} -

    - {% trans " - 0 - results." %} -

    - {% endif %} -
    - {% if products %} -
    -
    -
      - {% for product in products %} -
    1. - {% render_product product %} -
    2. - {% endfor %} -
    - {% include "oscar/partials/pagination.html" %} -
    -
    - {% else %} -

    - {% trans "No products found." %} -

    - {% endif %} -{% endblock content %} -{% block onbodyload %} - {{ block.super }} - oscar.search.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/category.html b/tests/django_oscar/oscar/catalogue/category.html deleted file mode 100644 index be6b55c..0000000 --- a/tests/django_oscar/oscar/catalogue/category.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends "oscar/catalogue/browse.html" %} -{% load i18n %} -{% block title %}{{ category.get_meta_title }} | {{ block.super }}{% endblock %} -{% block description %}{{ category.get_meta_description }}{% endblock %} -{% block header %} - -{% endblock %} -{% block breadcrumbs %} - -{% endblock breadcrumbs %} -{% block content %} - {% if category.description %} -
    -
    -

    - {{ category.description|safe }} -

    -
    - {% if category.image %} -
    - {{ category.name }} -
    - {% endif %} -
    - {% endif %} - {{ block.super }} -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/detail.html b/tests/django_oscar/oscar/catalogue/detail.html deleted file mode 100644 index 41175d2..0000000 --- a/tests/django_oscar/oscar/catalogue/detail.html +++ /dev/null @@ -1,208 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load history_tags %} -{% load currency_filters %} -{% load reviews_tags %} -{% load product_tags %} -{% load display_tags %} -{% load i18n %} -{% load purchase_info_tags %} -{% block title %}{{ product.get_meta_title }} | {{ block.super }}{% endblock %} -{% block description %}{{ product.get_meta_description }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %}{% endblock header %} -{% block content %} -
    - -
    - {% block product_gallery %} -
    - {% include "oscar/catalogue/partials/gallery.html" %} -
    - {% endblock %} - {% block product_main %} -
    - {% comment %} - This is a bit clunky here. Better to have some kind of JS-driven dashboard menu that - pops out when clicked. A bit like the Django-Debug-Toolbar button - {% endcomment %} - {% if user.is_staff %} - - - - {% trans "Edit this product" %} - - - {% endif %} -

    {{ product.get_title }}

    - {% block product_stock_record %} - {% include "oscar/catalogue/partials/stock_record.html" with verbose=1 %} - {% endblock %} - {% iffeature "reviews" %} - {% include "oscar/catalogue/reviews/partials/review_stars.html" %} - {% endiffeature %} -
    - {% if not product.is_parent %} - {% block product_basket_form %} - {% include "oscar/catalogue/partials/add_to_basket_form.html" %} - {% endblock %} - {% else %} - {% block variants %} -

    {% trans 'Variants:' %}

    - {% for child in product.children.public %} - {% purchase_info_for_product request child as child_session %} - {% if child_session.availability.is_available_to_buy %} - {{ child.get_title }} -
    - {% endif %} - {% endfor %} - {% endblock %} - {% endif %} -
    - - {% endblock %} -
    - - {% block product_description %} - {% if product.description %} -
    -

    {% trans "Product Description" %}

    -
    -

    - {{ product.description|safe }} -

    - {% endif %} - {% endblock %} - {% block product_info %} -
    -

    {% trans "Product Information" %}

    -
    - - {% if product.upc %} - - - - - {% endif %} - - - - - {% purchase_info_for_product request product as session %} - {% if session.price.exists %} - - - - - {% if session.price.is_tax_known %} - - - - - - - - - {% endif %} - - - - - {% endif %} - {% for av in product.get_attribute_values %} - - - - - {% endfor %} - {% iffeature "reviews" %} - - - - - {% endiffeature %} -
    {% trans "UPC" %}{{ product.upc }}
    {% trans "Product Type" %}{{ product.get_product_class.name }}
    {% trans "Price (excl. tax)" %}{{ session.price.excl_tax|currency:session.price.currency }}
    {% trans "Price (incl. tax)" %}{{ session.price.incl_tax|currency:session.price.currency }}
    {% trans "Tax" %}{{ session.price.tax|currency:session.price.currency }}
    {% trans "Availability" %}{{ session.availability.message }}
    {{ av.attribute.name }}{{ av.value_as_html }}
    {% trans "Number of reviews" %}{{ product.num_approved_reviews }}
    - {% endblock %} - {% iffeature "reviews" %} - {% block product_review %} -
    -
    - {% if product.num_approved_reviews > 3 %} - - {% trans "See all reviews" %} - - {% endif %} -

    {% trans "Customer Reviews" %}

    -
    - {% if product.num_approved_reviews == 0 %} -

    - {% if product|is_review_permitted:user %} - {% url 'catalogue:reviews-add' product_slug=product.slug product_pk=product.id as add_review_url %} - {% blocktrans %} - This product does not have any reviews yet - - be the first to write one - . - {% endblocktrans %} - {% else %} - {% trans "This product does not have any reviews yet" %}. - {% endif %} -

    - {% else %} -
      - {% for review in product.reviews.approved.all|slice:":3" %} -
    1. - {% include 'oscar/catalogue/partials/review.html' %} -
    2. - {% endfor %} -
    - {% endif %} -
    - {% endblock product_review %} - {% endiffeature %} - {% with recommended_products=product.sorted_recommended_products|slice:":6" %} - {% if recommended_products %} -
    -

    {% trans "Recommended items" %}

    -
    -
      - {% for product in recommended_products %} -
    • - {% render_product product %} -
    • - {% endfor %} -
    - {% endif %} - {% endwith %} - {% recently_viewed_products current_product=product %} -
    - -{% endblock content %} -{% block extrascripts %}{{ block.super }}{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form.html b/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form.html deleted file mode 100644 index e639915..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load basket_tags %} -{% load display_tags %} -{% load i18n %} -{% load purchase_info_tags %} -{% purchase_info_for_product request product as session %} -{% if session.availability.is_available_to_buy %} - {% basket_form request product as basket_form %} -
    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" with form=basket_form %} - -
    - {% iffeature "wishlists" %} - {% include "oscar/catalogue/partials/add_to_wishlist.html" %} - {% endiffeature %} -{% else %} - {% if has_active_alert %} -

    - {% trans "You have an active stock alert for this product." %} -

    - {% else %} -
    - {% csrf_token %} -

    - {% trans "You can get an email alert when this product is back in stock." %} -

    - {% include "oscar/partials/form_fields.html" with form=alert_form %} - -
    - {% endif %} - {% iffeature "wishlists" %} - {% include "oscar/catalogue/partials/add_to_wishlist.html" %} - {% endiffeature %} -{% endif %} diff --git a/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form_compact.html b/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form_compact.html deleted file mode 100644 index 8538136..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/add_to_basket_form_compact.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load basket_tags %} -{% load i18n %} -{% load purchase_info_tags %} -{% purchase_info_for_product request product as session %} -{% if session.availability.is_available_to_buy %} - {% basket_form request product 'single' as basket_form %} -
    - {% csrf_token %} - {{ basket_form.as_p }} - -
    -{% else %} - - {% trans "Add to basket" %} - -{% endif %} diff --git a/tests/django_oscar/oscar/catalogue/partials/add_to_wishlist.html b/tests/django_oscar/oscar/catalogue/partials/add_to_wishlist.html deleted file mode 100644 index c75b1b5..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/add_to_wishlist.html +++ /dev/null @@ -1,69 +0,0 @@ -{% load i18n %} -{% load wishlist_tags %} -{% if user.is_authenticated %} - {% with wishlists=user.wishlists.all %} - {# Select wishlists that contains product #} - {% wishlists_containing_product wishlists product as product_wishlists %} - {% if wishlists %} -
    - - {% trans "Add to wish list" %} - - -
    - {% else %} - {# 1 or no existing wishlists - show a simple button #} -
    - {% csrf_token %} - -
    - {% endif %} - {% for wishlist in product_wishlists %} -
    - {% csrf_token %} - {% blocktrans with name=wishlist.name url=wishlist.get_absolute_url %} - - Product is in - '{{ name }}' - wishlist. - - {% endblocktrans %} - -
    - {% endfor %} - {% endwith %} -{% else %} - -
    -{% endif %} diff --git a/tests/django_oscar/oscar/catalogue/partials/gallery.html b/tests/django_oscar/oscar/catalogue/partials/gallery.html deleted file mode 100644 index eb7aa40..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/gallery.html +++ /dev/null @@ -1,51 +0,0 @@ -{% load i18n %} -{% load image_tags %} -{% with all_images=product.get_all_images %} - {# use length rather then count as the images get queried anyways #} - {% if all_images|length > 1 %} - - {% else %} - {# Only one image to show #} - - {% endif %} -{% endwith %} diff --git a/tests/django_oscar/oscar/catalogue/partials/product.html b/tests/django_oscar/oscar/catalogue/partials/product.html deleted file mode 100644 index 0273250..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/product.html +++ /dev/null @@ -1,46 +0,0 @@ -{% load display_tags %} -{% load i18n %} -{% load image_tags %} -{% load reviews_tags %} -{% block product %} -
    - {% block product_image %} -
    - {% with image=product.primary_image %} - {% oscar_thumbnail image.original "x155" upscale=False as thumb %} - - {{ product.get_title }} - - {% endwith %} -
    - {% endblock %} - {% block product_review %} - {% iffeature "reviews" %} -

    - - - - - -

    - {% endiffeature %} - {% endblock %} - {% block product_title %} -

    - - {{ product.get_title|truncatewords:4 }} - -

    - {% endblock %} - {% block product_price %} -
    - {% include "oscar/catalogue/partials/stock_record.html" %} - {% if not product.is_parent and not product.has_options %} - {% include "oscar/catalogue/partials/add_to_basket_form_compact.html" %} - {% endif %} -
    - {% endblock %} -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/partials/review.html b/tests/django_oscar/oscar/catalogue/partials/review.html deleted file mode 100644 index 173a24a..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/review.html +++ /dev/null @@ -1,75 +0,0 @@ -{% load reviews_tags %} -{% load i18n %} -
    -
    -

    - - - - - - - - {{ review.title }} -

    -
    -

    - {{ review.body|striptags }} -

    -

    - - {% if review.user == user %} - {% blocktrans with review_date=review.date_created %} - Reviewed by you on {{ review_date }} - {% endblocktrans %} - {% else %} - {% blocktrans with name=review.reviewer_name review_date=review.date_created %} - Reviewed by - {{ name }} - on {{ review_date }} - {% endblocktrans %} - {% endif %} - | - - {% trans 'Permalink' %} - - -

    - {% if review|may_vote:user %} - - {% trans "Is this review helpful?" %} - -
    - {% csrf_token %} - - -
    -
    - {% csrf_token %} - - -
    - {% endif %} -

    - - {% if review.has_votes %} - {% blocktrans with num_up_votes=review.num_up_votes count num_votes=review.total_votes %} - {{ num_up_votes }} - of {{ num_votes }} customer found this useful - {% plural %} - {{ num_up_votes }} - of {{ num_votes }} customers found this useful - {% endblocktrans %} - {% else %} - {% trans "This review has no votes." %} - {% endif %} - -

    -
    diff --git a/tests/django_oscar/oscar/catalogue/partials/stock_record.html b/tests/django_oscar/oscar/catalogue/partials/stock_record.html deleted file mode 100644 index 39e52b5..0000000 --- a/tests/django_oscar/oscar/catalogue/partials/stock_record.html +++ /dev/null @@ -1,35 +0,0 @@ -{% load currency_filters %} -{% load i18n %} -{% load purchase_info_tags %} -{% purchase_info_for_product request product as session %} -{% if session.price.exists %} - {% if session.price.excl_tax == 0 %} -

    - {% trans "Free" %} -

    - {% elif session.price.is_tax_known %} -

    - {{ session.price.incl_tax|currency:session.price.currency }} -

    - {% else %} -

    - {{ session.price.excl_tax|currency:session.price.currency }} -

    - {% endif %} -{% else %} -

    -   -

    -{% endif %} -

    - {% if session.availability.is_available_to_buy %} - - {% else %} - - {% endif %} - {% if verbose %} - {{ session.availability.message }} - {% else %} - {{ session.availability.short_message }} - {% endif %} -

    diff --git a/tests/django_oscar/oscar/catalogue/reviews/partials/review_stars.html b/tests/django_oscar/oscar/catalogue/reviews/partials/review_stars.html deleted file mode 100644 index 5139f85..0000000 --- a/tests/django_oscar/oscar/catalogue/reviews/partials/review_stars.html +++ /dev/null @@ -1,30 +0,0 @@ -{% load reviews_tags %} -{% load i18n %} -{% if product.rating != None %} -

    - - - - - - - - {% blocktrans count product.num_approved_reviews as num_reviews %} - {{ num_reviews }} customer review - {% plural %} - {{ num_reviews }} customer reviews - {% endblocktrans %} - - -   - {% else %} -

    - {% endif %} - {% if product|is_review_permitted:user %} - - {% trans "Write a review" %} - - {% endif %} -

    diff --git a/tests/django_oscar/oscar/catalogue/reviews/review_detail.html b/tests/django_oscar/oscar/catalogue/reviews/review_detail.html deleted file mode 100644 index 77e57f6..0000000 --- a/tests/django_oscar/oscar/catalogue/reviews/review_detail.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block title %} - {{ review.title }} | {% trans "Reviews" %} | {{ product.title }} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Customer reviews" %} -{% endblock %} -{% block content %} -
    - {% include 'oscar/catalogue/reviews/review_product.html' %} - {% include 'oscar/catalogue/partials/review.html' %} -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/reviews/review_form.html b/tests/django_oscar/oscar/catalogue/reviews/review_form.html deleted file mode 100644 index 1b4f003..0000000 --- a/tests/django_oscar/oscar/catalogue/reviews/review_form.html +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "oscar/catalogue/detail.html" %} -{% load i18n %} -{% block product_review %} -
    -
    -
    - - {% trans "Leave a product review" %} - - {% csrf_token %} - {% include 'oscar/partials/form_field.html' with field=form.title %} -
    - -
    - {{ form.score }} -
    - - - - - -
    - {% for error in form.score.errors %} - - - {{ error }} - - {% endfor %} -
    - {% comment %} - {% include 'oscar/partials/form_field.html' with field=form.score %} - {% endcomment %} -
    - {% include 'oscar/partials/form_field.html' with field=form.body %} - {% if form.name %} - {% include 'oscar/partials/form_field.html' with field=form.name %} - {% endif %} - {% if form.email %} - {% include 'oscar/partials/form_field.html' with field=form.email %} - {% endif %} - - {% trans "or" %} - {% trans "cancel" %} -
    -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/reviews/review_list.html b/tests/django_oscar/oscar/catalogue/reviews/review_list.html deleted file mode 100644 index eea2ab1..0000000 --- a/tests/django_oscar/oscar/catalogue/reviews/review_list.html +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load history_tags %} -{% load i18n %} -{% block title %} - {% trans "All reviews" %} | {{ product.title }} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Customer reviews" %} -{% endblock %} -{% block content %} -
    - {% include 'oscar/catalogue/reviews/review_product.html' %} - {% if reviews %} -
    - {% include "oscar/partials/form_fields_inline.html" with form=form %} - -
    -
    - {% for review in reviews %} - {% include 'oscar/catalogue/partials/review.html' %} - {% endfor %} - {% include 'oscar/partials/pagination.html' %} - {% else %} -

    - {% trans "This product does not have any reviews yet." %} -

    - {% endif %} -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/catalogue/reviews/review_product.html b/tests/django_oscar/oscar/catalogue/reviews/review_product.html deleted file mode 100644 index 9feb4ab..0000000 --- a/tests/django_oscar/oscar/catalogue/reviews/review_product.html +++ /dev/null @@ -1,21 +0,0 @@ -{% load image_tags %} -
    -
    -
    - {% with image=product.primary_image %} - {% oscar_thumbnail image.original "x155" upscale=False as thumb %} - - {{ product.get_title }} - - {% endwith %} -
    -
    -
    -

    - {{ product.get_title }} -

    - {% include "oscar/catalogue/partials/stock_record.html" %} - {% include "oscar/catalogue/reviews/partials/review_stars.html" %} -
    -
    -
    diff --git a/tests/django_oscar/oscar/checkout/checkout.html b/tests/django_oscar/oscar/checkout/checkout.html deleted file mode 100644 index 8c327f3..0000000 --- a/tests/django_oscar/oscar/checkout/checkout.html +++ /dev/null @@ -1,174 +0,0 @@ -{% extends "oscar/checkout/layout.html" %} -{% load currency_filters %} -{% load i18n %} -{% load image_tags %} -{% load purchase_info_tags %} -{% block title %} - {% trans "Checkout" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' %} -{% endblock %} -{% block content %} - {% if error %} -
    - {{ error }} -
    - {% endif %} -
    - {% block shipping_address %} -
    -
    -

    {% trans "Shipping" %}

    -
    - {% if shipping_address %} -
    -

    - {% trans "Address" %} - {% block shipping_address_actions %} - - {% trans "Change" %} - - {% endblock %} -

    -
    - {% for field in shipping_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    - {% if shipping_address.phone_number %} -

    {% trans "Contact" %}

    -

    - {% trans "Phone" %}: {{ shipping_address.phone_number }} - {% if guest_email %} -
    - {% trans "Email" %}: {{ guest_email }} - {% endif %} -

    - {% endif %} - {% if shipping_address.notes %} -

    {% trans "Instructions" %}

    -

    - {{ shipping_address.notes|linebreaks }} -

    - {% endif %} -
    - {% endif %} - {% if shipping_method %} -
    -

    - {% trans "Shipping method" %} - {% block shipping_method_actions %} - - {% trans "Change" %} - - {% endblock %} -

    -

    - {{ shipping_method.name }} - {% if shipping_method.description %}- {{ shipping_method.description|safe }}{% endif %} -

    -
    - {% endif %} -
    - {% endblock shipping_address %} - {# You will almost certainly want to override this block to provide a payment summary #} - {% block payment_method %} -
    -
    -

    {% trans "Payment" %}

    -
    -
    -

    - {% trans "Payment" %} - - {% trans "Change" %} - -

    -

    - {% trans "Payment details to go here" %} -

    -
    -
    - {% endblock payment_method %} -
    - {% block order_contents %} -
    - {% block order_contents_actions %} - - {% trans "Edit order contents" %} - - {% endblock %} -

    {% trans "Order contents" %}

    -
    -
    -
    -

    - {% trans "Item" %} -

    -

    - {% trans "Quantity" %} -

    -

    - {% trans "Total" %} -

    -
    -
    - {% for line in basket.all_lines %} - {% purchase_info_for_line request line as session %} -
    -
    -
    -
    - {% with image=line.product.primary_image %} - {% oscar_thumbnail image.original "100x100" upscale=False as thumb %} - - {{ product.get_title }} - - {% endwith %} -
    -
    -
    -

    - - {{ line.description }} - -

    - - {{ session.availability.message }} - -
    -
    - {{ line.quantity }} -
    -
    -

    - {% if not show_tax_separately and line.is_tax_known %} - {{ line.line_price_incl_tax|currency:basket.currency }} - {% else %} - {{ line.line_price_excl_tax|currency:basket.currency }} - {% endif %} -

    -
    -
    -
    - {% endfor %} -
    -
    -   -
    -
    -
    -

    {% trans 'Totals' %}

    -
    - {% include 'oscar/basket/partials/basket_totals.html' %} -
    -
    - {% endblock order_contents %} - {% block shipping_method %}{% endblock shipping_method %} - {% block payment_details %}{% endblock payment_details %} - {% block place_order %}{% endblock place_order %} -{% endblock content %} diff --git a/tests/django_oscar/oscar/checkout/gateway.html b/tests/django_oscar/oscar/checkout/gateway.html deleted file mode 100644 index 3f1830b..0000000 --- a/tests/django_oscar/oscar/checkout/gateway.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "oscar/checkout/layout.html" %} -{% load i18n %} -{% load widget_tweaks %} -{% block title %} - {% trans "Checkout gateway" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=0 %} -{% endblock %} -{% block checkout_title %} - {% trans "Who are you?" %} -{% endblock %} -{% block content %} -
    - {% csrf_token %} - {{ form.non_field_errors }} - {% include "oscar/partials/form_field.html" with field=form.username %} -
    -
    -
    - {{ form.options.0 }} -
    -
    -
    -
    - {{ form.options.errors }} -
    -
    - {{ form.options.2 }} -
    - {% render_field form.password class+="form-control mr-sm-2" %} - - - {% trans "Get a password reminder" %} - - - {% for error in form.password.errors %}{{ error }}{% endfor %} -
    -
    -
    -
    -
    -
    -
    - {{ form.options.1 }} -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -{% endblock content %} -{% block onbodyload %} - {{ block.super }} - oscar.checkout.gateway.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/checkout/layout.html b/tests/django_oscar/oscar/checkout/layout.html deleted file mode 100644 index daf7133..0000000 --- a/tests/django_oscar/oscar/checkout/layout.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% load category_tags %} -{% block layout %} -
    -
    -
    - {% include "oscar/partials/brand.html" %} -
    - -
    - {% block checkout_nav %}{% endblock %} -
    - -
    -
    - {% include 'oscar/partials/alert_messages.html' %} -
    -

    {% block checkout_title %}{% endblock %}

    -
    - - {% block modal %} - {% load flatpages %} - {% get_flatpages '/order/' as flatpages %} - {% for page in flatpages %} - - {% endfor %} - {% endblock %} - {% block content %}{% endblock %} -
    - -
    - {% include "oscar/partials/footer_checkout.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/checkout/nav.html b/tests/django_oscar/oscar/checkout/nav.html deleted file mode 100644 index 2a1e1e5..0000000 --- a/tests/django_oscar/oscar/checkout/nav.html +++ /dev/null @@ -1,66 +0,0 @@ -{% load i18n %} - - diff --git a/tests/django_oscar/oscar/checkout/payment_details.html b/tests/django_oscar/oscar/checkout/payment_details.html deleted file mode 100644 index 8f60f4b..0000000 --- a/tests/django_oscar/oscar/checkout/payment_details.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load i18n %} -{% block title %} - {% trans "Payment details" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=3 %} -{% endblock %} -{% block checkout_title %} - {% trans "Enter payment details" %} -{% endblock %} -{% block order_contents %}{% endblock %} -{% block shipping_address %}{% endblock %} -{% block shipping_method %}{% endblock %} -{% block payment_method %}{% endblock %} -{% block payment_details %} - {% block payment_details_content %} -

    - {% trans "This page needs implementing within your project. You may want to use one of Oscar's payment gateway libraries:" %} -

    - - - {% trans "Continue" %} - - {% endblock payment_details_content %} -{% endblock payment_details %} diff --git a/tests/django_oscar/oscar/checkout/preview.html b/tests/django_oscar/oscar/checkout/preview.html deleted file mode 100644 index fb29f5a..0000000 --- a/tests/django_oscar/oscar/checkout/preview.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load i18n %} -{% block title %} - {% trans "Order preview" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=4 %} -{% endblock %} -{% block checkout_title %} - {% trans "Preview order" %} -{% endblock %} -{% block place_order %} -
    - {% csrf_token %} - - {% comment %} - When submitting sensitive data on the payment details page (eg a bankcard) - we don't want to save the data and so we pass the bound form to the preview - template and render it in a hidden div. Then the payment information will - get re-submitted when the user confirms the order. - {% endcomment %} -
    - {% block hiddenforms %}{% endblock %} -
    -
    -
    -
    - -
    -
    -
    -
    -{% endblock place_order %} diff --git a/tests/django_oscar/oscar/checkout/shipping_address.html b/tests/django_oscar/oscar/checkout/shipping_address.html deleted file mode 100644 index 8a70d79..0000000 --- a/tests/django_oscar/oscar/checkout/shipping_address.html +++ /dev/null @@ -1,106 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load i18n %} -{% block title %} - {% trans "Shipping address" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=1 %} -{% endblock %} -{% block checkout_title %} - {% trans "Shipping address" %} -{% endblock %} -{% block order_contents %}{% endblock %} -{% block shipping_address %} -
    -
    -

    {% trans "Where should we ship to?" %}

    -
    - {% if user.is_authenticated %} - {% if addresses %} -

    {% trans "An address from your address book?" %}

    -
    -
    - {% for address in addresses %} - {% block select_address_form %} -
    -
    -
    - {% block select_address_fields %} - {% for field in address.active_address_fields %} - {{ field }} - {% if not forloop.first %}
    {% endif %} - {% endfor %} - {% endblock %} -
    -
    - {% csrf_token %} - - - {% if address.is_default_for_shipping %} - - {% else %} - - {% endif %} - -
    -
    -
    - {% if forloop.counter|divisibleby:2 %} -
    -
    - {% endif %} - {% endblock %} - {% endfor %} -
    -
    -

    {% trans "Or a new address?" %}

    - {% endif %} - {% endif %} - {% block new_address_form %} -
    -
    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" with form=form style='horizontal' %} -
    -
    - - {% trans "or" %} - {% trans "return to basket" %} -
    -
    -
    -
    - {% endblock %} -
    -{% endblock shipping_address %} -{% block shipping_method %}{% endblock %} -{% block payment_method %}{% endblock %} diff --git a/tests/django_oscar/oscar/checkout/shipping_methods.html b/tests/django_oscar/oscar/checkout/shipping_methods.html deleted file mode 100644 index 41a804e..0000000 --- a/tests/django_oscar/oscar/checkout/shipping_methods.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load currency_filters %} -{% load i18n %} -{% load shipping_tags %} -{% block title %} - {% trans "Shipping method" %} | {{ block.super }} -{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=2 %} -{% endblock %} -{% block checkout_title %} - {% trans "Shipping method" %} -{% endblock %} -{% block order_contents %}{% endblock %} -{% block shipping_address %}{% endblock %} -{% block payment_method %}{% endblock %} -{% block shipping_method %} -
    -
    -

    {% trans "Method" %}

    -

    {% trans "Cost" %}

    -
    -
    - {% for method in methods %} -
    -
    -
    -

    {{ method.name }}

    - {% if method.description %} -

    - {{ method.description|safe }} -

    - {% endif %} - {% if method.is_discounted %} - - {% shipping_charge_discount method basket as discount %} - {% blocktrans with amount=discount|currency:basket.currency name=method.discount_name %} - This includes a discount of - {{ amount }} - as - your basket qualifies for the - {{ name }} - offer. - {% endblocktrans %} - - {% endif %} -
    -
    - {% shipping_charge method basket as charge %} - {% if charge.is_tax_known %} - {{ charge.incl_tax|currency:basket.currency }} - {% else %} - {{ charge.excl_tax|currency:basket.currency }} - {% endif %} -
    -
    -
    - {% csrf_token %} - - -
    -
    -
    -
    - {% endfor %} -{% endblock shipping_method %} diff --git a/tests/django_oscar/oscar/checkout/thank_you.html b/tests/django_oscar/oscar/checkout/thank_you.html deleted file mode 100644 index 14f3e08..0000000 --- a/tests/django_oscar/oscar/checkout/thank_you.html +++ /dev/null @@ -1,223 +0,0 @@ -{% extends "oscar/checkout/layout.html" %} -{% load currency_filters %} -{% load i18n %} -{% load image_tags %} -{% block title %} - {% blocktrans with number=order.number %} - Order {{ number }}: confirmation - {% endblocktrans %} - | {{ block.super }} -{% endblock title %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=5 %} -{% endblock %} -{% block checkout_title %} - {% blocktrans with number=order.number %} - Order {{ number }}: confirmation - {% endblocktrans %} -{% endblock %} -{% block content %} -

    - {% blocktrans with number=order.number %} - Your order has been placed and a confirmation email has been sent - your order number is - {{ number }} - . - {% endblocktrans %} - {% trans "Please make a note of this reference or print this page and quote it in any communication with us regarding your order." %} -

    -
    -
    - {% block shipping_info %} -
    -

    {% trans "Shipping" %}

    -
    -
    -

    {% trans "Address" %}

    - {% if order.shipping_address %} -
    - {% for field in order.shipping_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    - {% if order.shipping_address.phone_number %} -

    {% trans "Contact" %}

    -

    - {% trans "Phone" %}: {{ order.shipping_address.phone_number }} - {% if order.guest_email %} -
    - {% trans "Email" %}: {{ order.guest_email }} - {% endif %} -

    - {% endif %} - {% if order.shipping_address.notes %} -

    {% trans "Instructions" %}

    -

    - {{ order.shipping_address.notes|linebreaks }} -

    - {% endif %} - {% else %} -

    - {% trans "No shipping address required." %} -

    - {% endif %} -
    -
    -

    {% trans "Shipping method" %}

    -

    - {{ order.shipping_method }} -

    -
    - {% endblock %} -
    -
    - {% block payment_info %} -
    -

    {% trans "Payment" %}

    -
    -
    -

    {% trans "Payment" %}

    - {% for source in order.sources.all %} -

    - {% if source.reference %} - {% blocktrans with amount=source.amount_allocated|currency:source.currency type=source.source_type.name reference=source.reference %} - Allocation of {{ amount }} from type {{ type }} (reference: {{ reference }}) - {% endblocktrans %} - {% else %} - {% blocktrans with amount=source.amount_allocated|currency:source.currency type=source.source_type.name %} - Allocation of {{ amount }} from type {{ type }} - {% endblocktrans %} - {% endif %} -

    - {% empty %} -

    - {% trans "No payment was required for this order." %} -

    - {% endfor %} - {% if order.billing_address %} -

    {% trans "Billing address" %}

    -
    - {% for field in order.billing_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    - {% endif %} -
    - {% endblock %} -
    -
    - {% block order_contents %} -
    -

    {% trans "Order contents" %}

    -
    -
    -
    -

    - {% trans "Items purchased" %} -

    -

    - {% trans "Quantity" %} -

    -

    - {% trans "Total" %} -

    -
    -
    - {% for line in order.lines.all %} -
    -
    -
    -
    - {% with image=line.product.primary_image %} - {% oscar_thumbnail image.original "200x200" upscale=False as thumb %} - - {{ product.get_title }} - - {% endwith %} -
    -
    -
    -

    - - {{ line.description }} - -

    - {% if line.upc %} -

    - {{ line.upc }} -

    - {% endif %} -
    -
    - {{ line.quantity }} -
    -
    -

    - {% if show_tax_separately %} - {{ line.line_price_before_discounts_excl_tax|currency:order.currency }} - {% else %} - {{ line.line_price_before_discounts_incl_tax|currency:order.currency }} - {% endif %} -

    -
    -
    -
    - {% endfor %} - {% block basket_totals %} -
    -
    -   -
    -
    -
    -

    {% trans 'Totals' %}

    -
    - {% include 'oscar/order/partials/basket_totals.html' %} -
    -
    - {% endblock basket_totals %} - {% endblock order_contents %} - {% block order_tracking %} - {% if not order.user %} -
    -

    {% trans "Tracking your order" %}

    -
    -

    - {% trans "You can track the status of your order" %} - - {% trans "View order status" %} - - . -

    - {% endif %} - {% endblock %} - {% block order_actions %} - - {% endblock order_actions %} -{% endblock content %} -{% block tracking %} - {% if send_analytics_event %} - {% include "oscar/partials/google_analytics_transaction.html" %} - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/checkout/user_address_delete.html b/tests/django_oscar/oscar/checkout/user_address_delete.html deleted file mode 100644 index 013212e..0000000 --- a/tests/django_oscar/oscar/checkout/user_address_delete.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load i18n %} -{% block title %} - {% trans "Delete address?" %} | {{ block.super }} -{% endblock title %} -{% block order_contents %}{% endblock %} -{% block shipping_method %}{% endblock %} -{% block payment_method %}{% endblock %} -{% block payment_details %}{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=1 %} -{% endblock %} -{% block checkout_title %} - {% trans "Delete address?" %} -{% endblock %} -{% block shipping_address %} -
    - {% csrf_token %} -
    -
    - {% for field in object.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    -
    -

    - {% trans "Are you sure you want to delete this address?" %} - - {% trans "or" %} - - {% trans "cancel" %} - - . -

    -
    -{% endblock shipping_address %} diff --git a/tests/django_oscar/oscar/checkout/user_address_form.html b/tests/django_oscar/oscar/checkout/user_address_form.html deleted file mode 100644 index 18ec4b2..0000000 --- a/tests/django_oscar/oscar/checkout/user_address_form.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "oscar/checkout/checkout.html" %} -{% load i18n %} -{% block title %} - {% trans "Edit address" %} | {{ block.super }} -{% endblock title %} -{% block order_contents %}{% endblock %} -{% block shipping_method %}{% endblock %} -{% block payment_method %}{% endblock %} -{% block payment_details %}{% endblock %} -{% block checkout_nav %} - {% include 'oscar/checkout/nav.html' with step=1 %} -{% endblock %} -{% block checkout_title %} - {% trans "Edit address" %} -{% endblock %} -{% block shipping_address %} -
    -
    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" with form=form style='horizontal' %} -
    -
    - - {% trans "or" %} - - {% trans "cancel" %} - - . -
    -
    -
    -
    -{% endblock shipping_address %} diff --git a/tests/django_oscar/oscar/communication/email/email_detail.html b/tests/django_oscar/oscar/communication/email/email_detail.html deleted file mode 100644 index 2c1761a..0000000 --- a/tests/django_oscar/oscar/communication/email/email_detail.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block extra_breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - - - - - - - - - - - - - -
    {% trans 'Date sent' %}{{ email.date_sent }}
    {% trans 'Subject' %}{{ email.subject }}
    {% trans 'Body' %} - -
    -{% endblock tabcontent %} -{% block onbodyload %} - {{ block.super }} - $(function() { - // Sets the HTML email preview so it's css doesn't touch the page. - var el_preview_html = document.getElementById('preview_box'); - var html = $(el_preview_html).text(); - var doc = el_preview_html.contentWindow.document; - doc.open(); - doc.write(html); - doc.close(); - }); -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/email/email_list.html b/tests/django_oscar/oscar/communication/email/email_list.html deleted file mode 100644 index ac79b9b..0000000 --- a/tests/django_oscar/oscar/communication/email/email_list.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% if emails %} - - - - - - - - - {% for email in emails %} - - - - - {% endfor %} - -
    {% trans 'Subject' %}{% trans 'Date sent' %}
    - - {{ email.subject }} - - {{ email.date_sent }}
    - {% include "oscar/partials/pagination.html" %} - {% else %} -

    - {% trans 'No emails found' %} -

    - {% endif %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/communication/emails/base.html b/tests/django_oscar/oscar/communication/emails/base.html deleted file mode 100644 index 921599b..0000000 --- a/tests/django_oscar/oscar/communication/emails/base.html +++ /dev/null @@ -1,302 +0,0 @@ -{% load i18n %} - - - - - - - - - - - - - - -
    -
    - - - - -
    - - {% block header %}{% endblock %} - {% block tbody %} - - - - {% endblock %} - {% block footer %} - - - - {% endblock %} -
    {% block body %}{% endblock %}
    -

    - {% trans "Thanks for using our site!" %} -

    -

    - {% blocktrans with name=site.name %} - The {{ name }} team - {% endblocktrans %} -

    -
    -
    -
    -
    - - diff --git a/tests/django_oscar/oscar/communication/emails/base.txt b/tests/django_oscar/oscar/communication/emails/base.txt deleted file mode 100644 index 95f76a2..0000000 --- a/tests/django_oscar/oscar/communication/emails/base.txt +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %}{% block header %}{% endblock %}{% block body %}{% endblock %}{% block footer %} - -{% trans "Thanks for using our site!" %} -{% blocktrans with name=site.name %}The {{ name }} team{% endblocktrans %}{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.html b/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.html deleted file mode 100644 index 127caa3..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load i18n %} -{% load url_tags %} -{% block tbody %} - - - {% blocktrans with email=new_email %} - You're receiving this email because your email address has been changed to - {{ email }} - . - {% endblocktrans %} - - - - - {% trans "If it wasn't you who changed it, please reset your password immediately and correct your email address:" %} - - - - - - Reset password - - - - - - {% trans "If it was you who changed the email address, you can ignore this email." %} - - -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.txt deleted file mode 100644 index ab3f91c..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_body.txt +++ /dev/null @@ -1,11 +0,0 @@ -{% extends "oscar/communication/emails/base.txt" %} -{% load i18n %} -{% load url_tags %} - -{% block body %}{% autoescape off %}{% blocktrans with email=new_email %}You're receiving this email because your email address has been changed to {{ email }}.{% endblocktrans %} - -{% trans "If it wasn't you who changed it, please reset your password immediately and correct your email address:" %} -{% absolute_url site.domain reset_url %} - -{% trans "If it was you who changed the email address, you can ignore this email." %} -{% endautoescape %}{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_email_changed_subject.txt deleted file mode 100644 index e52dfed..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_email_changed_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans with site_name=site.name %}Your email address has changed at {{ site_name }}.{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.html b/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.html deleted file mode 100644 index 7f969cc..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load currency_filters i18n %} -{% block tbody %} - - -

    - {% trans 'Hello,' %} -

    -

    - {% blocktrans with order_number=order.number %} - We are pleased to confirm your order {{ order_number }} has been received and - will be processed shortly. - {% endblocktrans %} -

    - - - - - - - - - - - - - -
    {% trans 'Your order contains:' %}
    - - - {% for line in order.lines.all %} - - - - - {% endfor %} - - - - - - - - - - - - - -
    {{ line.title }} × {{ line.quantity }} - {{ line.line_price_incl_tax|currency:order.currency }} -
    {% trans 'Basket total:' %} - {{ order.basket_total_incl_tax|currency:order.currency }} -
    {% trans 'Shipping:' %} - {{ order.shipping_incl_tax|currency:order.currency }} -
    {% trans 'Order Total:' %}{{ order.total_incl_tax|currency:order.currency }}
    -
    - - - - -

    - {% trans 'Shipping address:' %} -

    -

    - {% for field in order.shipping_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -

    - - - {% if status_url %} - - - {% blocktrans %} - You can view the status of this order by clicking - - here - - {% endblocktrans %} - - - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.txt deleted file mode 100644 index 2dd27ef..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_body.txt +++ /dev/null @@ -1,24 +0,0 @@ -{% load currency_filters i18n %}{% blocktrans with order_number=order.number %}Hello, - -We are pleased to confirm your order {{ order_number }} has been received and -will be processed shortly.{% endblocktrans %} - -{% trans 'Your order contains:' %} - -{% for line in order.lines.all %} * {{ line.title }} - {% trans 'quantity:' %} {{ line.quantity }} - {% trans 'price:' %} {{ line.line_price_incl_tax|currency:order.currency }} -{% endfor %} -{% trans 'Basket total:' %} {{ order.basket_total_incl_tax|currency:order.currency }} -{% trans 'Shipping:' %} {{ order.shipping_incl_tax|currency:order.currency }} -{% trans 'Order Total:' %} {{ order.total_incl_tax|currency:order.currency }} - -{% trans 'Shipping address:' %} - -{% for field in order.shipping_address.active_address_fields %} {{ field }} -{% endfor %} - -{% if status_url %} -{% blocktrans %}You can view the status of this order at the below URL: -{{ status_url }}{% endblocktrans %} -{% endif %} - -{% blocktrans %}The team{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_order_placed_subject.txt deleted file mode 100644 index de79025..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_order_placed_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans with number=order.number %}Confirmation of order {{ number }}{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.html b/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.html deleted file mode 100644 index 1dc6a09..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load i18n %} -{% load url_tags %} -{% block tbody %} - - - {% blocktrans with name=site.name %} - You're receiving this e-mail because your password has been changed at {{ name }}. - {% endblocktrans %} - - - - - {% trans "If it wasn't you who changed it, please reset your password immediately:" %} - - - - - - {% trans "Reset password" %} - - - - - - {% trans "Otherwise, you can ignore this email." %} - - -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.txt deleted file mode 100644 index 732292b..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_body.txt +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "oscar/communication/emails/base.txt" %} -{% load i18n %} -{% load url_tags %} - -{% block body %}{% autoescape off %}{% blocktrans with name=site.name %} -You're receiving this email because your password has been changed at {{ name }}. -{% endblocktrans %} - -{% trans "If it wasn't you who changed it, please reset your password immediately:" %} -{% absolute_url site.domain reset_url %} - -{% trans "Otherwise, you can ignore this email." %} - -{% endautoescape %}{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_password_changed_subject.txt deleted file mode 100644 index 429a9bd..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_changed_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans with site_name=site.name %}Your password changed at {{ site_name }}.{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.html b/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.html deleted file mode 100644 index cb95b85..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load i18n %} -{% load url_tags %} -{% block tbody %} - - - {% blocktrans with name=site.name %} - You're receiving this e-mail because you requested a password reset for your user account at {{ name }}. - {% endblocktrans %} - - - - - {% trans "Please go to the following page and choose a new password:" %} - - - - - - {% trans "Reset password" %} - - - -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.txt deleted file mode 100644 index aa2e8b6..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_body.txt +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "oscar/communication/emails/base.txt" %} -{% load i18n %} -{% load url_tags %} - -{% block body %}{% autoescape off %} -{% blocktrans with name=site.name %}You're receiving this e-mail because you requested a password reset for your user account at {{ name }}.{% endblocktrans %} - -{% trans "Please go to the following page and choose a new password:" %} -{% absolute_url site.domain reset_url %}{% endautoescape %}{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_password_reset_subject.txt deleted file mode 100644 index 335dff0..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_password_reset_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans with site_name=site.name %}Resetting your password at {{ site_name }}.{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.html b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.html deleted file mode 100644 index e5a0142..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load i18n %} -{% load url_tags %} -{% block body %} -

    - {% if alert.user and alert.user.get_short_name %} - {% blocktrans with name=alert.user.get_short_name %} - Dear {{ name }}, - {% endblocktrans %} - {% else %} - {% trans "Hello," %} - {% endif %} -

    -

    - {% absolute_url site.domain alert.product.get_absolute_url as url %} - {% blocktrans with title=alert.product.get_title|safe url=url %} - We are happy to inform you that our product '{{ title }}' is back in stock: - {{ url }} - {% endblocktrans %} -

    - {% if hurry %} -

    - {% blocktrans %} - Beware that the amount of items in stock is limited. Be quick or someone might get there first. - {% endblocktrans %} -

    - {% endif %} -

    - {% blocktrans %} - With this email we have disabled your alert automatically and you will not - receive any further email regarding this product. - {% endblocktrans %} -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.txt deleted file mode 100644 index fab5a60..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_body.txt +++ /dev/null @@ -1,14 +0,0 @@ -{% load i18n %}{% load url_tags %}{% if alert.user and alert.user.get_short_name %}{% blocktrans with name=alert.user.get_short_name %}Dear {{ name }},{% endblocktrans %}{% else %}{% trans "Hello," %}{% endif %} -{% absolute_url site.domain alert.product.get_absolute_url as url %} -{% blocktrans with title=alert.product.get_title|safe url=url %} -We are happy to inform you that our product '{{ title }}' is back in stock: -{{ url }} -{% endblocktrans %}{% if hurry %}{% blocktrans %} -Beware that the amount of items in stock is limited. Be quick or someone might get there first. -{% endblocktrans %}{% endif %}{% blocktrans with site_name=site.name %} -With this email we have disabled your alert automatically and you will not -receive any further email regarding this product. - -Thanks for your interest, -The {{ site_name }} Team -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.html b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.html deleted file mode 100644 index 099f8d4..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "oscar/communication/emails/base.html" %} -{% load i18n %} -{% load url_tags %} -{% block body %} - {% absolute_url site.domain alert.get_confirm_url as confirm_url %} - {% absolute_url site.domain alert.get_cancel_url as cancel_url %} - {% blocktrans with title=alert.product.get_title|safe confirm_url=confirm_url cancel_url=cancel_url %} - Hello, -

    - Somebody (hopefully you) has requested an email alert when '{{ title }}' is back in stock. - Please click the following link to confirm: {{ confirm_url }} -

    -

    - You can cancel this alert at any time by clicking the following link: {{ cancel_url }} -

    -

    - Thanks for your interest, - The {{ site }} Team -

    - {% endblocktrans %} -{% endblock %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.txt deleted file mode 100644 index dba6e27..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_body.txt +++ /dev/null @@ -1,17 +0,0 @@ -{% load i18n %} -{% load url_tags %} -{% absolute_url site.domain alert.get_confirm_url as confirm_url %} -{% absolute_url site.domain alert.get_cancel_url as cancel_url %} -{% blocktrans with title=alert.product.get_title|safe confirm_url=confirm_url cancel_url=cancel_url %} -Hello, - -Somebody (hopefully you) has requested an email alert when -'{{ title }}' is back in stock. Please click the following link -to confirm: {{ confirm_url }} - -You can cancel this alert at any time by clicking the following link: -{{ cancel_url }} - -Thanks for your interest, -The {{ site }} Team -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_subject.txt deleted file mode 100644 index f9b4b4e..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_confirmation_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans %}Confirmation required for stock alert{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_product_alert_subject.txt deleted file mode 100644 index c427d7d..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_product_alert_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% blocktrans with title=alert.product.get_title|safe %}{{ title }} is back in stock{% endblocktrans %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_registration_body.html b/tests/django_oscar/oscar/communication/emails/commtype_registration_body.html deleted file mode 100644 index e50ba06..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_registration_body.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} -

    - {% trans 'Thank you for registering.' %} -

    diff --git a/tests/django_oscar/oscar/communication/emails/commtype_registration_body.txt b/tests/django_oscar/oscar/communication/emails/commtype_registration_body.txt deleted file mode 100644 index 028d1a0..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_registration_body.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% trans 'Thank you for registering.' %} diff --git a/tests/django_oscar/oscar/communication/emails/commtype_registration_sms.txt b/tests/django_oscar/oscar/communication/emails/commtype_registration_sms.txt deleted file mode 100644 index e69de29..0000000 diff --git a/tests/django_oscar/oscar/communication/emails/commtype_registration_subject.txt b/tests/django_oscar/oscar/communication/emails/commtype_registration_subject.txt deleted file mode 100644 index 028d1a0..0000000 --- a/tests/django_oscar/oscar/communication/emails/commtype_registration_subject.txt +++ /dev/null @@ -1 +0,0 @@ -{% load i18n %}{% trans 'Thank you for registering.' %} diff --git a/tests/django_oscar/oscar/communication/notifications/detail.html b/tests/django_oscar/oscar/communication/notifications/detail.html deleted file mode 100644 index 85e85e6..0000000 --- a/tests/django_oscar/oscar/communication/notifications/detail.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block extra_breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - - {% if notification.sender %} - - - - - {% endif %} - - - - - {% if notification.body %} - - - - - - - - - {% else %} - - - - - {% endif %} -
    {% trans 'Sender' %}{{ notification.sender }}
    {% trans 'Date sent' %}{{ notification.date_sent }}
    {% trans 'Subject' %}{{ notification.subject|safe }}
    {% trans 'Body' %}{{ notification.body }}
    {% trans 'Message' %}{{ notification.subject|safe }}
    - -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/communication/notifications/list.html b/tests/django_oscar/oscar/communication/notifications/list.html deleted file mode 100644 index 3bc2fc2..0000000 --- a/tests/django_oscar/oscar/communication/notifications/list.html +++ /dev/null @@ -1,91 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - - {% if notifications %} - {% include "oscar/partials/pagination.html" %} -
    - {% csrf_token %} - - - {% for notification in notifications %} - - - - - - - {% endfor %} - -
    - - - {% if notification.is_read %} - - {% else %} - - {% endif %} - - {% if notification.is_read %} - {{ notification.subject|safe }} - {% else %} - {{ notification.subject|safe }} - {% endif %} -
    - {{ notification.date_sent }} -
    - - {% trans 'View' %} - - {% if list_type == 'inbox' %} - - {% trans 'Archive' context 'verb' %} - - {% endif %} - - {% trans 'Delete' %} - -
    - {% trans "With selected items:" %} - {% if list_type == 'inbox' %} - - {% endif %} - -
    - {% include "oscar/partials/pagination.html" %} - {% else %} -

    - {% trans "There are no notifications to display." %} -

    - {% endif %} -{% endblock tabcontent %} -{% block onbodyload %} - {{ block.super }} - oscar.notifications.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/customer/address/address_delete.html b/tests/django_oscar/oscar/customer/address/address_delete.html deleted file mode 100644 index b95860b..0000000 --- a/tests/django_oscar/oscar/customer/address/address_delete.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block extra_breadcrumbs %} - -{% endblock %} -{% block tabcontent %} -
    - {% csrf_token %} -

    - {% trans 'Are you sure you want to delete this address?' %} -

    -

    - {{ object.summary }} -

    -
    - - {% trans 'or' %} - {% trans 'cancel' %} -
    -
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/address/address_form.html b/tests/django_oscar/oscar/customer/address/address_form.html deleted file mode 100644 index cf73ee6..0000000 --- a/tests/django_oscar/oscar/customer/address/address_form.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block extra_breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - {% with style='horizontal' %} - {% include "oscar/partials/form.html" %} - {% endwith %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/address/address_list.html b/tests/django_oscar/oscar/customer/address/address_list.html deleted file mode 100644 index 4a1ea5e..0000000 --- a/tests/django_oscar/oscar/customer/address/address_list.html +++ /dev/null @@ -1,67 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% if addresses %} - - - - - - - {% for address in addresses %} - - - - - {% endfor %} - -
    {% trans 'Address' %}
    - {% if address.is_default_for_shipping %} - {% trans 'Default shipping address' %} - {% endif %} - {% if address.is_default_for_billing %} - {% trans 'Default billing address' %} - {% endif %} -
    - {% for field in address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    -
    -
    - - {% trans 'Edit' %} - - - -
    -
    - {% include "oscar/partials/pagination.html" %} - {% else %} -

    - {% trans 'There are no addresses in your address book.' %} -

    - {% endif %} -

    - - {% trans 'Add a new address' %} - -

    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/alerts/alert_list.html b/tests/django_oscar/oscar/customer/alerts/alert_list.html deleted file mode 100644 index 8c44791..0000000 --- a/tests/django_oscar/oscar/customer/alerts/alert_list.html +++ /dev/null @@ -1,45 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% if not alerts %} -

    - {% trans "You do not have any active alerts for out-of-stock products." %} -

    - {% else %} -
    - {% csrf_token %} - - - - - - - - {% for alert in alerts %} - - - - - - - {% endfor %} -
    {% trans "Product" %}{% trans "Status" %}{% trans "Date created" %}
    - {% with product=alert.product %} - {% if product.is_public %} - {{ product.get_title }} - {% else %} - {{ product.get_title }} - {% endif %} - {% endwith %} - {{ alert.status }}{{ alert.date_created }} - {% if alert.can_be_cancelled %} - - {% trans "Cancel" %} - - {% endif %} -
    - {% include "oscar/partials/pagination.html" %} -
    - {% endif %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/alerts/form.html b/tests/django_oscar/oscar/customer/alerts/form.html deleted file mode 100644 index dc2abbe..0000000 --- a/tests/django_oscar/oscar/customer/alerts/form.html +++ /dev/null @@ -1 +0,0 @@ -{% extends 'oscar/catalogue/detail.html' %} diff --git a/tests/django_oscar/oscar/customer/alerts/message.html b/tests/django_oscar/oscar/customer/alerts/message.html deleted file mode 100644 index 8f58dbe..0000000 --- a/tests/django_oscar/oscar/customer/alerts/message.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load i18n %} -{% blocktrans with url=alert.product.get_absolute_url title=alert.product.get_title %} - {{ title }} - is back in stock -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/customer/alerts/message_subject.html b/tests/django_oscar/oscar/customer/alerts/message_subject.html deleted file mode 100644 index 0fa7401..0000000 --- a/tests/django_oscar/oscar/customer/alerts/message_subject.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} -{% blocktrans with title=alert.product.get_title|truncatechars:200 %} - {{ title }} is back in stock -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/customer/anon_order.html b/tests/django_oscar/oscar/customer/anon_order.html deleted file mode 100644 index 9d9b6a2..0000000 --- a/tests/django_oscar/oscar/customer/anon_order.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load currency_filters %} -{% load i18n %} -{% load reviews_tags %} -{% load display_tags %} -{% block headertext %} - {% blocktrans with number=order.number %} - Order #{{ number }} - {% endblocktrans %} -{% endblock %} -{% block content %} - {% if order.status %} -
    -

    {% trans 'Status' %}

    -
    -

    - {{ order.status }} -

    - {% endif %} - {% with address=order.shipping_address %} -
    -

    {% trans 'Shipping address' %}

    -
    - - - - - - {% if address.phone_number %} - - - - - {% endif %} - {% if address.notes %} - - - - - {% endif %} -
    {% trans 'Address' %} - {% for field in address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    {% trans 'Contact number' %}{{ address.phone_number }}
    {% trans 'Notes' %}{{ address.notes|linebreaks }}
    - {% endwith %} -
    -

    {% trans 'Shipping method' %}

    -
    -

    - {{ order.shipping_method }} -

    -
    -

    {% trans 'Order contents' %}

    -
    - {% csrf_token %} - - - - - - - - {% iffeature "reviews" %} - - {% endiffeature %} - - {% for line in order.lines.all %} - - - - - - - {% iffeature "reviews" %} - - {% endiffeature %} - - {% endfor %} - {% for discount in order.discounts.all %} - - - - - - {% endfor %} -
    {% trans 'Product' %}{% trans 'Status' %}{% trans 'Quantity' %}{% trans 'Line price excl. tax' %}{% trans 'Line price incl. tax' %}
    - {% if product.is_public %} - - {{ line.description }} - - {% else %} - {{ line.description }} - {% endif %} - {{ line.shipping_status|default:"-" }}{{ line.quantity }}{{ line.line_price_before_discounts_excl_tax|currency:order.currency }}{{ line.line_price_before_discounts_incl_tax|currency:order.currency }} - {% if line.product|is_review_permitted:user %} - - {% trans 'Write a review' %} - - {% endif %} -
    {{ discount.description }}-{{ discount.amount|currency:order.currency }}
    - - - - - - - - - - - - - - -
    - {% trans 'Totals' %} -
    {% trans 'Basket total (inc. tax)' %}{{ order.basket_total_incl_tax|currency:order.currency }}
    {% trans 'Shipping charge (inc. tax)' %}{{ order.shipping_incl_tax|currency:order.currency }}
    {% trans 'Order total' %}{{ order.total_incl_tax|currency:order.currency }}
    -{% endblock content %} diff --git a/tests/django_oscar/oscar/customer/baseaccountpage.html b/tests/django_oscar/oscar/customer/baseaccountpage.html deleted file mode 100644 index 69f2fd9..0000000 --- a/tests/django_oscar/oscar/customer/baseaccountpage.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "oscar/layout_2_col.html" %} -{% load i18n %} -{% block title %} - {{ page_title }} | {% trans 'Account' %} | {{ block.super }} -{% endblock %} -{% block body_class %}account-profile{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ page_title }}{% endblock %} -{% block column_left %} - -{% endblock %} -{% block content %} - {% block tabcontent %}{% endblock tabcontent %} -{% endblock content %} diff --git a/tests/django_oscar/oscar/customer/history/recently_viewed_products.html b/tests/django_oscar/oscar/customer/history/recently_viewed_products.html deleted file mode 100644 index 20eb28e..0000000 --- a/tests/django_oscar/oscar/customer/history/recently_viewed_products.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -{% load product_tags %} -{% with products_sliced=products|slice:":6" %} - {% if products_sliced %} -
    -

    {% trans 'Products you recently viewed' %}

    -
    -
      - {% for product in products_sliced %} -
    • - {% render_product product %} -
    • - {% endfor %} -
    - {% endif %} -{% endwith %} diff --git a/tests/django_oscar/oscar/customer/login_registration.html b/tests/django_oscar/oscar/customer/login_registration.html deleted file mode 100644 index 8ef4270..0000000 --- a/tests/django_oscar/oscar/customer/login_registration.html +++ /dev/null @@ -1,56 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block title %} - {% trans 'Login or register' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %}{% endblock %} -{% block content %} -
    - -
    -
    -

    {% trans 'Register' %}

    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" with form=registration_form %} - -
    -
    -
    -{% endblock content %} diff --git a/tests/django_oscar/oscar/customer/order/order_detail.html b/tests/django_oscar/oscar/customer/order/order_detail.html deleted file mode 100644 index 5882b61..0000000 --- a/tests/django_oscar/oscar/customer/order/order_detail.html +++ /dev/null @@ -1,198 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load currency_filters %} -{% load display_tags %} -{% load i18n %} -{% load reviews_tags %} -{% block extra_breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - {% if order.status %} -

    {% trans 'Status' %}

    -

    - {{ order.status }} -

    -
    - {% endif %} - - - - - - - - - - - - {% for line in order.lines.all %} - {% with product=line.product %} - - - - - - - - {% endwith %} - {% endfor %} - {% with discounts=order.basket_discounts %} - {% block discount_totals %} - {% if discounts %} - - - - - {% for discount in discounts %} - - - - - {% endfor %} - {% endif %} - {% endblock discount_totals %} - {% block basket_total %} - {% if discounts %} - - - - - {% else %} - - - - - {% endif %} - {% endblock basket_total %} - {% endwith %} - {% block shipping_totals %} - {% if order.has_shipping_discounts %} - - - - - {% for discount in order.shipping_discounts %} - - - - - {% endfor %} - - - - - {% else %} - - - - - {% endif %} - {% endblock %} - {% block order_total %} - - - - - {% endblock order_total %} - -
    {% trans 'Product' %}{% trans 'Qty' %}{% trans 'Line price excl. tax' %}{% trans 'Line price incl. tax' %}
    - {% if product %} - {% if product.is_public %} -

    - {{ line.description }} -

    - {% else %} -

    - {{ line.description }} -

    - {% endif %} - {% iffeature "reviews" %} - {% if product|is_review_permitted:user %} - - {% trans 'Write a review' %} - - {% endif %} - {% endiffeature %} - {% else %} -

    - {{ line.description }} -

    - {% endif %} -
    {{ line.quantity }}{{ line.line_price_before_discounts_excl_tax|currency:order.currency }}{{ line.line_price_before_discounts_incl_tax|currency:order.currency }} - {% if product and product.is_public %} -
    - {% csrf_token %} - - -
    - {% else %} - {% trans 'Not available anymore' %} - {% endif %} -
    {% trans "Basket total (excl. discounts)" %} - {{ order.basket_total_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer_name }} - - {{ discount.amount|currency:order.currency }}
    {% trans "Basket total (inc. discounts)" %} - {{ order.basket_total_incl_tax|currency:order.currency }} -
    {% trans "Basket total" %} - {{ order.basket_total_incl_tax|currency:order.currency }} -
    {% trans "Shipping total (excl. discounts)" %} - {{ order.shipping_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer_name }} - - {{ discount.amount|currency:order.currency }}
    {% trans "Shipping total (inc. discounts)" %} - {{ order.shipping_incl_tax|currency:order.currency }} -
    {% trans "Shipping total" %} - {{ order.shipping_incl_tax|currency:order.currency }} -
    {% trans 'Order total' %}{{ order.total_incl_tax|currency:order.currency }}
    - {% block order_actions %} -
    - {% csrf_token %} - - - -
    - {% endblock order_actions %} -
    -

    {% trans 'Shipping Method' %}

    -

    - {{ order.shipping_method }} -

    -
    -

    {% trans 'Shipping Address' %}

    - - - - - - - - - - - -
    {% trans 'Address' %}{% trans 'Contact Number' %}{% trans 'Shipping Notes' %}
    - {% for field in order.shipping_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    {{ order.shipping_address.phone_number|default:"-" }}{{ order.shipping_address.notes|linebreaks }}
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/order/order_list.html b/tests/django_oscar/oscar/customer/order/order_list.html deleted file mode 100644 index 31bf213..0000000 --- a/tests/django_oscar/oscar/customer/order/order_list.html +++ /dev/null @@ -1,82 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load currency_filters %} -{% load i18n %} -{% load static %} -{% block styles %} - {{ block.super }} - -{% endblock %} -{% block scripts %} - {{ block.super }} - - -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - {% if orders or form.is_bound %} -
    -

    {% trans "Filter" %}

    -
    - {% include "oscar/partials/form_fields.html" with form=form style='horizontal' %} -
    -
    - - - {% trans 'Reset' %} - -
    -
    -
    -
    - {% endif %} - {% if orders %} -

    {{ form.description }}

    - - - - - - - - {% for order in orders %} - - - - - - - {% endfor %} -
    {% trans "Order number" %}{% trans "Num items" %}{% trans "Total inc tax" %}{% trans "Date submitted" %}
    - - {{ order.number }} - - {{ order.num_items }}{{ order.total_incl_tax|currency:order.currency }}{{ order.date_placed }}
    - {% include "oscar/partials/pagination.html" %} - {% else %} - {% if form.is_bound %} -

    - {% trans "No orders match your search." %} -

    - {% else %} -

    - {% trans "You haven't placed any orders." %} -

    - {% endif %} - {% endif %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/partials/standard_tabs.html b/tests/django_oscar/oscar/customer/partials/standard_tabs.html deleted file mode 100644 index 20ef1f3..0000000 --- a/tests/django_oscar/oscar/customer/partials/standard_tabs.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load i18n %} -{% load display_tags %} - - - - - - -{% iffeature 'wishlists' %} - -{% endiffeature %} diff --git a/tests/django_oscar/oscar/customer/profile/change_password_form.html b/tests/django_oscar/oscar/customer/profile/change_password_form.html deleted file mode 100644 index c409b48..0000000 --- a/tests/django_oscar/oscar/customer/profile/change_password_form.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% include 'oscar/partials/form.html' with form_id="change_password_form" %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/profile/profile.html b/tests/django_oscar/oscar/customer/profile/profile.html deleted file mode 100644 index 764c566..0000000 --- a/tests/django_oscar/oscar/customer/profile/profile.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - - - - - - - - - - - {% block profile_fields %} - {% for field in profile_fields %} - - - - - {% endfor %} - {% endblock %} - - - - - -
    {% trans 'Name' %}{{ user.get_full_name|default:'-' }}
    {% trans 'Email address' %}{{ user.email }}
    {{ field.name }}{{ field.value|default:"-" }}
    {% trans 'Date registered' %}{{ user.date_joined }}
    - - {% trans 'Change password' %} - - - {% trans 'Edit profile' %} - - - {% trans 'Delete profile' %} - -{% endblock %} diff --git a/tests/django_oscar/oscar/customer/profile/profile_delete.html b/tests/django_oscar/oscar/customer/profile/profile_delete.html deleted file mode 100644 index 61a1787..0000000 --- a/tests/django_oscar/oscar/customer/profile/profile_delete.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} -

    - {% trans "Please confirm your password to delete your profile." %} -

    -
    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" with style='horizontal' %} -
    -

    {% trans "Warning" %}

    - {% blocktrans %} - This will delete all information about you from the site. Deleting your profile cannot be - undone. - {% endblocktrans %} -
    -
    - - {% trans "or" %} - {% trans "cancel" %} - . -
    -
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/profile/profile_form.html b/tests/django_oscar/oscar/customer/profile/profile_form.html deleted file mode 100644 index 62904bf..0000000 --- a/tests/django_oscar/oscar/customer/profile/profile_form.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% include 'oscar/partials/form.html' with form_id="profile_form" %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/registration.html b/tests/django_oscar/oscar/customer/registration.html deleted file mode 100644 index 7e306aa..0000000 --- a/tests/django_oscar/oscar/customer/registration.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block title %} - {% trans 'Register' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Register" %} -{% endblock %} -{% block content %} -
    -
    -
    - {% csrf_token %} - {% include "oscar/partials/form_fields.html" %} - - {% if cancel_url %} - {% trans "or" %} - {% trans "cancel" %} - . - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/tests/django_oscar/oscar/customer/wishlists/wishlists_delete.html b/tests/django_oscar/oscar/customer/wishlists/wishlists_delete.html deleted file mode 100644 index f73a434..0000000 --- a/tests/django_oscar/oscar/customer/wishlists/wishlists_delete.html +++ /dev/null @@ -1,46 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block tabcontent %} -
    - {% csrf_token %} -

    - {% blocktrans with name=wishlist.name %} - Are you sure you want to delete {{ name }}? - {% endblocktrans %} -

    -
    - - {% trans 'or' %} - - {% trans 'cancel' %} - -
    -
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/wishlists/wishlists_delete_product.html b/tests/django_oscar/oscar/customer/wishlists/wishlists_delete_product.html deleted file mode 100644 index c9552f0..0000000 --- a/tests/django_oscar/oscar/customer/wishlists/wishlists_delete_product.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block tabcontent %} -
    - {% csrf_token %} -

    - {% blocktrans with product_name=object.get_title wishlist_name=wishlist.name %} - Are you sure you want to delete {{ product_name }} from wish list {{ wishlist_name }}? - {% endblocktrans %} -

    -
    - - {% trans 'or' %} - {% trans 'cancel' %} -
    -
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/wishlists/wishlists_detail.html b/tests/django_oscar/oscar/customer/wishlists/wishlists_detail.html deleted file mode 100644 index 16af629..0000000 --- a/tests/django_oscar/oscar/customer/wishlists/wishlists_detail.html +++ /dev/null @@ -1,134 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load image_tags %} -{% load i18n %} -{% load widget_tweaks %} -{% block breadcrumbs %} - -{% endblock %} -{% block tabcontent %} - {% if form.total_form_count %} -
    - {{ form.management_form }} - {% csrf_token %} - - - - - - - - {% for subform in form %} - {% with line=subform.instance product=subform.instance.product %} - - - - - - - {% endwith %} - {% endfor %} - - - - - - -
    {% trans 'Product' %}{% trans 'Quantity' %}{% trans 'Action' %}
    - {% if product %} - {% with image=product.primary_image %} - {% oscar_thumbnail image.original "100x100" upscale=False as thumb %} - {% if product.is_public %} - - {{ product.get_title }} - - {% else %} - {{ product.get_title }} - {% endif %} - {% endwith %} - {% endif %} - - {% if product and product.is_public %} - - {{ line.get_title }} - - {% else %} - {{ line.get_title }} ({% trans 'Not available anymore' %}) - {% endif %} - - {% for field in subform %} - {% render_field field class+="form-control" %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {% endfor %} -
    -
    - {% if product %} - - {% trans 'View product' %} - - - {% else %} - - {% trans 'Actions' %} - - {% endif %} - -
    -
    - -
    -
    - {% else %} - {% trans "Your wish list is empty." %} - {% endif %} -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/wishlists/wishlists_form.html b/tests/django_oscar/oscar/customer/wishlists/wishlists_form.html deleted file mode 100644 index 3bdc313..0000000 --- a/tests/django_oscar/oscar/customer/wishlists/wishlists_form.html +++ /dev/null @@ -1,56 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block tabcontent %} -
    - {% csrf_token %} - {% if not wishlist %} -

    - {% trans "What should your new wish list be called?" %} -

    - {% endif %} - {% include "oscar/partials/form_fields.html" %} - {% if product %} -

    - {% blocktrans with title=product.get_title %} - After your wishlist is created, - {{ title }} - will be added. - {% endblocktrans %} -

    - {% endif %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - - . -
    -
    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/customer/wishlists/wishlists_list.html b/tests/django_oscar/oscar/customer/wishlists/wishlists_list.html deleted file mode 100644 index 2268cbd..0000000 --- a/tests/django_oscar/oscar/customer/wishlists/wishlists_list.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends "oscar/customer/baseaccountpage.html" %} -{% load i18n %} -{% block tabcontent %} - {% if wishlists %} - - - - - - - - {% for wishlist in wishlists %} - - - - - - {% endfor %} - -
    {% trans 'Name' %}{% trans 'Number of products' %}{% trans 'Action' %}
    - - {{ wishlist.name }} - - {{ wishlist.lines.count }} - -
    - {% include "oscar/partials/pagination.html" %} - {% else %} -

    - {% trans "You don't have any wish lists yet." %} -

    - {% endif %} -

    - - {% trans 'Create a new wish list' %} - -

    -{% endblock tabcontent %} diff --git a/tests/django_oscar/oscar/dashboard/base.html b/tests/django_oscar/oscar/dashboard/base.html deleted file mode 100644 index 2cb1fb5..0000000 --- a/tests/django_oscar/oscar/dashboard/base.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "oscar/base.html" %} -{% block extrahead %} - {{ block.super }} - -{% endblock %} -{% block tracking %} - {# By default there is no analytics tracking in the dashboard #} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_delete.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_delete.html deleted file mode 100644 index 0ead220..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_delete.html +++ /dev/null @@ -1,75 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {{ title }} | {% trans "Create Attribute Option Group" %} | {{ block.super }} -{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block navbar %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block dashboard_nav %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block breadcrumbs %} - {% if not is_popup %} - - {% endif %} -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} - {% if disallow %} -

    - {% trans "Please make sure all Product Attributes are assigned to another Attribute Option Group before deletion." %} -

    - {% else %} -
    -

    {% trans "Delete Attribute Option Group" %}

    -
    -
    - {% csrf_token %} - {% if is_popup %} - - {% endif %} - {% if not is_popup %} - {% for key, value in http_get_params.items %} - - {% endfor %} - {% endif %} -

    - {% blocktrans with name=object.name %} - Delete Attribute Option Group - {{ name }} - - are you sure? - {% endblocktrans %} -

    -
    - - {% trans "Cancel" %} - - -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_form.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_form.html deleted file mode 100644 index d722cb5..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_form.html +++ /dev/null @@ -1,165 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {{ title }} | {% trans "Create Attribute Option Group" %} | {{ block.super }} -{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block navbar %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block dashboard_nav %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block breadcrumbs %} - {% if not is_popup %} - - {% endif %} -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -
    - {% if is_popup %} - - {% endif %} - {% if to_field %} - - {% endif %} - {% block tab_nav %} -
    -
    -
    -

    {% trans "Sections" %}

    -
    - -
    -
    - {% endblock tab_nav %} -
    -
    - {% block tab_content %} - {% block attribute_option_group_details %} -
    -
    -

    {% trans "Attribute Option Group details" %}

    -
    -
    - {% comment %} - If the AttributeOptionGroup form has field_errors, partials/form_fields.html - will render an error message. - This means that there'll be 2 error messages, - one from the partial and one from the view. Perhaps there should be - an option allowing hiding of the error message in the template. - For now we copy paste what we need from the template. - {% endcomment %} - {% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - - - {{ error }} - -
    - {% endfor %} - {% endif %} - {% for field in form %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endfor %} -
    -
    - {% endblock %} - {% block attribute_options %} -
    -
    -

    {% trans "Attribute Options" %}

    -
    -
    - - {{ attribute_option_formset.management_form }} - {{ attribute_option_formset.non_form_errors }} - - - - - - - - - - {% for attribute_option_form in attribute_option_formset %} - - {% for hidden_field in attribute_option_form.hidden_fields %} - {{ hidden_field }} - {% endfor %} - - - - {% endfor %} - -
    {% trans "Option" %}{% trans "Delete?" %}
    - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_option_form.option nolabel=True %} - - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_option_form.DELETE nolabel=True %} -
    -
    -
    - {% endblock %} - {% endblock tab_content %} -
    -
    -
    - {% block fixed_actions_group %} -
    -
    -
    - - {% trans "Cancel" %} - - {% trans "or" %} - -
    -
    -
    - {% endblock fixed_actions_group %} -
    -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.product_attributes.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_list.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_list.html deleted file mode 100644 index 3da58ab..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_list.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load render_table from django_tables2 %} -{% block title %} - {% trans "Attribute Option Groups" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% if attribute_option_groups %} - {% block product_list %} -
    - {% csrf_token %} - {% render_table attribute_option_groups %} -
    - {% endblock product_list %} - {% else %} -

    - {% trans "No Attribute Option Groups found." %} -

    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_actions.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_actions.html deleted file mode 100644 index 055cb21..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_actions.html +++ /dev/null @@ -1,24 +0,0 @@ -{% load django_tables2 %} -{% load i18n %} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_name.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_name.html deleted file mode 100644 index c064bea..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_name.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load django_tables2 %} - - {{ value }} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_option_summary.html b/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_option_summary.html deleted file mode 100644 index c064bea..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/attribute_option_group_row_option_summary.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load django_tables2 %} - - {{ value }} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/category_delete.html b/tests/django_oscar/oscar/dashboard/catalogue/category_delete.html deleted file mode 100644 index 0f92f7e..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/category_delete.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Delete category?" %} -{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Delete category" %}

    -
    -
    - {% csrf_token %} - {{ form }} - {% blocktrans with name=object.name %} -

    - Delete category - {{ name }} - - are you sure? -

    - {% endblocktrans %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/category_form.html b/tests/django_oscar/oscar/dashboard/catalogue/category_form.html deleted file mode 100644 index d37e8b4..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/category_form.html +++ /dev/null @@ -1,131 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load category_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page catalogue{% endblock %} -{% block title %} - {{ title }} | {% trans "Categories" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -
    - {% block tab_nav %} -
    -
    -
    -

    {% trans "Sections" %}

    -
    - -
    -
    - {% endblock tab_nav %} -
    -
    - {% block tab_content %} - {% block category_details %} -
    -
    -

    {% trans "Category details" %}

    -
    -
    - {% block category_details_content %} - {{ form.non_field_errors }} - {% for field in form.hidden_fields %}{{ field }}{% endfor %} - {% for field in form.primary_form_fields %} - {% if 'attr' not in field.id_for_label %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endif %} - {% endfor %} - {% endblock category_details_content %} -
    -
    - {% endblock category_details %} - {% block seo %} -
    -
    -

    {% trans "Search engine optimisation" %}

    -
    -
    - {% block seo_content %} - {% for field in form.seo_form_fields %} - {% if 'attr' not in field.id_for_label %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endif %} - {% endfor %} - {% endblock seo_content %} -
    -
    - {% endblock seo %} - {% endblock tab_content %} -
    -
    -
    - {% block fixed_actions_group %} -
    -
    -
    - - {% trans "Cancel" %} - - {% trans "or" %} - - -
    - {% if category %} - - {% trans "View on site" %} - - {% endif %} -
    -
    - {% endblock fixed_actions_group %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/category_list.html b/tests/django_oscar/oscar/dashboard/catalogue/category_list.html deleted file mode 100644 index 62102f2..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/category_list.html +++ /dev/null @@ -1,58 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load category_tags %} -{% load i18n %} -{% load render_table from django_tables2 %} -{% block body_class %}{{ block.super }} catalogue{% endblock %} -{% block title %} - {% trans "Categories" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -
    - {% trans "You are editing:" %} - - - {% trans "Home" %} - - - {% if ancestors %} - > - {% for ancestor in ancestors %} - - - {{ ancestor.name }} - - - {% if not forloop.last %}> {% endif %} - {% endfor %} - {% endif %} -
    -
    - {% render_table categories %} - {% if not child_categories %} -

    - {% trans "There are no categories." %} -

    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/category_row_actions.html b/tests/django_oscar/oscar/dashboard/catalogue/category_row_actions.html deleted file mode 100644 index df0a795..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/category_row_actions.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load django_tables2 %} -{% load i18n %} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/messages/product_saved.html b/tests/django_oscar/oscar/dashboard/catalogue/messages/product_saved.html deleted file mode 100644 index 58be09d..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/messages/product_saved.html +++ /dev/null @@ -1,47 +0,0 @@ -{% load i18n %} -{% load django_tables2 %} -

    - {% with name=product.title parent_name=product.parent.title %} - {% if product.is_child %} - {% if creating %} - {% if product.title %} - {% blocktrans %} - Created product variant '{{ name }}'. - {% endblocktrans %} - {% else %} - {% blocktrans %} - Created variant of '{{ parent_name }}'. - {% endblocktrans %} - {% endif %} - {% else %} - {% if product.title %} - {% blocktrans %} - Updated product variant '{{ name }}'. - {% endblocktrans %} - {% else %} - {% blocktrans %} - Updated a variant of '{{ parent_name }}'. - {% endblocktrans %} - {% endif %} - {% endif %} - {% else %} - {% if creating %} - {% blocktrans %} - Created product '{{ name }}'. - {% endblocktrans %} - {% else %} - {% blocktrans %} - Updated product '{{ name }}'. - {% endblocktrans %} - {% endif %} - {% endif %} - {% endwith %} -

    -

    - - {% trans "Edit again" %} - - - {% trans "View it on the site" %} - -

    diff --git a/tests/django_oscar/oscar/dashboard/catalogue/option_delete.html b/tests/django_oscar/oscar/dashboard/catalogue/option_delete.html deleted file mode 100644 index 1da8aba..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/option_delete.html +++ /dev/null @@ -1,69 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {{ title }} | {% trans "Create Option" %} | {{ block.super }} -{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block navbar %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block dashboard_nav %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block breadcrumbs %} - {% if not is_popup %} - - {% endif %} -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} - {% if disallow %} -

    - {% trans "Please make sure option is not assigned to Products or Product Classes before deletion." %} -

    - {% else %} -
    -

    {% trans "Delete Option" %}

    -
    -
    - {% csrf_token %} - {% if is_popup %} - - {% endif %} - {% if not is_popup %} - {% for key, value in http_get_params.items %} - - {% endfor %} - {% endif %} -

    - {% blocktrans with name=object.name %} - Delete Option - {{ name }} - - are you sure? - {% endblocktrans %} -

    -
    - - {% trans "Cancel" %} - - -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/option_form.html b/tests/django_oscar/oscar/dashboard/catalogue/option_form.html deleted file mode 100644 index 691a7e8..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/option_form.html +++ /dev/null @@ -1,96 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %}{{ title }} | {{ block.super }}{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block navbar %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block dashboard_nav %} - {% if not is_popup %}{{ block.super }}{% endif %} -{% endblock %} -{% block breadcrumbs %} - {% if not is_popup %} - - {% endif %} -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -
    - {% if is_popup %} - - {% endif %} - {% if to_field %} - - {% endif %} -
    -
    - {% block option_details %} -
    -
    -

    {% trans "Option details" %}

    -
    -
    - {% comment %} - If the Option form has field_errors, partials/form_fields.html - will render an error message. - This means that there'll be 2 error messages, - one from the partial and one from the view. Perhaps there should be - an option allowing hiding of the error message in the template. - For now we copy paste what we need from the template. - {% endcomment %} - {% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - - - {{ error }} - -
    - {% endfor %} - {% endif %} - {% for field in form %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endfor %} -
    -
    - {% endblock %} -
    -
    -
    - {% block fixed_actions_group %} -
    -
    -
    - - {% trans "Cancel" %} - - {% trans "or" %} - -
    -
    -
    - {% endblock fixed_actions_group %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/option_list.html b/tests/django_oscar/oscar/dashboard/catalogue/option_list.html deleted file mode 100644 index cb22589..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/option_list.html +++ /dev/null @@ -1,41 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load render_table from django_tables2 %} -{% block title %} - {% trans "Options" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% if options %} - {% block product_list %} -
    - {% csrf_token %} - {% render_table options %} -
    - {% endblock product_list %} - {% else %} -

    - {% trans "No Option found." %} -

    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/option_row_actions.html b/tests/django_oscar/oscar/dashboard/catalogue/option_row_actions.html deleted file mode 100644 index c0962c1..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/option_row_actions.html +++ /dev/null @@ -1,24 +0,0 @@ -{% load django_tables2 %} -{% load i18n %} -
    - -
    diff --git a/tests/django_oscar/oscar/dashboard/catalogue/option_row_name.html b/tests/django_oscar/oscar/dashboard/catalogue/option_row_name.html deleted file mode 100644 index 0d40336..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/option_row_name.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load django_tables2 %} - - {{ value }} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_class_delete.html b/tests/django_oscar/oscar/dashboard/catalogue/product_class_delete.html deleted file mode 100644 index 97e67e9..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_class_delete.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} - {% if disallow %} -

    - {% trans "Please make sure all products are assigned to another type before deletion." %} -

    - {% else %} -
    -

    {% trans "Delete product type" %}

    -
    -
    - {% csrf_token %} - {{ form }} -

    - {% blocktrans with name=object.name %} - Delete product type - {{ name }} - - are you sure? - {% endblocktrans %} -

    -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_class_form.html b/tests/django_oscar/oscar/dashboard/catalogue/product_class_form.html deleted file mode 100644 index fec5704..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_class_form.html +++ /dev/null @@ -1,157 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {{ title }} | {% trans "Create product type" %} | {{ block.super }} -{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -
    - {% block tab_nav %} -
    -
    -
    -

    {% trans "Sections" %}

    -
    - -
    -
    - {% endblock tab_nav %} -
    -
    - {% block tab_content %} - {% block product_class_details %} -
    -
    -

    {% trans "Product Class details" %}

    -
    -
    - {% comment %} - If the ProductClass form has field_errors, partials/form_fields.html - will render an error message. - This means that there'll be 2 error messages, - one from the partial and one from the view. Perhaps there should be - an option allowing hiding of the error message in the template. - For now we copy paste what we need from the template. - {% endcomment %} - {% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - - - {{ error }} - -
    - {% endfor %} - {% endif %} - {% for field in form %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endfor %} -
    -
    - {% endblock %} - {% block product_attributes %} -
    -
    -

    {% trans "Product attributes" %}

    -
    -
    - - {{ attributes_formset.management_form }} - {{ attributes_formset.non_form_errors }} - - - - - - - - - - - - - - {% for attribute_form in attributes_formset %} - - {% for hidden_field in attribute_form.hidden_fields %} - {{ hidden_field }} - {% endfor %} - - - - - - - {% endfor %} - -
    {% trans "Name" %}{% trans "Code" %}{% trans "Type" %}{% trans "Required" %}{% trans "Delete?" %}
    - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.name nolabel=True %} - - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.code nolabel=True %} - - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.type nolabel=True %} - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.option_group nolabel=True %} - - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.required nolabel=True %} - - {% include 'oscar/dashboard/partials/form_field.html' with field=attribute_form.DELETE nolabel=True %} -
    -
    -
    - {% endblock %} - {% endblock tab_content %} -
    -
    -
    - {% block fixed_actions_group %} -
    -
    -
    - - {% trans "Cancel" %} - - {% trans "or" %} - -
    -
    -
    - {% endblock fixed_actions_group %} -
    -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.product_attributes.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_class_list.html b/tests/django_oscar/oscar/dashboard/catalogue/product_class_list.html deleted file mode 100644 index 71463a4..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_class_list.html +++ /dev/null @@ -1,91 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% if classes %} - - - - - - - - - - - - {% for class in classes %} - - - - - - - {% endfor %} - -
    - - {% trans 'Product Types' %} -
    {% trans "Name" %}{% trans "Requires shipping" %}{% trans "Track stock?" %} 
    - - {{ class.name }} - - - - {{ class.requires_shipping|yesno }} - - - - {{ class.track_stock|yesno }} - - - -
    - {% else %} -

    - {% trans "There are no product types." %} -

    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_delete.html b/tests/django_oscar/oscar/dashboard/catalogue/product_delete.html deleted file mode 100644 index 2cd88cf..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_delete.html +++ /dev/null @@ -1,71 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %}{{ title }} | {{ block.super }}{% endblock %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    -

    {{ title }}

    -
    -
    - {% csrf_token %} -

    - {% if product.is_child %} - {% blocktrans with title=product.get_title %} - Delete product variant - {{ title }} - - are you sure? - {% endblocktrans %} - {% else %} - {% blocktrans with title=product.get_title %} - Delete product - {{ title }} - - are you sure? - {% endblocktrans %} - {% endif %} -

    - {% if product.is_parent %} -

    - {% trans "This will also delete the following child products:" %} -

      - {% for child in product.children.all %} -
    • - {{ child.get_title }} -
    • - {% endfor %} -
    -

    - {% endif %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_list.html b/tests/django_oscar/oscar/dashboard/catalogue/product_list.html deleted file mode 100644 index bd07eeb..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_list.html +++ /dev/null @@ -1,100 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load render_table from django_tables2 %} -{% block body_class %}{{ block.super }} catalogue{% endblock %} -{% block title %} - {% trans "Products" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% block create_product %} -
    -

    - - {% trans "Create new product" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=productclass_form %} - -
    -
    - {% endblock %} - {% block search_products %} -
    -

    - - {% trans "Search Products" %} -

    -
    -
    -
    - {% comment %} - Add the current query string to the search form so that the - sort order is not reset when searching. - {% endcomment %} - {% for name, value in request.GET.items %} - {% if name not in form.fields %} - - {% endif %} - {% endfor %} - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - -
    -
    -{% endblock %} -{% if products %} - {% block product_list %} -
    - {% csrf_token %} - {% render_table products %} -
    - - {% endblock product_list %} -{% else %} -

    - {% trans "No products found." %} -

    -{% endif %} -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.product_lists.init(); -{% endblock onbodyload %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_row_actions.html b/tests/django_oscar/oscar/dashboard/catalogue/product_row_actions.html deleted file mode 100644 index c19afa2..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_row_actions.html +++ /dev/null @@ -1,25 +0,0 @@ -{% load django_tables2 %} -{% load i18n %} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_row_image.html b/tests/django_oscar/oscar/dashboard/catalogue/product_row_image.html deleted file mode 100644 index 93a8acd..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_row_image.html +++ /dev/null @@ -1,14 +0,0 @@ -{% load image_tags %} -{% if record.primary_image.original.url %} - {% with image=record.primary_image %} - {% oscar_thumbnail image.original "70x70" upscale=False as thumb %} - - {% if image.caption %}{{ image.caption }}{% else %}{{ record.get_title }}{% endif %} - - {% endwith %} -{% else %} - — -{% endif %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_row_stockrecords.html b/tests/django_oscar/oscar/dashboard/catalogue/product_row_stockrecords.html deleted file mode 100644 index 0ed2820..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_row_stockrecords.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if record.is_parent %} - - -{% else %} - {{ record.num_stockrecords }} -{% endif %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_row_title.html b/tests/django_oscar/oscar/dashboard/catalogue/product_row_title.html deleted file mode 100644 index 3625b34..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_row_title.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load django_tables2 %} - - {{ value }} - diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_row_variants.html b/tests/django_oscar/oscar/dashboard/catalogue/product_row_variants.html deleted file mode 100644 index c738ba1..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_row_variants.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if record.is_standalone %} - - -{% else %} - {{ record.children.count }} -{% endif %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/product_update.html b/tests/django_oscar/oscar/dashboard/catalogue/product_update.html deleted file mode 100644 index 780d241..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/product_update.html +++ /dev/null @@ -1,424 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load form_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page catalogue{% endblock %} -{% block title %} - {{ title }} | {% trans "Products" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} - {% if parent %} -
    -
    -
    - {% url 'dashboard:catalogue-product' pk=parent.id as parent_url %} - {% blocktrans with title=parent.title %} - You are currently editing a product variant of - {{ title }} - . - {% endblocktrans %} -
    -
    -
    - {% endif %} -
    - {% block tab_nav %} -
    -
    -
    -

    {% trans "Sections" %}

    -
    - -
    -
    - {% endblock tab_nav %} -
    -
    - {% block tab_content %} - {% block product_details %} -
    -
    -

    {% trans "Product details" %}

    -
    -
    - {% block product_details_content %} - {{ form.non_field_errors }} - {% for field in form.hidden_fields %}{{ field }}{% endfor %} - {% for field in form.primary_form_fields %} - {% if 'attr' not in field.id_for_label %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %} - {% endif %} - {% endfor %} - {% endblock product_details_content %} -
    -
    - {% endblock product_details %} - {% block product_categories %} -
    - {% block product_categories_content %} - - - {{ category_formset.management_form }} - {{ category_formset.non_form_errors }} - {% for category_form in category_formset %} - - - - {% endfor %} -
    - {% trans "Category" %} -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=category_form %} -
    - {% endblock product_categories_content %} -
    - {% endblock product_categories %} - {% block product_attributes %} -
    - {% block product_attributes_content %} - - - {% for field in form %} - {% if 'attr' in field.id_for_label %} - - - - {% endif %} - {% endfor %} -
    - {% trans "Attributes" %} - {% trans "Product Type:" %} {{ product_class }} -
    {% include "oscar/dashboard/partials/form_field.html" %}
    - {% endblock product_attributes_content %} -
    - {% endblock product_attributes %} - {% block product_images %} -
    - {% block product_images_content %} -
    -

    {% trans "Upload, change or remove images" %}

    -
    -
    - {{ image_formset.management_form }} - {{ image_formset.non_form_errors }} -
      - {% for image_form in image_formset %} - {% include "oscar/dashboard/partials/product_images.html" with form=image_form %} - {% endfor %} -
    -

    - {% trans 'Drag images to re-order them. Space for additional images will appear when images are added.' %} -

    -
    - {% endblock product_images_content %} -
    - {% endblock product_images %} - {% block stockrecords %} -
    - {% block stockrecords_content %} - - - {{ stockrecord_formset.management_form }} - {{ stockrecord_formset.non_form_errors }} - - - - - {% if product_class.track_stock %} - - - - {% endif %} - - - - - - - {% for stockrecord_form in stockrecord_formset %} - {% if stockrecord_form.non_field_errors %} - - - - {% endif %} - - - - {% if product_class.track_stock %} - - - - {% endif %} - - - - - {% endfor %} - -
    - {% trans "Stock and pricing" %} -
    {% trans "Partner" %}{% trans "SKU" %}{% trans "Num in stock" %}{% trans "Num allocated" %}{% trans "Low stock threshold" %}{% trans "Currency" %}{% trans "Price" %}{% trans "Delete?" %}
    - {% for error in stockrecord_form.non_field_errors %} - - - {{ error }} - - {% endfor %} -
    - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.partner nolabel=True %} - - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.partner_sku nolabel=True %} - - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.num_in_stock nolabel=True %} - {{ stockrecord_form.instance.num_allocated|default:"-" }} - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.low_stock_threshold nolabel=True %} - - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.price_currency nolabel=True %} - - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.price nolabel=True %} - - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.id nolabel=True %} - {% include "oscar/dashboard/partials/form_field.html" with field=stockrecord_form.DELETE nolabel=True %} -
    - {% endblock stockrecords_content %} -
    - {% endblock stockrecords %} - {% block child_products %} - {% with children=product.children.all %} -
    - {% block child_products_content %} - - - {% if children %} - - - - - - - - {% for child in children %} - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - {% trans "Variants" %} - -
    {% trans "Title" %}{% trans "Attributes" %}{% trans "Stock records" %}{% trans "Is public?" %} 
    {{ child.get_title }}{{ child.attribute_summary }}{{ child.stockrecords.count }} - {% if child.is_public %} - ✔ - {% else %} - ✘ - {% endif %} - - - {% trans "Edit" %} - - - {% trans "Delete" %} - -
    - {% if product.can_be_parent %} - {% trans 'This product does not have any variants.' %} - {% else %} - {% trans "One can't add variants to this product at this point." %} - {% if product.pk is None %} - {% trans "Please save the product before trying to add variants." %} - {% elif product.has_stockrecords %} - {% trans 'This is likely because this product still has stock records.' %} - {% endif %} - {% endif %} -
    - {% endblock child_products_content %} -
    - {% endwith %} - {% endblock child_products %} - {% block recommended_products %} - - {% endblock recommended_products %} - {% block seo %} -
    -
    -

    {% trans "Search engine optimisation" %}

    -
    -
    - {% block seo_content %} - {% for field in form.seo_form_fields %} - {% if 'attr' not in field.id_for_label %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field %}{% endif %} - {% endfor %} - {% endblock seo_content %} -
    -
    - {% endblock seo %} - {% endblock tab_content %} -
    -
    -
    - {% block fixed_actions_group %} -
    -
    -
    - - {% trans "Cancel" %} - - {% trans "or" %} - {% if parent %} - - {% endif %} - - -
    - {% if product %} - - {% trans "View on site" %} - - {% endif %} -
    -
    - {% endblock fixed_actions_group %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/catalogue/stockalert_list.html b/tests/django_oscar/oscar/dashboard/catalogue/stockalert_list.html deleted file mode 100644 index 4f79310..0000000 --- a/tests/django_oscar/oscar/dashboard/catalogue/stockalert_list.html +++ /dev/null @@ -1,91 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} catalogue{% endblock %} -{% block title %} - {% trans "Stock alerts" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -

    - - {{ description }} -

    - -
    - - {% if alerts %} - - - - - - - - - - {% for alert in alerts %} - - - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    {% trans "Product" %}{% trans "Partner" %}{% trans "Low stock threshold" %}{% trans "Current available stock" %}{% trans "Date alert raised" %}{% trans "Status" %}
    - - {{ alert.stockrecord.product.get_title }} - - {{ alert.stockrecord.partner.display_name }}{{ alert.stockrecord.low_stock_threshold }}{{ alert.stockrecord.net_stock_level }}{{ alert.date_created }}{{ alert.status }} - - {% trans "Update" %} - -
    {% trans "No stock alerts found." %}
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/comms/detail.html b/tests/django_oscar/oscar/dashboard/comms/detail.html deleted file mode 100644 index 23b8ec1..0000000 --- a/tests/django_oscar/oscar/dashboard/comms/detail.html +++ /dev/null @@ -1,174 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %}{{ commtype.name }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -
    - {% if preview %} - - {% else %} -
    -

    - - {% trans "Edit email" %} -

    -
    - {% endif %} -
    -
    - {% csrf_token %} - {% include 'oscar/dashboard/partials/form_field.html' with field=form.name %} -
    -

    {% trans "Email content" %}

    -
    -
    -

    - {% trans "These fields are rendered using Django's template system." %} -

    -

    - {% trans "You can use the following variables:" %} -

    -
    -
    - - {% templatetag openvariable %} user.get_full_name {% templatetag closevariable %} - -
    -
    - {% trans "The full name of the user (if they have one)" %} -
    -
    - - {% templatetag openvariable %} user.email {% templatetag closevariable %} - -
    -
    - {% trans "The user's email address" %} -
    -
    - - {% templatetag openvariable %} site.name {% templatetag closevariable %} - -
    -
    - {% trans "The name of the site (eg example.com)" %} -
    - {% if commtype.is_order_related %} -
    - - {% templatetag openvariable %} order.number {% templatetag closevariable %} - -
    -
    - {% trans "Order number" %} -
    - {% endif %} -
    -
    - {% include 'oscar/dashboard/partials/form_field.html' with field=form.email_subject_template %} - {% include 'oscar/dashboard/partials/form_field.html' with field=form.email_body_template %} - {% include 'oscar/dashboard/partials/form_field.html' with field=form.email_body_html_template %} -
    -

    {% trans "Preview" %}

    -
    -
    - {% if commtype.is_order_related %} -

    - {% trans "View a preview of this email using order:" %} -

    - {% include 'oscar/dashboard/partials/form_field.html' with field=form.preview_order_number %} - {% endif %} - -

    - {% trans "or send a preview to:" %} -

    - {% include 'oscar/dashboard/partials/form_field.html' with field=form.preview_email %} - -
    -
    -
    - - - - - - - - - - - - - -
    {% trans "Subject" %}{{ preview.subject }}
    {% trans "Body text" %} -
    -{{ preview.body }}
    -                                
    -
    {% trans "Body HTML" %} - -
    -
    -
    - - {% trans "or" %} - {% trans "cancel" %} - . -
    -
    -
    -
    -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - $(function() { - // Sets the HTML email preview so it's css doesn't touch the page. - var el_preview_html = document.getElementById('preview_box'); - var html = $(el_preview_html).text(); - var doc = el_preview_html.contentWindow.document; - doc.open(); - doc.write(html); - doc.close(); - }); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/comms/list.html b/tests/django_oscar/oscar/dashboard/comms/list.html deleted file mode 100644 index f348140..0000000 --- a/tests/django_oscar/oscar/dashboard/comms/list.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% trans "Emails" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - - - {% if commtypes %} - - - - - - - - - - {% for commtype in commtypes %} - - - - - - - {% endfor %} - - {% else %} - - - - - - {% endif %} -
    - - {% trans "Emails" %} -
    {% trans "Code" %}{% trans "Name" %}{% trans "Category" %}
    - - {{ commtype.code }} - - {{ commtype.name }}{{ commtype.category }} - - {% trans "Edit" %} - -
    {% trans "There are no defined emails to edit." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/index.html b/tests/django_oscar/oscar/dashboard/index.html deleted file mode 100644 index 027938c..0000000 --- a/tests/django_oscar/oscar/dashboard/index.html +++ /dev/null @@ -1,238 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} orders home{% endblock %} -{% block extrahead %} - {{ block.super }} - -{% endblock %} -{% block breadcrumbs %}{% endblock %} -{% block headertext %} - {% trans "Dashboard" %} -{% endblock %} -{% block dashboard_content %} -
    - - {% trans "Your Store Statistics" %} -
    -
    -
    - -
    -
    -
    -

    {% trans "Latest Orders (last 24 hours)" %}

    -
    -
    -
      - {% for y_value in hourly_report_dict.y_range %} -
    • - {{ y_value|currency }} -
    • - {% endfor %} -
    -
    -
    - {% for item in hourly_report_dict.order_total_hourly %} -
    - {{ item.end_time|time }} - -

    - {{ item.total_incl_tax|currency }} -

    -
    -
    - {% endfor %} -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - -
    - - {% trans "Orders - Last 24 Hours" %} -
    {% trans "Total orders" %}{{ total_orders_last_day }}
    {% trans "Total lines" %}{{ total_lines_last_day }}
    {% trans "Total revenue" %}{{ total_revenue_last_day|currency }}
    {% trans "Average order costs" %}{{ average_order_costs|currency }}
    -
    -
    - - - - - - - - - - - - - - - - - - -
    - - - {% trans "Manage" %} - - - {% trans "Orders - All Time" %} -
    {% trans "Total orders" %}{{ total_orders }}
    {% trans "Total lines" %}{{ total_lines }}
    {% trans "Total revenue" %}{{ total_revenue|currency }}
    - {% trans "Total - open - baskets" %} - {{ total_open_baskets }}
    -
    -
    - - - - - - - - - - - - - - -
    - - {% trans "Customers" %} -
    {% trans "Total customers" %}{{ total_customers }}
    {% trans "New customers" %}{{ total_customers_last_day }}
    - {% trans "Total - open - baskets" %} - {{ total_open_baskets_last_day }}
    -
    -
    -
    -
    - - - - - - - - - - - - - - -
    - - - {% trans "Catalogue and stock" %} -
    {% trans "Total products" %}{{ total_products }}
    - {% trans " - Open - stock alerts" %} - {{ total_open_stock_alerts }}
    - {% trans " - Closed - stock alerts" %} - {{ total_closed_stock_alerts }}
    -
    -
    - {% if user.is_staff %} - - - {% for offer_map in offer_maps %} - - - - - {% endfor %} - - - - -
    - - {% trans "Offers, vouchers" %} -
    - {% blocktrans with offer_type=offer_map.offer_type %} - Active - {{ offer_type }} - Offers - {% endblocktrans %} - {{ offer_map.count }}
    - {% trans "Active - Vouchers - " %} - {{ total_vouchers }}
    - {% endif %} -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/layout.html b/tests/django_oscar/oscar/dashboard/layout.html deleted file mode 100644 index 9a40863..0000000 --- a/tests/django_oscar/oscar/dashboard/layout.html +++ /dev/null @@ -1,164 +0,0 @@ -{% extends "oscar/dashboard/base.html" %} -{% load category_tags %} -{% load dashboard_tags %} -{% load i18n %} -{% load static %} -{% block styles %} - -{% endblock %} -{% block extrastyles %} - {{ block.super }} - - - -{% endblock %} -{% block title %} - {% trans "Dashboard" %} | {{ block.super }} -{% endblock %} -{% block layout %} - {% block navbar %} - - {% endblock navbar %} - {% block dashboard_nav %} - {% dashboard_navigation user as nav_items %} - - {% endblock %} -
    - {% block breadcrumbs %} - - {% endblock %} -
    - {% include 'oscar/dashboard/partials/alert_messages.html' %} - {% block header %} - - {% endblock %} -
    - {% block content %} - {% block dashboard_content %}{% endblock dashboard_content %} - {% endblock content %} -
    -
    -
    - -{% endblock %} -{# Local scripts #} -{% block scripts %} - - - - -{% endblock %} -{% block extrascripts %} - {{ block.super }} - {# jQuery plugins #} - - - - - - - - - - -{% endblock %} -{% block onbodyload %} - {{ block.super }} - // Javascript to enable link to tab - var url = document.location.toString(); - if (url.match('#')) { - $('.nav-list a[href="#' + url.split('#')[1] + '"]').tab('show'); - } - // Change hash for page-reload - $('.nav-list a').on('shown.bs.tab', function (e) { - window.location.hash = e.target.hash; - }); - options = { - 'languageCode': '{{ LANGUAGE_CODE }}' - }; - oscar.dashboard.init(options); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/login.html b/tests/django_oscar/oscar/dashboard/login.html deleted file mode 100644 index 7bb4729..0000000 --- a/tests/django_oscar/oscar/dashboard/login.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "oscar/dashboard/base.html" %} -{% load i18n %} -{% load static %} -{% load widget_tweaks %} -{% block styles %} - -{% endblock %} -{% block body_class %}dashboard-login{% endblock %} -{% block layout %} -
    -
    -
    -

    {{ shop_name }}

    -
    - {% if form.errors %} -
    - {% trans "Please enter a correct username and password. Note that both fields may be case-sensitive." %} -
    - {% endif %} -
    - {{ form.username.label_tag }} - {% render_field form.username class="form-control" %} -
    -
    - {{ form.password.label_tag }} - {% render_field form.password class="form-control" %} -
    - - - {% csrf_token %} -
    -
    -
    -{% endblock %} -{% block onbodyload %}{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/offers/benefit_form.html b/tests/django_oscar/oscar/dashboard/offers/benefit_form.html deleted file mode 100644 index 0256677..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/benefit_form.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends 'oscar/dashboard/offers/step_form.html' %} -{% load i18n %} -{% block progress %} - {% include 'oscar/dashboard/offers/progress.html' with step=2 %} -{% endblock %} -{% block form_fields %} - {{ form.non_field_errors }} - {% if form.fields.custom_benefit.choices %} -

    {% trans "Build a new incentive" %}

    - {% endif %} - {% include "oscar/dashboard/partials/form_field.html" with field=form.range %} -

    - {% url 'dashboard:range-list' as range_list_url %} - {% blocktrans %} - Ranges can be created and edited from within the - - range dashboard - - . - {% endblocktrans %} -

    - {% include "oscar/dashboard/partials/form_field.html" with field=form.type %} - {% include "oscar/dashboard/partials/form_field.html" with field=form.value %} - {% include "oscar/dashboard/partials/form_field.html" with field=form.max_affected_items %} - {% if form.fields.custom_benefit.choices %} -

    {% trans "...or choose a pre-defined one" %}

    - {% include "oscar/dashboard/partials/form_field.html" with field=form.custom_benefit %} - {% endif %} -{% endblock %} -{% block submittext %} - {% trans "Continue to step 3" %} -{% endblock %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.offers.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/offers/condition_form.html b/tests/django_oscar/oscar/dashboard/offers/condition_form.html deleted file mode 100644 index 886e522..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/condition_form.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'oscar/dashboard/offers/step_form.html' %} -{% load i18n %} -{% block summary %} - {% include 'oscar/dashboard/offers/summary.html' %} -{% endblock %} -{% block progress %} - {% include 'oscar/dashboard/offers/progress.html' with step=3 %} -{% endblock %} -{% block form_fields %} - {{ form.non_field_errors }} - {% if form.fields.custom_condition.choices %} -

    {% trans "Build a new condition" %}

    - {% endif %} - {% include "oscar/dashboard/partials/form_field.html" with field=form.range %} -

    - {% url 'dashboard:range-list' as range_list_url %} - {% blocktrans %} - Ranges can be created and edited from within the - - range dashboard - - . - {% endblocktrans %} -

    - {% include "oscar/dashboard/partials/form_field.html" with field=form.type %} - {% include "oscar/dashboard/partials/form_field.html" with field=form.value %} - {% if form.fields.custom_condition.choices %} -

    {% trans "...or choose a pre-defined one" %}

    - {% include "oscar/dashboard/partials/form_field.html" with field=form.custom_condition %} - {% endif %} -{% endblock %} -{% block submittext %} - {% trans "Continue to step 4" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/offers/metadata_form.html b/tests/django_oscar/oscar/dashboard/offers/metadata_form.html deleted file mode 100644 index f2c48ad..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/metadata_form.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends 'oscar/dashboard/offers/step_form.html' %} -{% load i18n %} -{% block progress %} - {% include 'oscar/dashboard/offers/progress.html' with step=1 %} -{% endblock %} -{% block submittext %} - {% trans "Continue to step 2" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/offers/offer_delete.html b/tests/django_oscar/oscar/dashboard/offers/offer_delete.html deleted file mode 100644 index 858b213..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/offer_delete.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% trans "Delete offer" %} | {% trans "Offers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ offer.name }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -

    - {% trans "Are you sure you want to delete this offer?" %} -

    -
    - - {% trans "or" %} - {% trans "cancel" %} -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/offers/offer_detail.html b/tests/django_oscar/oscar/dashboard/offers/offer_detail.html deleted file mode 100644 index 9e2a17d..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/offer_detail.html +++ /dev/null @@ -1,235 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block title %} - {% blocktrans with name=offer.name %} - {{ name }} | Offers - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - - - - - - - -
    - {% if offer.is_available %} - {% trans "Offer currently available" %} - {% else %} - - {% trans "Offer not available due to restrictions!" %} - - {% endif %} - - {% trans "Total cost:" %} - {{ offer.total_discount|currency }} - - {% trans "Number of orders:" %} - {{ offer.num_orders }} - - {% trans "Number of uses:" %} - {{ offer.num_applications }} -
    -
    -
    - {% trans "Date created:" %} {{ offer.date_created }} -
    -

    {% trans "Offer details" %}

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if offer.is_voucher_offer_type %} - - - - - {% endif %} - -
    {% trans "Name" %}{{ offer.name }} - - {% trans "Edit" %} - -
    {% trans "Description" %}{{ offer.description|safe|default:"-" }}
    {% trans "Type" %}{{ offer.get_offer_type_display }}
    {% trans "Incentive" %}{{ offer.benefit.description|safe }} - - {% trans "Edit" %} - -
    {% trans "Condition" %}{{ offer.condition.description|safe }} - - {% trans "Edit" %} - -
    {% trans "Restrictions" %} - {% for restriction in offer.availability_restrictions %} - {% if not restriction.is_satisfied %} - {{ restriction.description }} -
    - {% else %} - {{ restriction.description }} -
    - {% endif %} - {% endfor %} -
    - - {% trans "Edit" %} - -
    {% trans "Num of vouchers" %}{{ offer.vouchers.count }}
    - {% if offer.is_voucher_offer_type %} -
    -

    {% trans "Attached vouchers" %}

    -
    - - {% if offer.vouchers.exists %} - - - - - - - - - {% for voucher in offer.vouchers.all %} - - - - - - {% endfor %} - - {% else %} - - - - {% endif %} -
    {% trans "Name" %}{% trans "Code" %}{% trans "Status" %}
    - - {{ voucher.name }} - - - {{ voucher.code }} - - {% if voucher.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} -
    {% trans "No vouchers are attached to this offer." %}
    - {% endif %} - {% if order_discounts %} -
    - - {% trans "Export to CSV" %} - -

    {% trans "Orders that used this offer" %}

    -
    - - - - - - - - - {% for discount in order_discounts %} - {% with order=discount.order %} - - - - - - - {% endwith %} - {% endfor %} - -
    {% trans "Order number" %}{% trans "Order date" %} - {% trans "Order total" %} - - {% trans "Cost" %} -
    - - {{ order.number }} - - - {{ order.date_placed }} - - {{ order.total_incl_tax|currency }} - - {{ discount.amount|currency }} -
    - {% include 'oscar/dashboard/partials/pagination.html' %} - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/offers/offer_list.html b/tests/django_oscar/oscar/dashboard/offers/offer_list.html deleted file mode 100644 index efe36b7..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/offer_list.html +++ /dev/null @@ -1,197 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% load widget_tweaks %} -{% block title %} - {% trans "Offers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -

    - - {% trans "Search" %} -

    -
    -
    -
    - {% for field in form %} - {% if field.name in form.basic_fields %} - {% if field.is_hidden %} - {{ field }} - {% else %} -
    - {{ field.label_tag }} - {% render_field field class+='form-control' %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {# No help text as it wraps #} -
    - {% endif %} - {% else %} - - {% endif %} - {% endfor %} - - - {% trans "Advanced Search" %} - - - {% trans "Reset" %} - -
    - {# Search modal, if there are form errors the form is automatically openend #} - {% include "oscar/dashboard/partials/advanced_search_modal.html" with form=advanced_form style='horizontal' %} - {% if search_filters %} -
    - - {% for filter in search_filters %} - {{ filter }} - {% endfor %} -
    - {% endif %} -
    -
    - {% csrf_token %} - - - {% if offers %} - - - - {% if form.is_bound %} - {% if form.is_voucher_offer_type or not form.cleaned_data.offer_type %} - - {% endif %} - {% endif %} - - - - - - - - - - - - {% for offer in offers %} - - - - {% if form.is_bound %} - {% if form.is_voucher_offer_type or not form.cleaned_data.offer_type %} - - {% endif %} - {% endif %} - - - - - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - - {% if search_filters %} - {% trans "Offer Search Results" %} - {% else %} - {% trans "All Offers" %} - {% endif %} -
    {% anchor 'name' _('Offer name') %}{% anchor 'offer_type' _('Offer type') %}{% trans "Num of vouchers" %}{% anchor 'start_datetime' _('Start date') %}{% anchor 'end_datetime' _('End date') %}{% trans "Priority" %}{% trans "Incentive" %}{% trans "Condition" %}{% trans "Is available?" %}{% trans "Restrictions" %}{% anchor 'num_applications' _('Uses') %}{% anchor 'total_discount' _('Cost') %}
    - - {{ offer.name }} - - {{ offer.offer_type }}{{ offer.vouchers.count }}{{ offer.start_datetime|default:"-" }}{{ offer.end_datetime|default:"-" }}{{ offer.priority }}{{ offer.benefit.description|safe }}{{ offer.condition.description|safe }} - {% if offer.is_available %} - {% trans "Yes" %} - {% else %} - {% trans "No" %} - {% endif %} - - {% for restriction in offer.availability_restrictions %} - {% if not restriction.is_satisfied %} - - {% else %} - {{ restriction.description }} -
    - {% endif %} - {% endfor %} -
    {{ offer.num_applications }}{{ offer.total_discount|currency }} -
    - -
    -
    {% trans "No offers found." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -
    -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - {% if advanced_form.errors %}$('#SearchModal').modal('show');{% endif %} -{% endblock onbodyload %} diff --git a/tests/django_oscar/oscar/dashboard/offers/progress.html b/tests/django_oscar/oscar/dashboard/offers/progress.html deleted file mode 100644 index 2811d10..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/progress.html +++ /dev/null @@ -1,49 +0,0 @@ -{% load i18n %} -
    -
    -

    {% trans "Steps" %}

    -
    - -
    diff --git a/tests/django_oscar/oscar/dashboard/offers/restrictions_form.html b/tests/django_oscar/oscar/dashboard/offers/restrictions_form.html deleted file mode 100644 index 161453c..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/restrictions_form.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends 'oscar/dashboard/offers/step_form.html' %} -{% load i18n %} -{% block summary %} - {% include 'oscar/dashboard/offers/summary.html' %} -{% endblock %} -{% block progress %} - {% include 'oscar/dashboard/offers/progress.html' with step=4 %} -{% endblock %} -{% block form_actions_buttons %} - -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/offers/step_form.html b/tests/django_oscar/oscar/dashboard/offers/step_form.html deleted file mode 100644 index 76ffdf8..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/step_form.html +++ /dev/null @@ -1,104 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% if offer.pk %} - {{ offer.name }}: - {% else %} - {% trans "Create new offer" %}: - {% endif %} - {{ title }} | {% trans "Offers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% if not offer.pk %} - {% trans "Create new offer" %} - {% else %} - {{ offer.name }} - {% endif %} -{% endblock %} -{% block dashboard_content %} -
    -
    - {% block progress %} - {% include 'oscar/dashboard/offers/progress.html' %} - {% endblock %} -
    -
    -
    -
    -

    {{ title }}

    -
    -
    - {% csrf_token %} - {% block form_fields %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% endblock %} - {% block form_extradata %}{% endblock %} -
    - {% block form_actions %} -
    -
    -
    - {% block form_actions_buttons %} - - {% if offer %} - {# When editing offer, show saving button #} - - {% endif %} - {% endblock %} -
    - - {% trans "cancel" %} - -
    -
    - {% endblock form_actions %} -
    -
    - {% if session_offer %} -
    - {% block summary %} - {% include 'oscar/dashboard/offers/summary.html' %} - {% endblock %} -
    - {% endif %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/offers/summary.html b/tests/django_oscar/oscar/dashboard/offers/summary.html deleted file mode 100644 index ddef7ba..0000000 --- a/tests/django_oscar/oscar/dashboard/offers/summary.html +++ /dev/null @@ -1,87 +0,0 @@ -{% load i18n %} -
    -

    {% trans "Offer summary" %}

    -
    -
    - {% if session_offer.name %} -
    - -

    - {% trans "Name" %}: -
    - {{ session_offer.name }} -

    - {% if session_offer.description %} -

    - {% trans "Description" %}: -
    - {{ session_offer.description|safe|striptags|truncatewords:8 }} -

    - {% endif %} -

    - {% trans "Type" %}: -
    - {{ session_offer.offer_type }} -

    -
    - {% endif %} - {% if session_offer.benefit %} -
    - -

    - {% trans "Incentive" %}: -
    - {{ session_offer.benefit.description|safe }} -

    -
    - {% endif %} - {% if session_offer.condition %} -
    - -

    - {% trans "Condition" %}: -
    - {{ session_offer.condition.description|safe }} -

    -
    - {% endif %} - {% if session_offer.pk %} -
    - -

    - {% trans "Restrictions" %}: -

    - {% if offer.availability_restrictions %} -
      - {% for restriction in offer.availability_restrictions %} -
    • - {{ restriction.description }} -
    • - {% endfor %} -
    - {% else %} - - - {% endif %} -
    - {% endif %} -
    diff --git a/tests/django_oscar/oscar/dashboard/orders/line_detail.html b/tests/django_oscar/oscar/dashboard/orders/line_detail.html deleted file mode 100644 index 9eb572e..0000000 --- a/tests/django_oscar/oscar/dashboard/orders/line_detail.html +++ /dev/null @@ -1,236 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% blocktrans with number=line.order.number id=line.id %} - Order {{ number }} - Line #{{ id }} - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with number=line.order.number id=line.id %} - Order #{{ number }} - Line #{{ id }} - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -
    -
    -

    {% trans "Product details" %}

    -
    - - - - - - - - - - - - - - - - - - {% if line.attributes.exists %} - - - - {% for attribute in line.attributes.all %} - - - - - {% endfor %} - {% endif %} -
    {% trans "Title" context "Product title" %} - {% if line.product %} - - {{ line.title }} - - {% else %} - {{ line.title }} - {% endif %} -
    {% trans "Product Type" %}{{ line.product.get_product_class }}
    {% trans "UPC" %}{{ line.upc|default:"-" }}
    {% trans "Quantity" %}{{ line.quantity }}
    {% trans "Product Options" %}
    {{ attribute.option }}{{ attribute.value }}
    -
    -
    -
    -

    {% trans "Partner details" %}

    -
    - - - - - - - - - - - - - -
    {% trans "Status" %}{{ line.status|default:"-" }}
    {% trans "Partner" %}{{ line.partner_name }}
    {% trans "Partner SKU" %}{{ line.partner_sku }}
    -
    -
    -
    -

    {% trans "Shipping details" %}

    -
    - - - - - - - - - -
    {% trans "Partner reference number" %}{{ line.partner_line_reference|default:"-" }}
    {% trans "Partner notes" %}{{ line.partner_line_notes|default:"-" }}
    -
    -
    -
    -
    -
    -

    {% trans "Shipping status" %}

    -
    - - - - - - - - - {% for state in line.shipping_event_breakdown.values %} - - - - - {% empty %} - - - - {% endfor %} - -
    {% trans "State" %}{% trans "Quantity" %}
    {{ state.event_type.name }} - {{ state.quantity }} -
    {% trans "No shipping events have occurred." %}
    -
    -
    -
    -

    - {% trans "Shipping events" %} -

    -
    - - - - - - - - - - - {% for event_qty in line.shipping_event_quantities.all %} - - {% with event=event_qty.event %} - - - - - {% endwith %} - - {% empty %} - - - - {% endfor %} - -
    - {% trans "Event" %} - - {% trans "Quantity" %} - - {% trans "Reference" %} - - {% trans "Date" %} -
    - {{ event.event_type.name }} - - {{ event_qty.quantity }} - - {{ event.notes }} - - {{ event.date_created }} -
    {% trans "No shipping events have occurred." %}
    -
    -
    -
    -

    - {% trans "Payment events" %} -

    -
    - - - - - - - - - - {% for event_qty in line.payment_event_quantities.all %} - - {% with event=event_qty.event %} - - - - {% endwith %} - - {% empty %} - - - - {% endfor %} - -
    - {% trans "Event" %} - - {% trans "Quantity" %} - - {% trans "Date" %} -
    - {{ event.event_type.name }} - - {{ event_qty.quantity }} - - {{ event.date_created }} -
    {% trans "No payment events have occurred." %}
    -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/orders/order_detail.html b/tests/django_oscar/oscar/dashboard/orders/order_detail.html deleted file mode 100644 index 0ac076b..0000000 --- a/tests/django_oscar/oscar/dashboard/orders/order_detail.html +++ /dev/null @@ -1,1049 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block body_class %}{{ block.super }} orders{% endblock %} -{% block title %} - {% blocktrans with number=order.number %} - Order {{ number }} - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with number=order.number %} - Order #{{ number }} - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} - {% block customer_information %} - - - {% if order.guest_email %} - - - - - - - - - {% elif order.user %} - - - - - - - - - {% else %} - - - - {% endif %} -
    - - {% trans "Customer Information" %} -
    {% trans "Name" %}{% trans "Email address" %}
    {% trans "Customer checked out as a guest." %}{{ order.email }}
    {% trans "Name" %}{% trans "Email address" %}
    {{ order.user.get_full_name|default:"-" }}{{ order.user.email|default:"-" }}
    {% trans "Customer has deleted their account." %}
    - {% endblock customer_information %} - {% block order_information %} - - - - - - - - - - - - - - -
    - - {% trans "Order information" %} -
    {% trans "Order Total" %}{% trans "Date of purchase" %}{% trans "Time of purchase" %}{% trans "Status" %}
    {{ order.total_incl_tax|currency:order.currency }}{{ order.date_placed|date }}{{ order.date_placed|time }}{{ order.status|default:"N/A" }}
    - {% endblock order_information %} - {% block additional_order_information %}{% endblock additional_order_information %} -
    -

    {% trans "Order Details" %}

    -
    -
    - -
    -
    -
    -

    {% trans "Items ordered" %}

    -
    -
    - {% csrf_token %} - {% block order_lines %} - - - - - - - - - - - - - - - - - - - {% for line in lines %} - - - - - - - - - - - - - - - {% endfor %} - - - - - - - - {% with discounts=order.basket_discounts %} - {% if discounts %} - - - - - - - - {% for discount in discounts %} - - - - - - - - {% endfor %} - - - - - - - - {% else %} - - - - - - - - {% endif %} - {% endwith %} - {% if order.has_shipping_discounts %} - - - - - - - - {% for discount in order.shipping_discounts %} - - - - - - - - {% endfor %} - - - - - - - - {% else %} - - - - - - - - {% endif %} - {% with surcharges=order.surcharges.all %} - {% if surcharges %} - {% for charge in surcharges %} - - - - - - - - {% endfor %} - {% endif %} - {% endwith %} - - - - - - - - -
    {% trans "Line ID" %}{% trans "Quantity" %}{% trans "Product" %}{% trans "UPC" %}{% trans "Status" %} - {% trans "Supplier" %} - - {% trans "Supplier SKU" %} - - {% trans "Price excl tax (before discounts)" %} - - {% trans "Price inc tax (before discounts)" %} - - {% trans "Actions" %} -
    - - - - - - #{{ line.id }} - - - {{ line.quantity }} - - {% if line.product %} - - {{ line.title }} - - {% else %} - {{ line.title }} - {% endif %} - - {{ line.upc|default:"-" }} - - {{ line.status|default:"-" }} - - {% if line.partner %} - - {{ line.partner_name }} - - {% else %} - {{ line.partner_name }} - {% endif %} - - {{ line.partner_sku }} - - {{ line.line_price_before_discounts_excl_tax|currency:order.currency }} - - {{ line.line_price_before_discounts_incl_tax|currency:order.currency }} - - - {% trans "View" %} - -
    - {% trans "Discount" %} - - {{ order.total_discount_excl_tax|currency:order.currency }} - - {{ order.total_discount_incl_tax|currency:order.currency }} -
    - {% trans "Basket total (excl. discounts)" %} - - {{ order.basket_total_before_discounts_excl_tax|currency:order.currency }} - - {{ order.basket_total_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer_name }} - - {{ discount.amount|currency:order.currency }}
    - {% trans "Basket total (inc. discounts)" %} - - {{ order.basket_total_excl_tax|currency:order.currency }} - - {{ order.basket_total_incl_tax|currency:order.currency }} -
    - {% trans "Basket total" %} - - {{ order.basket_total_excl_tax|currency:order.currency }} - - {{ order.basket_total_incl_tax|currency:order.currency }} -
    - {% trans "Shipping total (excl. discounts)" %} - - {{ order.shipping_before_discounts_excl_tax|currency:order.currency }} - - {{ order.shipping_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer_name }} - - {{ discount.amount|currency:order.currency }}
    - {% trans "Shipping total (inc. discounts)" %} - - {{ order.shipping_excl_tax|currency:order.currency }} - - {{ order.shipping_incl_tax|currency:order.currency }} -
    - {% trans "Shipping total" %} - - {{ order.shipping_excl_tax|currency:order.currency }} - - {{ order.shipping_incl_tax|currency:order.currency }} -
    - {% blocktrans with name=charge.name %}Surcharge {{ name }}{% endblocktrans %} - {{ charge.excl_tax|currency:order.currency }}{{ charge.incl_tax|currency:order.currency }}
    - {% trans "Order total" %} - {{ order.total_excl_tax|currency:order.currency }}{{ order.total_incl_tax|currency:order.currency }}
    - {% endblock order_lines %} - {% comment %} - This is the important block within this template: you will almost certainly want to - override this block to provide your own form widgets that suit your order processing - flow. The default contents shows a range of widgets - more than is sensible really. - {% endcomment %} - {% block line_actions %} -
    -

    - {% trans "With selected lines" %}: -

    -
    -
    -
    - - -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    -
    - -
    -
    - {% endblock line_actions %} -
    -
    - {% csrf_token %} - {% block order_actions %} -
    -

    - - {% trans "Change order status" %}: -

    - {% if order_status_form.has_choices %} - {% include "oscar/dashboard/partials/form_fields.html" with form=order_status_form %} - -
    - -
    - {% else %} - {% trans "This order can't have its status changed." %} - {% endif %} -
    - {% endblock %} -
    - {% block order_status_changes %} -
    -

    - {% trans "Status Changes" %} -

    -
    - {% with status_changes=order.status_changes.all %} - - {% if status_changes %} - - - - - - - - - {% for status_change in status_changes %} - - - - - - {% endfor %} - - {% else %} - - - - - - {% endif %} -
    - {% trans "From" %} - - {% trans "To" %} - - {% trans "Date" %} -
    - {{ status_change.old_status }} - - {{ status_change.new_status }} - - {{ status_change.date_created }} -
    - {% trans "No status changes." %} -
    - {% endwith %} - {% endblock %} - {% block shipping_events %} -
    -

    - {% trans "Shipping Events" %} -

    -
    - {% with events=order.shipping_events.all %} - - {% if events %} - - - - - - - - - - {% for event in events %} - {% with line_qtys=event.line_quantities.all %} - - - - - - - {% endwith %} - {% endfor %} - - {% else %} - - - - - - {% endif %} -
    - {% trans "Date" %} - - {% trans "Event" %} - - {% trans "Lines" %} - - {% trans "Reference" %} -
    - {{ event.date_created }} - - {{ event.event_type.name }} - - {% for line_qty in event.line_quantities.all %} - - {% blocktrans with title=line_qty.line.title event_qty=line_qty.quantity total_qty=line_qty.line.quantity %} - {{ title }} (quantity {{ event_qty }}/{{ total_qty }}) - {% endblocktrans %} - - {% endfor %} - - {{ event.notes|default:"-" }} -
    - {% trans "No shipping events." %} -
    - {% endwith %} - {% endblock %} - {% block payment_events %} -
    -

    {% trans "Payment Events" %} -

    -
    - {% with events=order.payment_events.all %} - - {% if events %} - - - - - - - - - - - {% for event in events %} - {% with line_qtys=event.line_quantities.all %} - - - - - - - - {% endwith %} - {% endfor %} - - {% else %} - - - - - - {% endif %} -
    - {% trans "Date" %} - - {% trans "Event" %} - - {% trans "Amount" %} - - {% trans "Lines" %} - - {% trans "Reference" %} -
    {{ event.date_created }} - {{ event.event_type.name }} - {{ event.amount|currency:order.currency }} - - {% for line_qty in event.line_quantities.all %} - {% trans "Product:" %} {{ line_qty.line.title }} - {% trans "quantity" %} {{ line_qty.quantity }} -
    - {% endfor %} -
    {{ event.reference|default:"-" }} -
    - {% trans "No payment events." %} -
    - {% endwith %} - {% endblock %} -
    -
    - {% block tab_shipping %} -
    -

    - {% trans "Shipping" %} -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - {% trans "Method name" %} - - {{ order.shipping_method }} -
    - {% trans "Method code" %} - - {{ order.shipping_code|upper }} -
    - {% trans "Charge (incl tax)" %} - - {{ order.shipping_incl_tax|currency:order.currency }} -
    - {% trans "Charge (excl tax)" %} - - {{ order.shipping_excl_tax|currency:order.currency }} -
    - {% trans "Address" %} - - {% for field in order.shipping_address.active_address_fields %} - {{ field }} -
    - {% endfor %} - - {% trans "Update" %} - -
    - {% trans "Phone" %} - - {{ order.shipping_address.phone_number|default:"-" }} -
    - {% trans "Instructions" %} - - {{ order.shipping_address.notes|default:"-"|linebreaks }} -
    - {% endblock %} -
    -
    - {% block tab_payment %} - {% if order.billing_address %} -
    -

    {% trans "Billing address" %} -

    -
    -

    - {% for field in order.billing_address.active_address_fields %} - {{ field }} -
    - {% endfor %} -

    - {% endif %} - {% with sources=order.sources.all %} -
    -

    {% trans "Payment sources" %} -

    -
    - {% if sources %} - - - - - - - - - - - - {% for source in sources %} - - - - - - - - {% endfor %} - -
    - {% trans "Source" %} - - {% trans "Allocation" %} - - {% trans "Amount debited" %} - - {% trans "Amount refunded" %} - - {% trans "Reference" %} -
    - {{ source.source_type }} - - {{ source.amount_allocated|currency:order.currency }} - - {{ source.amount_debited|currency:order.currency }} - - {{ source.amount_refunded|currency:order.currency }} - - {{ source.reference|default:"-" }} -
    - {% else %} - - - - -
    - {% trans "No payment sources found for this order." %} -
    - {% endif %} - {% endwith %} - {% block payment_transactions %} - {% if payment_transactions %} -
    -

    - {% trans "Transactions" %} -

    -
    - - - - - - - - - - - - {% for txn in payment_transactions %} - - - - - - - - {% endfor %} - -
    - {% trans "Source" %} - - {% trans "Amount" %} - - {% trans "Reference" %} - - {% trans "Status" %} - - {% trans "Date" %} -
    - {{ txn.source.source_type }} - - {{ txn.amount|currency:order.currency }} - - {{ txn.reference|default:"-" }} - - {{ txn.status|default:"-" }} - - {{ txn.date_created }} -
    - {% endif %} - {% endblock %} - {% endblock %} -
    -
    - {% block tab_discounts %} - {% with discounts=order.discounts.all %} -
    -

    - {% trans "Discounts" %} -

    -
    - {% if discounts %} - - - - - - - - - - - - - {% for discount in discounts %} - - - - - - - - - {% endfor %} - -
    - {% trans "Type" %} - - {% trans "Voucher" %} - - {% trans "Offer name" %} - - {% trans "Frequency" %} - - {% trans "Message" %} - - {% trans "Amount" %} -
    - {{ discount.get_category_display }} - - {{ discount.voucher.code|default:"-" }} - - {% if discount.offer %} - - {{ discount.offer.name }} - - {% else %} - {{ discount.offer_name }} - {% endif %} - - {{ discount.frequency }} - - {{ discount.message|default:"-" }} - - {{ discount.amount|currency:order.currency }} -
    - {% else %} - - - - -
    - {% trans "No discounts were applied to this order." %} -
    - {% endif %} - {% endwith %} - {% endblock %} -
    -
    - {% block tab_notes %} -
    -

    - {% trans "Notes" %} -

    -
    - {% with notes=order.notes.all %} - - {% if notes %} - - - - - - - - {% for note in notes %} - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - {% trans "Date" %} - - {% trans "User" %} - - {% trans "Type" %} - - {% trans "Message" %} - - {% trans "Admin" %} -
    - {{ note.date_created }} - - {{ note.user|default:"-" }} - - {{ note.note_type|default:"-" }} - - {{ note.message|linebreaks }} - - {% if note.is_editable %} - - {% trans "Edit" %} - -
    - {% csrf_token %} - - - -
    - {% endif %} -
    - {% trans "No notes available." %} -
    - {% endwith %} -
    - {% csrf_token %} - - {% include "oscar/dashboard/partials/form_fields.html" with form=note_form %} -
    - - {% trans "Notes are only editable for 5 minutes after being saved." %} -
    -
    - {% endblock %} -
    - {% block extra_tabs %}{% endblock %} -
    -
    -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.orders.initTabs(); - oscar.dashboard.orders.initTable(); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/orders/order_list.html b/tests/django_oscar/oscar/dashboard/orders/order_list.html deleted file mode 100644 index b9cdc2b..0000000 --- a/tests/django_oscar/oscar/dashboard/orders/order_list.html +++ /dev/null @@ -1,211 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% load widget_tweaks %} -{% block body_class %}{{ block.super }} orders{% endblock %} -{% block title %} - {% trans "Orders" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -

    - - {% trans "Search" %} -

    -
    -
    -
    - {% for field in form %} - {% if "order" in field.id_for_label %} - {% if field.is_hidden %} - {% render_field field class+='form-control' %} - {% else %} -
    - {{ field.label_tag }} - {% render_field field class+='form-control' %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} -
    - {% endif %} - {% endif %} - {% endfor %} - - - {% trans "Advanced Search" %} - -
    - {# Search modal, if there are form errors the form is automatically openend #} - {% include "oscar/dashboard/partials/advanced_search_modal.html" with form=form style='horizontal' %} - {% if search_filters %} -
    - - {% for filter in search_filters %} - {{ filter }} - {% endfor %} -
    - {% endif %} -
    - {% if orders %} -
    - {% csrf_token %} - {% block order_list %} - - - - - - - - - - - - - - - - - - {% for order in orders %} - - - - - - - - - - - - - {% endfor %} - -
    -

    - - {% if search_filters %} - {% trans "Order Search Results" %} - {% else %} - {% trans "All Orders" %} - {% endif %} -

    -
    -
    - - -
    -
    -
    {% anchor 'number' _("Order number") %}{% anchor 'total_incl_tax' _("Total inc tax") %}{% trans "Number of items" %}{% trans "Status" %}{% trans "Customer" %}{% trans "Shipping address" %}{% trans "Billing address" %}{% trans "Date of purchase" %}
    - - - - {{ order.number }} - - {{ order.total_incl_tax|currency:order.currency }}{{ order.num_items }}{{ order.status|default:"-" }} - {% if order.guest_email %} - {{ order.guest_email }} - {% elif order.user %} - - {{ order.user.get_full_name|default:"-" }} - - {% else %} - <{% trans "Deleted" %}> - {% endif %} - {{ order.shipping_address|default:"-" }}{{ order.billing_address|default:"-" }}{{ order.date_placed }} - - {% trans "View" %} - -
    - {% endblock order_list %} - {% block order_actions %} -
    -

    - - {% trans "Change order status" %}: -

    - {% if order_statuses %} -
    -
    - -
    -
    -
    - -
    - {% else %} - {% trans "This order can't have its status changed." %} - {% endif %} -
    - {% endblock %} - {% include "oscar/dashboard/partials/pagination.html" %} -
    - {% else %} - - - - - -
    - - {% if search_filters %} - {% trans "Order Search Results" %} - {% else %} - {% trans "All Orders" %} - {% endif %} -
    {% trans "No orders found." %}
    - {% endif %} -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.orders.initTable(); - {% if form.errors %}$('#SearchModal').modal('show');{% endif %} -{% endblock onbodyload %} diff --git a/tests/django_oscar/oscar/dashboard/orders/shippingaddress_form.html b/tests/django_oscar/oscar/dashboard/orders/shippingaddress_form.html deleted file mode 100644 index 1cfbf5a..0000000 --- a/tests/django_oscar/oscar/dashboard/orders/shippingaddress_form.html +++ /dev/null @@ -1,45 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% trans "Shipping address" %} | {% trans "Order" %} {{ order.number }} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans %} - Edit shipping address for order {{ order.number }} - {% endblocktrans %} -{% endblock %} -{% block content %} -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form style='horizontal' %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock content %} diff --git a/tests/django_oscar/oscar/dashboard/orders/statistics.html b/tests/django_oscar/oscar/dashboard/orders/statistics.html deleted file mode 100644 index 61bb9f1..0000000 --- a/tests/django_oscar/oscar/dashboard/orders/statistics.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% load django_tables2 %} -{% block body_class %}{{ block.super }} orders{% endblock %} -{% block title %} - {% trans "Order statistics" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    -

    - - {% trans "Filter" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - - - {% trans "Reset" %} - -
    -
    - - - - - - - - - - - - - - -
    - - {% trans "Summary" %} -
    {% trans "Total orders" %}{{ total_orders }}
    {% trans "Total lines" %}{{ total_lines }}
    {% trans "Total revenue" %}{{ total_revenue|currency }}
    - {% if order_status_breakdown %} - - - - - - - {% for dict in order_status_breakdown %} - - - - - {% endfor %} -
    - - {% trans "Order status breakdown" %} -
    {% trans "Status" %}{% trans "Frequency" %}
    - - {{ dict.status }} - - {{ dict.freq }}
    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/pages/delete.html b/tests/django_oscar/oscar/dashboard/pages/delete.html deleted file mode 100644 index 8b8863c..0000000 --- a/tests/django_oscar/oscar/dashboard/pages/delete.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% blocktrans with title=object.title %} - Delete page '{{ title }}'? - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with title=object.title %} - Delete page '{{ title }}'? - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Delete page" %}

    -
    -
    - {% csrf_token %} - {{ form }} -

    - {% blocktrans with title=object.title %} - Delete page - {{ title }} - - are you sure? - {% endblocktrans %} -

    -
    - - {% trans "or" %} - {% trans "cancel" %} - . -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/pages/index.html b/tests/django_oscar/oscar/dashboard/pages/index.html deleted file mode 100644 index 479ac41..0000000 --- a/tests/django_oscar/oscar/dashboard/pages/index.html +++ /dev/null @@ -1,120 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load dashboard_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} pages{% endblock %} -{% block title %} - {% trans "Pages" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -

    - - {% trans "Search" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - - - {% trans "Reset" %} - -
    -
    -
    -

    - - {{ queryset_description }} -

    -
    - {% if flatpage_list %} -
    - {% csrf_token %} - - - - - - - - - - {% for page in flatpage_list %} - - - - - - {% endfor %} - -
    {% trans "Title" context "Page title" %}{% trans "URL" %}
    - - {{ page.title }} - - - - {{ page.url }} - - - -
    - {% include "oscar/dashboard/partials/pagination.html" %} -
    - {% else %} - - - - -
    {% trans "No pages found." %}
    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/pages/messages/saved.html b/tests/django_oscar/oscar/dashboard/pages/messages/saved.html deleted file mode 100644 index ffa4516..0000000 --- a/tests/django_oscar/oscar/dashboard/pages/messages/saved.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -

    - {% blocktrans with title=page.title %} - Page - {{ title }} - saved! - {% endblocktrans %} -

    -

    - - {% trans "View on site" %} - - - {% trans "Edit again" %} - -

    diff --git a/tests/django_oscar/oscar/dashboard/pages/update.html b/tests/django_oscar/oscar/dashboard/pages/update.html deleted file mode 100644 index 8126457..0000000 --- a/tests/django_oscar/oscar/dashboard/pages/update.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page pages{% endblock %} -{% block title %}{{ title }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    -

    {{ title }}

    -
    -
    - {% csrf_token %} - {% include 'oscar/dashboard/partials/form_fields.html' with form=form %} -
    - - {% trans "or" %} - {% trans "cancel" %} - . -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partials/advanced_search_modal.html b/tests/django_oscar/oscar/dashboard/partials/advanced_search_modal.html deleted file mode 100644 index eabd295..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/advanced_search_modal.html +++ /dev/null @@ -1,28 +0,0 @@ -{% load i18n %} - diff --git a/tests/django_oscar/oscar/dashboard/partials/alert_messages.html b/tests/django_oscar/oscar/dashboard/partials/alert_messages.html deleted file mode 100644 index 9e95aec..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/alert_messages.html +++ /dev/null @@ -1,40 +0,0 @@ -{% load string_filters %} -{% comment %} -Use message tags to control these alerts. Available tags include: -- safe: allow HTML in the message -- block: for longer messages - this adds extra padding -- noicon: don't show an icon -- error/success/info - these change the connotation of the alert -{% endcomment %} -
    - {% if messages %} - {% for message in messages %} - - {% endfor %} - {% endif %} -
    diff --git a/tests/django_oscar/oscar/dashboard/partials/form.html b/tests/django_oscar/oscar/dashboard/partials/form.html deleted file mode 100644 index 8338f21..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/form.html +++ /dev/null @@ -1,22 +0,0 @@ -{% load i18n %} -
    - {% if not method == "get" %} - {% csrf_token %} - {% endif %} - {% include 'oscar/dashboard/partials/form_fields.html' %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - - . -
    -
    diff --git a/tests/django_oscar/oscar/dashboard/partials/form_field.html b/tests/django_oscar/oscar/dashboard/partials/form_field.html deleted file mode 100644 index 042c923..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/form_field.html +++ /dev/null @@ -1,60 +0,0 @@ -{% load form_tags %} -{% load widget_tweaks %} -{% if field.is_hidden %} - {{ field }} -{% else %} - {% comment %} - Make the field widget type available to templates so we can mark-up - checkbox and radio inputs differently to other widgets. -{% endcomment %} -{% annotate_form_field field %} -{% block control_group %} -
    - {% block label %} - {% if not nolabel and field.widget_type != 'checkbox' %} - - {% endif %} - {% endblock %} - {% block controls %} -
    - {% block widget %} - {% if field.widget_type == 'checkbox' %} - {% render_field field class+="form-check-input" %} - - {% elif field.widget_type == 'radioselect' %} - {% render_field field class+="form-check-input position-static controls mt-2" %} - {% else %} - {% render_field field class+="form-control" %} - {% endif %} - {% endblock %} - {% block errors %} - {% for error in field.errors %} - - - {{ error }} - - {% endfor %} - {% endblock %} - {% block help_text %} - {% if field.help_text %} - - {# We allow HTML within form help fields #} - {{ field.help_text|safe }} - - {% endif %} - {% endblock %} -
    - {% endblock %} -
    -{% endblock %} -{% endif %} diff --git a/tests/django_oscar/oscar/dashboard/partials/form_fields.html b/tests/django_oscar/oscar/dashboard/partials/form_fields.html deleted file mode 100644 index afa6291..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/form_fields.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load i18n %} -{% if form.is_bound and not form.is_valid %} -
    - {% trans "Oops! We found some errors" %} - - {% trans "please check the error messages below and try again" %} -
    -{% endif %} -{% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - - - {{ error }} - -
    - {% endfor %} -{% endif %} -{% for field in form %} - {% include 'oscar/dashboard/partials/form_field.html' with field=field style=style %} -{% endfor %} diff --git a/tests/django_oscar/oscar/dashboard/partials/form_fields_inline.html b/tests/django_oscar/oscar/dashboard/partials/form_fields_inline.html deleted file mode 100644 index 26d1d83..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/form_fields_inline.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load widget_tweaks %} -{{ form.non_field_errors }} -{% for field in form %} - {% if field.is_hidden %} - {{ field }} - {% else %} -
    - {{ field.label_tag }} - {% render_field field class+='form-control' %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {# No help text as it wraps #} -
    - {% endif %} -{% endfor %} diff --git a/tests/django_oscar/oscar/dashboard/partials/pagination.html b/tests/django_oscar/oscar/dashboard/partials/pagination.html deleted file mode 100644 index 8931ce0..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/pagination.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load display_tags %} -{% load i18n %} -{% if paginator.num_pages > 1 %} - -{% endif %} diff --git a/tests/django_oscar/oscar/dashboard/partials/product_images.html b/tests/django_oscar/oscar/dashboard/partials/product_images.html deleted file mode 100644 index d8a0377..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/product_images.html +++ /dev/null @@ -1,37 +0,0 @@ -{% load i18n %} -
  • - {% for field in form %} - {% if field.is_hidden %} - {{ field }} - {% elif "original" in field.id_for_label %} -
    - {{ field }} -
    - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - - - {% trans "Re-order" context "Change the sequence order" %} - -
    - {% else %} - {{ field.label_tag }} - {{ field }} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {% endif %} - {% endfor %} - {{ form.non_field_errors }} -
  • diff --git a/tests/django_oscar/oscar/dashboard/partials/stock_info.html b/tests/django_oscar/oscar/dashboard/partials/stock_info.html deleted file mode 100644 index e186252..0000000 --- a/tests/django_oscar/oscar/dashboard/partials/stock_info.html +++ /dev/null @@ -1,13 +0,0 @@ -
    - {{ field.label_tag }} -
    - {{ field }} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} -
    -
    diff --git a/tests/django_oscar/oscar/dashboard/partners/messages/user_unlinked.html b/tests/django_oscar/oscar/dashboard/partners/messages/user_unlinked.html deleted file mode 100644 index 2e1f4b3..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/messages/user_unlinked.html +++ /dev/null @@ -1,7 +0,0 @@ -{% load i18n %} -{% blocktrans %} - User {{ user_name }} was unlinked from {{ partner_name }}. -{% endblocktrans %} - - {% trans 'Undo' %}. - diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_delete.html b/tests/django_oscar/oscar/dashboard/partners/partner_delete.html deleted file mode 100644 index 8b0c794..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_delete.html +++ /dev/null @@ -1,46 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% trans "Delete partner" %} | {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ partner.name }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -

    - {% trans "Are you sure you want to delete this partner?" %} -

    -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_form.html b/tests/django_oscar/oscar/dashboard/partners/partner_form.html deleted file mode 100644 index a2bb5bc..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_form.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load category_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page partner{% endblock %} -{% block title %} - {{ title }} | {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% include 'oscar/dashboard/partials/form.html' with form=form %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_list.html b/tests/django_oscar/oscar/dashboard/partners/partner_list.html deleted file mode 100644 index 0491fdf..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_list.html +++ /dev/null @@ -1,139 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load sorting_tags %} -{% load i18n %} -{% block title %} - {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -
    - {% include 'oscar/dashboard/partials/form_fields_inline.html' with form=form %} - - {% if is_filtered %} - - {% trans "Reset" %} - - {% endif %} -
    -
    -
    - {% csrf_token %} - - - {% if partners %} - - - - - - - {% for partner in partners %} - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - - {{ queryset_description }} -
    {% anchor 'name' _('Name') %}{% trans 'Users' %}{% trans 'Addresses' %} 
    - - {{ partner.name }} - - - {% with users=partner.users.all %} - {% if users %} - - {% else %} - {% trans 'No users associated.' %} - {% endif %} - {% endwith %} - - {% with addresses=partner.addresses.all %} - {% if addresses %} -
      - {% for address in addresses %} -
    • - {{ address.summary }} -
    • - {% endfor %} -
    - {% else %} - {% trans 'No address associated.' %} - {% endif %} - {% endwith %} -
    - -
    {% trans "No partners found." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_manage.html b/tests/django_oscar/oscar/dashboard/partners/partner_manage.html deleted file mode 100644 index 49b4996..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_manage.html +++ /dev/null @@ -1,86 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page partners{% endblock %} -{% block title %} - {{ partner.name }} | {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ partner.name }}{% endblock %} -{% block dashboard_content %} -
    -
    -
    -

    {{ title }}

    -
    - {% include "oscar/dashboard/partials/form.html" with form=form class="card card-body" %} -
    -
    -
    -
    -

    {% trans "Users" %}

    - {% if users %} - - - - - - - - - - - {% for user in users %} - - - - - - - {% endfor %} - -
    {% trans 'Email' %}{% trans 'First name' %}{% trans 'Last name' %} 
    - - {{ user.email }} - - {{ user.first_name|default:"-" }}{{ user.last_name|default:"-" }} -
    - {% csrf_token %} - -
    -
    - {% else %} -

    - {% trans "No users linked." %} -

    - {% endif %} - -
    - {% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_user_form.html b/tests/django_oscar/oscar/dashboard/partners/partner_user_form.html deleted file mode 100644 index e8d999c..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_user_form.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "oscar/dashboard/layout.html" %} -{% load category_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page partner{% endblock %} -{% block title %} - {{ title }} | {{ partner.name }} | {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} - {% include 'oscar/dashboard/partials/form_fields.html' with form=form %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - - . -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_user_list.html b/tests/django_oscar/oscar/dashboard/partners/partner_user_list.html deleted file mode 100644 index 9627d17..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_user_list.html +++ /dev/null @@ -1,87 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% if users %} - - - - - - - - - - - {% for user in users %} - - - - - - - {% endfor %} - -
    {% trans 'Email' %}{% trans 'First name' %}{% trans 'Last name' %} 
    - - {{ user.email }} - - {{ user.first_name|default:"-" }}{{ user.last_name|default:"-" }} -
    - {% csrf_token %} - -
    -
    - {% else %} -

    - {% trans "No users linked." %} -

    - {% endif %} - {% include "oscar/dashboard/partials/pagination.html" %} -

    {% trans "Update details" %}

    - {% include 'oscar/dashboard/partials/form.html' %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/partners/partner_user_select.html b/tests/django_oscar/oscar/dashboard/partners/partner_user_select.html deleted file mode 100644 index fba9727..0000000 --- a/tests/django_oscar/oscar/dashboard/partners/partner_user_select.html +++ /dev/null @@ -1,100 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% trans "Link an existing user" %} | {{ partner.name }} | {% trans "Partners" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Link an existing user" %} -{% endblock %} -{% block dashboard_content %} - {% block users_form %} -
    -
    - {% include 'oscar/dashboard/partials/form_fields_inline.html' with form=form %} - - {% if form.is_bound %} - - {% trans "Reset" %} - - {% endif %} -
    - {% trans "A partial email address can be entered (eg '@example.com') to match multiple addresses." %} -
    -
    -
    - {% endblock %} - {% if form.is_bound %} - {% if users %} - {% with partner_users=partner.users.all %} - - {% block users_header %} - - - - - - - - - {% endblock %} - - {% for user in users %} - {% block users_row %} - - - - - - - {% endblock %} - {% endfor %} - -
    {% trans 'Email' %}{% trans 'First name' %}{% trans 'Last name' %} 
    {{ user.email }}{{ user.first_name|default:"-" }}{{ user.last_name|default:"-" }} - {% if user in partner_users %} - {% blocktrans with name=partner.name %} - User is already linked to {{ name }}. - {% endblocktrans %} - {% else %} -
    - {% csrf_token %} - -
    - {% endif %} -
    - {% endwith %} - {% include "oscar/dashboard/partials/pagination.html" %} - {% else %} - {% trans "No users found." %} - {% endif %} - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/ranges/messages/range_products_saved.html b/tests/django_oscar/oscar/dashboard/ranges/messages/range_products_saved.html deleted file mode 100644 index 6e335b2..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/messages/range_products_saved.html +++ /dev/null @@ -1,55 +0,0 @@ -{% load i18n %} -{% blocktrans with range_name=range.name filename=upload.filepath %} -

    - File - {{ filename }} - processed. -

    -{% endblocktrans %} -
      - {% if upload.num_new_skus %} -
    • - {% blocktrans count n=upload.num_new_skus %} - {{ n }} - product added - {% plural %} - {{ n }} - products added - {% endblocktrans %} -
    • - {% endif %} - {% if upload.num_duplicate_skus %} -
    • - {% blocktrans count n=upload.num_duplicate_skus %} - There was - {{ n }} - duplicate product in the file - {% plural %} - There were - {{ n }} - duplicate products in the file - {% endblocktrans %} -
    • - {% endif %} - {% if upload.num_unknown_skus %} -
    • - {% blocktrans count n=upload.num_unknown_skus %} - There was - {{ n }} - product in the file that couldn't be found in the catalogue - {% plural %} - There were - {{ n }} - products in the file that couldn't be found in the catalogue - {% endblocktrans %} -
    • - {% endif %} -
    -

    - - {% trans "Edit range metadata" %} - - - {% trans "Return to ranges homepage" %} - -

    diff --git a/tests/django_oscar/oscar/dashboard/ranges/messages/range_saved.html b/tests/django_oscar/oscar/dashboard/ranges/messages/range_saved.html deleted file mode 100644 index 60397e9..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/messages/range_saved.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load i18n %} -{% blocktrans with name=range.name %} -

    - Range - {{ name }} - saved. -

    -{% endblocktrans %} -

    - - {% trans "Edit again" %} - - - {% trans "Edit included products" %} - -

    diff --git a/tests/django_oscar/oscar/dashboard/ranges/range_delete.html b/tests/django_oscar/oscar/dashboard/ranges/range_delete.html deleted file mode 100644 index 2cc9f0e..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/range_delete.html +++ /dev/null @@ -1,45 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% blocktrans with name=range.name %} - Delete range '{{ name }}'? - {% endblocktrans %} - | {% trans "Ranges" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ range.name }}{% endblock %} -{% block dashboard_content %} -
    -

    - {% trans "Are you sure you want to delete this range?" %} -

    - {% csrf_token %} -
    - - {% trans "or" %} - {% trans "cancel" %} -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/ranges/range_form.html b/tests/django_oscar/oscar/dashboard/ranges/range_form.html deleted file mode 100644 index d3cfebf..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/range_form.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {{ title }} | {% trans "Ranges" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% if range %} - {{ range.name }} - {% else %} - {% trans "Create new range" %} - {% endif %} -{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% block form_actions %} -
    - - {% trans "or" %} - {# This is an input so we distinguish between which button was pressed #} - - {% trans "or" %} - {% trans "cancel" %} -
    - {% endblock form_actions %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/ranges/range_list.html b/tests/django_oscar/oscar/dashboard/ranges/range_list.html deleted file mode 100644 index 926dc8c..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/range_list.html +++ /dev/null @@ -1,113 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% trans "Ranges" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - - - {% if ranges %} - - - - - - - - - - - {% for range in ranges %} - - - {% if range.includes_all_products %} - - {% else %} - - {% endif %} - {% if range.is_public %} - - {% else %} - - {% endif %} - - - - {% endfor %} - - {% else %} - - - - {% endif %} -
    - - {% trans "Ranges" %} -
    {% trans "Name" %}{% trans "Num products" %}{% trans "Is public?" %}{% trans "Date created" %}
    - {% if range.is_editable %} - - {{ range.name }} - - {% else %} - {{ range.name }} - {% endif %} - {% trans 'All' %}{{ range.num_products|default:"-" }}{% trans "Yes" %}{% trans "No" %}{{ range.date_created }} -
    - -
    -
    {% trans "No ranges found." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/ranges/range_product_list.html b/tests/django_oscar/oscar/dashboard/ranges/range_product_list.html deleted file mode 100644 index 173bcca..0000000 --- a/tests/django_oscar/oscar/dashboard/ranges/range_product_list.html +++ /dev/null @@ -1,169 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% blocktrans with name=range.name %} - Products in range '{{ name }}' - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {{ range.name }}: {% trans "products" %} -{% endblock %} -{% block dashboard_content %} - {% if range.includes_all_products %} - {% trans "This range contains all products. To add products manually, please unselect the 'Includes All Products' option on the edit range page." %} - {% else %} -
    -

    {% trans "Add products" %}

    -
    -
    -
    - {% csrf_token %} - - {% include 'oscar/dashboard/partials/form_fields.html' with form=form %} -
    - -
    -
    - {% with uploads=range.file_uploads.all %} - {% if uploads %} -
    -

    {% trans "Upload history" %}

    -
    - - - - - - - - - - - - {% for upload in uploads %} - - - - - - - - {% endfor %} - -
    {% trans "Filename" %}{% trans "New products" %}{% trans "Duplicate products" %}{% trans "Unknown products" %}{% trans "Date uploaded" %}
    {{ upload.filepath }}{{ upload.num_new_skus }}{{ upload.num_duplicate_skus }}{{ upload.num_unknown_skus }}{{ upload.date_uploaded }}
    - {% endif %} - {% endwith %} - {% if products %} -
    - {% csrf_token %} - - - - - - - - - - - - - {% for product in products %} - - - - - - - - {% endfor %} - -
    -

    {% trans "Products in range" %}

    -
    - - -
    -
    {% trans "UPC" %}{% trans "Title" context "Product title" %}{% trans "Is product discountable?" %}
    - - {{ product.upc|default:"-" }} - - {{ product.get_title }} - - - {% if product.get_is_discountable %} - {% trans "Yes" %} - {% else %} - {% trans "No" %} - {% endif %} - - - {% trans "Remove" %} - - {% if range.is_reorderable %} - - - {% trans "Re-order" context "Change the sequence order" %} - - {% endif %} -
    - {% include "oscar/dashboard/partials/pagination.html" %} -
    - {% else %} - - - - - -
    - {% trans "Products in Range" %} -
    {% trans "No products found." %}
    - {% endif %} -
    - {% endif %} - -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - oscar.dashboard.ranges.init(); - oscar.dashboard.reordering.init({ - wrapper: '.product_list', - submit_url: '{% url 'dashboard:range-reorder' pk=range.id %}' - }); -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/index.html b/tests/django_oscar/oscar/dashboard/reports/index.html deleted file mode 100644 index 98837c6..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/index.html +++ /dev/null @@ -1,49 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} reports{% endblock %} -{% block title %} - {% trans "Reports" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Reporting dashboard" %} -{% endblock %} -{% block dashboard_content %} -
    -

    - - {% trans "Reporting dashboard" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - - {# data-loading-text is deliberately not used here so that the button doesn't stay disabled after a CSV download has started #} - - -
    -
    - {% if description %} -
    -

    - - {{ description }} -

    -
    - {% endif %} - {% block report %}{% endblock %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/offer_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/offer_report.html deleted file mode 100644 index b694cad..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/offer_report.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - {% if objects %} - - - - - {% for offer_discount in objects %} - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    {% trans "Offer" %}{% trans "Total discount" %}
    - - {{ offer_discount.offer.name }} - - {{ offer_discount.total_discount|currency }}
    {% trans "No results found." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/open_basket_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/open_basket_report.html deleted file mode 100644 index 0a34649..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/open_basket_report.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load datetime_filters %} -{% load i18n %} -{% block report %} - - - - - - - - - - {% for basket in objects %} - - - - {% else %} - - - {% endif %} - - - - - - - {% endfor %} -
    {% trans "Email" %}{% trans "Name" %}{% trans "Num lines" %}{% trans "Num items" %}{% trans "Date of creation" %}{% trans "Time since creation" %}
    - {% if basket.owner %} - - {{ basket.owner.email }} - - {% else %} - - - {% endif %} - - {% if basket.owner %} - - {{ basket.owner.get_full_name|default:"-" }} - - {{ basket.num_lines }}{{ basket.num_items }}{{ basket.date_created }}{{ basket.time_since_creation|timedelta }}
    -{% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/order_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/order_report.html deleted file mode 100644 index 30ddefc..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/order_report.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - {% if objects %} - - - - - - - - - {% for order in objects %} - - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    {% trans "Order number" %}{% trans "Name" %}{% trans "Email" %}{% trans "Total incl. tax" %}{% trans "Date placed" %}
    - - {{ order.number }} - - - {% if order.user %} - - {{ order.user|default:"-" }} - - {% else %} - - - {% endif %} - {{ order.email }}{{ order.total_incl_tax|currency:order.currency }}{{ order.date_placed }} - - {% trans "View" %} - -
    {% trans "No results found." %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/product_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/product_report.html deleted file mode 100644 index 5a9c957..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/product_report.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - - - - - - - {% for product in objects %} - - - - - - - {% endfor %} -
    {% trans "Product" %}{% trans "Views" %}{% trans "Basket additions" %}{% trans "Purchases" %}
    - - {{ product.product }} - - {{ product.num_views }}{{ product.num_basket_additions }}{{ product.num_purchases }}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/submitted_basket_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/submitted_basket_report.html deleted file mode 100644 index 3d316ec..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/submitted_basket_report.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - - - - - - - - - {% for basket in objects %} - - - - - - - - - {% endfor %} -
    {% trans "Email" %}{% trans "Name" %}{% trans "Num lines" %}{% trans "Num items" %}{% trans "Date created" %}{% trans "Time between creation and submission" %}
    - {% if basket.owner %} - - {{ basket.owner.email }} - - {% else %} - - - {% endif %} - - {% if basket.owner %} - - {{ basket.owner.get_full_name|default:"-" }} - - {% else %} - - - {% endif %} - {{ basket.num_lines }}{{ basket.num_items }}{{ basket.date_created }}{{ basket.time_before_submit }}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/user_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/user_report.html deleted file mode 100644 index b515104..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/user_report.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - - - - - - - - - - - - - {% for user in objects %} - - - - - - - - - - - - - {% endfor %} -
    {% trans "Email" %}{% trans "Name" %}{% trans "Date registered" %}{% trans "Product views" %}{% trans "Basket additions" %}{% trans "Orders" %}{% trans "Order lines" %}{% trans "Order items" %}{% trans "Total spent" %}{% trans "Date of last order" %}
    - - {{ user.user.email }} - - - - {{ user.user.get_full_name|default:"-" }} - - {{ user.user.date_joined }}{{ user.num_product_views }}{{ user.num_basket_additions }}{{ user.num_orders }}{{ user.num_order_lines }}{{ user.num_order_items }}{{ user.total_spent|currency }}{{ user.date_last_order|default:"-" }}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reports/partials/voucher_report.html b/tests/django_oscar/oscar/dashboard/reports/partials/voucher_report.html deleted file mode 100644 index fef63a1..0000000 --- a/tests/django_oscar/oscar/dashboard/reports/partials/voucher_report.html +++ /dev/null @@ -1,32 +0,0 @@ -{% extends 'oscar/dashboard/reports/index.html' %} -{% load currency_filters %} -{% load i18n %} -{% block report %} - - {% if objects %} - - - - - - - {% for voucher in objects %} - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    {% trans "Voucher code" %}{% trans "Added to a basket" %}{% trans "Used in an order" %}{% trans "Total discount" %}
    - - {{ voucher.code }} - - {{ voucher.num_basket_additions }}{{ voucher.num_orders }}{{ voucher.total_discount|currency }}
    {% trans "No vouchers were used in this period" %}
    - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/reviews/review_delete.html b/tests/django_oscar/oscar/dashboard/reviews/review_delete.html deleted file mode 100644 index 202cfb0..0000000 --- a/tests/django_oscar/oscar/dashboard/reviews/review_delete.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% blocktrans with title=review.title|truncatechars:30 %} - Delete review '{{ title }}'? - {% endblocktrans %} - | {% trans "Reviews" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with title=review.title|truncatechars:30 %} - Delete review "{{ title }}"? - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Review" %}

    -
    -
    - {% csrf_token %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Title" context "Product review title" %}{{ review.title }}
    {% trans "Product" %}{{ review.product.title }}
    {% trans "User" %}{{ review.user.reviewer_name|default:"-" }}
    {% trans "Score" %}{{ review.score|floatformat:1 }}
    {% trans "Votes" %}{{ review.total_votes }}
    {% trans "Status" %}{{ review.status }}
    {% trans "Date created" %}{{ review.date_created }}
    -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/reviews/review_list.html b/tests/django_oscar/oscar/dashboard/reviews/review_list.html deleted file mode 100644 index f471de7..0000000 --- a/tests/django_oscar/oscar/dashboard/reviews/review_list.html +++ /dev/null @@ -1,166 +0,0 @@ -{% extends "oscar/dashboard/layout.html" %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% block body_class %}{{ block.super }} reviews{% endblock %} -{% block title %} - {% trans "Reviews" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} -
    -

    - - {% trans "Review Search" %} -

    -
    -
    -
    - {% include 'oscar/dashboard/partials/form_fields_inline.html' with form=form %} - -
    -
    - {% if review_list %} -
    - {% csrf_token %} - - - - - - - - - - - - - - {% for review in review_list %} - - - - - {% else %} - {% trans "[Product deleted]" %} - {% endif %} - - - - - - - - {% endfor %} -
    -

    - - {{ description }} -

    -
    -
    - {% trans "Update status of selected reviews" %} - {{ review_form.status }} - - -
    -
    -
    {% trans "Title" context "Review title" %}{% trans "Product" %}{% trans "User" %}{% anchor 'score' _("Score") %}{% anchor 'total_votes' _("Votes") %}{% trans "Status" %}{% anchor 'date_created' _("Date created") %}
    - - - - {{ review.title }} - - - {% if review.product %} - - {{ review.product.title }} - - - {% if not review.is_anonymous %} - - {{ review.reviewer_name }} - - {% else %} - {{ review.name }} - {% endif %} - {{ review.score|floatformat:1 }} / {{ 5.0|floatformat:1 }}{{ review.total_votes }} - {% if review.status == 1 %} - - {% elif review.status == 2 %} - - {% else %} - - {% endif %} - {{ review.get_status_display }} - - {{ review.date_created }} -
    - -
    -
    - {% include "oscar/dashboard/partials/pagination.html" %} -
    - {% else %} - - - - - -
    - {{ description }} -
    {% trans "No reviews found." %}
    - {% endif %} - {% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/reviews/review_update.html b/tests/django_oscar/oscar/dashboard/reviews/review_update.html deleted file mode 100644 index 87dfd10..0000000 --- a/tests/django_oscar/oscar/dashboard/reviews/review_update.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% trans "Update review" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with review_id=review.id %} - Review #{{ review_id }} - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} -
    -

    {% trans "Review information" %}

    -
    -
    -
    - {{ form.first }} - {% for field in form %} - {# display title (first) and body (last) as full lines #} - {% if forloop.counter < 3 %} -
    - {% if field.is_hidden %} - {{ field }} - {% else %} - {{ field.label_tag }} -
    - {{ field }} - {% for error in field.errors %} - {{ error|escape }} - {% endfor %} - {% if field.help_text %} - - {{ field.help_text }} - - {% endif %} -
    - {% endif %} -
    - {% else %} -
    - {% if field.is_hidden %} - {{ field }} - {% else %} - - {{ field.label_tag }} - {{ field }} - {% for error in field.errors %} -
      -
    • - {{ error|escape }} -
    • -
    - {% endfor %} -
    - {% endif %} -
    - {% endif %} - {% endfor %} -
    -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/band_created.html b/tests/django_oscar/oscar/dashboard/shipping/messages/band_created.html deleted file mode 100644 index fd01709..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/band_created.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} -{% blocktrans with name=band.method.name %} -

    - A weight band has been added to the - {{ name }} - shipping method. -

    -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/band_deleted.html b/tests/django_oscar/oscar/dashboard/shipping/messages/band_deleted.html deleted file mode 100644 index c9c41e6..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/band_deleted.html +++ /dev/null @@ -1,7 +0,0 @@ -{% load i18n %} -{% blocktrans with name=band.method.name %} -

    - Weight band deleted from the - {{ name }} - shipping method - {% endblocktrans %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/band_updated.html b/tests/django_oscar/oscar/dashboard/shipping/messages/band_updated.html deleted file mode 100644 index 7e7a6e4..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/band_updated.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} -

    - {% trans "Weight band updated" %} -

    diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/method_created.html b/tests/django_oscar/oscar/dashboard/shipping/messages/method_created.html deleted file mode 100644 index ddf4fdf..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/method_created.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} -{% blocktrans with name=method.name %} -

    - A shipping method - {{ name }} - has been created. -

    -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/method_deleted.html b/tests/django_oscar/oscar/dashboard/shipping/messages/method_deleted.html deleted file mode 100644 index 594f808..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/method_deleted.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} -{% blocktrans with name=method.name %} -

    - The - {{ name }} - shipping method has been deleted. -

    -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/messages/method_updated.html b/tests/django_oscar/oscar/dashboard/shipping/messages/method_updated.html deleted file mode 100644 index b0dac56..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/messages/method_updated.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load i18n %} -{% blocktrans with name=method.name %} -

    - The - {{ name }} - shipping method has been updated. -

    -{% endblocktrans %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_band_delete.html b/tests/django_oscar/oscar/dashboard/shipping/weight_band_delete.html deleted file mode 100644 index 6825704..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_band_delete.html +++ /dev/null @@ -1,62 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block title %} - {% trans "Delete weight band?" %} | - {{ band.method.name }} | - {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Delete weight band?" %} -{% endblock %} -{% block dashboard_content %} - - - - - - - - - - - - - -
    {% trans "Weight range (kg)" %}{% trans "Charge" %}
    {{ band.weight_from|floatformat:3 }} - {{ band.weight_to|floatformat:3 }}{{ band.charge|currency }}
    -
    -

    - {% trans "Are you sure you want to delete this weight band method?" %} -

    - {% csrf_token %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_band_form.html b/tests/django_oscar/oscar/dashboard/shipping/weight_band_form.html deleted file mode 100644 index 9332fb7..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_band_form.html +++ /dev/null @@ -1,50 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block title %} - {% trans "Edit weight band" %} | - {{ band.method.name }} | - {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Edit weight band" %} -{% endblock %} -{% block dashboard_content %} -
    -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% block form_actions %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    - {% endblock form_actions %} -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_based_delete.html b/tests/django_oscar/oscar/dashboard/shipping/weight_based_delete.html deleted file mode 100644 index 6846e5d..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_based_delete.html +++ /dev/null @@ -1,46 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block title %} - {% blocktrans with name=method.name %} - Delete shipping method '{{ name }}'? - {% endblocktrans %} - | {% trans "Shipping methods" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ method.name }}{% endblock %} -{% block dashboard_content %} -
    -

    - {% trans "Are you sure you want to delete this shipping method?" %} -

    - {% csrf_token %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_based_detail.html b/tests/django_oscar/oscar/dashboard/shipping/weight_based_detail.html deleted file mode 100644 index f7a1bcf..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_based_detail.html +++ /dev/null @@ -1,105 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block title %}{{ method.name }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ method.name }}{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Shipping method" %}

    - - - - - - - - - - - {% with countries=method.countries.all %} - {% if countries %} - - - - - {% endif %} - {% endwith %} - - - - - -
    {% trans "Name" %}{{ method.name }}
    {% trans "Description" %}{{ method.description|safe|default:"-" }}
    {% trans "Applies to countries" %}{{ countries|join:", " }}
    {% trans "Default product weight (kg)" %}{{ method.default_weight }}
    -

    - - {% trans 'Edit shipping method' %} - - - {% trans 'Delete shipping method' %} - -

    -

    {% trans "Weight bands" %}

    - {% if method.bands.all.count %} - - - - - - - - - - {% for band in method.bands.all %} - - - - - - {% endfor %} - -
    {% trans "Weight range (kg)" %}{% trans "Charge" %}
    {{ band.weight_from|floatformat:3 }} - {{ band.weight_to|floatformat:3 }}{{ band.charge|currency }} - - {% trans "Edit" %} - - - {% trans "Delete" %} - -
    - {% else %} -

    - {% trans "No weight bands have been added yet." %} -

    - {% endif %} -

    {% trans "Add a new weight band" %}

    -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_based_form.html b/tests/django_oscar/oscar/dashboard/shipping/weight_based_form.html deleted file mode 100644 index 44f7e4d..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_based_form.html +++ /dev/null @@ -1,61 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block title %} - {% if method %} - {{ method.name }} - {% else %} - {% trans "Create a new shipping method" %} - {% endif %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% if method %} - {{ method.name }} - {% else %} - {% trans "Create a new shipping method" %} - {% endif %} -{% endblock %} -{% block dashboard_content %} -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% block form_actions %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    - {% endblock form_actions %} -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/shipping/weight_based_list.html b/tests/django_oscar/oscar/dashboard/shipping/weight_based_list.html deleted file mode 100644 index dedb4d7..0000000 --- a/tests/django_oscar/oscar/dashboard/shipping/weight_based_list.html +++ /dev/null @@ -1,76 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block title %} - {% trans "Shipping methods" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - - - {% if methods %} - - - - - - - - - - {% for method in methods %} - - - - - - - {% endfor %} - - {% else %} - - - - {% endif %} -
    - - {% trans "Shipping methods" %} -
    {% trans "Name" %}{% trans "Number of weight bands" %}{% trans "Default weight (kg)" %}
    - - {{ method.name }} - - {{ method.num_bands }}{{ method.default_weight }} - - {% trans "View" %} - - - {% trans "Edit" %} - - - {% trans "Delete" %} - -
    {% trans "No shipping methods found." %}
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/table.html b/tests/django_oscar/oscar/dashboard/table.html deleted file mode 100644 index a4a850e..0000000 --- a/tests/django_oscar/oscar/dashboard/table.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'django_tables2/table.html' %} -{% load django_tables2 %} -{% load i18n %} -{% block table.thead %} - - {% block table.caption %} -

    - {% if table.icon %}{% endif %} - {{ table.get_caption_display }} -

    - {% endblock %} - - - - {% for column in table.columns %} - {% if column.orderable %} - - - {{ column.header }} - - - - {% else %} - {{ column.header }} - {% endif %} - {% endfor %} - - -{% endblock table.thead %} -{% block pagination %} - {% with page_obj=table.page paginator=table.paginator %} - {% include "oscar/dashboard/partials/pagination.html" %} - {% endwith %} -{% endblock pagination %} diff --git a/tests/django_oscar/oscar/dashboard/users/alerts/delete.html b/tests/django_oscar/oscar/dashboard/users/alerts/delete.html deleted file mode 100644 index c5489dd..0000000 --- a/tests/django_oscar/oscar/dashboard/users/alerts/delete.html +++ /dev/null @@ -1,60 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page users{% endblock %} -{% block title %} - {% blocktrans with id=alert.id %} - Alert #{{ id }} - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with id=alert.id %} - Delete alert #{{ id }}? - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -

    - {% blocktrans with id=alert.id %} - Product alert #{{ id }} - {% endblocktrans %} -

    -
    -
    - {% include 'oscar/dashboard/users/alerts/partials/alert.html' %} -
    - {% csrf_token %} -
    -

    - {% trans "Are you sure that you want to delete this alert?" %} -

    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/users/alerts/list.html b/tests/django_oscar/oscar/dashboard/users/alerts/list.html deleted file mode 100644 index 11425e4..0000000 --- a/tests/django_oscar/oscar/dashboard/users/alerts/list.html +++ /dev/null @@ -1,112 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% load currency_filters %} -{% block body_class %}{{ block.super }} users{% endblock %} -{% block title %} - {% trans "Product alerts" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Product alerts" %} -{% endblock %} -{% block dashboard_content %} -
    -

    - - {% trans "Search product alerts" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - - {% trans "or" %} - - {% trans "reset" %} - -
    -
    -
    -

    - - {{ queryset_description }} -

    -
    - {% if alerts %} - - - - - - - - - - {% for alert in alerts %} - - - - - - - - - {% endfor %} -
    {% trans "Product" %}{% trans "User" %}{% trans "Status" %}{% trans "Date created" %}{% trans "Date alert sent" %}
    - - {{ alert.product }} - - - {% if alert.user %} - - {{ alert.user.email }} - - {% else %} - {{ alert.email }} {% trans "(Anonymous)" %} - {% endif %} - {{ alert.status }}{{ alert.date_created }}{{ alert.date_closed|default:"-" }} -
    - -
    -
    - {% include "oscar/dashboard/partials/pagination.html" %} - {% else %} - - - - -
    {% trans "No alerts found." %}
    - {% endif %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/users/alerts/partials/alert.html b/tests/django_oscar/oscar/dashboard/users/alerts/partials/alert.html deleted file mode 100644 index bd6e782..0000000 --- a/tests/django_oscar/oscar/dashboard/users/alerts/partials/alert.html +++ /dev/null @@ -1,48 +0,0 @@ -{% load i18n %} - - - - - - - - - - - - - - - - - - - {% if not alert.user %} - - - - - {% endif %} - {% if alert.is_cancelled %} - - - - - {% else %} - - - - - {% endif %} - -
    {% trans "Product" %} - - {{ alert.product }} - -
    {% trans "User" %} - {% if alert.user %} - {{ alert.user }} - {% else %} - {{ alert.email }} - {% endif %} -
    {% trans "Status" %}{{ alert.status }}
    {% trans "Date created" %}{{ alert.date_created }}
    {% trans "Date confirmed" %}{{ alert.date_confirmed|default:"-" }}
    {% trans "Date cancelled" %}{{ alert.date_cancelled }}
    {% trans "Date alert sent" %}{{ alert.date_closed|default:"-" }}
    diff --git a/tests/django_oscar/oscar/dashboard/users/alerts/update.html b/tests/django_oscar/oscar/dashboard/users/alerts/update.html deleted file mode 100644 index 97c1767..0000000 --- a/tests/django_oscar/oscar/dashboard/users/alerts/update.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load i18n %} -{% block body_class %}{{ block.super }} users{% endblock %} -{% block title %} - {% blocktrans with id=alert.id %} - Update alert #{{ id }} - {% endblocktrans %} - | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with id=alert.id %} - Product alert #{{ id }} - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -

    - {% blocktrans with id=alert.id %} - Product alert #{{ id }} - {% endblocktrans %} -

    -
    -
    - {% csrf_token %} - {% include 'oscar/dashboard/partials/form_fields_inline.html' %} - - - {% trans "cancel" %} - -
    -
    -
    - {% include 'oscar/dashboard/users/alerts/partials/alert.html' %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/users/detail.html b/tests/django_oscar/oscar/dashboard/users/detail.html deleted file mode 100644 index a6b2ff7..0000000 --- a/tests/django_oscar/oscar/dashboard/users/detail.html +++ /dev/null @@ -1,274 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} users{% endblock %} -{% block title %}{{ customer.email }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ customer.email }}{% endblock %} -{% block dashboard_content %} -
    - {% block user_general_info %} -
    -
    -

    {% trans "General" %}

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% if customer.userrecord %} - {% with record=customer.userrecord %} - - - - - - - - - - - - - - - - - {% endwith %} - {% endif %} - - - - - {% if customer.email %} - - - - - {% endif %} -
    {% trans "Name" %}{{ customer.get_full_name|default:"-" }}
    {% trans "Email" %}{{ customer.email }}
    {% trans "Active" %}?{{ customer.is_active|yesno:_("Yes,No") }}
    {% trans "Superuser" %}?{{ customer.is_superuser|yesno:_("True,False") }}
    {% trans "Staff" %}?{{ customer.is_staff|yesno:_("True,False") }}
    {% trans "Last login" %}{{ customer.last_login }}
    {% trans "Date joined" %}{{ customer.date_joined }}
    {% trans "Products viewed" %}{{ record.num_product_views|default:0 }}
    {% trans "Number of orders" %}{{ record.num_orders|default:0 }}
    {% trans "Number of ordered items" %}{{ record.num_order_items|default:0 }}
    {% trans "Total spent" %}{{ record.total_spent|default:0|currency }}
    {% trans "Reviews written" %}{{ customer.reviews.count }}
    {% trans "Actions" %} -
    - {% csrf_token %} - -
    -
    -
    - {% endblock %} -
    -
    - {% block user_additional_info %} -
    - {% block tab_nav %} - - {% endblock %} -
    - {% block user_orders %} -
    - - - {% with orders=customer.orders.all %} - {% if orders %} - - - - - - - - - {% for order in orders %} - - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} - {% endwith %} -
    - {% trans "Orders" %} -
    - {% trans "Order Number" %} - - {% trans "Num items" %} - - {% trans "Total value" %} - - {% trans "Date placed" %} - - {% trans "Status" %} -
    - - {{ order.number }} - - - {{ order.num_items }} - - {{ order.basket_total_incl_tax|currency }} - - {{ order.date_placed|date }} - - {{ order.status|default:"-" }} - - - {% trans "View" %} - -
    - {% trans "This customer has not placed any orders yet." %} -
    -
    - {% endblock %} - {% block user_addresses %} -
    -

    - {% trans "Addresses" %} -

    -
    - {% for address in customer.addresses.all %} -
    -
    - {% for field in address.active_address_fields %} - {{ field }} -
    - {% endfor %} -
    -
    - {% if forloop.counter|divisibleby:4 %} -
    -
    - {% endif %} - {% empty %} -

    - {% trans "This customer has not saved any addresses." %} -

    - {% endfor %} -
    -
    - {% endblock %} - {% block user_reviews %} -
    - - - {% if customer.reviews.count %} - - - - - - - - {% for review in customer.reviews.all %} - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - {% trans "Reviews" %} -
    - {% trans "Product ID" %} - - {% trans "Score" %} - - {% trans "Title" context "Product review title" %} - - {% trans "Body" %} - - {% trans "Date created" %} -
    - {{ review.product_id }} - - {{ review.score }} - - {{ review.title }} - - {{ review.body }} - - {{ review.date_created }} -
    - {% trans "This customer has not written any reviews yet." %} -
    -
    - {% endblock %} -
    -
    -
    - {% endblock %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/users/index.html b/tests/django_oscar/oscar/dashboard/users/index.html deleted file mode 100644 index 9668651..0000000 --- a/tests/django_oscar/oscar/dashboard/users/index.html +++ /dev/null @@ -1,64 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load dashboard_tags %} -{% load i18n %} -{% load render_table from django_tables2 %} -{% block body_class %}{{ block.super }} users{% endblock %} -{% block title %} - {% trans "Customers" %} | {{ block.super }} -{% endblock %} -{% block header %} - -{% endblock header %} -{% block breadcrumbs %} - -{% endblock %} -{% block dashboard_content %} -
    -

    - - {% trans "Search" %} -

    -
    -
    -
    - {% include "oscar/dashboard/partials/form_fields_inline.html" with form=form %} - - - {% trans "Reset" %} - -
    -
    - {% block users_list %} - {% if users.data %} -
    - {% csrf_token %} - {% render_table users %} -
    - {% else %} - - - - - -
    - {{ queryset_description }} -
    {% trans "No customers found." %}
    - {% endif %} - {% endblock %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/users/table.html b/tests/django_oscar/oscar/dashboard/users/table.html deleted file mode 100644 index 8a61e03..0000000 --- a/tests/django_oscar/oscar/dashboard/users/table.html +++ /dev/null @@ -1,29 +0,0 @@ -{% extends 'oscar/dashboard/table.html' %} -{% load i18n %} -{% block table.caption %} - {{ block.super }} -
    -
    - - {% trans "Bulk Actions" %} - -
    - - -
    -
    - - -
    - -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/dashboard/users/user_row_actions.html b/tests/django_oscar/oscar/dashboard/users/user_row_actions.html deleted file mode 100644 index e8e67f8..0000000 --- a/tests/django_oscar/oscar/dashboard/users/user_row_actions.html +++ /dev/null @@ -1,4 +0,0 @@ -{% load i18n %} - - {% trans "View" %} - diff --git a/tests/django_oscar/oscar/dashboard/users/user_row_checkbox.html b/tests/django_oscar/oscar/dashboard/users/user_row_checkbox.html deleted file mode 100644 index d271d81..0000000 --- a/tests/django_oscar/oscar/dashboard/users/user_row_checkbox.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_details_table.html b/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_details_table.html deleted file mode 100644 index e36185e..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_details_table.html +++ /dev/null @@ -1,39 +0,0 @@ -{% load i18n %} - - - {% if voucher.voucher_set %} - - - - - {% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% trans "Voucher set" %} - - {{ voucher.voucher_set.name }} - -
    {% trans "Name" %}{{ voucher.name }}
    {% trans "Code" %}{{ voucher.code }}
    {% trans "Start datetime" %}{{ voucher.start_datetime }}
    {% trans "End datetime" %}{{ voucher.end_datetime }}
    {% trans "Usage" %}{{ voucher.get_usage_display }}
    {% trans "Number of offers" %}{{ voucher.offers.count }}
    diff --git a/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_set_details_table.html b/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_set_details_table.html deleted file mode 100644 index 3979110..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/partials/voucher_set_details_table.html +++ /dev/null @@ -1,50 +0,0 @@ -{% load i18n %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    {% trans "Voucher set" %}

    -
    {% trans "Title" %}{{ voucher_set.name }}
    {% trans "Start" %}{{ voucher_set.start_datetime }}
    {% trans "End" %}{{ voucher_set.end_datetime }}
    {% trans "Description" %}{{ voucher_set.description }}
    {% trans "Number of vouchers" %}{{ voucher_set.count }}
    {% trans "Number of offers" %}{{ voucher_set.vouchers.first.offers.count|default:0 }}
    {% trans "Status" %} - {% if voucher_set.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} -
    {% trans "Created" %}{{ voucher_set.date_created }}
    {% trans "Usage" %}{{ voucher_set.vouchers.first.get_usage_display }}
    diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_delete.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_delete.html deleted file mode 100644 index faa6ffe..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_delete.html +++ /dev/null @@ -1,70 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% if not voucher.voucher_set %} - {% blocktrans with name=voucher.name %} - Delete voucher '{{ name }}'? - {% endblocktrans %} - | {% trans "Vouchers" %} | {{ block.super }} - {% else %} - {% blocktrans with code=voucher.code %} - Delete voucher '{{ code }}'? - {% endblocktrans %} - | {% trans "Vouchers" %} | {{ block.super }} - {% endif %} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% if not voucher.voucher_set %} - {% blocktrans with name=voucher.name %} - Delete voucher '{{ name }}'? - {% endblocktrans %} - {% else %} - {% blocktrans with code=voucher.code %} - Delete voucher '{{ code }}' from set? - {% endblocktrans %} - {% endif %} -{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Voucher details" %}

    -
    -
    - {% include "oscar/dashboard/vouchers/partials/voucher_details_table.html" %} -
    - {% csrf_token %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_detail.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_detail.html deleted file mode 100644 index 4ed388a..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_detail.html +++ /dev/null @@ -1,176 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block title %} - {{ voucher }} | {% trans "Vouchers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ voucher }}{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Voucher details" %}

    -
    - {% include "oscar/dashboard/vouchers/partials/voucher_details_table.html" %} -
    -

    {% trans "Attached offers" %}

    -
    - - {% if voucher.offers.exists %} - - - - - - - - - - - - - - {% for offer in voucher.offers.all %} - - - - - - - - - - - {% endfor %} - - {% else %} - - - - {% endif %} -
    {% trans "Offer name" %}{% trans "Start date" %}{% trans "End date" %}{% trans "Is available?" %}{% trans "Priority" %}{% trans "Incentive" %}{% trans "Condition" %}{% trans "Restrictions" %}
    - - {{ offer.name }} - - {{ offer.start_datetime|default:"-" }}{{ offer.end_datetime|default:"-" }} - {% if offer.is_available %} - {% trans "Yes" %} - {% else %} - {% trans "No" %} - {% endif %} - {{ offer.priority }}{{ offer.benefit.description|safe }}{{ offer.condition.description|safe }} - {% for restriction in offer.availability_restrictions %} - {% if not restriction.is_satisfied %} - - {% else %} - {{ restriction.description }} -
    - {% endif %} - {% endfor %} -
    {% trans "No offers are attached to this voucher." %}
    -
    -

    {% trans "Voucher performance" %}

    -
    - - - - - - - - - - - - - - - -
    {% trans "Number of basket additions" %}{{ voucher.num_basket_additions }}
    {% trans "Number of orders" %}{{ voucher.num_orders }}
    {% trans "Total discount" %}{{ voucher.total_discount|currency }}
    -
    -

    {% trans "Recent orders" %}

    -
    - - {% if not discounts %} - - - - {% else %} - - - - - - - - - - {% for discount in discounts %} - {% with order=discount.order %} - - - - - - - {% endwith %} - {% endfor %} - - {% endif %} -
    {% trans "No orders have been placed that use this voucher." %}
    {% trans "Order number" %} - {% trans "Order total" %} - - {% trans "Discount" %} - - {% trans "Date placed" %} -
    - - {{ order.number }} - - - {{ order.total_incl_tax|currency:order.currency }} - - {{ discount.amount|currency:order.currency }} - - {{ order.date_placed }} -
    - -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_form.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_form.html deleted file mode 100644 index f4cec65..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_form.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {{ title }} | {% trans "Vouchers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    -

    - - {% if voucher %} - {% trans "Edit voucher" %} - {% else %} - {% trans "Create voucher" %} - {% endif %} -

    -
    -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% block form_actions %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    - {% endblock form_actions %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_list.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_list.html deleted file mode 100644 index 9c609fe..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_list.html +++ /dev/null @@ -1,207 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% load widget_tweaks %} -{% block title %} - {% trans "Vouchers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% block page_head %} -
    -

    - - {% trans "Search" %} -

    -
    -
    -
    - {% for field in form %} - {% if field.name in form.basic_fields %} - {% if field.is_hidden %} - {{ field }} - {% else %} -
    - {{ field.label_tag }} - {% render_field field class+='form-control' %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {# No help text as it wraps #} -
    - {% endif %} - {% else %} - - {% endif %} - {% endfor %} - - - {% trans "Advanced Search" %} - - - {% trans "Reset" %} - -
    - {# Search modal, if there are form errors the form is automatically openend #} - {% include "oscar/dashboard/partials/advanced_search_modal.html" with form=advanced_form style='horizontal' %} - {% if search_filters %} -
    - - {% for filter in search_filters %} - {{ filter }} - {% endfor %} -
    - {% endif %} -
    - {% endblock page_head %} - {% block voucher_table %} - - - {% if vouchers %} - {% block table_head %} - - - - - - - - - {% if form.is_bound and form.cleaned_data.in_set is not False %} - - {% endif %} - - - {% endblock table_head %} - {% for voucher in vouchers %} - {% block table_row %} - - - - - - - - - {% if form.is_bound and form.cleaned_data.in_set is not False %} - - {% endif %} - - - {% endblock table_row %} - {% endfor %} - {% else %} - - - - {% endif %} -
    - - {% if search_filters %} - {% trans "Voucher Search Results" %} - {% else %} - {% trans "All Vouchers" %} - {% endif %} -
    {% trans "Name" %}{% trans "Code" %}{% trans "Status" %}{% trans "Num offers" %}{% anchor 'num_basket_additions' _("Num baskets") %}{% anchor 'num_orders' _("Num orders") %}{% anchor 'date_created' _("Date created") %}{% trans "Set" %}
    - - {{ voucher.name }} - - - {{ voucher.code }} - - {% if voucher.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} - {{ voucher.offers.count }}{{ voucher.num_basket_additions }}{{ voucher.num_orders }}{{ voucher.date_created }} - {% if voucher.voucher_set.pk %} - - {{ voucher.voucher_set.name }} - - {% else %} - - - {% endif %} - - {% block row_actions %} - - {% endblock row_actions %} -
    {% trans "No vouchers found." %}
    - {% endblock voucher_table %} - {% include "oscar/dashboard/partials/pagination.html" %} -{% endblock dashboard_content %} -{% block onbodyload %} - {{ block.super }} - {% if advanced_form.errors %}$('#SearchModal').modal('show');{% endif %} -{% endblock onbodyload %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_delete.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_delete.html deleted file mode 100644 index 4d82d14..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_delete.html +++ /dev/null @@ -1,57 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {% blocktrans with name=voucher_set.name %} - Delete voucher set '{{ name }}'? - {% endblocktrans %} - | {% trans "Voucher sets" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% blocktrans with name=voucher_set.name count=voucher_set.count %} - Delete voucher set '{{ name }}' and its {{ count }} vouchers? - {% endblocktrans %} -{% endblock %} -{% block dashboard_content %} -
    -

    {% trans "Voucher set details" %}

    -
    -
    - {% include "oscar/dashboard/vouchers/partials/voucher_set_details_table.html" %} -
    - {% csrf_token %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    -
    -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_detail.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_detail.html deleted file mode 100644 index d1b798c..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_detail.html +++ /dev/null @@ -1,184 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% block title %}{{ voucher_set.name }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - {% include "oscar/dashboard/vouchers/partials/voucher_set_details_table.html" %} -
    -

    - - {% trans "Search vouchers" %} -

    -
    -
    -
    - {% include 'oscar/partials/form_fields_inline.html' with form=form %} - - - {% trans "Reset" %} - -
    - {% if search_filters %} -
    - - {% for filter in search_filters %} - {{ filter }} - {% endfor %} -
    - {% endif %} -
    - - - {% if vouchers %} - - - - - - - - {% for voucher in vouchers %} - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - - {% if search_filters %} - {% trans "Voucher Search Results" %} - {% else %} - {% trans "All Vouchers" %} - {% endif %} -
    {% trans "Code" %}{% anchor 'num_basket_additions' _("Num baskets") %}{% anchor 'num_orders' _("Num orders") %}{% anchor 'date_created' _("Date created") %}
    - {{ voucher.code }} - {{ voucher.num_basket_additions }}{{ voucher.num_orders }}{{ voucher.date_created }} -
    - -
    -
    {% trans "No vouchers found." %}
    - {% include "oscar/partials/pagination.html" %} -
    -

    {% trans "Attached offers" %}

    -
    - - {% if voucher_set.vouchers.first.offers.exists %} - - - - - - - - - - - - - - {% for offer in voucher_set.vouchers.first.offers.all %} - - - - - - - - - - - {% endfor %} - - {% else %} - - - - {% endif %} -
    {% trans "Offer name" %}{% trans "Start date" %}{% trans "End date" %}{% trans "Is available?" %}{% trans "Priority" %}{% trans "Incentive" %}{% trans "Condition" %}{% trans "Restrictions" %}
    - - {{ offer.name }} - - {{ offer.start_datetime|default:"-" }}{{ offer.end_datetime|default:"-" }} - {% if offer.is_available %} - {% trans "Yes" %} - {% else %} - {% trans "No" %} - {% endif %} - {{ offer.priority }}{{ offer.benefit.description|safe }}{{ offer.condition.description|safe }} - {% for restriction in offer.availability_restrictions %} - {% if not restriction.is_satisfied %} - - {% else %} - {{ restriction.description }} -
    - {% endif %} - {% endfor %} -
    {% trans "No offers are attached to this voucher set." %}
    - -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_form.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_form.html deleted file mode 100644 index 857a607..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_form.html +++ /dev/null @@ -1,57 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load i18n %} -{% block body_class %}{{ block.super }} create-page{% endblock %} -{% block title %} - {{ title }} | {% trans "Voucher sets" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ title }}{% endblock %} -{% block dashboard_content %} -
    -

    - - {% if voucher_set %} - {% trans "Edit voucher set" %} - {% else %} - {% trans "Create voucher set" %} - {% endif %} -

    -
    -
    - {% csrf_token %} - {% include "oscar/dashboard/partials/form_fields.html" with form=form %} - {% block form_actions %} -
    - - {% trans "or" %} - - {% trans "cancel" %} - -
    - {% endblock form_actions %} -
    -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_list.html b/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_list.html deleted file mode 100644 index 2b02f2f..0000000 --- a/tests/django_oscar/oscar/dashboard/vouchers/voucher_set_list.html +++ /dev/null @@ -1,102 +0,0 @@ -{% extends 'oscar/dashboard/layout.html' %} -{% load currency_filters %} -{% load sorting_tags %} -{% load i18n %} -{% block title %}{{ description }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block header %} - -{% endblock header %} -{% block dashboard_content %} - - {% if description != "All voucher sets" %} - - {% endif %} - {% if voucher_sets %} - - - - - - - - - - - {% for voucher_set in voucher_sets %} - - - - - - - - - - - {% endfor %} - {% else %} - - - - {% endif %} -
    - - {{ description }} -
    {% trans "Name" %}{% trans "Num" %}{% trans "Status" %}{% trans "Num offers" %}{% anchor 'num_basket_additions' _("Num baskets") %}{% anchor 'num_orders' _("Num orders") %}{% anchor 'date_created' _("Date created") %}
    - - {{ voucher_set.name }} - - {{ voucher_set.count }} - {% if voucher_set.is_active %} - {% trans "Active" %} - {% else %} - {% trans "Inactive" %} - {% endif %} - {{ voucher_set.vouchers.first.offers.count|default:0 }}{{ voucher_set.num_basket_additions }}{{ voucher_set.num_orders }}{{ voucher_set.date_created }} - -
    {% trans "No voucher sets found." %}
    - {% include "oscar/partials/pagination.html" %} -{% endblock dashboard_content %} diff --git a/tests/django_oscar/oscar/dashboard/widgets/popup_response.html b/tests/django_oscar/oscar/dashboard/widgets/popup_response.html deleted file mode 100644 index 36233a7..0000000 --- a/tests/django_oscar/oscar/dashboard/widgets/popup_response.html +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n static %} - - - - {% trans 'Popup closing...' %} - - - - - diff --git a/tests/django_oscar/oscar/dashboard/widgets/related_multiple_widget_wrapper.html b/tests/django_oscar/oscar/dashboard/widgets/related_multiple_widget_wrapper.html deleted file mode 100644 index 71d8ec6..0000000 --- a/tests/django_oscar/oscar/dashboard/widgets/related_multiple_widget_wrapper.html +++ /dev/null @@ -1,28 +0,0 @@ -{% load i18n static %} - diff --git a/tests/django_oscar/oscar/dashboard/widgets/related_widget_wrapper.html b/tests/django_oscar/oscar/dashboard/widgets/related_widget_wrapper.html deleted file mode 100644 index 14b5f00..0000000 --- a/tests/django_oscar/oscar/dashboard/widgets/related_widget_wrapper.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n static %} - diff --git a/tests/django_oscar/oscar/error.html b/tests/django_oscar/oscar/error.html deleted file mode 100644 index 7e56c9d..0000000 --- a/tests/django_oscar/oscar/error.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% block layout %} - {% include "oscar/partials/nav_accounts.html" %} -
    -
    -

    - {% block error_heading %} - {% trans 'Sorry!' %} - {% endblock %} -

    - {% block error_message %}{% endblock %} -

    - - {% trans 'Return to previous page' %} - - - {% trans "Go to homepage" %} - -

    -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/forms/widgets/date_time_picker.html b/tests/django_oscar/oscar/forms/widgets/date_time_picker.html deleted file mode 100644 index 81a317d..0000000 --- a/tests/django_oscar/oscar/forms/widgets/date_time_picker.html +++ /dev/null @@ -1,14 +0,0 @@ -
    -
    - {% include "django/forms/widgets/input.html" %} -
    -
    - -
    -
    -
    -
    diff --git a/tests/django_oscar/oscar/forms/widgets/image_input_widget.html b/tests/django_oscar/oscar/forms/widgets/image_input_widget.html deleted file mode 100644 index 3385028..0000000 --- a/tests/django_oscar/oscar/forms/widgets/image_input_widget.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load i18n %} -{% load image_tags %} -
    - {% if image_url %} - {% oscar_thumbnail image_url "200x200" upscale=False as thumb %} - {% trans - {% else %} - {% trans - - {% endif %} -
    - {% include "django/forms/widgets/input.html" %} -
    -
    diff --git a/tests/django_oscar/oscar/layout.html b/tests/django_oscar/oscar/layout.html deleted file mode 100644 index 2b50f45..0000000 --- a/tests/django_oscar/oscar/layout.html +++ /dev/null @@ -1,63 +0,0 @@ -{% extends "oscar/base.html" %} -{% load static %} -{% block styles %} - -{% endblock %} -{% block layout %} - {# Top-horizontal bar with account, notifictions, dashboard links #} - {% include "oscar/partials/nav_accounts.html" %} - {# Site logo/title, mini-basket, browse dropdown and searchbox #} -
    -
    -
    - {% include "oscar/partials/brand.html" %} - {# Mini-basket wrapped in a block so some templates can now display it #} - {% block mini_basket %} - {% include "oscar/partials/mini_basket.html" %} - {% endblock %} -
    -
    - {% block navigation %} - {% include "oscar/partials/nav_primary.html" %} - {% endblock %} -
    - {# Main content of page - other layout templates may override this block #} - {% block content_wrapper %} -
    -
    - {% block breadcrumbs %}{% endblock %} - {% block header %} - - {% endblock %} - {% include "oscar/partials/alert_messages.html" %} - {% block subnavigation %}{% endblock %} -
    - {% block subheader %}{% endblock subheader %} - {# Div exists for AJAX updates to entire content section #} -
    - {% block content %}{% endblock %} -
    -
    -
    -
    - {% endblock %} - {% include "oscar/partials/footer.html" %} -{% endblock %} -{# Local scripts #} -{% block scripts %} - {{ block.super }} - - - - -{% endblock %} -{% block extrascripts %} - {% include "oscar/partials/extrascripts.html" %} - {{ block.super }} -{% endblock %} -{% block onbodyload %} - {{ block.super }} - oscar.init(); -{% endblock %} diff --git a/tests/django_oscar/oscar/layout_2_col.html b/tests/django_oscar/oscar/layout_2_col.html deleted file mode 100644 index 603806c..0000000 --- a/tests/django_oscar/oscar/layout_2_col.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "oscar/layout.html" %} -{% comment %} -Keep the same header and footer as the standard layout template but override the -main content area to split it into a sidebar and a content block -{% endcomment %} -{% block content_wrapper %} -
    -
    - {% block breadcrumbs %}{% endblock %} -
    - -
    - {% block header %} - - {% endblock %} - {% include "oscar/partials/alert_messages.html" %} - {% block pre_content %}{% endblock %} - {% block content %}{% endblock %} -
    -
    - -
    - -
    - -{% endblock %} diff --git a/tests/django_oscar/oscar/layout_3_col.html b/tests/django_oscar/oscar/layout_3_col.html deleted file mode 100644 index 83e59b7..0000000 --- a/tests/django_oscar/oscar/layout_3_col.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "oscar/layout.html" %} -{% block content_wrapper %} -
    -
    - {% block breadcrumbs %}{% endblock %} -
    - -
    - {% block header %} - - {% endblock %} - {% include "oscar/partials/alert_messages.html" %} - {% block content %}{% endblock %} -
    - -
    - -
    - -
    - -{% endblock %} diff --git a/tests/django_oscar/oscar/login_forbidden.html b/tests/django_oscar/oscar/login_forbidden.html deleted file mode 100644 index 250957b..0000000 --- a/tests/django_oscar/oscar/login_forbidden.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "oscar/403.html" %} -{% load i18n %} -{% block error_message %} -

    - {% trans "This page is only available to users who aren't logged in." %} -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/offer/detail.html b/tests/django_oscar/oscar/offer/detail.html deleted file mode 100644 index 5694e5b..0000000 --- a/tests/django_oscar/oscar/offer/detail.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% load product_tags %} -{% block title %}{{ offer.name }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %}{{ offer.name }}{% endblock %} -{% block content %} - {% if not offer.is_available %} -
    - {% trans " This offer is no longer available." %} -
    - {% endif %} - {% if upsell_message %} -
    - {% if offer.description %} -
    -

    - {{ offer.description|safe }} -

    -
    - {% endif %} -
    -
    -

    - - {% trans "What you need to do" %} -

    -

    - {{ upsell_message }} -

    -
    -
    -
    - {% endif %} - {% if products %} -
    -
    - {% include "oscar/partials/pagination.html" %} -
      - {% for product in products %} -
    1. - {% render_product product %} -
    2. - {% endfor %} -
    - {% include "oscar/partials/pagination.html" %} -
    -
    - {% else %} -

    - {% trans "No products found." %} -

    - {% endif %} -{% endblock content %} diff --git a/tests/django_oscar/oscar/offer/list.html b/tests/django_oscar/oscar/offer/list.html deleted file mode 100644 index 30920fd..0000000 --- a/tests/django_oscar/oscar/offer/list.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load i18n %} -{% load product_tags %} -{% block title %} - {% trans "Offers" %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Offers" %} -{% endblock %} -{% block content %} - {% if not offers %} -

    - {% trans "There are no site offers at the moment." %} -

    - {% else %} - {% for offer in offers %} -

    {{ offer.name }}

    - {% if offer.description %} -

    - {{ offer.description|safe }} -

    - {% endif %} - {% if offer.has_products %} -
      - {% for product in offer.products|slice:":12" %} -
    • - {% render_product product %} -
    • - {% endfor %} -
    -

    - - {% trans "Browse products in offer" %} - -

    - {% endif %} -
    - {% endfor %} - {% endif %} -{% endblock content %} diff --git a/tests/django_oscar/oscar/offer/range.html b/tests/django_oscar/oscar/offer/range.html deleted file mode 100644 index f91b1ab..0000000 --- a/tests/django_oscar/oscar/offer/range.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends "oscar/layout.html" %} -{% load basket_tags %} -{% load category_tags %} -{% load i18n %} -{% load product_tags %} -{% block title %}{{ range.name }} | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock breadcrumbs %} -{% block headertext %}{{ range.name }}{% endblock %} -{% block content %} - {% if range.description %}{{ range.description|safe }}{% endif %} - {% if products %} -
    -
    -
      - {% for product in products %} -
    1. - {% render_product product %} -
    2. - {% endfor %} -
    - {% include "oscar/partials/pagination.html" %} -
    -
    - {% else %} -

    - {% trans "No products found." %} -

    - {% endif %} -{% endblock content %} diff --git a/tests/django_oscar/oscar/order/partials/basket_totals.html b/tests/django_oscar/oscar/order/partials/basket_totals.html deleted file mode 100644 index 9f5547d..0000000 --- a/tests/django_oscar/oscar/order/partials/basket_totals.html +++ /dev/null @@ -1,174 +0,0 @@ -{% load i18n %} -{% load currency_filters %} -
    - - - - - {% with discounts=order.basket_discounts %} - {% block discount_totals %} - {% if discounts %} - - - - - {% for discount in discounts %} - - - - - {% endfor %} - {% endif %} - {% endblock discount_totals %} - {% block basket_total %} - {% if discounts %} - - - - - {% else %} - - - - - {% endif %} - {% endblock basket_total %} - {% endwith %} - {% block shipping_total %} - - - - - - - - - - - - {% if order.has_shipping_discounts %} - - - - - {% for discount in order.shipping_discounts %} - - - - - {% endfor %} - - - - - {% else %} - - - - - {% endif %} - {% endblock shipping_total %} - {% block surcharges %} - {% with surcharges=order.surcharges.all %} - {% if surcharges %} - - - - - - - - {% for charge in surcharges %} - - - - - {% endfor %} - {% endif %} - {% endwith %} - {% endblock %} - {% if show_tax_separately %} - - - - - - - - {% endif %} - {% block post_order_action_totals %} - {% with actions=order.post_order_actions %} - {% if actions %} - - - - - - - {% for action in order.post_order_actions %} - - - - {% endfor %} - {% endif %} - {% endwith %} - {% endblock post_order_action_totals %} - {% block order_total %} - - - - - - - - {% endblock order_total %} -
    -

    {% trans "Basket" %}

    -
    {% trans "Basket total (before discounts)" %} - {{ order.basket_total_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer }} - - {{ discount.amount|currency:order.currency }}
    {% trans "Basket total (after discounts)" %} - {{ order.basket_total_incl_tax|currency:order.currency }} -
    {% trans "Basket total" %} - {% if show_tax_separately %} - {{ order.basket_total_excl_tax|currency:order.currency }} - {% else %} - {{ order.basket_total_incl_tax|currency:order.currency }} - {% endif %} -
     
    -

    {% trans "Shipping" %}

    -
    {% trans "Shipping method" %}{{ order.shipping_method }}
    {% trans "Shipping charge (before discounts)" %} - {{ order.shipping_before_discounts_incl_tax|currency:order.currency }} -
    - {% trans "Discount" %} - {{ discount.offer }} - - {{ discount.amount|currency:order.currency }}
    {% trans "Shipping charge (after discounts)" %} - {{ order.shipping_incl_tax|currency:order.currency }} -
    {% trans "Shipping charge" %} - {% if show_tax_separately %} - {{ order.shipping_excl_tax|currency:order.currency }} - {% else %} - {{ order.shipping_incl_tax|currency:order.currency }} - {% endif %} -
     
    -

    {% trans "Surcharges" %}

    -
    {{ charge.name }} - {% if show_tax_separately %} - {{ charge.excl_tax|currency:order.currency }} - {% else %} - {{ charge.incl_tax|currency:order.currency }} - {% endif %} -
     
    {% trans "Order tax" %}{{ order.total_tax|currency:order.currency }}
     
    -

    {% trans "Post order actions" %}

    -
    -

    - {{ action.message }} -

    -
     
    -

    {% trans "Order total" %}

    -
    -

    {{ order.total_incl_tax|currency:order.currency }}

    -
    -
    diff --git a/tests/django_oscar/oscar/partials/alert_messages.html b/tests/django_oscar/oscar/partials/alert_messages.html deleted file mode 100644 index 142517f..0000000 --- a/tests/django_oscar/oscar/partials/alert_messages.html +++ /dev/null @@ -1,39 +0,0 @@ -{% load string_filters %} -{% comment %} -Use message tags to control these alerts. Available tags include: -- safe: allow HTML in the message -- block: for longer messages - this adds extra padding -- noicon: don't show an icon -- error/success/info - these change the connotation of the alert -{% endcomment %} -
    - {% if messages %} - {% for message in messages %} -
    - - × - -
    - {% if 'noicon' not in message.tags %} - {# Include an icon by default #} - {% if 'success' in message.tags %} - - {% elif 'info' in message.tags %} - - {% elif 'warning' in message.tags %} - - {% elif 'danger' in message.tags or 'error' in message.tags %} - - {% endif %} - {% endif %} - {# Allow HTML to be embedded in messages #} - {% if 'safe' in message.tags %} - {{ message|safe }} - {% else %} - {{ message }} - {% endif %} -
    -
    - {% endfor %} - {% endif %} -
    diff --git a/tests/django_oscar/oscar/partials/brand.html b/tests/django_oscar/oscar/partials/brand.html deleted file mode 100644 index 86b4d59..0000000 --- a/tests/django_oscar/oscar/partials/brand.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/tests/django_oscar/oscar/partials/extrascripts.html b/tests/django_oscar/oscar/partials/extrascripts.html deleted file mode 100644 index 6555625..0000000 --- a/tests/django_oscar/oscar/partials/extrascripts.html +++ /dev/null @@ -1,4 +0,0 @@ -{% comment %} -This file exists so you can easily add your own Javascript without -having to fork layout.html etc. Instead, just override this file. -{% endcomment %} diff --git a/tests/django_oscar/oscar/partials/footer.html b/tests/django_oscar/oscar/partials/footer.html deleted file mode 100644 index a19937d..0000000 --- a/tests/django_oscar/oscar/partials/footer.html +++ /dev/null @@ -1,7 +0,0 @@ -
    - {% block footer %} - {% comment %} - Could be used for displaying links to privacy policy, terms of service, etc. - {% endcomment %} -{% endblock %} -
    diff --git a/tests/django_oscar/oscar/partials/footer_checkout.html b/tests/django_oscar/oscar/partials/footer_checkout.html deleted file mode 100644 index 6fd4038..0000000 --- a/tests/django_oscar/oscar/partials/footer_checkout.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - {% block footer %}{% endblock %} -
    diff --git a/tests/django_oscar/oscar/partials/form.html b/tests/django_oscar/oscar/partials/form.html deleted file mode 100644 index 2ce1ea5..0000000 --- a/tests/django_oscar/oscar/partials/form.html +++ /dev/null @@ -1,24 +0,0 @@ -{% load i18n %} -
    - {% if not method == "get" %} - {% csrf_token %} - {% endif %} - {% include 'oscar/partials/form_fields.html' %} -
    -
    - - {% trans "or" %} - - {% trans "cancel" %} - - . -
    -
    -
    diff --git a/tests/django_oscar/oscar/partials/form_field.html b/tests/django_oscar/oscar/partials/form_field.html deleted file mode 100644 index 114242e..0000000 --- a/tests/django_oscar/oscar/partials/form_field.html +++ /dev/null @@ -1,62 +0,0 @@ -{% load form_tags %} -{% load widget_tweaks %} -{% if field.is_hidden %} - {{ field }} -{% else %} - {% comment %} - Make the field widget type available to templates so we can mark-up - checkbox and radio inputs differently to other widgets. -{% endcomment %} -{% annotate_form_field field %} -{% block control_group %} -
    - {% block label %} - {% if not nolabel and field.widget_type != 'checkbox' %} - - {% endif %} - {% endblock %} - {% block controls %} -
    - {% block widget %} - {% if field.widget_type == 'checkbox' %} - - {% else %} - {% render_field field class+="form-control" %} - {% endif %} - {% endblock %} - {% block errors %} - {% for error in field.errors %} - - - {{ error }} - - {% endfor %} - {% endblock %} - {% block help_text %} - {% if field.help_text %} - - {# We allow HTML within form help fields #} - {{ field.help_text|safe }} - - {% endif %} - {% endblock %} -
    - {% endblock %} -
    -{% endblock %} -{% endif %} diff --git a/tests/django_oscar/oscar/partials/form_fields.html b/tests/django_oscar/oscar/partials/form_fields.html deleted file mode 100644 index 5f3efbf..0000000 --- a/tests/django_oscar/oscar/partials/form_fields.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load i18n %} -{% if form.is_bound and not form.is_valid %} -
    - {% trans "Oops! We found some errors" %} - - {% trans "please check the error messages below and try again" %} -
    -{% endif %} -{% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - - {{ error }} -
    - {% endfor %} -{% endif %} -{% for field in form %} - {% include 'oscar/partials/form_field.html' with field=field style=style %} -{% endfor %} diff --git a/tests/django_oscar/oscar/partials/form_fields_inline.html b/tests/django_oscar/oscar/partials/form_fields_inline.html deleted file mode 100644 index 679f495..0000000 --- a/tests/django_oscar/oscar/partials/form_fields_inline.html +++ /dev/null @@ -1,20 +0,0 @@ -{% load widget_tweaks %} -{{ form.non_field_errors }} -{% for field in form %} - {% if field.is_hidden %} - {{ field }} - {% else %} - - {{ field.label_tag }} - {% render_field field class+="form-control mr-sm-2" %} - {% for error in field.errors %} -
      -
    • - {{ error }} -
    • -
    - {% endfor %} - {# No help text as it wraps #} -
    - {% endif %} -{% endfor %} diff --git a/tests/django_oscar/oscar/partials/google_analytics.html b/tests/django_oscar/oscar/partials/google_analytics.html deleted file mode 100644 index 7056fc7..0000000 --- a/tests/django_oscar/oscar/partials/google_analytics.html +++ /dev/null @@ -1,15 +0,0 @@ -{% if google_analytics_id %} - - -{% endif %} diff --git a/tests/django_oscar/oscar/partials/google_analytics_transaction.html b/tests/django_oscar/oscar/partials/google_analytics_transaction.html deleted file mode 100644 index 0be6021..0000000 --- a/tests/django_oscar/oscar/partials/google_analytics_transaction.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "oscar/partials/google_analytics.html" %} -{% load l10n %} -{% block extratracking %} - gtag('event', 'purchase', { - "transaction_id": '{{ order.number|escapejs }}', - "affiliation": '{{ shop_name|escapejs }}', - "value": '{{ order.total_incl_tax|unlocalize|escapejs }}', - "currency": '{{ order.currency|escapejs }}', - "tax": '{{ order.total_tax|unlocalize|escapejs }}', - "shipping": '{{ order.shipping_incl_tax|unlocalize|escapejs }}', - items: [ - {% for line in order.lines.all %} - { - 'id': '{{ line.partner_sku|escapejs }}', - 'name': '{{ line.title|escapejs }}', - 'category': '{{ line.category|default:"Uncategorised"|escapejs }}', - 'price': '{{ line.unit_price_incl_tax|unlocalize|escapejs }}', - 'quantity': '{{ line.quantity|escapejs }}' - } - {% if not forloop.last %},{% endif %} - {% endfor %} - ] - }); -{% endblock %} diff --git a/tests/django_oscar/oscar/partials/mini_basket.html b/tests/django_oscar/oscar/partials/mini_basket.html deleted file mode 100644 index 7497a48..0000000 --- a/tests/django_oscar/oscar/partials/mini_basket.html +++ /dev/null @@ -1,27 +0,0 @@ -{% load currency_filters %} -{% load i18n %} -
    - {% trans "Basket total:" %} - {% if request.basket.is_tax_known %} - {{ request.basket.total_incl_tax|currency:request.basket.currency }} - {% else %} - {{ request.basket.total_excl_tax|currency:request.basket.currency }} - {% endif %} -
    - - - -
    -
    diff --git a/tests/django_oscar/oscar/partials/nav_accounts.html b/tests/django_oscar/oscar/partials/nav_accounts.html deleted file mode 100644 index e5aea2d..0000000 --- a/tests/django_oscar/oscar/partials/nav_accounts.html +++ /dev/null @@ -1,88 +0,0 @@ -{% load i18n %} - diff --git a/tests/django_oscar/oscar/partials/nav_checkout.html b/tests/django_oscar/oscar/partials/nav_checkout.html deleted file mode 100644 index 1ecd4e8..0000000 --- a/tests/django_oscar/oscar/partials/nav_checkout.html +++ /dev/null @@ -1,35 +0,0 @@ - - diff --git a/tests/django_oscar/oscar/partials/nav_primary.html b/tests/django_oscar/oscar/partials/nav_primary.html deleted file mode 100644 index bc8146a..0000000 --- a/tests/django_oscar/oscar/partials/nav_primary.html +++ /dev/null @@ -1,80 +0,0 @@ -{% load currency_filters %} -{% load category_tags %} -{% load i18n %} - diff --git a/tests/django_oscar/oscar/partials/pagination.html b/tests/django_oscar/oscar/partials/pagination.html deleted file mode 100644 index 8931ce0..0000000 --- a/tests/django_oscar/oscar/partials/pagination.html +++ /dev/null @@ -1,31 +0,0 @@ -{% load display_tags %} -{% load i18n %} -{% if paginator.num_pages > 1 %} - -{% endif %} diff --git a/tests/django_oscar/oscar/partials/search.html b/tests/django_oscar/oscar/partials/search.html deleted file mode 100644 index b50562a..0000000 --- a/tests/django_oscar/oscar/partials/search.html +++ /dev/null @@ -1,7 +0,0 @@ -{% load i18n %} -
    - - -
    diff --git a/tests/django_oscar/oscar/registration/password_reset_complete.html b/tests/django_oscar/oscar/registration/password_reset_complete.html deleted file mode 100644 index fefa581..0000000 --- a/tests/django_oscar/oscar/registration/password_reset_complete.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends 'oscar/layout.html' %} -{% load i18n %} -{% block title %} - {% trans 'Password reset complete' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Password reset complete" %} -{% endblock %} -{% block content %} -

    - {% trans "Your password has been set. You may go ahead and log in now." %} -

    -

    - - {% trans 'Log in' %} - -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/registration/password_reset_confirm.html b/tests/django_oscar/oscar/registration/password_reset_confirm.html deleted file mode 100644 index 71f5441..0000000 --- a/tests/django_oscar/oscar/registration/password_reset_confirm.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends 'oscar/layout.html' %} -{% load i18n %} -{% block title %} - {% trans 'Enter a new password' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Enter a new password" %} -{% endblock %} -{% block content %} - {% if validlink %} -

    - {% trans "Please enter your new password twice so we can verify you typed it in correctly." %} -

    -
    - {% csrf_token %} - {% include 'oscar/partials/form_fields.html' %} -
    - -
    -
    - {% else %} -

    {% trans 'Password reset unsuccessful' %}

    -

    - {% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %} -

    - {% endif %} -{% endblock %} diff --git a/tests/django_oscar/oscar/registration/password_reset_done.html b/tests/django_oscar/oscar/registration/password_reset_done.html deleted file mode 100644 index 9156ab9..0000000 --- a/tests/django_oscar/oscar/registration/password_reset_done.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends 'oscar/layout.html' %} -{% load i18n %} -{% block title %} - {% trans 'Password reset email sent' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Email sent" %} -{% endblock %} -{% block content %} -

    - {% blocktrans %} - We've e-mailed you instructions for resetting your password. You should be receiving it shortly. - {% endblocktrans %} -

    -

    - {% blocktrans %} - If you don't receive an email, please make sure you've entered the address you registered with, and check - your spam folder. - {% endblocktrans %} -

    -{% endblock %} diff --git a/tests/django_oscar/oscar/registration/password_reset_form.html b/tests/django_oscar/oscar/registration/password_reset_form.html deleted file mode 100644 index 40fce8d..0000000 --- a/tests/django_oscar/oscar/registration/password_reset_form.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'oscar/layout.html' %} -{% load i18n %} -{% block title %} - {% trans 'Password reset' %} | {{ block.super }} -{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block headertext %} - {% trans "Password reset" %} -{% endblock %} -{% block content %} -
    - {% csrf_token %} -

    - {% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %} -

    - {% include 'oscar/partials/form_fields.html' with style='stacked' %} -
    - -
    -
    -{% endblock %} diff --git a/tests/django_oscar/oscar/search/indexes/product/item_text.txt b/tests/django_oscar/oscar/search/indexes/product/item_text.txt deleted file mode 100644 index 8fae4f4..0000000 --- a/tests/django_oscar/oscar/search/indexes/product/item_text.txt +++ /dev/null @@ -1,3 +0,0 @@ -{{ object.upc|default:"" }} -{{ object.title }} -{{ object.description|default:"" }} diff --git a/tests/django_oscar/oscar/search/partials/facet.html b/tests/django_oscar/oscar/search/partials/facet.html deleted file mode 100644 index 8b37073..0000000 --- a/tests/django_oscar/oscar/search/partials/facet.html +++ /dev/null @@ -1,25 +0,0 @@ -{% load i18n %} -
    - - {% for item in items %} -
    - {% if item.selected %} - - - {{ item.name }} - {% else %} - {% if item.disabled %} - - {{ item.name }} - {% else %} - - - {{ item.name }} - {% endif %} - {% endif %} - {% if item.show_count %}({{ item.count }}){% endif %} -
    - {% endfor %} -
    diff --git a/tests/django_oscar/oscar/search/results.html b/tests/django_oscar/oscar/search/results.html deleted file mode 100644 index dc5efd0..0000000 --- a/tests/django_oscar/oscar/search/results.html +++ /dev/null @@ -1,106 +0,0 @@ -{% extends "oscar/layout_2_col.html" %} -{% load currency_filters %} -{% load product_tags %} -{% load i18n %} -{% block title %}"{{ query }}" | {{ block.super }}{% endblock %} -{% block breadcrumbs %} - -{% endblock %} -{% block column_left %} - {% if has_facets %} -

    {% trans "Refine your search" %}

    -
    - {% for field, data in facet_data.items %} - {% if data.results %} - {% include 'oscar/search/partials/facet.html' with name=data.name items=data.results %} - {% endif %} - {% endfor %} -
    - {% endif %} -{% endblock %} -{% block headertext %} - {% blocktrans with q=query %} - Products matching "{{ q }}" - {% endblocktrans %} -{% endblock %} -{% block content %} -
    - {# Render other search params as hidden inputs #} - {% for value in selected_facets %} - - {% endfor %} - - {% if paginator.count %} - {% if paginator.num_pages > 1 %} - {% blocktrans with start=page.start_index end=page.end_index num_results=paginator.count %} - Found - {{ num_results }} - results, showing - {{ start }} - to - {{ end }} - . - {% endblocktrans %} - {% else %} - {% blocktrans count num_results=paginator.count %} - Found - {{ num_results }} - result. - {% plural %} - Found - {{ num_results }} - results. - {% endblocktrans %} - {% endif %} -
    - {% include "oscar/partials/form_field.html" with field=search_form.sort_by %} -
    - {% else %} -

    - {% trans "Found - 0 - results." %} - {% if suggestion %} - {% url 'search:search' as search_url %} - {% blocktrans %} - Did you mean - - "{{ suggestion }}" - - ? - {% endblocktrans %} - {% endif %} -

    - {% endif %} -
    - {% if page.object_list %} -
    -
    -
      - {% for result in page.object_list %} -
    1. - {% render_product result.object %} -
    2. - {% endfor %} -
    - {% include "oscar/partials/pagination.html" with page_obj=page %} -
    -
    - {% endif %} -{% endblock %} -{% block onbodyload %} - {{ block.super }} - oscar.search.init(); -{% endblock %} diff --git a/tests/django_rest/admin.html b/tests/django_rest/admin.html deleted file mode 100644 index 936514a..0000000 --- a/tests/django_rest/admin.html +++ /dev/null @@ -1,305 +0,0 @@ -{% load static %} -{% load i18n %} -{% load rest_framework %} - - - - {% block head %} - {% block meta %} - - - {% endblock %} - - {% block title %}Django REST framework{% endblock %} - - {% block style %} - {% block bootstrap_theme %} - - - {% endblock %} - - - {% endblock %} - {% endblock %} - - {% block body %} - -
    - {% block navbar %} - - {% endblock %} -
    - {% block breadcrumbs %} - - {% endblock %} - -
    - {% if 'GET' in allowed_methods %} -
    -
    -
    - - -
    -
    -
    - {% endif %} - {% if post_form %} - - {% endif %} - {% if put_form %} - - {% endif %} - {% if delete_form %} -
    - -
    - {% endif %} - {% if extra_actions %} - - {% endif %} - {% if filter_form %} - - {% endif %} -
    - -
    - {% block description %}{{ description }}{% endblock %} -
    - {% if paginator %} - - {% endif %} -
    - {% if style == 'list' %} - {% include "rest_framework/admin/list.html" %} - {% else %} - {% include "rest_framework/admin/detail.html" %} - {% endif %} -
    - {% if paginator %} - - {% endif %} -
    -
    - -
    - -
    - - - - - - {% if error_form %} - - - {% endif %} - {% if filter_form %}{{ filter_form }}{% endif %} - {% block script %} - - - - - - - - - {% endblock %} - - {% endblock %} - diff --git a/tests/django_rest/admin/detail.html b/tests/django_rest/admin/detail.html deleted file mode 100644 index 7537956..0000000 --- a/tests/django_rest/admin/detail.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load rest_framework %} - - - {% for key, value in results|items %} - {% if key in details %} - - - - - {% endif %} - {% endfor %} - -
    {{ key|capfirst }}{{ value|format_value }}
    diff --git a/tests/django_rest/admin/dict_value.html b/tests/django_rest/admin/dict_value.html deleted file mode 100644 index 37bf0be..0000000 --- a/tests/django_rest/admin/dict_value.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load rest_framework %} - - - {% for k, v in value|items %} - - - - - {% endfor %} - -
    {{ k|format_value }}{{ v|format_value }}
    diff --git a/tests/django_rest/admin/list.html b/tests/django_rest/admin/list.html deleted file mode 100644 index b159ffe..0000000 --- a/tests/django_rest/admin/list.html +++ /dev/null @@ -1,29 +0,0 @@ -{% load rest_framework %} - - - - {% for column in columns %}{% endfor %} - - - - - {% for row in results %} - - {% for key, value in row|items %} - {% if key in columns %} - - {% endif %} - {% endfor %} - - - {% endfor %} - -
    {{ column|capfirst }}
    {{ value|format_value }} - {% if row.url %} - - - - {% else %} - - {% endif %} -
    diff --git a/tests/django_rest/admin/list_value.html b/tests/django_rest/admin/list_value.html deleted file mode 100644 index 24ee569..0000000 --- a/tests/django_rest/admin/list_value.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load rest_framework %} - - - {% for item in value %} - - - - - {% endfor %} - -
    {{ forloop.counter0 }}{{ item|format_value }}
    diff --git a/tests/django_rest/admin/simple_list_value.html b/tests/django_rest/admin/simple_list_value.html deleted file mode 100644 index 01997f6..0000000 --- a/tests/django_rest/admin/simple_list_value.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load rest_framework %} -{% for item in value %} - {% if not forloop.first %},{% endif %} - {{ item|format_value }} -{% endfor %} diff --git a/tests/django_rest/api.html b/tests/django_rest/api.html deleted file mode 100644 index 0b5ef96..0000000 --- a/tests/django_rest/api.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends "rest_framework/base.html" %} -{# Override this template in your own templates directory to customize #} diff --git a/tests/django_rest/base.html b/tests/django_rest/base.html deleted file mode 100644 index 9101dcb..0000000 --- a/tests/django_rest/base.html +++ /dev/null @@ -1,383 +0,0 @@ -{% load static %} -{% load i18n %} -{% load rest_framework %} - - - - {% block head %} - {% block meta %} - - - {% endblock %} - - {% block title %} - {% if name %}{{ name }} – {% endif %} - Django REST framework - {% endblock %} - - {% block style %} - {% block bootstrap_theme %} - - - {% endblock %} - - - {% if code_style %} - - {% endif %} - {% endblock %} - {% endblock %} - - {% block body %} - -
    - {% block navbar %} - - {% endblock %} -
    - {% block breadcrumbs %} - - {% endblock %} - -
    - {% block content %} -
    - {% block request_forms %} - {% if 'GET' in allowed_methods %} -
    -
    - {% if api_settings.URL_FORMAT_OVERRIDE %} -
    - - GET - - - -
    - {% else %} - - GET - - {% endif %} -
    -
    - {% endif %} - {% if options_form %} -
    - -
    - {% endif %} - {% if delete_form %} - - - - {% endif %} - {% if extra_actions %} - - {% endif %} - {% if filter_form %} - - {% endif %} - {% endblock request_forms %} -
    -
    - -
    - {% block description %}{{ description }}{% endblock %} -
    - {% if paginator %} - - {% endif %} -
    -
    -                                    {{ request.method }} {{ request.get_full_path }}
    -
    -
    -
    HTTP {{ response.status_code }} {{ response.status_text }}{% for key, val in response_headers|items %}
    -{{ key }}: {{ val|break_long_headers|urlize }}{% endfor %}
    -
    -{{ content|urlize }}
    -                                
    -
    -
    - {% if display_edit_forms %} - {% if post_form or raw_data_post_form %} -
    - {% if post_form %} - - {% endif %} -
    - {% if post_form %} -
    - {% with form=post_form %} -
    -
    - {% csrf_token %} - {{ post_form }} -
    - -
    -
    -
    - {% endwith %} -
    - {% endif %} -
    - {% with form=raw_data_post_form %} -
    -
    - {% include "rest_framework/raw_data_form.html" %} -
    - -
    -
    -
    - {% endwith %} -
    -
    -
    - {% endif %} - {% if put_form or raw_data_put_form or raw_data_patch_form %} -
    - {% if put_form %} - - {% endif %} -
    - {% if put_form %} -
    -
    -
    - {{ put_form }} -
    - -
    -
    -
    -
    - {% endif %} -
    - {% with form=raw_data_put_or_patch_form %} -
    -
    - {% include "rest_framework/raw_data_form.html" %} -
    - {% if raw_data_put_form %} - - {% endif %} - {% if raw_data_patch_form %} - - {% endif %} -
    -
    -
    - {% endwith %} -
    -
    -
    - {% endif %} - {% endif %} - {% endblock content %} -
    - -
    - -
    - - {% if filter_form %}{{ filter_form }}{% endif %} - {% block script %} - - - - - - - - - {% endblock %} - -{% endblock %} - diff --git a/tests/django_rest/docs/auth/basic.html b/tests/django_rest/docs/auth/basic.html deleted file mode 100644 index dd31a04..0000000 --- a/tests/django_rest/docs/auth/basic.html +++ /dev/null @@ -1,44 +0,0 @@ -{% load rest_framework %} - - diff --git a/tests/django_rest/docs/auth/session.html b/tests/django_rest/docs/auth/session.html deleted file mode 100644 index 1b65dfb..0000000 --- a/tests/django_rest/docs/auth/session.html +++ /dev/null @@ -1,39 +0,0 @@ -{% load rest_framework %} - - diff --git a/tests/django_rest/docs/auth/token.html b/tests/django_rest/docs/auth/token.html deleted file mode 100644 index 453b834..0000000 --- a/tests/django_rest/docs/auth/token.html +++ /dev/null @@ -1,70 +0,0 @@ -{% load rest_framework %} - - diff --git a/tests/django_rest/docs/document.html b/tests/django_rest/docs/document.html deleted file mode 100644 index bb7e0b0..0000000 --- a/tests/django_rest/docs/document.html +++ /dev/null @@ -1,34 +0,0 @@ -{% load rest_framework %} -
    -
    -

    {{ document.title }}

    - {% if document.description %} -

    - {% render_markdown document.description %} -

    - {% endif %} -
    -
    - {% for html in lang_intro_htmls %} - {% include html %} - {% endfor %} -
    -
    -{% if document|data %} - {% for section_key, section in document|data|items %} - {% if section_key %} -

    - {{ section_key }} - - - -

    - {% endif %} - {% for link_key, link in section|schema_links|items %} - {% include "rest_framework/docs/link.html" %} - {% endfor %} - {% endfor %} - {% for link_key, link in document.links|items %} - {% include "rest_framework/docs/link.html" %} - {% endfor %} -{% endif %} diff --git a/tests/django_rest/docs/error.html b/tests/django_rest/docs/error.html deleted file mode 100644 index 3b8e296..0000000 --- a/tests/django_rest/docs/error.html +++ /dev/null @@ -1,71 +0,0 @@ -{% load static %} - - - - - - - Error Rendering Schema - - -

    Error

    -
    -{{ data }}
    -        
    - {% if debug is True %} -
    -

    Additional Information

    -

    Note: You are seeing this message because DEBUG==True.

    -

    Seeing this page is usually a configuration error: are your - DEFAULT_AUTHENTICATION_CLASSES or DEFAULT_PERMISSION_CLASSES - being applied unexpectedly?

    -

    Your response status code is: {{ response.status_code }}

    -

    401 Unauthorised.

    -
      -
    • Do you have SessionAuthentication enabled?
    • -
    • Are you logged in?
    • -
    -

    403 Forbidden.

    -
      -
    • Do you have sufficient permissions to access this view?
    • -
    • Is you schema non-empty? (An empty schema will lead to a permission denied error being raised.)
    • -
    -

    Most commonly the intended solution is to disable authentication and permissions - when including the docs urls:

    -
    -   path('docs/', include_docs_urls(title='Your API',
    -                                    authentication_classes=[],
    -                                    permission_classes=[])),
    -                
    -

    Overriding this template

    -

    - If you wish access to your docs to be authenticated you may override this template - at - - rest_framework/docs/error.html - - . -

    -

    - The available context is: - - data - - the error dict above, - - request - - , - - response - - and the - - debug - - flag. -

    - {% endif %} - - - diff --git a/tests/django_rest/docs/index.html b/tests/django_rest/docs/index.html deleted file mode 100644 index e3476ea..0000000 --- a/tests/django_rest/docs/index.html +++ /dev/null @@ -1,51 +0,0 @@ -{% load static %} - - - - - - - {{ document.title }} - - - - - - - {% if code_style %} - - {% endif %} - - - - - {% include "rest_framework/docs/sidebar.html" %} -
    -
    -
    - {% include "rest_framework/docs/document.html" %} -
    -
    -
    - {% include "rest_framework/docs/auth/token.html" %} - {% include "rest_framework/docs/auth/basic.html" %} - {% include "rest_framework/docs/auth/session.html" %} - - - - - - - diff --git a/tests/django_rest/docs/interact.html b/tests/django_rest/docs/interact.html deleted file mode 100644 index d70aaee..0000000 --- a/tests/django_rest/docs/interact.html +++ /dev/null @@ -1,57 +0,0 @@ -{% load rest_framework %} - - diff --git a/tests/django_rest/docs/langs/javascript-intro.html b/tests/django_rest/docs/langs/javascript-intro.html deleted file mode 100644 index 0f1fa7d..0000000 --- a/tests/django_rest/docs/langs/javascript-intro.html +++ /dev/null @@ -1,7 +0,0 @@ -{% load rest_framework %} -{% load static %} -
    -    {% code html %}
    -    
    -    {% endcode %}
    -
    diff --git a/tests/django_rest/docs/langs/javascript.html b/tests/django_rest/docs/langs/javascript.html deleted file mode 100644 index ae7b84b..0000000 --- a/tests/django_rest/docs/langs/javascript.html +++ /dev/null @@ -1,17 +0,0 @@ -{% load rest_framework %} -
    -{% code javascript %}var coreapi = window.coreapi  // Loaded by `coreapi.js`
    -var schema = window.schema    // Loaded by `schema.js`
    -
    -// Initialize a client
    -var client = new coreapi.Client()
    -
    -// Interact with the API endpoint
    -var action = [{% if section_key %}"{{ section_key }}", {% endif %}"{{ link_key }}"]
    -{% if link.fields %}var params = {
    -{% for field in link.fields %}    {{ field.name }}: ...{% if not loop.last %},{% endif %}
    -{% endfor % }}
    -{% endif %}client.action(schema, action{% if link.fields %}, params{% endif %}).then(function(result) {
    -    // Return value is in 'result'
    -}){% endcode %}
    -
    diff --git a/tests/django_rest/docs/langs/python-intro.html b/tests/django_rest/docs/langs/python-intro.html deleted file mode 100644 index 50e3769..0000000 --- a/tests/django_rest/docs/langs/python-intro.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load rest_framework %} -
    -{% code bash %}# Install the Python client library
    -$ pip install coreapi{% endcode %}
    -
    diff --git a/tests/django_rest/docs/langs/python.html b/tests/django_rest/docs/langs/python.html deleted file mode 100644 index 8c358e2..0000000 --- a/tests/django_rest/docs/langs/python.html +++ /dev/null @@ -1,15 +0,0 @@ -{% load rest_framework %} -
    -{% code python %}import coreapi
    -
    -# Initialize a client & load the schema document
    -client = coreapi.Client()
    -schema = client.get("{{ document.url }}"{% if schema_format %}, format="{{ schema_format }}"{% endif %})
    -
    -# Interact with the API endpoint
    -action = [{% if section_key %}"{{ section_key }}", {% endif %}"{{ link_key }}"]
    -{% if link.fields %}params = {
    -{% for field in link.fields %}    "{{ field.name }}": ...{% if not loop.last %},{% endif %}
    -{% endfor % }}
    -{% endif %}result = client.action(schema, action{% if link.fields %}, params=params{% endif %}){% endcode %}
    -
    diff --git a/tests/django_rest/docs/langs/shell-intro.html b/tests/django_rest/docs/langs/shell-intro.html deleted file mode 100644 index 9a32f9d..0000000 --- a/tests/django_rest/docs/langs/shell-intro.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load rest_framework %} -
    -{% code bash %}# Install the command line client
    -$ pip install coreapi-cli{% endcode %}
    -
    diff --git a/tests/django_rest/docs/langs/shell.html b/tests/django_rest/docs/langs/shell.html deleted file mode 100644 index c7dc781..0000000 --- a/tests/django_rest/docs/langs/shell.html +++ /dev/null @@ -1,8 +0,0 @@ -{% load rest_framework %} -
    -{% code bash %}# Load the schema document
    -$ coreapi get {{ document.url }}{% if schema_format %}--format {{ schema_format }}{% endif %}
    -
    -# Interact with the API endpoint
    -$ coreapi action {% if section_key %}{{ section_key }} {% endif %}{{ link_key|cut:"> " }}{% for field in link.fields %}-p {{ field.name }}=...{% endfor %}{% endcode %}
    -
    diff --git a/tests/django_rest/docs/link.html b/tests/django_rest/docs/link.html deleted file mode 100644 index 31092ab..0000000 --- a/tests/django_rest/docs/link.html +++ /dev/null @@ -1,185 +0,0 @@ -{% load rest_framework %} - -{% include "rest_framework/docs/interact.html" with link=link %} diff --git a/tests/django_rest/docs/sidebar.html b/tests/django_rest/docs/sidebar.html deleted file mode 100644 index d74e7f5..0000000 --- a/tests/django_rest/docs/sidebar.html +++ /dev/null @@ -1,90 +0,0 @@ -{% load rest_framework %} - diff --git a/tests/django_rest/filters/base.html b/tests/django_rest/filters/base.html deleted file mode 100644 index 34e79d3..0000000 --- a/tests/django_rest/filters/base.html +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/tests/django_rest/filters/ordering.html b/tests/django_rest/filters/ordering.html deleted file mode 100644 index a18da19..0000000 --- a/tests/django_rest/filters/ordering.html +++ /dev/null @@ -1,17 +0,0 @@ -{% load rest_framework %} -{% load i18n %} -

    {% trans "Ordering" %}

    -
    - {% for key, label in options %} - {% if key == current %} - - - {{ label }} - - {% else %} - - {{ label }} - - {% endif %} - {% endfor %} -
    diff --git a/tests/django_rest/filters/search.html b/tests/django_rest/filters/search.html deleted file mode 100644 index 32d07f5..0000000 --- a/tests/django_rest/filters/search.html +++ /dev/null @@ -1,15 +0,0 @@ -{% load i18n %} -

    {% trans "Search" %}

    -
    -
    -
    - - - - -
    -
    -
    diff --git a/tests/django_rest/horizontal/checkbox.html b/tests/django_rest/horizontal/checkbox.html deleted file mode 100644 index edb4770..0000000 --- a/tests/django_rest/horizontal/checkbox.html +++ /dev/null @@ -1,18 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -
    - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/checkbox_multiple.html b/tests/django_rest/horizontal/checkbox_multiple.html deleted file mode 100644 index 1c5eb26..0000000 --- a/tests/django_rest/horizontal/checkbox_multiple.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} - - {% endif %} -
    - {% if style.inline %} - {% for key, text in field.choices|items %} - - {% endfor %} - {% else %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} - {% endif %} - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/dict_field.html b/tests/django_rest/horizontal/dict_field.html deleted file mode 100644 index 437350c..0000000 --- a/tests/django_rest/horizontal/dict_field.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -
    -

    - Dictionaries are not currently supported in HTML input. -

    -
    -
    diff --git a/tests/django_rest/horizontal/fieldset.html b/tests/django_rest/horizontal/fieldset.html deleted file mode 100644 index 069b5b6..0000000 --- a/tests/django_rest/horizontal/fieldset.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} -
    - - {{ field.label }} - -
    - {% endif %} - {% for nested_field in field %} - {% if not nested_field.read_only %} - {% render_field nested_field style=style %} - {% endif %} - {% endfor %} -
    diff --git a/tests/django_rest/horizontal/form.html b/tests/django_rest/horizontal/form.html deleted file mode 100644 index fa969e7..0000000 --- a/tests/django_rest/horizontal/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load rest_framework %} -{% for field in form %} - {% if not field.read_only %} - {% render_field field style=style %} - {% endif %} -{% endfor %} diff --git a/tests/django_rest/horizontal/input.html b/tests/django_rest/horizontal/input.html deleted file mode 100644 index eb5d5bf..0000000 --- a/tests/django_rest/horizontal/input.html +++ /dev/null @@ -1,21 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -
    - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/list_field.html b/tests/django_rest/horizontal/list_field.html deleted file mode 100644 index f49a5cf..0000000 --- a/tests/django_rest/horizontal/list_field.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -
    -

    - Lists are not currently supported in HTML input. -

    -
    -
    diff --git a/tests/django_rest/horizontal/list_fieldset.html b/tests/django_rest/horizontal/list_fieldset.html deleted file mode 100644 index 9ffbb5a..0000000 --- a/tests/django_rest/horizontal/list_fieldset.html +++ /dev/null @@ -1,14 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} -
    - - {{ field.label }} - -
    - {% endif %} -

    - Lists are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/horizontal/radio.html b/tests/django_rest/horizontal/radio.html deleted file mode 100644 index 5b2b1a3..0000000 --- a/tests/django_rest/horizontal/radio.html +++ /dev/null @@ -1,60 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "None" as none_choice %} -
    - {% if field.label %} - - {% endif %} -
    - {% if style.inline %} - {% if field.allow_null or field.allow_blank %} - - {% endif %} - {% for key, text in field.choices|items %} - - {% endfor %} - {% else %} - {% if field.allow_null or field.allow_blank %} -
    - -
    - {% endif %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} - {% endif %} - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/select.html b/tests/django_rest/horizontal/select.html deleted file mode 100644 index 30a7615..0000000 --- a/tests/django_rest/horizontal/select.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} - - {% endif %} -
    - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/select_multiple.html b/tests/django_rest/horizontal/select_multiple.html deleted file mode 100644 index 441f910..0000000 --- a/tests/django_rest/horizontal/select_multiple.html +++ /dev/null @@ -1,40 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "No items to select." as no_items %} -
    - {% if field.label %} - - {% endif %} -
    - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/horizontal/textarea.html b/tests/django_rest/horizontal/textarea.html deleted file mode 100644 index 6fa3d8d..0000000 --- a/tests/django_rest/horizontal/textarea.html +++ /dev/null @@ -1,21 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -
    - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    -
    diff --git a/tests/django_rest/inline/checkbox.html b/tests/django_rest/inline/checkbox.html deleted file mode 100644 index af7505e..0000000 --- a/tests/django_rest/inline/checkbox.html +++ /dev/null @@ -1,10 +0,0 @@ -
    -
    - -
    -
    diff --git a/tests/django_rest/inline/checkbox_multiple.html b/tests/django_rest/inline/checkbox_multiple.html deleted file mode 100644 index b0be227..0000000 --- a/tests/django_rest/inline/checkbox_multiple.html +++ /dev/null @@ -1,16 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %}{% endif %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} -
    diff --git a/tests/django_rest/inline/dict_field.html b/tests/django_rest/inline/dict_field.html deleted file mode 100644 index 4531b0f..0000000 --- a/tests/django_rest/inline/dict_field.html +++ /dev/null @@ -1,6 +0,0 @@ -
    - {% if field.label %}{% endif %} -

    - Dictionaries are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/inline/fieldset.html b/tests/django_rest/inline/fieldset.html deleted file mode 100644 index e49b42f..0000000 --- a/tests/django_rest/inline/fieldset.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load rest_framework %} -{% for nested_field in field %} - {% if not nested_field.read_only %} - {% render_field nested_field style=style %} - {% endif %} -{% endfor %} diff --git a/tests/django_rest/inline/form.html b/tests/django_rest/inline/form.html deleted file mode 100644 index fa969e7..0000000 --- a/tests/django_rest/inline/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load rest_framework %} -{% for field in form %} - {% if not field.read_only %} - {% render_field field style=style %} - {% endif %} -{% endfor %} diff --git a/tests/django_rest/inline/input.html b/tests/django_rest/inline/input.html deleted file mode 100644 index 46ad6e6..0000000 --- a/tests/django_rest/inline/input.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %}{% endif %} - -
    diff --git a/tests/django_rest/inline/list_field.html b/tests/django_rest/inline/list_field.html deleted file mode 100644 index 584c2e5..0000000 --- a/tests/django_rest/inline/list_field.html +++ /dev/null @@ -1,6 +0,0 @@ -
    - {% if field.label %}{% endif %} -

    - Lists are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/inline/list_fieldset.html b/tests/django_rest/inline/list_fieldset.html deleted file mode 100644 index 2ae56d7..0000000 --- a/tests/django_rest/inline/list_fieldset.html +++ /dev/null @@ -1 +0,0 @@ -Lists are not currently supported in HTML input. diff --git a/tests/django_rest/inline/radio.html b/tests/django_rest/inline/radio.html deleted file mode 100644 index d712257..0000000 --- a/tests/django_rest/inline/radio.html +++ /dev/null @@ -1,28 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "None" as none_choice %} -
    - {% if field.label %}{% endif %} - {% if field.allow_null or field.allow_blank %} -
    - -
    - {% endif %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} -
    diff --git a/tests/django_rest/inline/select.html b/tests/django_rest/inline/select.html deleted file mode 100644 index 543a6c1..0000000 --- a/tests/django_rest/inline/select.html +++ /dev/null @@ -1,29 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %}{% endif %} - -
    diff --git a/tests/django_rest/inline/select_multiple.html b/tests/django_rest/inline/select_multiple.html deleted file mode 100644 index e357345..0000000 --- a/tests/django_rest/inline/select_multiple.html +++ /dev/null @@ -1,28 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "No items to select." as no_items %} -
    - {% if field.label %}{% endif %} - -
    diff --git a/tests/django_rest/inline/textarea.html b/tests/django_rest/inline/textarea.html deleted file mode 100644 index 5fe1286..0000000 --- a/tests/django_rest/inline/textarea.html +++ /dev/null @@ -1,7 +0,0 @@ -
    - {% if field.label %}{% endif %} - -
    diff --git a/tests/django_rest/login.html b/tests/django_rest/login.html deleted file mode 100644 index 6c8d589..0000000 --- a/tests/django_rest/login.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends "rest_framework/login_base.html" %} -{# Override this template in your own templates directory to customize #} diff --git a/tests/django_rest/login_base.html b/tests/django_rest/login_base.html deleted file mode 100644 index 4844e95..0000000 --- a/tests/django_rest/login_base.html +++ /dev/null @@ -1,79 +0,0 @@ -{% extends "rest_framework/base.html" %} -{% load rest_framework %} -{% block body %} - -
    -
    -
    -
    -
    - {% block branding %} -

    Django REST framework

    - {% endblock %} -
    -
    - -
    -
    -
    - {% csrf_token %} - -
    -
    - - - {% if form.username.errors %} -

    - {{ form.username.errors|striptags }} -

    - {% endif %} -
    -
    -
    -
    - - - {% if form.password.errors %} -

    - {{ form.password.errors|striptags }} -

    - {% endif %} -
    -
    - {% if form.non_field_errors %} - {% for error in form.non_field_errors %} -
    - {{ error }} -
    - {% endfor %} - {% endif %} -
    - -
    -
    -
    -
    - -
    - -
    - -
    - - -{% endblock %} diff --git a/tests/django_rest/pagination/numbers.html b/tests/django_rest/pagination/numbers.html deleted file mode 100644 index 137a198..0000000 --- a/tests/django_rest/pagination/numbers.html +++ /dev/null @@ -1,47 +0,0 @@ - diff --git a/tests/django_rest/pagination/previous_and_next.html b/tests/django_rest/pagination/previous_and_next.html deleted file mode 100644 index 42c96e0..0000000 --- a/tests/django_rest/pagination/previous_and_next.html +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/tests/django_rest/raw_data_form.html b/tests/django_rest/raw_data_form.html deleted file mode 100644 index f3c27d4..0000000 --- a/tests/django_rest/raw_data_form.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load rest_framework %} -{{ form.non_field_errors }} -{% for field in form %} -
    - {{ field.label_tag|add_class:"col-sm-2 control-label" }} -
    - {{ field|add_class:"form-control" }} - {{ field.help_text|safe }} -
    -
    -{% endfor %} diff --git a/tests/django_rest/schema.js b/tests/django_rest/schema.js deleted file mode 100644 index 692cb90..0000000 --- a/tests/django_rest/schema.js +++ /dev/null @@ -1,3 +0,0 @@ -var codec = new window.coreapi.codecs.CoreJSONCodec() -var coreJSON = window.atob('{{ schema }}') -window.schema = codec.decode(coreJSON) diff --git a/tests/django_rest/vertical/checkbox.html b/tests/django_rest/vertical/checkbox.html deleted file mode 100644 index 4e70b14..0000000 --- a/tests/django_rest/vertical/checkbox.html +++ /dev/null @@ -1,16 +0,0 @@ -
    -
    - -
    - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/checkbox_multiple.html b/tests/django_rest/vertical/checkbox_multiple.html deleted file mode 100644 index 107e957..0000000 --- a/tests/django_rest/vertical/checkbox_multiple.html +++ /dev/null @@ -1,43 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} - - {% endif %} - {% if style.inline %} -
    - {% for key, text in field.choices|items %} - - {% endfor %} -
    - {% else %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} - {% endif %} - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/dict_field.html b/tests/django_rest/vertical/dict_field.html deleted file mode 100644 index 75ffb16..0000000 --- a/tests/django_rest/vertical/dict_field.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -

    - Dictionaries are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/vertical/fieldset.html b/tests/django_rest/vertical/fieldset.html deleted file mode 100644 index 5c11108..0000000 --- a/tests/django_rest/vertical/fieldset.html +++ /dev/null @@ -1,15 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} - - {{ field.label }} - - {% endif %} - {% for nested_field in field %} - {% if not nested_field.read_only %} - {% render_field nested_field style=style %} - {% endif %} - {% endfor %} -
    diff --git a/tests/django_rest/vertical/form.html b/tests/django_rest/vertical/form.html deleted file mode 100644 index fa969e7..0000000 --- a/tests/django_rest/vertical/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load rest_framework %} -{% for field in form %} - {% if not field.read_only %} - {% render_field field style=style %} - {% endif %} -{% endfor %} diff --git a/tests/django_rest/vertical/input.html b/tests/django_rest/vertical/input.html deleted file mode 100644 index 9e9b2ba..0000000 --- a/tests/django_rest/vertical/input.html +++ /dev/null @@ -1,21 +0,0 @@ -
    - {% if field.label %} - - {% endif %} - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/list_field.html b/tests/django_rest/vertical/list_field.html deleted file mode 100644 index d562ff5..0000000 --- a/tests/django_rest/vertical/list_field.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %} - - {% endif %} -

    - Lists are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/vertical/list_fieldset.html b/tests/django_rest/vertical/list_fieldset.html deleted file mode 100644 index e834558..0000000 --- a/tests/django_rest/vertical/list_fieldset.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - {% if field.label %} - - {{ field.label }} - - {% endif %} -

    - Lists are not currently supported in HTML input. -

    -
    diff --git a/tests/django_rest/vertical/radio.html b/tests/django_rest/vertical/radio.html deleted file mode 100644 index 09355af..0000000 --- a/tests/django_rest/vertical/radio.html +++ /dev/null @@ -1,59 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "None" as none_choice %} -
    - {% if field.label %} - - {% endif %} - {% if style.inline %} -
    - {% if field.allow_null or field.allow_blank %} - - {% endif %} - {% for key, text in field.choices|items %} - - {% endfor %} -
    - {% else %} - {% if field.allow_null or field.allow_blank %} -
    - -
    - {% endif %} - {% for key, text in field.choices|items %} -
    - -
    - {% endfor %} - {% endif %} - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/select.html b/tests/django_rest/vertical/select.html deleted file mode 100644 index 99e3883..0000000 --- a/tests/django_rest/vertical/select.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load rest_framework %} -
    - {% if field.label %} - - {% endif %} - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/select_multiple.html b/tests/django_rest/vertical/select_multiple.html deleted file mode 100644 index 93dae46..0000000 --- a/tests/django_rest/vertical/select_multiple.html +++ /dev/null @@ -1,40 +0,0 @@ -{% load i18n %} -{% load rest_framework %} -{% trans "No items to select." as no_items %} -
    - {% if field.label %} - - {% endif %} - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/django_rest/vertical/textarea.html b/tests/django_rest/vertical/textarea.html deleted file mode 100644 index dd47eef..0000000 --- a/tests/django_rest/vertical/textarea.html +++ /dev/null @@ -1,21 +0,0 @@ -
    - {% if field.label %} - - {% endif %} - - {% if field.errors %} - {% for error in field.errors %}{{ error }}{% endfor %} - {% endif %} - {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
    diff --git a/tests/flask_admin/bootstrap2/admin/actions.html b/tests/flask_admin/bootstrap2/admin/actions.html deleted file mode 100644 index 797f524..0000000 --- a/tests/flask_admin/bootstrap2/admin/actions.html +++ /dev/null @@ -1,40 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% macro dropdown(actions, btn_class='dropdown-toggle') - %} - - {{ _gettext('With selected') }} - - - -{% endmacro %} -{% macro form(actions, url) %} -{% if actions %} - -{% endif %} -{% endmacro %} -{% macro script(message, actions, actions_confirmation) %} -{% if actions %} - - - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/base.html b/tests/flask_admin/bootstrap2/admin/base.html deleted file mode 100644 index 82d0113..0000000 --- a/tests/flask_admin/bootstrap2/admin/base.html +++ /dev/null @@ -1,79 +0,0 @@ -{% import 'admin/layout.html' as layout with context - %} -{% import 'admin/static.html' as admin_static with context %} - - - - - {% block title %} - {% if admin_view.category %}{{ admin_view.category }} - {% endif %} - {{ admin_view.name }} - {{ admin_view.admin.name }} - {% endblock %} - - {% block head_meta %} - - - - - - {% endblock %} - {% block head_css %} - - - - {% if admin_view.extra_css %} - {% for css_url in admin_view.extra_css %} - - {% endfor %} - {% endif %} - - {% endblock %} - {% block head %}{% endblock %} - {% block head_tail %}{% endblock %} - - - {% block page_body %} -
    - - {% block messages %}{{ layout.messages() }}{% endblock %} - {# store the jinja2 context for form_rules rendering logic #} - {% set render_ctx = h.resolve_ctx() %} - {% block body %}{% endblock %}
    {% endblock %} - {% block tail_js %} - - - - - {% if admin_view.extra_js %} - {% for js_url in admin_view.extra_js %} - - {% endfor %} - {% endif %} - {% endblock %} - {% block tail %}{% endblock %} - - diff --git a/tests/flask_admin/bootstrap2/admin/file/form.html b/tests/flask_admin/bootstrap2/admin/file/form.html deleted file mode 100644 index 3052310..0000000 --- a/tests/flask_admin/bootstrap2/admin/file/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block header %}

    {{ header_text }}

    {% endblock %} - {% block fa_form %}{{ lib.render_form(form, dir_url) }}{% endblock %} -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/file/list.html b/tests/flask_admin/bootstrap2/admin/file/list.html deleted file mode 100644 index 9660995..0000000 --- a/tests/flask_admin/bootstrap2/admin/file/list.html +++ /dev/null @@ -1,211 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/actions.html' as actionslib with context %} -{% block body %} - {% block breadcrums %} - - {% endblock %} - {% block file_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - - {% for column in admin_view.column_list %} - - {% endfor %} - {% endblock %} - - - {% for name, path, is_dir, size, date in items %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - - {% if is_dir %} - - {% else %} - - {% if admin_view.is_column_visible('size') %} - - {% endif %} - {% if admin_view.is_column_visible('date') %} - - {% endif %} - {% endif %} - {% endblock %} - - {% endfor %} -
    - -   - {% if admin_view.is_column_sortable(column) %} - {% if sort_column == column %} - - {{ admin_view.column_label(column) }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ admin_view.column_label(column) }} - - {% endif %} - {% else %} - {{ _gettext(admin_view.column_label(column)) }} - {% endif %} -
    - {% if not is_dir %} - - {% endif %} - - {% block list_row_actions scoped %} - {% if admin_view.can_rename and path and name != '..' %} - {%- if admin_view.rename_modal - %} - {{ lib.add_modal_button(url=get_url('.rename', path=path, modal=True), - title=_gettext('Rename File'), - content=' - - ') }} - {% else %} - - - - {%- endif - %} - {% endif %} - {%- if admin_view.can_delete and path - %} - {% if is_dir %} - {% if name != '..' and admin_view.can_delete_dirs %} -
    - {{ delete_form.path(value=path) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    - {% endif %} - {% else %} -
    - {{ delete_form.path(value=path) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    - {% endif %} - {%- endif - %} - {% endblock %} -
    - - - {{ name }} - - - {% if admin_view.can_download %} - {%- if admin_view.edit_modal and admin_view.is_file_editable(path) - %} - {{ lib.add_modal_button(url=get_file_url(path, modal=True)|safe, - btn_class='', content=name) }} - {% else %} - {{ name }} - {%- endif - %} - {% else %} - {{ name }} - {% endif %} - {{ size|filesizeformat }}{{ timestamp_format(date) }}
    -
    - {% endblock %} - {% block toolbar %} -
    - {% if admin_view.can_upload %} -
    - {%- if admin_view.upload_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.upload', path=dir_path, modal=True), - btn_class="btn btn-large", - content=_gettext('Upload File')) }} - {% else %} - - {{ _gettext('Upload File') }} - - {%- endif - %} -
    - {% endif %} - {% if admin_view.can_mkdir %} -
    - {%- if admin_view.mkdir_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.mkdir', path=dir_path, modal=True), - btn_class="btn btn-large", - content=_gettext('Create Directory')) }} - {% else %} - - {{ _gettext('Create Directory') }} - - {%- endif - %} -
    - {% endif %} - {% if actions %} -
    - {{ actionslib.dropdown(actions, 'dropdown-toggle btn btn-large') }} -
    - {% endif %} -
    - {% endblock %} - {% block actions %} - {{ actionslib.form(actions, get_url('.action_view')) }} - {% endblock %} - {%- if admin_view.rename_modal or admin_view.mkdir_modal - or admin_view.upload_modal or admin_view.edit_modal -%} - {{ lib.add_modal_window() }} - {%- endif - %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ actionslib.script(_gettext('Please select at least one file.'), - actions, - actions_confirmation) }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/file/modals/form.html b/tests/flask_admin/bootstrap2/admin/file/modals/form.html deleted file mode 100644 index c9efe92..0000000 --- a/tests/flask_admin/bootstrap2/admin/file/modals/form.html +++ /dev/null @@ -1,15 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {# content added to modal-content #} - {% block fa_form %} - {{ lib.render_form(form, dir_url, action=request.url, is_modal=True) }} - {% endblock %} -{% endblock %} -{% block tail %} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/index.html b/tests/flask_admin/bootstrap2/admin/index.html deleted file mode 100644 index 6c4bda4..0000000 --- a/tests/flask_admin/bootstrap2/admin/index.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends 'admin/master.html' %} -{% block body %}{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/layout.html b/tests/flask_admin/bootstrap2/admin/layout.html deleted file mode 100644 index 2076ab5..0000000 --- a/tests/flask_admin/bootstrap2/admin/layout.html +++ /dev/null @@ -1,105 +0,0 @@ -{% macro menu_icon(item) - %} -{% set icon_type = item.get_icon_type() %} -{%- if icon_type %} -{% set icon_value = item.get_icon_value() %} -{% if icon_type == 'glyph' %} - -{% elif icon_type == 'fa' %} - -{% elif icon_type == 'image' %} - menu image -{% elif icon_type == 'image-url' %} - menu image -{% endif %} -{% endif %} -{%- endmacro %} -{% macro menu(menu_root=None) %} -{% if menu_root is none %} - {% set menu_root = admin_view.admin.menu() %} -{% endif %} -{%- for item in menu_root %} -{%- if item.is_category() - %} -{% set children = item.get_children() %} -{%- if children %} -{% set class_name = item.get_class_name() or '' %} -{%- if item.is_active(admin_view) %} - - {% endif %} - {%- else %} - {%- if item.is_accessible() and item.is_visible() - %} - {% set class_name = item.get_class_name() %} - {%- if item.is_active(admin_view) %} -
  • - {%- else %} - - {%- endif %} - - {{ menu_icon(item) }}{{ item.name }} - -
  • - {%- endif - %} - {% endif - %} -{% endfor %} -{% endmacro %} -{% macro menu_links(links=None) %} -{% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %} -{% for item in links %} - {% set class_name = item.get_class_name() %} - {% if item.is_accessible() and item.is_visible() %} - - {{ menu_icon(item) }}{{ item.name }} - - {% endif %} -{% endfor %} -{% endmacro %} -{% macro messages() %} -{% with messages = get_flashed_messages(with_categories=True) %} - {% if messages %} - {% for category, m in messages %} - {% if category %} -
    - {% else %} -
    - {% endif %} - - x - - {{ m }} -
    - {% endfor %} - {% endif %} - {% endwith %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/lib.html b/tests/flask_admin/bootstrap2/admin/lib.html deleted file mode 100644 index 80c34ab..0000000 --- a/tests/flask_admin/bootstrap2/admin/lib.html +++ /dev/null @@ -1,257 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{# ---------------------- Pager -------------------------- #} -{% macro pager(page, pages, generator) - %} -{% if pages > 1 %} - -{% endif %} -{%- endmacro %} -{% macro simple_pager(page, have_next, generator) - %} - -{%- endmacro %} -{# ---------------------- Modal Window -------------------------- #} -{% macro add_modal_window(modal_window_id='fa_modal_window') %} - -{% endmacro %} -{% macro add_modal_button(url='', title='', content='', modal_window_id='fa_modal_window', btn_class='icon') %} - - {{ content|safe }} - -{% endmacro %} -{# ---------------------- Forms -------------------------- #} -{% macro render_field(form, field, kwargs={}, caller=None) %} -{% set direct_error = h.is_field_error(field.errors) %} -
    -
    - -
    -
    -
    - {{ field(**kwargs)|safe }} -
    - {% if field.description %} -

    - {{ field.description|safe }} -

    - {% endif %} - {% if direct_error %} -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    - {% endif %} -
    - {% if caller %}{{ caller(form, field, direct_error, kwargs) }}{% endif %} -
    -{% endmacro %} -{% macro render_header(form, text) %} -

    {{ text }}

    -{% endmacro %} -{% macro render_form_fields(form, form_opts=None) %} -{% if form.hidden_tag is defined %} - {{ form.hidden_tag() }} -{% else %} - {% if csrf_token %} - - {% endif %} - {% for f in form if f.widget.input_type == 'hidden' %} - {{ f }} - {% endfor %} -{% endif %} -{% if form_opts and form_opts.form_rules %} - {% for r in form_opts.form_rules %}{{ r(form, form_opts=form_opts) }}{% endfor %} -{% else %} - {% for f in form if f.widget.input_type != 'hidden' %} - {% if form_opts %} - {% set kwargs = form_opts.widget_args.get(f.short_name, {}) %} - {% else %} - {% set kwargs = {} %} - {% endif %} - {{ render_field(form, f, kwargs) }} - {% endfor %} -{% endif %} -{% endmacro %} -{% macro form_tag(form=None, action=None) %} -
    -
    - {{ caller() }} -
    -
    -{% endmacro %} -{% macro render_form_buttons(cancel_url, extra=None, is_modal=False) %} -
    -
    -
    - - {% if extra %}{{ extra }}{% endif %} - {% if cancel_url %} - - {{ _gettext('Cancel') }} - - {% endif %} -
    -
    -{% endmacro %} -{% macro render_form(form, cancel_url, extra=None, form_opts=None, action=None, is_modal=False) - %} -{% call form_tag(action=action) %} -{{ render_form_fields(form, form_opts=form_opts) }} -{{ render_form_buttons(cancel_url, extra, is_modal) }} -{% endcall %} -{% endmacro %} -{% macro form_css() %} - - -{% if config.MAPBOX_MAP_ID %} - - -{% endif %} -{% if editable_columns %} - -{% endif %} -{% endmacro %} -{% macro form_js() %} -{% if config.MAPBOX_MAP_ID %} - - - - {% if config.MAPBOX_SEARCH %} - - - {% endif %} -{% endif %} - -{% if editable_columns %} - -{% endif %} - -{% endmacro %} -{% macro extra() %} -{% if admin_view.can_create %} - -{% endif %} -{% if admin_view.can_edit %} - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/master.html b/tests/flask_admin/bootstrap2/admin/master.html deleted file mode 100644 index 8f27dad..0000000 --- a/tests/flask_admin/bootstrap2/admin/master.html +++ /dev/null @@ -1 +0,0 @@ -{% extends admin_base_template %} diff --git a/tests/flask_admin/bootstrap2/admin/model/create.html b/tests/flask_admin/bootstrap2/admin/model/create.html deleted file mode 100644 index 697a38e..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/create.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block create_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/details.html b/tests/flask_admin/bootstrap2/admin/model/details.html deleted file mode 100644 index 2627da8..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/details.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block details_search %} -
    -
    - {{ _gettext('Filter') }} - -
    -
    - {% endblock %} - {% block details_table %} - - {% for c, name in details_columns %} - - - - - {% endfor %} -
    - - {{ name }} - - {{ get_value(model, c) }}
    - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/edit.html b/tests/flask_admin/bootstrap2/admin/model/edit.html deleted file mode 100644 index 9eef6a7..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/edit.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block edit_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/inline_field_list.html b/tests/flask_admin/bootstrap2/admin/model/inline_field_list.html deleted file mode 100644 index c46db1b..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/inline_field_list.html +++ /dev/null @@ -1,14 +0,0 @@ -{% import 'admin/model/inline_list_base.html' as base with context %} -{% macro render_field(field) %} -{{ field }} -{% if h.is_field_error(field.errors) %} -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    -{% endif %} -{% endmacro %} -{{ base.render_inline_fields(field, template, render_field, check) }} diff --git a/tests/flask_admin/bootstrap2/admin/model/inline_form.html b/tests/flask_admin/bootstrap2/admin/model/inline_form.html deleted file mode 100644 index 9a4b9fa..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/inline_form.html +++ /dev/null @@ -1,4 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -
    - {{ lib.render_form_fields(field.form, form_opts=form_opts) }} -
    diff --git a/tests/flask_admin/bootstrap2/admin/model/inline_list_base.html b/tests/flask_admin/bootstrap2/admin/model/inline_list_base.html deleted file mode 100644 index 66327b8..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/inline_list_base.html +++ /dev/null @@ -1,55 +0,0 @@ -{% macro render_inline_fields(field, template, render, check=None) %} -
    - {# existing inline form fields #} -
    - {% for subfield in field %} -
    - {%- if not check or check(subfield) %} - - {{ field.label.text }} #{{ loop.index }} -
    - {% if subfield.get_pk and subfield.get_pk() %} - - - {% else %} - - - - {% endif %} -
    -
    - {%- endif - %} - {{ render(subfield) }} -
    - {% endfor %} -
    - {# template for new inline form fields #} -
    - {% filter forceescape %} -
    - - {{ _gettext('New') }} {{ field.label.text }} -
    - - - -
    -
    - {{ render(template) }} -
    - {% endfilter %} -
    - - {{ _gettext('Add') }} {{ field.label.text }} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/model/layout.html b/tests/flask_admin/bootstrap2/admin/model/layout.html deleted file mode 100644 index daf925a..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/layout.html +++ /dev/null @@ -1,130 +0,0 @@ -{% macro filter_options(btn_class='dropdown-toggle') %} - - {{ _gettext('Add Filter') }} - - - -{% endmacro %} -{% macro export_options(btn_class='dropdown-toggle') %} -{% if admin_view.export_types|length > 1 %} - -{% else %} -
  • - - {{ _gettext('Export') }} - -
  • -{% endif %} -{% endmacro %} -{% macro filter_form() %} -
    - {% for arg_name, arg_value in extra_args.items() %} - - {% endfor %} - {% if sort_column is not none %} - - {% endif %} - {% if sort_desc %} - - {% endif %} - {% if search %} - - {% endif %} - {% if page_size != default_page_size %} - - {% endif %} -
    - - {% if active_filters %} - - {{ _gettext('Reset Filters') }} - - {% endif %} -
    -
    -
    -
    -{% endmacro %} -{% macro search_form(input_class=None) %} -
    - {% for flt_name, flt_value in filter_args.items() %} - - {% endfor %} - {% for arg_name, arg_value in extra_args.items() %} - - {% endfor %} - {% if page_size != default_page_size %} - - {% endif %} - {% if sort_column is not none %} - - {% endif %} - {% if sort_desc %} - - {% endif %} - {%- set full_search_placeholder = _gettext('Search') %} - {%- if search_placeholder %}{% set full_search_placeholder = [full_search_placeholder, search_placeholder] | join(": ") %} -{% endif %} -{% if search %} -
    - - - - -
    -{% else %} - -{% endif %} -
    -{% endmacro %} -{% macro page_size_form(generator, btn_class='dropdown-toggle') %} - - {{ page_size }} {{ _gettext('items') }} - - - -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/model/list.html b/tests/flask_admin/bootstrap2/admin/model/list.html deleted file mode 100755 index a9185d1..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/list.html +++ /dev/null @@ -1,194 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/model/layout.html' as model_layout with context %} -{% import 'admin/actions.html' as actionlib with context %} -{% import 'admin/model/row_actions.html' as row_actions with context %} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block model_menu_bar %} - - {% endblock %} - {% if filters %} - {{ model_layout.filter_form() }} -
    - {% endif %} - {% block model_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_header %} - {% if admin_view.column_display_actions %} - - {% endif %} - {% endblock %} - {% for c, name in list_columns %} - {% set column = loop.index0 %} - - {% endfor %} - {% endblock %} - - - {% for row in data %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_column scoped %} - {% if admin_view.column_display_actions %} - - {%- endif - %} - {% endblock %} - {% for c, name in list_columns %} - - {% endfor %} - {% endblock %} - - {% else %} - - - - {% endfor %} -
    - -   - {% if admin_view.is_sortable(c) %} - {% if sort_column == column %} - - {{ name }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ name }} - - {% endif %} - {% else %} - {{ name }} - {% endif %} - {% if admin_view.column_descriptions.get(c) %} - - {% endif %} -
    - - - {% block list_row_actions scoped %} - {% for action in list_row_actions %}{{ action.render_ctx(get_pk_value(row), row) }}{% endfor %} - {% endblock %} - - {% if admin_view.is_editable(c) %} - {% set form = list_forms[get_pk_value(row)] %} - {% if form.csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=form.csrf_token._value()) }} - {% elif csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=csrf_token()) }} - {% else %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c)) }} - {% endif %} - {% else %} - {{ get_value(row, c) }} - {% endif %} -
    - {% block empty_list_message %} -
    - {{ admin_view.get_empty_list_message() }} -
    - {% endblock %} -
    -
    - {% block list_pager %} - {% if num_pages is not none %} - {{ lib.pager(page, num_pages, pager_url) }} - {% else %} - {{ lib.simple_pager(page, data|length == page_size, pager_url) }} - {% endif %} - {% endblock %} - {% endblock %} - {{ actionlib.form(actions, get_url('.action_view')) }} - {%- if admin_view.edit_modal or admin_view.create_modal or admin_view.details_modal - %} - {{ lib.add_modal_window() }} - {%- endif - %} - {% endblock %} - {% block tail %} - {{ super() }} - {% if filter_groups %} - - - {% endif %} - {{ lib.form_js() }} - - {{ actionlib.script(_gettext('Please select at least one record.'), - actions, - actions_confirmation) }} - {% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/modals/create.html b/tests/flask_admin/bootstrap2/admin/model/modals/create.html deleted file mode 100644 index b0b961b..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/modals/create.html +++ /dev/null @@ -1,21 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - {# "save and add" button is removed from modal (it won't function properly) #} - {% block create_form %} - {{ lib.render_form(form, return_url, extra=None, form_opts=form_opts, - action=url_for('.create_view', url=return_url), - is_modal=True) }} - {% endblock %} -{% endblock %} -{% block tail %} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/modals/details.html b/tests/flask_admin/bootstrap2/admin/model/modals/details.html deleted file mode 100755 index 47894df..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/modals/details.html +++ /dev/null @@ -1,36 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block details_search %} -
    -
    - {{ _gettext('Filter') }} - -
    -
    - {% endblock %} - {% block details_table %} - - {% for c, name in details_columns %} - - - - - {% endfor %} -
    - - {{ name }} - - {{ get_value(model, c) }}
    - {% endblock %} -{% endblock %} -{% block tail %} - - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/modals/edit.html b/tests/flask_admin/bootstrap2/admin/model/modals/edit.html deleted file mode 100644 index 7d4f3e3..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/modals/edit.html +++ /dev/null @@ -1,21 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - {# "save and continue" button is removed from modal (it won't function properly) #} - {% block edit_form %} - {{ lib.render_form(form, return_url, extra=None, form_opts=form_opts, - action=url_for('.edit_view', id=request.args.get('id'), url=return_url), - is_modal=True) }} - {% endblock %} -{% endblock %} -{% block tail %} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/model/row_actions.html b/tests/flask_admin/bootstrap2/admin/model/row_actions.html deleted file mode 100644 index 44debdc..0000000 --- a/tests/flask_admin/bootstrap2/admin/model/row_actions.html +++ /dev/null @@ -1,37 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -{% macro link(action, url, icon_class=None) %} - - - -{% endmacro %} -{% macro view_row(action, row_id, row) %} -{{ link(action, get_url('.details_view', id=row_id, url=return_url), 'fa fa-eye glyphicon icon-eye-open') }} -{% endmacro %} -{% macro view_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.details_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro edit_row(action, row_id, row) %} -{{ link(action, get_url('.edit_view', id=row_id, url=return_url), 'fa fa-pencil glyphicon icon-pencil') }} -{% endmacro %} -{% macro edit_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.edit_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro delete_row(action, row_id, row) %} -
    - {{ delete_form.id(value=get_pk_value(row)) }} - {{ delete_form.url(value=return_url) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap2/admin/rediscli/console.html b/tests/flask_admin/bootstrap2/admin/rediscli/console.html deleted file mode 100644 index 441c5ce..0000000 --- a/tests/flask_admin/bootstrap2/admin/rediscli/console.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% block head %} - {{ super() }} - -{% endblock %} -{% block body %} -
    -
    -
    -
    - -
    -
    -
    -{% endblock %} -{% block tail %} - {{ super() }} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap2/admin/rediscli/response.html b/tests/flask_admin/bootstrap2/admin/rediscli/response.html deleted file mode 100644 index 661852c..0000000 --- a/tests/flask_admin/bootstrap2/admin/rediscli/response.html +++ /dev/null @@ -1,35 +0,0 @@ -{% macro render(item, depth=0) %} -{% set type = type_name(item) %} -{% if type == 'tuple' or type == 'list' %} - {% if not item %} - Empty {{ type }}. - {% else %} - {% for n in item %} - {{ loop.index }}) {{ render(n, depth + 1) }} -
    - {% endfor %} - {% endif %} -{% elif type == 'bool' %} - {% if depth == 0 and item %} - OK - {% else %} - {{ item }} - {% endif %} -{% elif type == 'str' or type == 'unicode' %} - "{{ item }}" -{% elif type == 'bytes' %} - "{{ item.decode('utf-8') }}" -{% elif type == 'TextWrapper' %} -
    -{{ item }}
    -    
    -{% elif type == 'dict' %} - {% for k, v in item.items() %} - {{ loop.index }}) {{ k }} - {{ render(v, depth + 1) }} -
    - {% endfor %} -{% else %} - {{ item }} -{% endif %} -{% endmacro %} -{{ render(result) }} diff --git a/tests/flask_admin/bootstrap2/admin/static.html b/tests/flask_admin/bootstrap2/admin/static.html deleted file mode 100644 index 811f9ba..0000000 --- a/tests/flask_admin/bootstrap2/admin/static.html +++ /dev/null @@ -1,3 +0,0 @@ -{% macro url() - %} -{{ get_url('{admin_endpoint}.static'.format(admin_endpoint=admin_view.admin.endpoint), *varargs, **kwargs) }} -{%- endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/actions.html b/tests/flask_admin/bootstrap3/admin/actions.html deleted file mode 100644 index f188027..0000000 --- a/tests/flask_admin/bootstrap3/admin/actions.html +++ /dev/null @@ -1,40 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% macro dropdown(actions, btn_class='btn dropdown-toggle') - %} - - {{ _gettext('With selected') }} - - - -{% endmacro %} -{% macro form(actions, url) %} -{% if actions %} - -{% endif %} -{% endmacro %} -{% macro script(message, actions, actions_confirmation) %} -{% if actions %} - - - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/base.html b/tests/flask_admin/bootstrap3/admin/base.html deleted file mode 100644 index fa14137..0000000 --- a/tests/flask_admin/bootstrap3/admin/base.html +++ /dev/null @@ -1,96 +0,0 @@ -{% import 'admin/layout.html' as layout with context - %} -{% import 'admin/static.html' as admin_static with context %} - - - - - {% block title %} - {% if admin_view.category %}{{ admin_view.category }} - {% endif %} - {{ admin_view.name }} - {{ admin_view.admin.name }} - {% endblock %} - - {% block head_meta %} - - - - - - {% endblock %} - {% block head_css %} - - {% if config.get('FLASK_ADMIN_SWATCH', 'default') == 'default' %} - - {% endif %} - - - {% if admin_view.extra_css %} - {% for css_url in admin_view.extra_css %} - - {% endfor %} - {% endif %} - - {% endblock %} - {% block head %}{% endblock %} - {% block head_tail %}{% endblock %} - - - {% block page_body %} -
    - - {% block messages %}{{ layout.messages() }}{% endblock %} - {# store the jinja2 context for form_rules rendering logic #} - {% set render_ctx = h.resolve_ctx() %} - {% block body %}{% endblock %}
    {% endblock %} - {% block tail_js %} - - - - - - {% if admin_view.extra_js %} - {% for js_url in admin_view.extra_js %} - - {% endfor %} - {% endif %} - {% endblock %} - {% block tail %}{% endblock %} - - diff --git a/tests/flask_admin/bootstrap3/admin/file/form.html b/tests/flask_admin/bootstrap3/admin/file/form.html deleted file mode 100644 index 3052310..0000000 --- a/tests/flask_admin/bootstrap3/admin/file/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block header %}

    {{ header_text }}

    {% endblock %} - {% block fa_form %}{{ lib.render_form(form, dir_url) }}{% endblock %} -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/file/list.html b/tests/flask_admin/bootstrap3/admin/file/list.html deleted file mode 100644 index 98677bd..0000000 --- a/tests/flask_admin/bootstrap3/admin/file/list.html +++ /dev/null @@ -1,209 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/actions.html' as actionslib with context %} -{% block body %} - {% block breadcrums %} - - {% endblock %} - {% block file_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - - {% for column in admin_view.column_list %} - - {% endfor %} - {% endblock %} - - - {% for name, path, is_dir, size, date in items %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - - {% if is_dir %} - - {% else %} - - {% if admin_view.is_column_visible('size') %} - - {% endif %} - {% endif %} - {% if admin_view.is_column_visible('date') %} - - {% endif %} - {% endblock %} - - {% endfor %} -
    - -   - {% if admin_view.is_column_sortable(column) %} - {% if sort_column == column %} - - {{ admin_view.column_label(column) }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ admin_view.column_label(column) }} - - {% endif %} - {% else %} - {{ _gettext(admin_view.column_label(column)) }} - {% endif %} -
    - {% if not is_dir %} - - {% endif %} - - {% block list_row_actions scoped %} - {% if admin_view.can_rename and path and name != '..' %} - {%- if admin_view.rename_modal - %} - {{ lib.add_modal_button(url=get_url('.rename', path=path, modal=True), - title=_gettext('Rename File'), - content=' - - ') }} - {% else %} - - - - {%- endif - %} - {% endif %} - {%- if admin_view.can_delete and path - %} - {% if is_dir %} - {% if name != '..' and admin_view.can_delete_dirs %} -
    - {{ delete_form.path(value=path) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    - {% endif %} - {% else %} -
    - {{ delete_form.path(value=path) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    - {% endif %} - {%- endif - %} - {% endblock %} -
    - - - {{ name }} - - - {% if admin_view.can_download %} - {%- if admin_view.edit_modal and admin_view.is_file_editable(path) - %} - {{ lib.add_modal_button(url=get_file_url(path, modal=True)|safe, - btn_class='', content=name) }} - {% else %} - {{ name }} - {%- endif - %} - {% else %} - {{ name }} - {% endif %} - {{ size|filesizeformat }}{{ timestamp_format(date) }}
    -
    - {% endblock %} - {% block toolbar %} -
    - {% if admin_view.can_upload %} -
    - {%- if admin_view.upload_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.upload', path=dir_path, modal=True), - btn_class="btn btn-default btn-large", - content=_gettext('Upload File')) }} - {% else %} - - {{ _gettext('Upload File') }} - - {%- endif - %} -
    - {% endif %} - {% if admin_view.can_mkdir %} -
    - {%- if admin_view.mkdir_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.mkdir', path=dir_path, modal=True), - btn_class="btn btn-default btn-large", - content=_gettext('Create Directory')) }} - {% else %} - - {{ _gettext('Create Directory') }} - - {%- endif - %} -
    - {% endif %} - {% if actions %} -
    - {{ actionslib.dropdown(actions, 'dropdown-toggle btn btn-default btn-large') }} -
    - {% endif %} -
    - {% endblock %} - {% block actions %} - {{ actionslib.form(actions, get_url('.action_view')) }} - {% endblock %} - {%- if admin_view.rename_modal or admin_view.mkdir_modal - or admin_view.upload_modal or admin_view.edit_modal -%} - {{ lib.add_modal_window() }} - {%- endif - %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ actionslib.script(_gettext('Please select at least one file.'), - actions, - actions_confirmation) }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/file/modals/form.html b/tests/flask_admin/bootstrap3/admin/file/modals/form.html deleted file mode 100644 index 6937032..0000000 --- a/tests/flask_admin/bootstrap3/admin/file/modals/form.html +++ /dev/null @@ -1,19 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {# content added to modal-content #} - - -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/index.html b/tests/flask_admin/bootstrap3/admin/index.html deleted file mode 100644 index 6c4bda4..0000000 --- a/tests/flask_admin/bootstrap3/admin/index.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends 'admin/master.html' %} -{% block body %}{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/layout.html b/tests/flask_admin/bootstrap3/admin/layout.html deleted file mode 100644 index f6b2efa..0000000 --- a/tests/flask_admin/bootstrap3/admin/layout.html +++ /dev/null @@ -1,109 +0,0 @@ -{% macro menu_icon(item) - %} -{% set icon_type = item.get_icon_type() %} -{%- if icon_type %} -{% set icon_value = item.get_icon_value() %} -{% if icon_type == 'glyph' %} - -{% elif icon_type == 'fa' %} - -{% elif icon_type == 'image' %} - menu image -{% elif icon_type == 'image-url' %} - menu image -{% endif %} -{% endif %} -{%- endmacro %} -{% macro menu(menu_root=None) %} -{% if menu_root is none %} - {% set menu_root = admin_view.admin.menu() %} -{% endif %} -{%- for item in menu_root %} -{%- if item.is_category() - %} -{% set children = item.get_children() %} -{%- if children %} -{% set class_name = item.get_class_name() or '' %} -{%- if item.is_active(admin_view) %} - - {% endif %} - {%- else %} - {%- if item.is_accessible() and item.is_visible() - %} - {% set class_name = item.get_class_name() %} - {%- if item.is_active(admin_view) %} -
  • - {%- else %} - - {%- endif %} - - {{ menu_icon(item) }}{{ item.name }} - -
  • - {%- endif - %} - {% endif - %} -{% endfor %} -{% endmacro %} -{% macro menu_links(links=None) %} -{% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %} -{% for item in links %} - {% set class_name = item.get_class_name() %} - {% if item.is_accessible() and item.is_visible() %} - - {{ menu_icon(item) }}{{ item.name }} - - {% endif %} -{% endfor %} -{% endmacro %} -{% macro messages() %} -{% with messages = get_flashed_messages(with_categories=True) %} - {% if messages %} - {% for category, m in messages %} - {% if category %} - {# alert-error changed to alert-danger in bootstrap 3, mapping is for backwards compatibility #} - {% set mapping = {'message': 'info', 'error': 'danger'} %} -
    - {% else %} -
    - {% endif %} - - {{ m }} -
    - {% endfor %} - {% endif %} - {% endwith %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/lib.html b/tests/flask_admin/bootstrap3/admin/lib.html deleted file mode 100644 index 41a968c..0000000 --- a/tests/flask_admin/bootstrap3/admin/lib.html +++ /dev/null @@ -1,252 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{# ---------------------- Pager -------------------------- #} -{% macro pager(page, pages, generator) - %} -{% if pages > 1 %} -
      - {% set min = page - 3 %} - {% set max = page + 3 + 1 %} - {% if min < 0 %} - {% set max = max - min %} - {% endif %} - {% if max >= pages %} - {% set min = min - max + pages %} - {% endif %} - {% if min < 0 %} - {% set min = 0 %} - {% endif %} - {% if max >= pages %} - {% set max = pages %} - {% endif %} - {% if min > 0 %} -
    • - « -
    • - {% else %} -
    • - « -
    • - {% endif %} - {% if page > 0 %} -
    • - < -
    • - {% else %} -
    • - < -
    • - {% endif %} - {% for p in range(min, max) %} - {% if page == p %} -
    • - {{ p + 1 }} -
    • - {% else %} -
    • - {{ p + 1 }} -
    • - {% endif %} - {% endfor %} - {% if page + 1 < pages %} -
    • - > -
    • - {% else %} -
    • - > -
    • - {% endif %} - {% if max < pages %} -
    • - » -
    • - {% else %} -
    • - » -
    • - {% endif %} -
    -{% endif %} -{%- endmacro %} -{% macro simple_pager(page, have_next, generator) - %} -
      - {% if page > 0 %} -
    • - < -
    • - {% else %} -
    • - < -
    • - {% endif %} - {% if have_next %} -
    • - > -
    • - {% else %} -
    • - > -
    • - {% endif %} -
    -{%- endmacro %} -{# ---------------------- Modal Window ------------------- #} -{% macro add_modal_window(modal_window_id='fa_modal_window', modal_label_id='fa_modal_label') %} - -{% endmacro %} -{% macro add_modal_button(url='', title='', content='', modal_window_id='fa_modal_window', btn_class='icon') %} - - {{ content|safe }} - -{% endmacro %} -{# ---------------------- Forms -------------------------- #} -{% macro render_field(form, field, kwargs={}, caller=None) %} -{% set direct_error = h.is_field_error(field.errors) %} -
    - -
    - {% set _dummy = kwargs.setdefault('class', 'form-control') %} - {{ field(**kwargs)|safe }} - {% if field.description %} -

    - {{ field.description|safe }} -

    - {% endif %} - {% if direct_error %} -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    - {% endif %} -
    - {% if caller %}{{ caller(form, field, direct_error, kwargs) }}{% endif %} -
    -{% endmacro %} -{% macro render_header(form, text) %} -

    {{ text }}

    -{% endmacro %} -{% macro render_form_fields(form, form_opts=None) %} -{% if form.hidden_tag is defined %} - {{ form.hidden_tag() }} -{% else %} - {% if csrf_token %} - - {% endif %} - {% for f in form if f.widget.input_type == 'hidden' %} - {{ f }} - {% endfor %} -{% endif %} -{% if form_opts and form_opts.form_rules %} - {% for r in form_opts.form_rules %}{{ r(form, form_opts=form_opts) }}{% endfor %} -{% else %} - {% for f in form if f.widget.input_type != 'hidden' %} - {% if form_opts %} - {% set kwargs = form_opts.widget_args.get(f.short_name, {}) %} - {% else %} - {% set kwargs = {} %} - {% endif %} - {{ render_field(form, f, kwargs) }} - {% endfor %} -{% endif %} -{% endmacro %} -{% macro form_tag(form=None, action=None) %} -
    - {{ caller() }} -
    -{% endmacro %} -{% macro render_form_buttons(cancel_url, extra=None, is_modal=False) %} -
    -
    -
    - - {% if extra %}{{ extra }}{% endif %} - {% if cancel_url %} - - {{ _gettext('Cancel') }} - - {% endif %} -
    -
    -{% endmacro %} -{% macro render_form(form, cancel_url, extra=None, form_opts=None, action=None, is_modal=False) - %} -{% call form_tag(action=action) %} -{{ render_form_fields(form, form_opts=form_opts) }} -{{ render_form_buttons(cancel_url, extra, is_modal) }} -{% endcall %} -{% endmacro %} -{% macro form_css() %} - - - -{% if config.MAPBOX_MAP_ID %} - - -{% endif %} -{% if editable_columns %} - -{% endif %} -{% endmacro %} -{% macro form_js() %} -{% if config.MAPBOX_MAP_ID %} - - - - {% if config.MAPBOX_SEARCH %} - - - {% endif %} -{% endif %} - -{% if editable_columns %} - -{% endif %} - -{% endmacro %} -{% macro extra() %} -{% if admin_view.can_create %} - -{% endif %} -{% if admin_view.can_edit %} - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/master.html b/tests/flask_admin/bootstrap3/admin/master.html deleted file mode 100644 index 8f27dad..0000000 --- a/tests/flask_admin/bootstrap3/admin/master.html +++ /dev/null @@ -1 +0,0 @@ -{% extends admin_base_template %} diff --git a/tests/flask_admin/bootstrap3/admin/model/create.html b/tests/flask_admin/bootstrap3/admin/model/create.html deleted file mode 100644 index 697a38e..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/create.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block create_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/details.html b/tests/flask_admin/bootstrap3/admin/model/details.html deleted file mode 100644 index de674a8..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/details.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block details_search %} -
    - {{ _gettext('Filter') }} - -
    - {% endblock %} - {% block details_table %} - - {% for c, name in details_columns %} - - - - - {% endfor %} -
    - - {{ name }} - - {{ get_value(model, c) }}
    - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/edit.html b/tests/flask_admin/bootstrap3/admin/model/edit.html deleted file mode 100644 index 9eef6a7..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/edit.html +++ /dev/null @@ -1,40 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block edit_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/inline_field_list.html b/tests/flask_admin/bootstrap3/admin/model/inline_field_list.html deleted file mode 100644 index 347977c..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/inline_field_list.html +++ /dev/null @@ -1,14 +0,0 @@ -{% import 'admin/model/inline_list_base.html' as base with context %} -{% macro render_field(field) %} -{{ field }} -{% if h.is_field_error(field.errors) %} -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    -{% endif %} -{% endmacro %} -{{ base.render_inline_fields(field, template, render_field, check) }} diff --git a/tests/flask_admin/bootstrap3/admin/model/inline_form.html b/tests/flask_admin/bootstrap3/admin/model/inline_form.html deleted file mode 100644 index 9a4b9fa..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/inline_form.html +++ /dev/null @@ -1,4 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -
    - {{ lib.render_form_fields(field.form, form_opts=form_opts) }} -
    diff --git a/tests/flask_admin/bootstrap3/admin/model/inline_list_base.html b/tests/flask_admin/bootstrap3/admin/model/inline_list_base.html deleted file mode 100644 index fac497e..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/inline_list_base.html +++ /dev/null @@ -1,61 +0,0 @@ -{% macro render_inline_fields(field, template, render, check=None) %} -
    - {# existing inline form fields #} -
    - {% for subfield in field %} -
    - {%- if not check or check(subfield) %} - - - {{ field.label.text }} #{{ loop.index }} -
    - {% if subfield.get_pk and subfield.get_pk() %} - - - {% else %} - - - - {% endif %} -
    -
    -
    -
    - {%- endif - %} - {{ render(subfield) }} -
    - {% endfor %} -
    - {# template for new inline form fields #} -
    - {% filter forceescape %} -
    - - - {{ _gettext('New') }} {{ field.label.text }} - -
    - - - -
    -
    -
    - {{ render(template) }} -
    - {% endfilter %} -
    - - {{ _gettext('Add') }} {{ field.label.text }} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/model/layout.html b/tests/flask_admin/bootstrap3/admin/model/layout.html deleted file mode 100644 index 6e5510d..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/layout.html +++ /dev/null @@ -1,136 +0,0 @@ -{% macro filter_options(btn_class='dropdown-toggle') %} - - {{ _gettext('Add Filter') }} - - - -{% endmacro %} -{% macro export_options(btn_class='dropdown-toggle') %} -{% if admin_view.export_types|length > 1 %} - -{% else %} -
  • - - {{ _gettext('Export') }} - -
  • -{% endif %} -{% endmacro %} -{% macro filter_form() %} -
    - {% for arg_name, arg_value in extra_args.items() %} - - {% endfor %} - {% if sort_column is not none %} - - {% endif %} - {% if sort_desc %} - - {% endif %} - {% if search %} - - {% endif %} - {% if page_size != default_page_size %} - - {% endif %} -
    - - {% if active_filters %} - - {{ _gettext('Reset Filters') }} - - {% endif %} -
    -
    -
    -
    -{% endmacro %} -{% macro search_form(input_class=None) %} - -{% endmacro %} -{% macro page_size_form(generator, btn_class='dropdown-toggle') %} - - {{ page_size }} {{ _gettext('items') }} - - - -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/model/list.html b/tests/flask_admin/bootstrap3/admin/model/list.html deleted file mode 100755 index 4ad7d02..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/list.html +++ /dev/null @@ -1,196 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/model/layout.html' as model_layout with context %} -{% import 'admin/actions.html' as actionlib with context %} -{% import 'admin/model/row_actions.html' as row_actions with context %} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block model_menu_bar %} - - {% endblock %} - {% if filters %} - {{ model_layout.filter_form() }} -
    - {% endif %} - {% block model_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_header %} - {% if admin_view.column_display_actions %} - - {% endif %} - {% endblock %} - {% for c, name in list_columns %} - {% set column = loop.index0 %} - - {% endfor %} - {% endblock %} - - - {% for row in data %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_column scoped %} - {% if admin_view.column_display_actions %} - - {%- endif - %} - {% endblock %} - {% for c, name in list_columns %} - - {% endfor %} - {% endblock %} - - {% else %} - - - - {% endfor %} -
    - -   - {% if admin_view.is_sortable(c) %} - {% if sort_column == column %} - - {{ name }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ name }} - - {% endif %} - {% else %} - {{ name }} - {% endif %} - {% if admin_view.column_descriptions.get(c) %} - - {% endif %} -
    - - - {% block list_row_actions scoped %} - {% for action in list_row_actions %}{{ action.render_ctx(get_pk_value(row), row) }}{% endfor %} - {% endblock %} - - {% if admin_view.is_editable(c) %} - {% set form = list_forms[get_pk_value(row)] %} - {% if form.csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=form.csrf_token._value()) }} - {% elif csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=csrf_token()) }} - {% else %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c)) }} - {% endif %} - {% else %} - {{ get_value(row, c) }} - {% endif %} -
    - {% block empty_list_message %} -
    - {{ admin_view.get_empty_list_message() }} -
    - {% endblock %} -
    -
    - {% block list_pager %} - {% if num_pages is not none %} - {{ lib.pager(page, num_pages, pager_url) }} - {% else %} - {{ lib.simple_pager(page, data|length == page_size, pager_url) }} - {% endif %} - {% endblock %} - {% endblock %} - {% block actions %} - {{ actionlib.form(actions, get_url('.action_view')) }} - {% endblock %} - {%- if admin_view.edit_modal or admin_view.create_modal or admin_view.details_modal - %} - {{ lib.add_modal_window() }} - {%- endif - %} - {% endblock %} - {% block tail %} - {{ super() }} - {% if filter_groups %} - - - {% endif %} - {{ lib.form_js() }} - - {{ actionlib.script(_gettext('Please select at least one record.'), - actions, - actions_confirmation) }} - {% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/modals/create.html b/tests/flask_admin/bootstrap3/admin/model/modals/create.html deleted file mode 100644 index bc3f9a8..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/modals/create.html +++ /dev/null @@ -1,23 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - - -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/modals/details.html b/tests/flask_admin/bootstrap3/admin/model/modals/details.html deleted file mode 100755 index a0e8e32..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/modals/details.html +++ /dev/null @@ -1,38 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - - -{% endblock %} -{% block tail %} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/modals/edit.html b/tests/flask_admin/bootstrap3/admin/model/modals/edit.html deleted file mode 100644 index bdfe7f9..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/modals/edit.html +++ /dev/null @@ -1,25 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - - -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/model/row_actions.html b/tests/flask_admin/bootstrap3/admin/model/row_actions.html deleted file mode 100644 index a10e574..0000000 --- a/tests/flask_admin/bootstrap3/admin/model/row_actions.html +++ /dev/null @@ -1,37 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -{% macro link(action, url, icon_class=None) %} - - - -{% endmacro %} -{% macro view_row(action, row_id, row) %} -{{ link(action, get_url('.details_view', id=row_id, url=return_url), 'fa fa-eye glyphicon glyphicon-eye-open') }} -{% endmacro %} -{% macro view_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.details_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro edit_row(action, row_id, row) %} -{{ link(action, get_url('.edit_view', id=row_id, url=return_url), 'fa fa-pencil glyphicon glyphicon-pencil') }} -{% endmacro %} -{% macro edit_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.edit_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro delete_row(action, row_id, row) %} -
    - {{ delete_form.id(value=get_pk_value(row)) }} - {{ delete_form.url(value=return_url) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap3/admin/rediscli/console.html b/tests/flask_admin/bootstrap3/admin/rediscli/console.html deleted file mode 100644 index e7e3c0e..0000000 --- a/tests/flask_admin/bootstrap3/admin/rediscli/console.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% block head %} - {{ super() }} - -{% endblock %} -{% block body %} -
    -
    -
    -
    - -
    -
    -
    -{% endblock %} -{% block tail %} - {{ super() }} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap3/admin/rediscli/response.html b/tests/flask_admin/bootstrap3/admin/rediscli/response.html deleted file mode 100644 index 661852c..0000000 --- a/tests/flask_admin/bootstrap3/admin/rediscli/response.html +++ /dev/null @@ -1,35 +0,0 @@ -{% macro render(item, depth=0) %} -{% set type = type_name(item) %} -{% if type == 'tuple' or type == 'list' %} - {% if not item %} - Empty {{ type }}. - {% else %} - {% for n in item %} - {{ loop.index }}) {{ render(n, depth + 1) }} -
    - {% endfor %} - {% endif %} -{% elif type == 'bool' %} - {% if depth == 0 and item %} - OK - {% else %} - {{ item }} - {% endif %} -{% elif type == 'str' or type == 'unicode' %} - "{{ item }}" -{% elif type == 'bytes' %} - "{{ item.decode('utf-8') }}" -{% elif type == 'TextWrapper' %} -
    -{{ item }}
    -    
    -{% elif type == 'dict' %} - {% for k, v in item.items() %} - {{ loop.index }}) {{ k }} - {{ render(v, depth + 1) }} -
    - {% endfor %} -{% else %} - {{ item }} -{% endif %} -{% endmacro %} -{{ render(result) }} diff --git a/tests/flask_admin/bootstrap3/admin/static.html b/tests/flask_admin/bootstrap3/admin/static.html deleted file mode 100644 index 811f9ba..0000000 --- a/tests/flask_admin/bootstrap3/admin/static.html +++ /dev/null @@ -1,3 +0,0 @@ -{% macro url() - %} -{{ get_url('{admin_endpoint}.static'.format(admin_endpoint=admin_view.admin.endpoint), *varargs, **kwargs) }} -{%- endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/actions.html b/tests/flask_admin/bootstrap4/admin/actions.html deleted file mode 100644 index 37db593..0000000 --- a/tests/flask_admin/bootstrap4/admin/actions.html +++ /dev/null @@ -1,43 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% macro dropdown(actions, btn_class='nav-link dropdown-toggle') - %} - - -{% endmacro %} -{% macro form(actions, url) %} -{% if actions %} - -{% endif %} -{% endmacro %} -{% macro script(message, actions, actions_confirmation) %} -{% if actions %} - - - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/base.html b/tests/flask_admin/bootstrap4/admin/base.html deleted file mode 100644 index 5a70097..0000000 --- a/tests/flask_admin/bootstrap4/admin/base.html +++ /dev/null @@ -1,99 +0,0 @@ -{% import 'admin/layout.html' as layout with context - %} -{% import 'admin/static.html' as admin_static with context %} - - - - - {% block title %} - {% if admin_view.category %}{{ admin_view.category }} - {% endif %} - {{ admin_view.name }} - {{ admin_view.admin.name }} - {% endblock %} - - {% block head_meta %} - - - - - - {% endblock %} - {% block head_css %} - - {% if config.get('FLASK_ADMIN_SWATCH', 'default') == 'default' %} - - {% endif %} - - - {% if admin_view.extra_css %} - {% for css_url in admin_view.extra_css %} - - {% endfor %} - {% endif %} - - {% endblock %} - {% block head %}{% endblock %} - {% block head_tail %}{% endblock %} - - - {% block page_body %} -
    - - {% block messages %}{{ layout.messages() }}{% endblock %} - {# store the jinja2 context for form_rules rendering logic #} - {% set render_ctx = h.resolve_ctx() %} - {% block body %}{% endblock %}
    {% endblock %} - {% block tail_js %} - - - - - - - - - - {% if admin_view.extra_js %} - {% for js_url in admin_view.extra_js %} - - {% endfor %} - {% endif %} - {% endblock %} - {% block tail %}{% endblock %} - - diff --git a/tests/flask_admin/bootstrap4/admin/file/form.html b/tests/flask_admin/bootstrap4/admin/file/form.html deleted file mode 100644 index 3052310..0000000 --- a/tests/flask_admin/bootstrap4/admin/file/form.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block header %}

    {{ header_text }}

    {% endblock %} - {% block fa_form %}{{ lib.render_form(form, dir_url) }}{% endblock %} -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/file/list.html b/tests/flask_admin/bootstrap4/admin/file/list.html deleted file mode 100644 index 3fa6b48..0000000 --- a/tests/flask_admin/bootstrap4/admin/file/list.html +++ /dev/null @@ -1,204 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/actions.html' as actionslib with context %} -{% block body %} - {% block breadcrums %} - - {% endblock %} - {% block file_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - - {% for column in admin_view.column_list %} - - {% endfor %} - {% endblock %} - - - {% for name, path, is_dir, size, date in items %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - - {% if is_dir %} - - {% else %} - - {% if admin_view.is_column_visible('size') %} - - {% endif %} - {% endif %} - {% if admin_view.is_column_visible('date') %} - - {% endif %} - {% endblock %} - - {% endfor %} -
    - -   - {% if admin_view.is_column_sortable(column) %} - {% if sort_column == column %} - - {{ admin_view.column_label(column) }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ admin_view.column_label(column) }} - - {% endif %} - {% else %} - {{ _gettext(admin_view.column_label(column)) }} - {% endif %} -
    - {% if not is_dir %} - - {% endif %} - - {% block list_row_actions scoped %} - {% if admin_view.can_rename and path and name != '..' %} - {%- if admin_view.rename_modal - %} - {{ lib.add_modal_button(url=get_url('.rename', path=path, modal=True), - title=_gettext('Rename File'), - content=' - - ') }} - {% else %} - - - - {%- endif - %} - {% endif %} - {%- if admin_view.can_delete and path - %} - {% if is_dir %} - {% if name != '..' and admin_view.can_delete_dirs %} -
    - {{ delete_form.path(value=path) }} - {{ delete_form.csrf_token }} - -
    - {% endif %} - {% else %} -
    - {{ delete_form.path(value=path) }} - {{ delete_form.csrf_token }} - -
    - {% endif %} - {%- endif - %} - {% endblock %} -
    - - - {{ name }} - - - {% if admin_view.can_download %} - {%- if admin_view.edit_modal and admin_view.is_file_editable(path) - %} - {{ lib.add_modal_button(url=get_file_url(path, modal=True)|safe, - btn_class='', content=name) }} - {% else %} - {{ name }} - {%- endif - %} - {% else %} - {{ name }} - {% endif %} - {{ size|filesizeformat }}{{ timestamp_format(date) }}
    -
    - {% endblock %} - {% block toolbar %} -
    - {% if admin_view.can_upload %} -
    - {%- if admin_view.upload_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.upload', path=dir_path, modal=True), - btn_class="btn btn-secondary", - content=_gettext('Upload File')) }} - {% else %} - - {{ _gettext('Upload File') }} - - {%- endif - %} -
    - {% endif %} - {% if admin_view.can_mkdir %} -
    - {%- if admin_view.mkdir_modal - %} - {{ lib.add_modal_button(url=get_dir_url('.mkdir', path=dir_path, modal=True), - btn_class="btn btn-secondary", - content=_gettext('Create Directory')) }} - {% else %} - - {{ _gettext('Create Directory') }} - - {%- endif - %} -
    - {% endif %} - {% if actions %} -
    - {{ actionslib.dropdown(actions, 'dropdown-toggle btn btn-secondary') }} -
    - {% endif %} -
    - {% endblock %} - {% block actions %} - {{ actionslib.form(actions, get_url('.action_view')) }} - {% endblock %} - {%- if admin_view.rename_modal or admin_view.mkdir_modal - or admin_view.upload_modal or admin_view.edit_modal -%} - {{ lib.add_modal_window() }} - {%- endif - %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ actionslib.script(_gettext('Please select at least one file.'), - actions, - actions_confirmation) }} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/file/modals/form.html b/tests/flask_admin/bootstrap4/admin/file/modals/form.html deleted file mode 100644 index 7ed7708..0000000 --- a/tests/flask_admin/bootstrap4/admin/file/modals/form.html +++ /dev/null @@ -1,19 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {# content added to modal-content #} - - -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/index.html b/tests/flask_admin/bootstrap4/admin/index.html deleted file mode 100644 index 6c4bda4..0000000 --- a/tests/flask_admin/bootstrap4/admin/index.html +++ /dev/null @@ -1,2 +0,0 @@ -{% extends 'admin/master.html' %} -{% block body %}{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/layout.html b/tests/flask_admin/bootstrap4/admin/layout.html deleted file mode 100644 index 80db028..0000000 --- a/tests/flask_admin/bootstrap4/admin/layout.html +++ /dev/null @@ -1,118 +0,0 @@ -{% macro menu_icon(item) - %} -{% set icon_type = item.get_icon_type() %} -{%- if icon_type %} -{% set icon_value = item.get_icon_value() %} -{% if icon_type == 'glyph' %} - -{% elif icon_type == 'fa' %} - -{% elif icon_type == 'image' %} - menu image -{% elif icon_type == 'image-url' %} - menu image -{% endif %} -{% endif %} -{%- endmacro %} -{% macro menu(menu_root=None) %} -{% set is_main_nav = menu_root == None %} -{% if menu_root is none %} - {% set menu_root = admin_view.admin.menu() %} -{% endif %} -{%- for item in menu_root %} -{%- if item.is_category() - %} -{% set children = item.get_children() %} -{%- if children %} -{% set class_name = item.get_class_name() or '' %} -{%- if item.is_active(admin_view) %} - - {% endif %} - {%- else %} - {%- if item.is_accessible() and item.is_visible() - %} - {% set class_name = item.get_class_name() %} - {%- if item.is_active(admin_view) %} -
  • - {%- else %} - - {%- endif %} - - {{ menu_icon(item) }}{{ item.name }} - -
  • - {%- endif - %} - {% endif - %} -{% endfor %} -{% endmacro %} -{% macro menu_links(links=None) %} -{% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %} -{% for item in links %} - {% set class_name = item.get_class_name() %} - {% if item.is_accessible() and item.is_visible() %} - - - {{ menu_icon(item) }}{{ item.name }} - - - {% endif %} -{% endfor %} -{% endmacro %} -{% macro messages() %} -{% with messages = get_flashed_messages(with_categories=True) %} - {% if messages %} - {% for category, m in messages %} - {% if category %} - {# alert-error changed to alert-danger in bootstrap 3, mapping is for backwards compatibility #} - {% set mapping = {'message': 'info', 'error': 'danger'} %} -
    - {% else %} -
    - {% endif %} - - {{ m }} -
    - {% endfor %} - {% endif %} - {% endwith %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/lib.html b/tests/flask_admin/bootstrap4/admin/lib.html deleted file mode 100644 index c940d86..0000000 --- a/tests/flask_admin/bootstrap4/admin/lib.html +++ /dev/null @@ -1,312 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{# ---------------------- Pager -------------------------- #} -{% macro pager(page, pages, generator) - %} -{% if pages > 1 %} -
      - {% set min = page - 3 %} - {% set max = page + 3 + 1 %} - {% if min < 0 %} - {% set max = max - min %} - {% endif %} - {% if max >= pages %} - {% set min = min - max + pages %} - {% endif %} - {% if min < 0 %} - {% set min = 0 %} - {% endif %} - {% if max >= pages %} - {% set max = pages %} - {% endif %} - {% if min > 0 %} -
    • - - « - -
    • - {% else %} -
    • - - « - -
    • - {% endif %} - {% if page > 0 %} -
    • - - < - -
    • - {% else %} -
    • - - < - -
    • - {% endif %} - {% for p in range(min, max) %} - {% if page == p %} -
    • - - {{ p + 1 }} - -
    • - {% else %} -
    • - - {{ p + 1 }} - -
    • - {% endif %} - {% endfor %} - {% if page + 1 < pages %} -
    • - - > - -
    • - {% else %} -
    • - - > - -
    • - {% endif %} - {% if max < pages %} -
    • - - » - -
    • - {% else %} -
    • - - » - -
    • - {% endif %} -
    -{% endif %} -{%- endmacro %} -{% macro simple_pager(page, have_next, generator) - %} -
      - {% if page > 0 %} -
    • - < -
    • - {% else %} -
    • - < -
    • - {% endif %} - {% if have_next %} -
    • - > -
    • - {% else %} -
    • - > -
    • - {% endif %} -
    -{%- endmacro %} -{# ---------------------- Modal Window ------------------- #} -{% macro add_modal_window(modal_window_id='fa_modal_window', modal_label_id='fa_modal_label') %} - -{% endmacro %} -{% macro add_modal_button(url='', title='', content='', modal_window_id='fa_modal_window', btn_class='icon') %} - - {{ content|safe }} - -{% endmacro %} -{# ---------------------- Forms -------------------------- #} -{% macro render_field(form, field, kwargs={}, caller=None) %} -{% set direct_error = h.is_field_error(field.errors) %} -{% set prepend = kwargs.pop('prepend', None) %} -{% set append = kwargs.pop('append', None) %} -
    - - {% if prepend or append %} -
    - {%- if prepend - %} -
    - {{ prepend }} -
    - {%- endif - %} - {% endif %} - {% if field.widget.input_type == 'checkbox' %} - {% set _class = kwargs.setdefault('class', 'form-control-lg') %} - {% elif field.widget.input_type == 'file' %} - {% set _class = kwargs.setdefault('class', 'form-control-file') %} - {% else %} - {% set _class = kwargs.setdefault('class', 'form-control') %} - {% endif %} - {%- if direct_error %} {% set _ = kwargs.update({'class': kwargs['class'] ~ ' is-invalid'}) %} - {% endif - %} - {{ field(**kwargs) | safe }} - {%- if append - %} -
    - {{ append }} -
    - {%- endif - %} - {% if direct_error %} -
    -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    -
    - {% elif field.description %} -
    - {{ field.description|safe }} -
    - {% endif %} - {% if prepend or append %}
    {% endif %} - {% if caller %}{{ caller(form, field, direct_error, kwargs) }}{% endif %} -
    -{% endmacro %} -{% macro render_header(form, text) %} -

    {{ text }}

    -{% endmacro %} -{% macro render_form_fields(form, form_opts=None) %} -{% if form.hidden_tag is defined %} - {{ form.hidden_tag() }} -{% else %} - {% if csrf_token %} - - {% endif %} - {% for f in form if f.widget.input_type == 'hidden' %} - {{ f }} - {% endfor %} -{% endif %} -{% if form_opts and form_opts.form_rules %} - {% for r in form_opts.form_rules %}{{ r(form, form_opts=form_opts) }}{% endfor %} -{% else %} - {% for f in form if f.widget.input_type != 'hidden' %} - {% if form_opts %} - {% set kwargs = form_opts.widget_args.get(f.short_name, {}) %} - {% else %} - {% set kwargs = {} %} - {% endif %} - {{ render_field(form, f, kwargs) }} - {% endfor %} -{% endif %} -{% endmacro %} -{% macro form_tag(form=None, action=None) %} -
    -
    - {{ caller() }} -
    -
    -{% endmacro %} -{% macro render_form_buttons(cancel_url, extra=None, is_modal=False) %} -{% if is_modal %} - - {% if extra %}{{ extra }}{% endif %} - {% if cancel_url %} - - {{ _gettext('Cancel') }} - - {% endif %} -{% else %} -
    -
    -
    - - {% if extra %}{{ extra }}{% endif %} - {% if cancel_url %} - - {{ _gettext('Cancel') }} - - {% endif %} -
    -
    -{% endif %} -{% endmacro %} -{% macro render_form(form, cancel_url, extra=None, form_opts=None, action=None, is_modal=False) - %} -{% call form_tag(action=action) %} -{{ render_form_fields(form, form_opts=form_opts) }} -{{ render_form_buttons(cancel_url, extra, is_modal) }} -{% endcall %} -{% endmacro %} -{% macro form_css() %} - - - -{% if config.MAPBOX_MAP_ID %} - - -{% endif %} -{% if editable_columns %} - -{% endif %} -{% endmacro %} -{% macro form_js() %} -{% if config.MAPBOX_MAP_ID %} - - - - {% if config.MAPBOX_SEARCH %} - - - {% endif %} -{% endif %} - -{% if editable_columns %} - -{% endif %} - -{% endmacro %} -{% macro extra() %} -{% if admin_view.can_create %} - -{% endif %} -{% if admin_view.can_edit %} - -{% endif %} -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/master.html b/tests/flask_admin/bootstrap4/admin/master.html deleted file mode 100644 index 8f27dad..0000000 --- a/tests/flask_admin/bootstrap4/admin/master.html +++ /dev/null @@ -1 +0,0 @@ -{% extends admin_base_template %} diff --git a/tests/flask_admin/bootstrap4/admin/model/create.html b/tests/flask_admin/bootstrap4/admin/model/create.html deleted file mode 100644 index 2ad163b..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/create.html +++ /dev/null @@ -1,28 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block create_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/details.html b/tests/flask_admin/bootstrap4/admin/model/details.html deleted file mode 100644 index 0e6e86a..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/details.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block details_search %} -
    - - -
    - {% endblock %} - {% block details_table %} - - {% for c, name in details_columns %} - - - - - {% endfor %} -
    - - {{ name }} - - {{ get_value(model, c) }}
    - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/edit.html b/tests/flask_admin/bootstrap4/admin/model/edit.html deleted file mode 100644 index 4fa00a7..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/edit.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% from 'admin/lib.html' import extra with context %} {# backward compatible #} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block navlinks %} - - {% endblock %} - {% block edit_form %} - {{ lib.render_form(form, return_url, extra(), form_opts) }} - {% endblock %} -{% endblock %} -{% block tail %} - {{ super() }} - {{ lib.form_js() }} -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/inline_field_list.html b/tests/flask_admin/bootstrap4/admin/model/inline_field_list.html deleted file mode 100644 index 347977c..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/inline_field_list.html +++ /dev/null @@ -1,14 +0,0 @@ -{% import 'admin/model/inline_list_base.html' as base with context %} -{% macro render_field(field) %} -{{ field }} -{% if h.is_field_error(field.errors) %} -
      - {% for e in field.errors if e is string %} -
    • - {{ e }} -
    • - {% endfor %} -
    -{% endif %} -{% endmacro %} -{{ base.render_inline_fields(field, template, render_field, check) }} diff --git a/tests/flask_admin/bootstrap4/admin/model/inline_form.html b/tests/flask_admin/bootstrap4/admin/model/inline_form.html deleted file mode 100644 index 9a4b9fa..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/inline_form.html +++ /dev/null @@ -1,4 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -
    - {{ lib.render_form_fields(field.form, form_opts=form_opts) }} -
    diff --git a/tests/flask_admin/bootstrap4/admin/model/inline_list_base.html b/tests/flask_admin/bootstrap4/admin/model/inline_list_base.html deleted file mode 100644 index 3a9a442..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/inline_list_base.html +++ /dev/null @@ -1,62 +0,0 @@ -{% macro render_inline_fields(field, template, render, check=None) %} -
    - {# existing inline form fields #} -
    - {% for subfield in field %} -
    - {%- if not check or check(subfield) %} - - - {{ field.label.text }} #{{ loop.index }} -
    - {% if subfield.get_pk and subfield.get_pk() %} - - - {% else %} - - - - {% endif %} -
    -
    -
    -
    - {%- endif - %} - {{ render(subfield) }} -
    - {% endfor %} -
    - {# template for new inline form fields #} -
    - {% filter forceescape %} -
    - - - {{ _gettext('New') }} {{ field.label.text }} - -
    - - - -
    -
    -
    - {{ render(template) }} -
    - {% endfilter %} -
    - - {{ _gettext('Add') }} {{ field.label.text }} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/model/layout.html b/tests/flask_admin/bootstrap4/admin/model/layout.html deleted file mode 100644 index de0325b..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/layout.html +++ /dev/null @@ -1,138 +0,0 @@ -{% macro filter_options(btn_class='dropdown-toggle') %} - - {{ _gettext('Add Filter') }} - - - -{% endmacro %} -{% macro export_options(btn_class='dropdown-toggle') %} -{% if admin_view.export_types|length > 1 %} - -{% else %} -
  • - - {{ _gettext('Export') }} - -
  • -{% endif %} -{% endmacro %} -{% macro filter_form() %} -
    - {% if sort_column is not none %} - - {% endif %} - {% if sort_desc %} - - {% endif %} - {% if search %} - - {% endif %} - {% if page_size != default_page_size %} - - {% endif %} -
    - - {% if active_filters %} - - {{ _gettext('Reset Filters') }} - - {% endif %} -
    -
    -
    -
    -{% endmacro %} -{% macro search_form(input_class="col-auto") %} - -{% endmacro %} -{% macro page_size_form(generator, btn_class='nav-link dropdown-toggle') %} - - {{ page_size }} {{ _gettext('items') }} - - - -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/model/list.html b/tests/flask_admin/bootstrap4/admin/model/list.html deleted file mode 100755 index f5aa267..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/list.html +++ /dev/null @@ -1,198 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/model/layout.html' as model_layout with context %} -{% import 'admin/actions.html' as actionlib with context %} -{% import 'admin/model/row_actions.html' as row_actions with context %} -{% block head %} - {{ super() }} - {{ lib.form_css() }} -{% endblock %} -{% block body %} - {% block model_menu_bar %} - - {% endblock %} - {% if filters %} - {{ model_layout.filter_form() }} -
    - {% endif %} - {% block model_list_table %} -
    - - - - {% block list_header scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_header %} - {% if admin_view.column_display_actions %} - - {% endif %} - {% endblock %} - {% for c, name in list_columns %} - {% set column = loop.index0 %} - - {% endfor %} - {% endblock %} - - - {% for row in data %} - - {% block list_row scoped %} - {% if actions %} - - {% endif %} - {% block list_row_actions_column scoped %} - {% if admin_view.column_display_actions %} - - {%- endif - %} - {% endblock %} - {% for c, name in list_columns %} - - {% endfor %} - {% endblock %} - - {% else %} - - - - {% endfor %} -
    - -   - {% if admin_view.is_sortable(c) %} - {% if sort_column == column %} - - {{ name }} - {% if sort_desc %} - - {% else %} - - {% endif %} - - {% else %} - - {{ name }} - - {% endif %} - {% else %} - {{ name }} - {% endif %} - {% if admin_view.column_descriptions.get(c) %} - - {% endif %} -
    - - - {% block list_row_actions scoped %} - {% for action in list_row_actions %}{{ action.render_ctx(get_pk_value(row), row) }}{% endfor %} - {% endblock %} - - {% if admin_view.is_editable(c) %} - {% set form = list_forms[get_pk_value(row)] %} - {% if form.csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=form.csrf_token._value()) }} - {% elif csrf_token %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c), csrf=csrf_token()) }} - {% else %} - {{ form[c](pk=get_pk_value(row), display_value=get_value(row, c)) }} - {% endif %} - {% else %} - {{ get_value(row, c) }} - {% endif %} -
    - {% block empty_list_message %} -
    - {{ admin_view.get_empty_list_message() }} -
    - {% endblock %} -
    -
    - {% block list_pager %} - {% if num_pages is not none %} - {{ lib.pager(page, num_pages, pager_url) }} - {% else %} - {{ lib.simple_pager(page, data|length == page_size, pager_url) }} - {% endif %} - {% endblock %} - {% endblock %} - {% block actions %} - {{ actionlib.form(actions, get_url('.action_view')) }} - {% endblock %} - {%- if admin_view.edit_modal or admin_view.create_modal or admin_view.details_modal - %} - {{ lib.add_modal_window() }} - {%- endif - %} - {% endblock %} - {% block tail %} - {{ super() }} - {% if filter_groups %} - - - {% endif %} - {{ lib.form_js() }} - - - {{ actionlib.script(_gettext('Please select at least one record.'), - actions, - actions_confirmation) }} - {% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/modals/create.html b/tests/flask_admin/bootstrap4/admin/model/modals/create.html deleted file mode 100644 index db4244d..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/modals/create.html +++ /dev/null @@ -1,31 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - - {% call lib.form_tag(action=url_for('.create_view', url=return_url)) %} - - -{% endcall %} -{# "save and add" button is removed from modal (it won't function properly) #} - {# % block create_form %} -{{ lib.render_form(form, return_url, extra=None, form_opts=form_opts, -action=url_for('.create_view', url=return_url), -is_modal=True) }} -{% endblock % #} -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/modals/details.html b/tests/flask_admin/bootstrap4/admin/model/modals/details.html deleted file mode 100755 index ec37abf..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/modals/details.html +++ /dev/null @@ -1,38 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{% block body %} - - -{% endblock %} -{% block tail %} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/modals/edit.html b/tests/flask_admin/bootstrap4/admin/model/modals/edit.html deleted file mode 100644 index 3cdcbd6..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/modals/edit.html +++ /dev/null @@ -1,27 +0,0 @@ -{% import 'admin/static.html' as admin_static with context %} -{% import 'admin/lib.html' as lib with context %} -{# store the jinja2 context for form_rules rendering logic #} -{% set render_ctx = h.resolve_ctx() %} -{% block body %} - - {% call lib.form_tag(action=url_for('.edit_view', id=request.args.get('id'), url=return_url)) %} - - -{% endcall %} -{% endblock %} -{% block tail %} - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/model/row_actions.html b/tests/flask_admin/bootstrap4/admin/model/row_actions.html deleted file mode 100644 index a10e574..0000000 --- a/tests/flask_admin/bootstrap4/admin/model/row_actions.html +++ /dev/null @@ -1,37 +0,0 @@ -{% import 'admin/lib.html' as lib with context %} -{% macro link(action, url, icon_class=None) %} - - - -{% endmacro %} -{% macro view_row(action, row_id, row) %} -{{ link(action, get_url('.details_view', id=row_id, url=return_url), 'fa fa-eye glyphicon glyphicon-eye-open') }} -{% endmacro %} -{% macro view_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.details_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro edit_row(action, row_id, row) %} -{{ link(action, get_url('.edit_view', id=row_id, url=return_url), 'fa fa-pencil glyphicon glyphicon-pencil') }} -{% endmacro %} -{% macro edit_row_popup(action, row_id, row) %} -{{ lib.add_modal_button(url=get_url('.edit_view', id=row_id, url=return_url, modal=True), title=action.title, content=' - -') }} -{% endmacro %} -{% macro delete_row(action, row_id, row) %} -
    - {{ delete_form.id(value=get_pk_value(row)) }} - {{ delete_form.url(value=return_url) }} - {% if delete_form.csrf_token %} - {{ delete_form.csrf_token }} - {% elif csrf_token %} - - {% endif %} - -
    -{% endmacro %} diff --git a/tests/flask_admin/bootstrap4/admin/rediscli/console.html b/tests/flask_admin/bootstrap4/admin/rediscli/console.html deleted file mode 100644 index 82cb982..0000000 --- a/tests/flask_admin/bootstrap4/admin/rediscli/console.html +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'admin/master.html' %} -{% import 'admin/lib.html' as lib with context %} -{% import 'admin/static.html' as admin_static with context %} -{% block head %} - {{ super() }} - -{% endblock %} -{% block body %} -
    -
    -
    -
    - -
    -
    -
    -{% endblock %} -{% block tail %} - {{ super() }} - - -{% endblock %} diff --git a/tests/flask_admin/bootstrap4/admin/rediscli/response.html b/tests/flask_admin/bootstrap4/admin/rediscli/response.html deleted file mode 100644 index 661852c..0000000 --- a/tests/flask_admin/bootstrap4/admin/rediscli/response.html +++ /dev/null @@ -1,35 +0,0 @@ -{% macro render(item, depth=0) %} -{% set type = type_name(item) %} -{% if type == 'tuple' or type == 'list' %} - {% if not item %} - Empty {{ type }}. - {% else %} - {% for n in item %} - {{ loop.index }}) {{ render(n, depth + 1) }} -
    - {% endfor %} - {% endif %} -{% elif type == 'bool' %} - {% if depth == 0 and item %} - OK - {% else %} - {{ item }} - {% endif %} -{% elif type == 'str' or type == 'unicode' %} - "{{ item }}" -{% elif type == 'bytes' %} - "{{ item.decode('utf-8') }}" -{% elif type == 'TextWrapper' %} -
    -{{ item }}
    -    
    -{% elif type == 'dict' %} - {% for k, v in item.items() %} - {{ loop.index }}) {{ k }} - {{ render(v, depth + 1) }} -
    - {% endfor %} -{% else %} - {{ item }} -{% endif %} -{% endmacro %} -{{ render(result) }} diff --git a/tests/flask_admin/bootstrap4/admin/static.html b/tests/flask_admin/bootstrap4/admin/static.html deleted file mode 100644 index 811f9ba..0000000 --- a/tests/flask_admin/bootstrap4/admin/static.html +++ /dev/null @@ -1,3 +0,0 @@ -{% macro url() - %} -{{ get_url('{admin_endpoint}.static'.format(admin_endpoint=admin_view.admin.endpoint), *varargs, **kwargs) }} -{%- endmacro %} diff --git a/tests/jinja_adminlte/calendar.html b/tests/jinja_adminlte/calendar.html deleted file mode 100644 index 9a854aa..0000000 --- a/tests/jinja_adminlte/calendar.html +++ /dev/null @@ -1,345 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Blank Page {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Calendar

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    -

    Draggable Events

    -
    -
    - -
    -
    - Lunch -
    -
    - Go home -
    -
    - Do homework -
    -
    - Work on UI design -
    -
    - Sleep tight -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    Create Event

    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/charts-chartjs.html b/tests/jinja_adminlte/charts-chartjs.html deleted file mode 100644 index 53ce15f..0000000 --- a/tests/jinja_adminlte/charts-chartjs.html +++ /dev/null @@ -1,383 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}ChartsJS {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    ChartJS

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Area Chart

    -
    - - -
    -
    -
    -
    - -
    -
    - -
    - - -
    -
    -

    Donut Chart

    -
    - - -
    -
    -
    - -
    - -
    - - -
    -
    -

    Pie Chart

    -
    - - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    -
    -

    Line Chart

    -
    - - -
    -
    -
    -
    - -
    -
    - -
    - - -
    -
    -

    Bar Chart

    -
    - - -
    -
    -
    -
    - -
    -
    - -
    - - -
    -
    -

    Stacked Bar Chart

    -
    - - -
    -
    -
    -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/charts-flot.html b/tests/jinja_adminlte/charts-flot.html deleted file mode 100644 index ac30b16..0000000 --- a/tests/jinja_adminlte/charts-flot.html +++ /dev/null @@ -1,483 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Flot Charts {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Flot Charts

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    - - Interactive Area Chart -

    -
    - Real time -
    - - -
    -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    -
    - -
    -
    -

    - - Line Chart -

    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -

    - - Area Chart -

    -
    - - -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    -
    -

    - - Bar Chart -

    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -

    - - Donut Chart -

    -
    - - -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/charts-inline.html b/tests/jinja_adminlte/charts-inline.html deleted file mode 100644 index 9847af7..0000000 --- a/tests/jinja_adminlte/charts-inline.html +++ /dev/null @@ -1,611 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Inline Charts {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Inline Charts

    -
    -
    - -
    -
    -
    - -
    - -
    -
    - -
    -
    - -
    -
    -

    - - jQuery Knob -

    -
    - - -
    -
    - -
    -
    -
    - -
    - New Visitors -
    -
    - -
    - -
    - Bounce Rate -
    -
    - -
    - -
    - Server Load -
    -
    - -
    - -
    - Disk Space -
    -
    - -
    - -
    -
    - -
    - Bandwidth -
    -
    - -
    - -
    - CPU -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - - jQuery Knob Different Sizes -

    -
    - - -
    -
    - -
    -
    -
    - -
    - data-width="90" -
    -
    - -
    - -
    - data-width="120" -
    -
    - -
    - -
    - data-thickness="0.1" -
    -
    - -
    - -
    - data-angleArc="250" -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - - jQuery Knob Tron Style -

    -
    - - -
    -
    - -
    -
    -
    - -
    - data-width="90" -
    -
    - -
    - -
    - data-width="120" -
    -
    - -
    - -
    - data-thickness="0.1" -
    -
    - -
    - -
    - data-angleArc="250" -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - {% endblock content %} - - {% block javascripts %} - - - - - - - - - - - - - - - {% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-404.html b/tests/jinja_adminlte/examples-404.html deleted file mode 100644 index 88545b6..0000000 --- a/tests/jinja_adminlte/examples-404.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Error 404 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    404 Error Page

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    404

    -
    -

    - - Oops! Page not found. -

    -

    - We could not find the page you were looking for. - Meanwhile, you may - return to dashboard - or try using the search form. -

    -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-500.html b/tests/jinja_adminlte/examples-500.html deleted file mode 100644 index f4cf8d7..0000000 --- a/tests/jinja_adminlte/examples-500.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Error 500 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    500 Error Page

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    500

    -
    -

    - - Oops! Something went wrong. -

    -

    - We will work on fixing that right away. - Meanwhile, you may - return to dashboard - or try using the search form. -

    -
    -
    - -
    - -
    -
    - -
    -
    -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-blank.html b/tests/jinja_adminlte/examples-blank.html deleted file mode 100644 index ee51f7c..0000000 --- a/tests/jinja_adminlte/examples-blank.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Blank Page {% endblock %} - -{% block body_class %} - sidebar-mini pace-primary -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Blank Page

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-contacts.html b/tests/jinja_adminlte/examples-contacts.html deleted file mode 100644 index b7f932a..0000000 --- a/tests/jinja_adminlte/examples-contacts.html +++ /dev/null @@ -1,572 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Contacts {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Contacts

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    -
    - Digital Strategist -
    -
    -
    -
    -

    - - Nicole Pearson - -

    -

    - - About: - - Web Designer / UX / Graphic Artist / Coffee Lover -

    -
      -
    • - - - - Address: Demo Street 123, Demo City 04312, NJ -
    • -
    • - - - - Phone #: + 800 - 12 12 23 52 -
    • -
    -
    -
    - user-avatar -
    -
    -
    - -
    -
    -
    -
    - - - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-e-commerce.html b/tests/jinja_adminlte/examples-e-commerce.html deleted file mode 100644 index df1f949..0000000 --- a/tests/jinja_adminlte/examples-e-commerce.html +++ /dev/null @@ -1,249 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}eCommerce {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    E-commerce

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -

    LOWA Men’s Renegade GTX Mid Hiking Boots Review

    -
    - Product Image -
    -
    -
    - Product Image -
    -
    - Product Image -
    -
    - Product Image -
    -
    - Product Image -
    -
    - Product Image -
    -
    -
    -
    -

    LOWA Men’s Renegade GTX Mid Hiking Boots Review

    -

    - Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terr. -

    -
    -

    Available Colors

    -
    - - - - - -
    -

    - Size - - Please select one - -

    -
    - - - - -
    -
    -

    $80.00

    -

    - - Ex Tax: $80.00 - -

    -
    -
    -
    - - Add to Cart -
    -
    - - Add to Wishlist -
    -
    - -
    -
    -
    - - -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-forgot-password.html b/tests/jinja_adminlte/examples-forgot-password.html deleted file mode 100644 index 723aae7..0000000 --- a/tests/jinja_adminlte/examples-forgot-password.html +++ /dev/null @@ -1,72 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Forgot Password {% endblock %} - -{% block body_class %} - login-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-invoice-print.html b/tests/jinja_adminlte/examples-invoice-print.html deleted file mode 100644 index fcaa791..0000000 --- a/tests/jinja_adminlte/examples-invoice-print.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - Jinja2 AdminLTE - Invoice Print | AppSeed - - - - - - - - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - From -
    - Admin, Inc. -
    - 795 Folsom Ave, Suite 600 -
    - San Francisco, CA 94107 -
    - Phone: (804) 123-5432 -
    - Email: info@almasaeedstudio.com -
    -
    - -
    - To -
    - John Doe -
    - 795 Folsom Ave, Suite 600 -
    - San Francisco, CA 94107 -
    - Phone: (555) 539-1037 -
    - Email: john.doe@example.com -
    -
    - -
    - - Invoice #007612 - -
    -
    - - Order ID: - - 4F3S8J -
    - - Payment Due: - - 2/22/2014 -
    - - Account: - - 968-34567 -
    - -
    - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    QtyProductSerial #DescriptionSubtotal
    1Call of Duty455-981-221El snort testosterone trophy driving gloves handsome$64.50
    1Need for Speed IV247-925-726Wes Anderson umami biodiesel$50.00
    1Monsters DVD735-845-642Terry Richardson helvetica tousled street art master$10.70
    1Grown Ups Blue Ray422-568-642 - Tousled lomo letterpress - - $25.99 -
    -
    - -
    - -
    - -
    -

    - Payment Methods: -

    - Visa - Mastercard - American Express - Paypal -

    - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, weebly ning heekya handango imeem plugg dopplr - jibjab, movity jajah plickers sifteo edmodo ifttt zimbra. -

    -
    - -
    -

    - Amount Due 2/22/2014 -

    -
    - - - - - - - - - - - - - - - - - -
    Subtotal: - $250.30 -
    - Tax (9.3%) - - $10.34 -
    - Shipping: - - $5.80 -
    - Total: - - $265.24 -
    -
    -
    - -
    - -
    - -
    - - - - diff --git a/tests/jinja_adminlte/examples-invoice.html b/tests/jinja_adminlte/examples-invoice.html deleted file mode 100644 index 8ce78b1..0000000 --- a/tests/jinja_adminlte/examples-invoice.html +++ /dev/null @@ -1,279 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Invoice {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Invoice

    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - - Note: -
    - This page has been enhanced for printing. Click the print button at the bottom of the invoice to test. -
    - -
    - -
    -
    -

    - - AdminLTE, Inc. - - Date: 2/10/2014 - -

    -
    - -
    - -
    -
    - From -
    - Admin, Inc. -
    - 795 Folsom Ave, Suite 600 -
    - San Francisco, CA 94107 -
    - Phone: (804) 123-5432 -
    - Email: info@almasaeedstudio.com -
    -
    - -
    - To -
    - John Doe -
    - 795 Folsom Ave, Suite 600 -
    - San Francisco, CA 94107 -
    - Phone: (555) 539-1037 -
    - Email: john.doe@example.com -
    -
    - -
    - - Invoice #007612 - -
    -
    - - Order ID: - - 4F3S8J -
    - - Payment Due: - - 2/22/2014 -
    - - Account: - - 968-34567 -
    - -
    - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    QtyProductSerial #DescriptionSubtotal
    1Call of Duty455-981-221El snort testosterone trophy driving gloves handsome$64.50
    1Need for Speed IV247-925-726Wes Anderson umami biodiesel$50.00
    1Monsters DVD735-845-642Terry Richardson helvetica tousled street art master$10.70
    1Grown Ups Blue Ray422-568-642 - Tousled lomo letterpress - - $25.99 -
    -
    - -
    - -
    - -
    -

    - Payment Methods: -

    - Visa - Mastercard - American Express - Paypal -

    - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, weebly ning heekya handango imeem - plugg - dopplr jibjab, movity jajah plickers sifteo edmodo ifttt zimbra. -

    -
    - -
    -

    - Amount Due 2/22/2014 -

    -
    - - - - - - - - - - - - - - - - - -
    Subtotal: - $250.30 -
    - Tax (9.3%) - - $10.34 -
    - Shipping: - - $5.80 -
    - Total: - - $265.24 -
    -
    -
    - -
    - - -
    -
    - - - Print - - - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-language-menu.html b/tests/jinja_adminlte/examples-language-menu.html deleted file mode 100644 index 3bd9660..0000000 --- a/tests/jinja_adminlte/examples-language-menu.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Language Menu {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Language Menu

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-legacy-user-menu.html b/tests/jinja_adminlte/examples-legacy-user-menu.html deleted file mode 100644 index cff5ac2..0000000 --- a/tests/jinja_adminlte/examples-legacy-user-menu.html +++ /dev/null @@ -1,81 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Legacy User Menu {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Legacy User Menu

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-lockscreen.html b/tests/jinja_adminlte/examples-lockscreen.html deleted file mode 100644 index 8e6883b..0000000 --- a/tests/jinja_adminlte/examples-lockscreen.html +++ /dev/null @@ -1,77 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Lockscreen {% endblock %} -{% block body_class %} - lockscreen -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - - -
    - John Doe -
    - -
    - -
    - User Image -
    - - -
    -
    - -
    - -
    -
    -
    - -
    - -
    - Enter your password to retrieve your session -
    - - -
    - -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-login.html b/tests/jinja_adminlte/examples-login.html deleted file mode 100644 index 71bbd89..0000000 --- a/tests/jinja_adminlte/examples-login.html +++ /dev/null @@ -1,101 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Login {% endblock %} - -{% block body_class %} - login-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-profile.html b/tests/jinja_adminlte/examples-profile.html deleted file mode 100644 index acbba53..0000000 --- a/tests/jinja_adminlte/examples-profile.html +++ /dev/null @@ -1,516 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Profile {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Profile

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -
    - User profile picture -
    -

    Nina Mcintire

    -

    - Software Engineer -

    -
      -
    • - - Followers - - 1,322 -
    • -
    • - - Following - - 543 -
    • -
    • - - Friends - - 13,287 -
    • -
    - - - Follow - - -
    - -
    - - -
    -
    -

    About Me

    -
    - -
    - - - Education - -

    - B.S. in Computer Science from the University of Tennessee at Knoxville -

    -
    - - - Location - -

    - Malibu, California -

    -
    - - - Skills - -

    - UI Design - Coding - Javascript - PHP - Node.js -

    -
    - - - Notes - -

    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum enim neque. -

    -
    - -
    - -
    - -
    -
    - - -
    -
    -
    - -
    -
    - user image - - Jonathan Burke Jr. - - - - - Shared publicly - 7:30 PM today -
    - -

    - Lorem ipsum represents a long-held tradition for designers, - typographers and the like. Some people hate it and argue for - its demise, but others ignore the hate as they create awesome - tools to help create filler text for everyone from bacon lovers - to Charlie Sheen fans. -

    -

    - - - Share - - - - Like - - - - - Comments (5) - - -

    - -
    - - -
    -
    - User Image - - Sarah Ross - - - - - Sent you a message - 3 days ago -
    - -

    - Lorem ipsum represents a long-held tradition for designers, - typographers and the like. Some people hate it and argue for - its demise, but others ignore the hate as they create awesome - tools to help create filler text for everyone from bacon lovers - to Charlie Sheen fans. -

    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    - User Image - - Adam Jones - - - - - Posted 5 photos - 5 days ago -
    - -
    -
    - Photo -
    - -
    -
    -
    - Photo - Photo -
    - -
    - Photo - Photo -
    - -
    - -
    - -
    - -

    - - - Share - - - - Like - - - - - Comments (5) - - -

    - -
    - -
    - -
    - -
    - -
    - 10 Feb. 2014 -
    - - -
    - -
    - - - 12:05 - -

    - Support Team - sent you an email -

    -
    - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, - weebly ning heekya handango imeem plugg dopplr jibjab, movity - jajah plickers sifteo edmodo ifttt zimbra. Babblely odeo kaboodle - quora plaxo ideeli hulu weebly balihoo... -
    - -
    -
    - - -
    - -
    - - - 5 mins ago - -

    - Sarah Young - accepted your friend request -

    -
    -
    - - -
    - -
    - - - 27 mins ago - -

    - Jay White - commented on your post -

    -
    - Take me to your leader! - Switzerland is small and neutral! - We are more like Germany, ambitious and misunderstood! -
    - -
    -
    - - -
    - 3 Jan. 2014 -
    - - -
    - -
    - - - 2 days ago - -

    - Mina Lee - uploaded new photos -

    -
    - ... - ... - ... - ... -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-project-add.html b/tests/jinja_adminlte/examples-project-add.html deleted file mode 100644 index 416755f..0000000 --- a/tests/jinja_adminlte/examples-project-add.html +++ /dev/null @@ -1,149 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Product Add {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Project Add

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -

    General

    -
    - -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -
    -
    -
    -

    Budget

    -
    - -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -
    -
    -
    - Cancel - -
    -
    -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-project-detail.html b/tests/jinja_adminlte/examples-project-detail.html deleted file mode 100644 index 463cd0e..0000000 --- a/tests/jinja_adminlte/examples-project-detail.html +++ /dev/null @@ -1,253 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Project Detail {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Project Detail

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Projects Detail

    -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Estimated budget - - - 2300 - -
    -
    -
    -
    -
    -
    - - Total amount spent - - - 2000 - -
    -
    -
    -
    -
    -
    - - Estimated project duration - - - 20 - -
    -
    -
    -
    -
    -
    -

    Recent Activity

    -
    -
    - user image - - Jonathan Burke Jr. - - Shared publicly - 7:45 PM today -
    - -

    - Lorem ipsum represents a long-held tradition for designers, - typographers and the like. Some people hate it and argue for - its demise, but others ignore. -

    -

    - - - Demo File 1 v2 - -

    -
    -
    -
    - User Image - - Sarah Ross - - Sent you a message - 3 days ago -
    - -

    - Lorem ipsum represents a long-held tradition for designers, - typographers and the like. Some people hate it and argue for - its demise, but others ignore. -

    -

    - - - Demo File 2 - -

    -
    -
    -
    - user image - - Jonathan Burke Jr. - - Shared publicly - 5 days ago -
    - -

    - Lorem ipsum represents a long-held tradition for designers, - typographers and the like. Some people hate it and argue for - its demise, but others ignore. -

    -

    - - - Demo File 1 v1 - -

    -
    -
    -
    -
    -
    -

    - - AdminLTE v3 -

    -

    - Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terr. -

    -
    -
    -

    - Client Company - - Deveint Inc - -

    -

    - Project Leader - - Tony Chicken - -

    -
    -
    Project files
    - - -
    -
    -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-project-edit.html b/tests/jinja_adminlte/examples-project-edit.html deleted file mode 100644 index 536050e..0000000 --- a/tests/jinja_adminlte/examples-project-edit.html +++ /dev/null @@ -1,252 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Project Edit {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Project Edit

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -

    General

    -
    - -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -
    -
    -
    -

    Budget

    -
    - -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -
    -

    Files

    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    File NameFile Size
    Functional-requirements.docx49.8005 kb - -
    UAT.pdf28.4883 kb - -
    Email-from-flatbal.mln57.9003 kb - -
    Logo.png50.5190 kb - -
    Contract-10_12_2014.docx44.9715 kb - -
    -
    - -
    - -
    -
    -
    -
    - Cancel - -
    -
    -
    - -
    - - {% endblock content %} - - {% block javascripts %} - - - - - - - - - {% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-projects.html b/tests/jinja_adminlte/examples-projects.html deleted file mode 100644 index 165fb65..0000000 --- a/tests/jinja_adminlte/examples-projects.html +++ /dev/null @@ -1,615 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Projects {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Projects

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Projects

    -
    - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #Project NameTeam MembersProject ProgressStatus
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 57% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 47% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 77% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 60% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 12% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 35% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 87% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 77% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    # - AdminLTE v3 -
    - - Created 01.01.2019 - -
    -
      -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    • - Avatar -
    • -
    -
    -
    -
    -
    - - 77% Complete - -
    - Success - - - - View - - - - Edit - - - - Delete - -
    -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-recover-password.html b/tests/jinja_adminlte/examples-recover-password.html deleted file mode 100644 index 5e2af2e..0000000 --- a/tests/jinja_adminlte/examples-recover-password.html +++ /dev/null @@ -1,75 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Recover Password {% endblock %} - -{% block body_class %} - login-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/examples-register.html b/tests/jinja_adminlte/examples-register.html deleted file mode 100644 index d6f6c79..0000000 --- a/tests/jinja_adminlte/examples-register.html +++ /dev/null @@ -1,114 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Register {% endblock %} - -{% block body_class %} - register-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    - -
    - -
    - -
    -
    - - - I already have a membership - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/forms-advanced.html b/tests/jinja_adminlte/forms-advanced.html deleted file mode 100644 index 121f975..0000000 --- a/tests/jinja_adminlte/forms-advanced.html +++ /dev/null @@ -1,949 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Forms Advanced {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Advanced Form

    -
    -
    - -
    -
    -
    - -
    - -
    -
    - -
    -
    -

    Select2 (Default Theme)

    -
    - - -
    -
    - -
    -
    -
    -
    - - -
    - -
    - - -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -
    - -
    - -
    Custom Color Variants
    -
    -
    -
    - - -
    - -
    - -
    -
    - -
    - -
    -
    - -
    - -
    - -
    - - -
    - - -
    -
    -

    Select2 (Bootstrap4 Theme)

    -
    - - -
    -
    - -
    -
    -
    -
    - - -
    - -
    - - -
    - -
    - -
    -
    - - -
    - -
    - - -
    - -
    - -
    - -
    - - -
    - -
    -
    -

    Bootstrap Duallistbox

    -
    - - -
    -
    - -
    -
    -
    -
    - - -
    - -
    - -
    - -
    - - -
    - -
    -
    -
    -
    -

    Input masks

    -
    -
    - -
    - -
    -
    - - - -
    - -
    - -
    - - -
    -
    -
    - - - -
    - -
    - -
    - - -
    - -
    -
    - - - -
    - -
    - -
    - - -
    - -
    -
    - - - -
    - -
    - -
    - - -
    - -
    -
    - - - -
    - -
    - -
    - -
    - -
    - -
    -
    -

    Color & Time Picker

    -
    -
    - -
    - - -
    - - -
    - -
    - -
    - - - -
    -
    - -
    - - -
    -
    - -
    - -
    -
    - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    -

    Date picker

    -
    -
    - -
    - -
    - -
    -
    - -
    -
    -
    -
    - - -
    - -
    -
    - - - -
    - -
    - -
    - - -
    - -
    -
    - - - -
    - -
    - -
    - - -
    - -
    - -
    -
    - -
    - - -
    - - -
    -
    -

    iCheck Bootstrap - Checkbox & Radio Inputs

    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    - - -
    - - -
    -
    -

    - Bootstrap Switch -

    -
    -
    - - -
    -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/forms-editors.html b/tests/jinja_adminlte/forms-editors.html deleted file mode 100644 index 90edf9a..0000000 --- a/tests/jinja_adminlte/forms-editors.html +++ /dev/null @@ -1,115 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Forms Editor {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Text Editors

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -

    - Bootstrap WYSIHTML5 - - Simple and fast - -

    - -
    - - -
    - -
    - - -
    -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/forms-general.html b/tests/jinja_adminlte/forms-general.html deleted file mode 100644 index 79f89cd..0000000 --- a/tests/jinja_adminlte/forms-general.html +++ /dev/null @@ -1,814 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Forms General {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    General Form

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -

    Quick Example

    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    - -
    -
    - - -
    -
    - Upload -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -

    Different Height

    -
    -
    - -
    - -
    - -
    - -
    - -
    -
    -

    Different Width

    -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    - -
    - - -
    -
    -

    Input Addon

    -
    -
    -
    -
    - @ -
    - -
    -
    - -
    - .00 -
    -
    -
    -
    - $ -
    - -
    - .00 -
    -
    -

    With icons

    -
    -
    - - - -
    - -
    -
    - -
    - - - -
    -
    -
    -
    - - - -
    - -
    -
    - -
    -
    -
    -
    With checkbox and radio inputs
    -
    -
    -
    -
    - - - -
    - -
    - -
    - -
    -
    -
    - - - -
    - -
    - -
    - -
    - -
    With buttons
    -

    - Large: - - .input-group.input-group-lg - -

    -
    -
    - - -
    - - -
    - -

    - Normal -

    -
    -
    - -
    - - -
    - -

    - Small - - .input-group.input-group-sm - -

    -
    - - - - -
    - -
    - -
    - - -
    -
    -

    Horizontal Form

    -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - - -
    -
    - -
    - - -
    - -
    -
    -

    General Elements

    -
    - -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -

    - Custom Elements -

    -
    - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - - -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/forms-validation.html b/tests/jinja_adminlte/forms-validation.html deleted file mode 100644 index 9947b80..0000000 --- a/tests/jinja_adminlte/forms-validation.html +++ /dev/null @@ -1,170 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Forms Validation {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Validation

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -

    - Quick Example - - jQuery Validation - -

    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    - - -
    -
    - -
    - - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/gallery.html b/tests/jinja_adminlte/gallery.html deleted file mode 100644 index f93024d..0000000 --- a/tests/jinja_adminlte/gallery.html +++ /dev/null @@ -1,380 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Gallery {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Gallery

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    FilterizR Gallery with Ekko Lightbox

    -
    - -
    -
    -
    -
    -
    -

    Ekko Lightbox

    -
    -
    -
    -
    - - white sample - -
    -
    - - black sample - -
    -
    - - red sample - -
    -
    - - red sample - -
    -
    - - black sample - -
    -
    - - white sample - -
    -
    - - white sample - -
    -
    - - black sample - -
    -
    - - red sample - -
    -
    - - white sample - -
    -
    - - white sample - -
    -
    - - black sample - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/includes/footer.html b/tests/jinja_adminlte/includes/footer.html deleted file mode 100644 index 571326d..0000000 --- a/tests/jinja_adminlte/includes/footer.html +++ /dev/null @@ -1,17 +0,0 @@ - - diff --git a/tests/jinja_adminlte/includes/navigation.html b/tests/jinja_adminlte/includes/navigation.html deleted file mode 100644 index 3d7fbc7..0000000 --- a/tests/jinja_adminlte/includes/navigation.html +++ /dev/null @@ -1,156 +0,0 @@ - - - diff --git a/tests/jinja_adminlte/includes/scripts.html b/tests/jinja_adminlte/includes/scripts.html deleted file mode 100644 index 97f0964..0000000 --- a/tests/jinja_adminlte/includes/scripts.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/jinja_adminlte/includes/sidebar.html b/tests/jinja_adminlte/includes/sidebar.html deleted file mode 100644 index 92f2421..0000000 --- a/tests/jinja_adminlte/includes/sidebar.html +++ /dev/null @@ -1,702 +0,0 @@ - - diff --git a/tests/jinja_adminlte/index.html b/tests/jinja_adminlte/index.html deleted file mode 100644 index b5bd297..0000000 --- a/tests/jinja_adminlte/index.html +++ /dev/null @@ -1,812 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Dashboard {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Dashboard

    -
    - -
    - -
    - -
    - -
    - -
    - - -
    -
    - -
    -
    - -
    -
    -

    150

    -

    - New Orders -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    - 53 - - % - -

    -

    - Bounce Rate -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    44

    -

    - User Registrations -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    65

    -

    - Unique Visitors -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - - -
    - -
    - -
    -
    -

    - - Sales -

    -
    - -
    -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - -
    - - -
    -
    -

    Direct Chat

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - Alexander Pierce - - 23 Jan 2:00 pm - -
    - - message user image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - Sarah Bullock - 23 Jan 2:05 pm -
    - - message user image - -
    - You better believe it! -
    - -
    - - -
    -
    - Alexander Pierce - - 23 Jan 5:37 pm - -
    - - message user image - -
    - Working with AdminLTE on a great new app! Wanna join? -
    - -
    - - -
    -
    - Sarah Bullock - 23 Jan 6:10 pm -
    - - message user image - -
    - I would love to. -
    - -
    - -
    - - - - -
    - - - -
    - - -
    -
    -

    - - To Do List -

    -
    -
      -
    • - « -
    • -
    • - 1 -
    • -
    • - 2 -
    • -
    • - 3 -
    • -
    • - » -
    • -
    -
    -
    - -
    -
      -
    • - - - - - - -
      - - -
      - - Design a nice theme - - - - 2 mins - - -
      - - -
      -
    • -
    • - - - - -
      - - -
      - Make the theme responsive - - - 4 hours - -
      - - -
      -
    • -
    • - - - - -
      - - -
      - - Let theme shine like a star - - - - 1 day - -
      - - -
      -
    • -
    • - - - - -
      - - -
      - - Let theme shine like a star - - - - 3 days - -
      - - -
      -
    • -
    • - - - - -
      - - -
      - - Check your messages and notifications - - - - 1 week - -
      - - -
      -
    • -
    • - - - - -
      - - -
      - - Let theme shine like a star - - - - 1 month - -
      - - -
      -
    • -
    -
    - - -
    - -
    - - -
    - -
    -
    -

    - - Visitors -

    - -
    - - -
    - -
    -
    -
    -
    - - -
    - - -
    -
    -

    - - Sales Graph -

    -
    - - -
    -
    -
    - -
    - - - -
    - - -
    -
    -

    - - Calendar -

    - - - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/index2.html b/tests/jinja_adminlte/index2.html deleted file mode 100644 index a3262a2..0000000 --- a/tests/jinja_adminlte/index2.html +++ /dev/null @@ -1,1189 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Dashboard2 {% endblock %} - -{% block body_class %} - sidebar-mini layout-fixed layout-navbar-fixed layout-footer-fixed -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Dashboard v2

    -
    - -
    - -
    - -
    - -
    - -
    - - -
    -
    - -
    -
    -
    - - - -
    - CPU Traffic - - 10 - - % - - -
    - -
    - -
    - -
    -
    - - - -
    - Likes - 41,410 -
    - -
    - -
    - - -
    -
    -
    - - - -
    - Sales - 760 -
    - -
    - -
    - -
    -
    - - - -
    - New Members - 2,000 -
    - -
    - -
    - -
    - -
    -
    -
    -
    -
    Monthly Recap Report
    -
    - - - -
    -
    - -
    -
    -
    -

    - Sales: 1 Jan, 2014 - 30 Jul, 2014 -

    -
    - - -
    - -
    - -
    -

    - Goal Completion -

    -
    - Add Products to Cart - - - 160 - - /200 - -
    -
    -
    -
    - -
    - Complete Purchase - - - 310 - - /400 - -
    -
    -
    -
    - -
    - Visit Premium Page - - - 480 - - /800 - -
    -
    -
    -
    - -
    - Send Inquiries - - - 250 - - /500 - -
    -
    -
    -
    - -
    - -
    - -
    - - - -
    - -
    - -
    - - -
    - -
    - -
    -
    -

    US-Visitors Report

    -
    - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - 90,70,90,70,75,80,70 -
    -
    8390
    - - Visits - -
    - -
    -
    - 90,50,90,70,61,83,63 -
    -
    - 30% -
    - - Referrals - -
    - -
    -
    - 90,50,90,70,61,83,63 -
    -
    - 70% -
    - - Organic - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    -
    -

    - Direct Chat -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - message user image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - message user image - -
    - You better believe it! -
    - -
    - - -
    -
    - - Alexander Pierce - - - 23 Jan 5:37 pm - -
    - - message user image - -
    - Working with AdminLTE on a great new app! Wanna join? -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 6:10 pm - -
    - - message user image - -
    - I would love to. -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Latest Members -

    -
    - - 8 New Members - - - -
    -
    - -
    - - -
    - - - -
    - -
    - -
    - - -
    -
    -

    - Latest Orders -

    -
    - - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Order IDItemStatusPopularity
    - - OR9842 - - Call of Duty IV - - Shipped - - -
    - 90,80,90,-70,61,-83,63 -
    -
    - - OR1848 - - Samsung Smart TV - - Pending - - -
    - 90,80,-90,70,61,-83,68 -
    -
    - - OR7429 - - iPhone 6 Plus - - Delivered - - -
    - 90,-80,90,70,-61,83,63 -
    -
    - - OR7429 - - Samsung Smart TV - - Processing - - -
    - 90,80,-90,70,-61,83,63 -
    -
    - - OR1848 - - Samsung Smart TV - - Pending - - -
    - 90,80,-90,70,61,-83,68 -
    -
    - - OR7429 - - iPhone 6 Plus - - Delivered - - -
    - 90,-80,90,70,-61,83,63 -
    -
    - - OR9842 - - Call of Duty IV - - Shipped - - -
    - 90,80,90,-70,61,-83,63 -
    -
    -
    - -
    - - - -
    - -
    - -
    - -
    - - - -
    - - Inventory - - - 5,200 - -
    - -
    - -
    - - - -
    - - Mentions - - - 92,050 - -
    - -
    - -
    - - - -
    - - Downloads - - - 114,381 - -
    - -
    - -
    - - - -
    - - Direct Messages - - - 163,921 - -
    - -
    - -
    -
    -

    - Browser Usage -

    -
    - - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
      -
    • - - Chrome -
    • -
    • - - IE -
    • -
    • - - FireFox -
    • -
    • - - Safari -
    • -
    • - - Opera -
    • -
    • - - Navigator -
    • -
    -
    - -
    - -
    - - - -
    - - -
    -
    -

    - Recently Added Products -

    -
    - - -
    -
    - -
    - -
    - - - -
    - -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/index3.html b/tests/jinja_adminlte/index3.html deleted file mode 100644 index 81c0f0f..0000000 --- a/tests/jinja_adminlte/index3.html +++ /dev/null @@ -1,321 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Dashboard3 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Dashboard v3

    -
    - -
    - -
    - -
    - -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    -

    Online Store Visitors

    - View Report -
    -
    -
    -
    -

    - 820 - Visitors Over Time -

    -

    - - - 12.5% - - Since last week -

    -
    - -
    - -
    -
    - - - This Week - - - - Last Week - -
    -
    -
    - -
    -
    -

    Products

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ProductPriceSalesMore
    - Product 1 - Some Product - $13 USD - - - 12% - - 12,000 Sold - - - - -
    - Product 1 - Another Product - $29 USD - - - 0.5% - - 123,234 Sold - - - - -
    - Product 1 - Amazing Product - $1,230 USD - - - 3% - - 198 Sold - - - - -
    - Product 1 - Perfect Item - NEW - $199 USD - - - 63% - - 87 Sold - - - - -
    -
    -
    - -
    - -
    -
    -
    -
    -

    Sales

    - View Report -
    -
    -
    -
    -

    - $18,230.00 - Sales Over Time -

    -

    - - - 33.1% - - Since last month -

    -
    - -
    - -
    -
    - - - This year - - - - Last year - -
    -
    -
    - -
    -
    -

    Online Store Overview

    - -
    -
    -
    -

    - -

    -

    - - - 12% - - CONVERSION RATE -

    -
    - -
    -

    - -

    -

    - - - 0.8% - - SALES RATE -

    -
    - -
    -

    - -

    -

    - - - 1% - - REGISTRATION RATE -

    -
    - -
    -
    -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-boxed.html b/tests/jinja_adminlte/layout-boxed.html deleted file mode 100644 index fd73668..0000000 --- a/tests/jinja_adminlte/layout-boxed.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Layout Boxed {% endblock %} - -{% block body_class %} - sidebar-mini layout-boxed -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Boxed Layout

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    -
    -
    -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-collapsed-sidebar.html b/tests/jinja_adminlte/layout-collapsed-sidebar.html deleted file mode 100644 index e4646ce..0000000 --- a/tests/jinja_adminlte/layout-collapsed-sidebar.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Collapsed Sidebar {% endblock %} - -{% block body_class %} - sidebar-mini sidebar-collapse -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Collapsed Sidebar

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    -
    -
    -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-fixed-footer.html b/tests/jinja_adminlte/layout-fixed-footer.html deleted file mode 100644 index 7611aba..0000000 --- a/tests/jinja_adminlte/layout-fixed-footer.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Fixed Footer Layout {% endblock %} - -{% block body_class %} - sidebar-mini layout-footer-fixed -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Fixed Footer Layout

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    -
    -
    -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-fixed-sidebar.html b/tests/jinja_adminlte/layout-fixed-sidebar.html deleted file mode 100644 index fd6ec53..0000000 --- a/tests/jinja_adminlte/layout-fixed-sidebar.html +++ /dev/null @@ -1,98 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Fixed Sidebar {% endblock %} - -{% block body_class %} - sidebar-mini layout-fixed -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Fixed Layout

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    -
    -
    -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-fixed-topnav.html b/tests/jinja_adminlte/layout-fixed-topnav.html deleted file mode 100644 index 52794b0..0000000 --- a/tests/jinja_adminlte/layout-fixed-topnav.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Fixed Navbar Layout {% endblock %} - -{% block body_class %} - sidebar-mini layout-navbar-fixed -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Fixed Navbar Layout

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    -
    -
    -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layout-top-nav-sidebar.html b/tests/jinja_adminlte/layout-top-nav-sidebar.html deleted file mode 100644 index 1a6ddf3..0000000 --- a/tests/jinja_adminlte/layout-top-nav-sidebar.html +++ /dev/null @@ -1,125 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Top Navigation + Sidebar {% endblock %} - -{% block body_class %} - sidebar-collapse layout-top-nav -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    - Top Navigation - - Example 3.0 - -

    -
    - -
    - -
    - -
    - -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    Card title
    -

    - Some quick example text to build on the card title and make up the bulk of the card's - content. -

    - Card link - Another link -
    -
    -
    -
    -
    Card title
    -

    - Some quick example text to build on the card title and make up the bulk of the card's - content. -

    - Card link - Another link -
    -
    - -
    - -
    -
    -
    -
    Featured
    -
    -
    -
    Special title treatment
    -

    - With supporting text below as a natural lead-in to additional content. -

    - Go somewhere -
    -
    -
    -
    -
    Featured
    -
    -
    -
    Special title treatment
    -

    - With supporting text below as a natural lead-in to additional content. -

    - Go somewhere -
    -
    -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/layouts/base-fullscreen.html b/tests/jinja_adminlte/layouts/base-fullscreen.html deleted file mode 100644 index 0856c97..0000000 --- a/tests/jinja_adminlte/layouts/base-fullscreen.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - AdminLTE Jinja - - {% block title %}{% endblock %} - | AppSeed - - - {% block stylesheets %}{% endblock stylesheets %} - - - {% block content %}{% endblock content %} - - {% block javascripts %}{% endblock javascripts %} - - diff --git a/tests/jinja_adminlte/layouts/base.html b/tests/jinja_adminlte/layouts/base.html deleted file mode 100644 index 1569d21..0000000 --- a/tests/jinja_adminlte/layouts/base.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - AdminLTE Jinja - - {% block title %}{% endblock %} - | AppSeed - - {% block stylesheets %}{% endblock stylesheets %} - - -
    - {% include 'includes/navigation.html' %} - {% include 'includes/sidebar.html' %} - {% block content %}{% endblock content %} - {% include 'includes/footer.html' %} - - - -
    - - - {% block javascripts %}{% endblock javascripts %} - - diff --git a/tests/jinja_adminlte/login.html b/tests/jinja_adminlte/login.html deleted file mode 100644 index d50d914..0000000 --- a/tests/jinja_adminlte/login.html +++ /dev/null @@ -1,101 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Login {% endblock %} - -{% block body_class %} - login-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/mailbox-compose.html b/tests/jinja_adminlte/mailbox-compose.html deleted file mode 100644 index 3d4c691..0000000 --- a/tests/jinja_adminlte/mailbox-compose.html +++ /dev/null @@ -1,253 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Compose {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Compose

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - - Back to Inbox - -
    -
    -

    Folders

    -
    - -
    -
    - - -
    - -
    -
    -

    Labels

    -
    - -
    -
    - - - -
    - -
    - -
    -
    -
    -

    Compose New Message

    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    - - Attachment - -
    -

    - Max. 32MB -

    -
    -
    - - - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/mailbox-read-mail.html b/tests/jinja_adminlte/mailbox-read-mail.html deleted file mode 100644 index c4a9d70..0000000 --- a/tests/jinja_adminlte/mailbox-read-mail.html +++ /dev/null @@ -1,348 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Read Email {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Compose

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - - Back to Inbox - -
    -
    -

    Folders

    -
    - -
    -
    - - -
    - -
    -
    -

    Labels

    -
    - -
    -
    - - - -
    - -
    - -
    -
    -
    -

    Read Mail

    - -
    - -
    -
    -
    Message Subject Is Placed Here
    -
    - From: support@adminlte.io - 15 Feb. 2015 11:03 PM -
    -
    - -
    -
    - - - -
    - - -
    - -
    -

    - Hello John, -

    -

    - Keffiyeh blog actually fashion axe vegan, irony biodiesel. Cold-pressed hoodie chillwave put a bird - on it aesthetic, bitters brunch meggings vegan iPhone. Dreamcatcher vegan scenester mlkshk. Ethical - master cleanse Bushwick, occupy Thundercats banjo cliche ennui farm-to-table mlkshk fanny pack - gluten-free. Marfa butcher vegan quinoa, bicycle rights disrupt tofu scenester chillwave 3 wolf moon - asymmetrical taxidermy pour-over. Quinoa tote bag fashion axe, Godard disrupt migas church-key tofu - blog locavore. Thundercats cronut polaroid Neutra tousled, meh food truck selfies narwhal American - Apparel. -

    -

    - Raw denim McSweeney's bicycle rights, iPhone trust fund quinoa Neutra VHS kale chips vegan PBR&B - literally Thundercats +1. Forage tilde four dollar toast, banjo health goth paleo butcher. Four dollar - toast Brooklyn pour-over American Apparel sustainable, lumbersexual listicle gluten-free health goth - umami hoodie. Synth Echo Park bicycle rights DIY farm-to-table, retro kogi sriracha dreamcatcher PBR&B - flannel hashtag irony Wes Anderson. Lumbersexual Williamsburg Helvetica next level. Cold-pressed - slow-carb pop-up normcore Thundercats Portland, cardigan literally meditation lumbersexual crucifix. - Wayfarers raw denim paleo Bushwick, keytar Helvetica scenester keffiyeh 8-bit irony mumblecore - whatever viral Truffaut. -

    -

    - Post-ironic shabby chic VHS, Marfa keytar flannel lomo try-hard keffiyeh cray. Actually fap fanny - pack yr artisan trust fund. High Life dreamcatcher church-key gentrify. Tumblr stumptown four dollar - toast vinyl, cold-pressed try-hard blog authentic keffiyeh Helvetica lo-fi tilde Intelligentsia. Lomo - locavore salvia bespoke, twee fixie paleo cliche brunch Schlitz blog McSweeney's messenger bag swag - slow-carb. Odd Future photo booth pork belly, you probably haven't heard of them actually tofu ennui - keffiyeh lo-fi Truffaut health goth. Narwhal sustainable retro disrupt. -

    -

    - Skateboard artisan letterpress before they sold out High Life messenger bag. Bitters chambray - leggings listicle, drinking vinegar chillwave synth. Fanny pack hoodie American Apparel twee. American - Apparel PBR listicle, salvia aesthetic occupy sustainable Neutra kogi. Organic synth Tumblr viral - plaid, shabby chic single-origin coffee Etsy 3 wolf moon slow-carb Schlitz roof party tousled squid - vinyl. Readymade next level literally trust fund. Distillery master cleanse migas, Vice sriracha - flannel chambray chia cronut. -

    -

    - Thanks, -
    - Jane -

    -
    - -
    - - - - - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/mailbox.html b/tests/jinja_adminlte/mailbox.html deleted file mode 100644 index bac2190..0000000 --- a/tests/jinja_adminlte/mailbox.html +++ /dev/null @@ -1,700 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Mailbox {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Inbox

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - - Compose - -
    -
    -

    Folders

    -
    - -
    -
    - - -
    - -
    -
    -

    Labels

    -
    - -
    -
    - - -
    - -
    - -
    -
    -
    -

    Inbox

    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    -
    - - -
    - - - -
    - - -
    - 1-50/200 -
    - - -
    - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - 5 mins ago
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - 28 mins ago
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - 11 hours ago
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - 15 hours ago
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - Yesterday
    -
    - - -
    -
    - - - - - Alexander Pierce - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - 2 days ago
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - - 2 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - 2 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - 2 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - 2 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - - 4 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - 12 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - - 12 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - - 14 days ago -
    -
    - - -
    -
    - - - - - - Alexander Pierce - - - - AdminLTE 3.0 Issue - - - Trying to find a solution to this problem... - - - - 15 days ago -
    - -
    - -
    - - -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/page-403.html b/tests/jinja_adminlte/page-403.html deleted file mode 100644 index b5890ff..0000000 --- a/tests/jinja_adminlte/page-403.html +++ /dev/null @@ -1,85 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Error 403 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    404 Error Page

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    404

    -
    -

    - - Oops! Page not found. -

    -

    - We could not find the page you were looking for. - Meanwhile, you may - return to dashboard - or try using the search form. -

    -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/page-404.html b/tests/jinja_adminlte/page-404.html deleted file mode 100644 index 1ac85ff..0000000 --- a/tests/jinja_adminlte/page-404.html +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Error 404 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    404 Error Page

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    404

    -
    -

    - - Oops! Page not found. -

    -

    - We could not find the page you were looking for. - Meanwhile, you may - return to dashboard - or try using the search form. -

    -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/page-500.html b/tests/jinja_adminlte/page-500.html deleted file mode 100644 index f4cf8d7..0000000 --- a/tests/jinja_adminlte/page-500.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Error 500 {% endblock %} - -{% block body_class %} - sidebar-mini -{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    500 Error Page

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    500

    -
    -

    - - Oops! Something went wrong. -

    -

    - We will work on fixing that right away. - Meanwhile, you may - return to dashboard - or try using the search form. -

    -
    -
    - -
    - -
    -
    - -
    -
    -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/page-blank.html b/tests/jinja_adminlte/page-blank.html deleted file mode 100644 index ee51f7c..0000000 --- a/tests/jinja_adminlte/page-blank.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Blank Page {% endblock %} - -{% block body_class %} - sidebar-mini pace-primary -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    -
    -
    -

    Blank Page

    -
    -
    - -
    -
    -
    - -
    - -
    - -
    -
    -

    Title

    -
    - - -
    -
    -
    - Start creating your amazing application! -
    - - - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/register.html b/tests/jinja_adminlte/register.html deleted file mode 100644 index d6f6c79..0000000 --- a/tests/jinja_adminlte/register.html +++ /dev/null @@ -1,114 +0,0 @@ -{% extends "layouts/base-fullscreen.html" %} -{% block title %}Register {% endblock %} - -{% block body_class %} - register-page -{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    - -
    - -
    - -
    -
    - - - I already have a membership - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/tables-data.html b/tests/jinja_adminlte/tables-data.html deleted file mode 100644 index 3b5ff4a..0000000 --- a/tests/jinja_adminlte/tables-data.html +++ /dev/null @@ -1,2096 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Tables Data {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    DataTables

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    DataTable with minimal features & hover style

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Rendering engineBrowserPlatform(s)Engine versionCSS grade
    Trident - Internet - Explorer 4.0 - Win 95+4X
    Trident - Internet - Explorer 5.0 - Win 95+5C
    Trident - Internet - Explorer 5.5 - Win 95+5.5A
    Trident - Internet - Explorer 6 - Win 98+6A
    TridentInternet Explorer 7Win XP SP2+7 - A -
    - Trident - - AOL browser (AOL desktop) - - Win XP - - 6 - - A -
    - Gecko - - Firefox 1.0 - - Win 98+ / OSX.2+ - - 1.7 - - A -
    - Gecko - - Firefox 1.5 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Firefox 2.0 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Firefox 3.0 - - Win 2k+ / OSX.3+ - - 1.9 - - A -
    - Gecko - - Camino 1.0 - - OSX.2+ - - 1.8 - - A -
    - Gecko - - Camino 1.5 - - OSX.3+ - - 1.8 - - A -
    - Gecko - - Netscape 7.2 - - Win 95+ / Mac OS 8.6-9.2 - - 1.7 - - A -
    - Gecko - - Netscape Browser 8 - - Win 98SE+ - - 1.7 - - A -
    - Gecko - - Netscape Navigator 9 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Mozilla 1.0 - - Win 95+ / OSX.1+ - - 1 - - A -
    - Gecko - - Mozilla 1.1 - - Win 95+ / OSX.1+ - - 1.1 - - A -
    - Gecko - - Mozilla 1.2 - - Win 95+ / OSX.1+ - - 1.2 - - A -
    - Gecko - - Mozilla 1.3 - - Win 95+ / OSX.1+ - - 1.3 - - A -
    - Gecko - - Mozilla 1.4 - - Win 95+ / OSX.1+ - - 1.4 - - A -
    - Gecko - - Mozilla 1.5 - - Win 95+ / OSX.1+ - - 1.5 - - A -
    - Gecko - - Mozilla 1.6 - - Win 95+ / OSX.1+ - - 1.6 - - A -
    - Gecko - - Mozilla 1.7 - - Win 98+ / OSX.1+ - - 1.7 - - A -
    - Gecko - - Mozilla 1.8 - - Win 98+ / OSX.1+ - - 1.8 - - A -
    - Gecko - - Seamonkey 1.1 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Epiphany 2.20 - - Gnome - - 1.8 - - A -
    - Webkit - - Safari 1.2 - - OSX.3 - - 125.5 - - A -
    - Webkit - - Safari 1.3 - - OSX.3 - - 312.8 - - A -
    - Webkit - - Safari 2.0 - - OSX.4+ - - 419.3 - - A -
    - Webkit - - Safari 3.0 - - OSX.4+ - - 522.1 - - A -
    - Webkit - - OmniWeb 5.5 - - OSX.4+ - - 420 - - A -
    - Webkit - - iPod Touch / iPhone - - iPod - - 420.1 - - A -
    - Webkit - - S60 - - S60 - - 413 - - A -
    - Presto - - Opera 7.0 - - Win 95+ / OSX.1+ - - - - - A -
    - Presto - - Opera 7.5 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 8.0 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 8.5 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 9.0 - - Win 95+ / OSX.3+ - - - - - A -
    - Presto - - Opera 9.2 - - Win 88+ / OSX.3+ - - - - - A -
    - Presto - - Opera 9.5 - - Win 88+ / OSX.3+ - - - - - A -
    - Presto - - Opera for Wii - - Wii - - - - - A -
    - Presto - - Nokia N800 - - N800 - - - - - A -
    - Presto - - Nintendo DS browser - - Nintendo DS - - 8.5 - - C/A - - 1 - -
    - KHTML - - Konqureror 3.1 - - KDE 3.1 - - 3.1 - - C -
    - KHTML - - Konqureror 3.3 - - KDE 3.3 - - 3.3 - - A -
    - KHTML - - Konqureror 3.5 - - KDE 3.5 - - 3.5 - - A -
    - Tasman - - Internet Explorer 4.5 - - Mac OS 8-9 - - - - - X -
    - Tasman - - Internet Explorer 5.1 - - Mac OS 7.6-9 - - 1 - - C -
    - Tasman - - Internet Explorer 5.2 - - Mac OS 8-X - - 1 - - C -
    - Misc - - NetFront 3.1 - - Embedded devices - - - - - C -
    - Misc - - NetFront 3.4 - - Embedded devices - - - - - A -
    - Misc - - Dillo 0.8 - - Embedded devices - - - - - X -
    - Misc - - Links - - Text only - - - - - X -
    - Misc - - Lynx - - Text only - - - - - X -
    - Misc - - IE Mobile - - Windows Mobile 6 - - - - - C -
    - Misc - - PSP browser - - PSP - - - - - C -
    - Other browsers - - All others - - - - - - - - U -
    - Rendering engine - - Browser - - Platform(s) - - Engine version - - CSS grade -
    -
    - -
    - -
    -
    -

    DataTable with default features

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Rendering engine - - Browser - - Platform(s) - - Engine version - - CSS grade -
    - Trident - - Internet - Explorer 4.0 - - Win 95+ - - 4 - - X -
    - Trident - - Internet - Explorer 5.0 - - Win 95+ - - 5 - - C -
    - Trident - - Internet - Explorer 5.5 - - Win 95+ - - 5.5 - - A -
    - Trident - - Internet - Explorer 6 - - Win 98+ - - 6 - - A -
    - Trident - - Internet Explorer 7 - - Win XP SP2+ - - 7 - - A -
    - Trident - - AOL browser (AOL desktop) - - Win XP - - 6 - - A -
    - Gecko - - Firefox 1.0 - - Win 98+ / OSX.2+ - - 1.7 - - A -
    - Gecko - - Firefox 1.5 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Firefox 2.0 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Firefox 3.0 - - Win 2k+ / OSX.3+ - - 1.9 - - A -
    - Gecko - - Camino 1.0 - - OSX.2+ - - 1.8 - - A -
    - Gecko - - Camino 1.5 - - OSX.3+ - - 1.8 - - A -
    - Gecko - - Netscape 7.2 - - Win 95+ / Mac OS 8.6-9.2 - - 1.7 - - A -
    - Gecko - - Netscape Browser 8 - - Win 98SE+ - - 1.7 - - A -
    - Gecko - - Netscape Navigator 9 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Mozilla 1.0 - - Win 95+ / OSX.1+ - - 1 - - A -
    - Gecko - - Mozilla 1.1 - - Win 95+ / OSX.1+ - - 1.1 - - A -
    - Gecko - - Mozilla 1.2 - - Win 95+ / OSX.1+ - - 1.2 - - A -
    - Gecko - - Mozilla 1.3 - - Win 95+ / OSX.1+ - - 1.3 - - A -
    - Gecko - - Mozilla 1.4 - - Win 95+ / OSX.1+ - - 1.4 - - A -
    - Gecko - - Mozilla 1.5 - - Win 95+ / OSX.1+ - - 1.5 - - A -
    - Gecko - - Mozilla 1.6 - - Win 95+ / OSX.1+ - - 1.6 - - A -
    - Gecko - - Mozilla 1.7 - - Win 98+ / OSX.1+ - - 1.7 - - A -
    - Gecko - - Mozilla 1.8 - - Win 98+ / OSX.1+ - - 1.8 - - A -
    - Gecko - - Seamonkey 1.1 - - Win 98+ / OSX.2+ - - 1.8 - - A -
    - Gecko - - Epiphany 2.20 - - Gnome - - 1.8 - - A -
    - Webkit - - Safari 1.2 - - OSX.3 - - 125.5 - - A -
    - Webkit - - Safari 1.3 - - OSX.3 - - 312.8 - - A -
    - Webkit - - Safari 2.0 - - OSX.4+ - - 419.3 - - A -
    - Webkit - - Safari 3.0 - - OSX.4+ - - 522.1 - - A -
    - Webkit - - OmniWeb 5.5 - - OSX.4+ - - 420 - - A -
    - Webkit - - iPod Touch / iPhone - - iPod - - 420.1 - - A -
    - Webkit - - S60 - - S60 - - 413 - - A -
    - Presto - - Opera 7.0 - - Win 95+ / OSX.1+ - - - - - A -
    - Presto - - Opera 7.5 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 8.0 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 8.5 - - Win 95+ / OSX.2+ - - - - - A -
    - Presto - - Opera 9.0 - - Win 95+ / OSX.3+ - - - - - A -
    - Presto - - Opera 9.2 - - Win 88+ / OSX.3+ - - - - - A -
    - Presto - - Opera 9.5 - - Win 88+ / OSX.3+ - - - - - A -
    - Presto - - Opera for Wii - - Wii - - - - - A -
    - Presto - - Nokia N800 - - N800 - - - - - A -
    - Presto - - Nintendo DS browser - - Nintendo DS - - 8.5 - - C/A - - 1 - -
    - KHTML - - Konqureror 3.1 - - KDE 3.1 - - 3.1 - - C -
    - KHTML - - Konqureror 3.3 - - KDE 3.3 - - 3.3 - - A -
    - KHTML - - Konqureror 3.5 - - KDE 3.5 - - 3.5 - - A -
    - Tasman - - Internet Explorer 4.5 - - Mac OS 8-9 - - - - - X -
    - Tasman - - Internet Explorer 5.1 - - Mac OS 7.6-9 - - 1 - - C -
    - Tasman - - Internet Explorer 5.2 - - Mac OS 8-X - - 1 - - C -
    - Misc - - NetFront 3.1 - - Embedded devices - - - - - C -
    - Misc - - NetFront 3.4 - - Embedded devices - - - - - A -
    - Misc - - Dillo 0.8 - - Embedded devices - - - - - X -
    - Misc - - Links - - Text only - - - - - X -
    - Misc - - Lynx - - Text only - - - - - X -
    - Misc - - IE Mobile - - Windows Mobile 6 - - - - - C -
    - Misc - - PSP browser - - PSP - - - - - C -
    - Other browsers - - All others - - - - - - - - U -
    - Rendering engine - - Browser - - Platform(s) - - Engine version - - CSS grade -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/tables-jsgrid.html b/tests/jinja_adminlte/tables-jsgrid.html deleted file mode 100644 index 696ebdd..0000000 --- a/tests/jinja_adminlte/tables-jsgrid.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Tables JSGrid {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    jsGrid

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -

    jsGrid

    -
    - -
    -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/tables-simple.html b/tests/jinja_adminlte/tables-simple.html deleted file mode 100644 index 6f58166..0000000 --- a/tests/jinja_adminlte/tables-simple.html +++ /dev/null @@ -1,1011 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Tables {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Simple Tables

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    Bordered Table

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #TaskProgressLabel
    1.Update software -
    -
    -
    -
    - 55% -
    2.Clean database -
    -
    -
    -
    - 70% -
    3.Cron job running -
    -
    -
    -
    - 30% -
    4.Fix and squish bugs -
    -
    -
    -
    - 90% -
    -
    - - -
    - -
    -
    -

    Condensed Full Width Table

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #TaskProgressLabel
    1.Update software -
    -
    -
    -
    - 55% -
    2.Clean database -
    -
    -
    -
    - 70% -
    3.Cron job running -
    -
    -
    -
    - 30% -
    4.Fix and squish bugs -
    -
    -
    -
    - 90% -
    -
    - -
    - -
    - -
    -
    -
    -

    Simple Full Width Table

    -
    -
      -
    • - « -
    • -
    • - 1 -
    • -
    • - 2 -
    • -
    • - 3 -
    • -
    • - » -
    • -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - # - TaskProgress - Label -
    1.Update software -
    -
    -
    -
    - - 55% - -
    2. - Clean database - -
    -
    -
    -
    - - 70% - -
    - 3. - - Cron job running - -
    -
    -
    -
    - - 30% - -
    - 4. - - Fix and squish bugs - -
    -
    -
    -
    - - 90% - -
    -
    - -
    - -
    -
    -

    - Striped Full Width Table -

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - # - - Task - - Progress - - Label -
    - 1. - - Update software - -
    -
    -
    -
    - - 55% - -
    - 2. - - Clean database - -
    -
    -
    -
    - - 70% - -
    - 3. - - Cron job running - -
    -
    -
    -
    - - 30% - -
    - 4. - - Fix and squish bugs - -
    -
    -
    -
    - - 90% - -
    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Responsive Hover Table -

    -
    -
    - -
    - -
    -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - ID - - User - - Date - - Status - - Reason -
    - 183 - - John Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 219 - - Alexander Pierce - - 11-7-2014 - - - Pending - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 657 - - Bob Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 175 - - Mike Doe - - 11-7-2014 - - - Denied - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    -
    - -
    - -
    -
    - -
    -
    -
    -
    -

    - Fixed Header Table -

    -
    -
    - -
    - -
    -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - ID - - User - - Date - - Status - - Reason -
    - 183 - - John Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 219 - - Alexander Pierce - - 11-7-2014 - - - Pending - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 657 - - Bob Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 175 - - Mike Doe - - 11-7-2014 - - - Denied - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 134 - - Jim Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 494 - - Victoria Doe - - 11-7-2014 - - - Pending - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 832 - - Michael Doe - - 11-7-2014 - - - Approved - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    - 982 - - Rocky Doe - - 11-7-2014 - - - Denied - - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    -
    - -
    - -
    -
    - -
    -
    -
    -
    -

    - Expandable Table -

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - # - - User - - Date - - Status - - Reason -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    - 219 - - Alexander Pierce - - 11-7-2014 - - Pending - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    - 657 - - Alexander Pierce - - 11-7-2014 - - Approved - - Bacon ipsum dolor sit amet salami venison chicken flank fatback doner. -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -

    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. -

    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-buttons.html b/tests/jinja_adminlte/ui-buttons.html deleted file mode 100644 index 3c86b17..0000000 --- a/tests/jinja_adminlte/ui-buttons.html +++ /dev/null @@ -1,2180 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Ui Buttons {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Buttons

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    - - Buttons -

    -
    -
    -

    - Various types of buttons. Using the base class - - .btn - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Normal - Large - - .btn-lg - - - Small - - .btn-sm - - - Extra Small - - .btn-xs - - - Flat - - .btn-flat - - - Disabled - - .disabled - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    - -
    -
    - -
    - -
    -
    -
    -
    -

    - - Outline Buttons -

    -
    -
    -

    - Various types of buttons. Using the base class - - .btn - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Normal - Large - - .btn-lg - - - Small - - .btn-sm - - - Extra Small - - .btn-xs - - - Flat - - .btn-flat - - - Disabled - - .disabled - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    - -
    -
    - -
    - -
    -
    -
    -
    -

    - - Gradient Buttons (bg-gradient-*) -

    -
    -
    -

    - Various types of buttons. Using the base class - - .btn - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Normal - Large - - .btn-lg - - - Small - - .btn-sm - - - Extra Small - - .btn-xs - - - Flat - - .btn-flat - - - Disabled - - .disabled - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    - - - - - - - - - - - -
    -
    - -
    -
    - -
    - -
    -
    - -
    -
    -

    Block Buttons

    -
    -
    - - - -
    -
    - - -
    -
    -

    Horizontal Button Group

    -
    -
    -

    - Horizontal button groups are easy to create with bootstrap. Just add your buttons - inside - - <div class="btn-group"></div> - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ButtonIconsFlatDropdown
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    -
    - -
    -
    -

    - Appended Buttons -

    -
    -
    - With dropdown - - - Normal -
    -
    - -
    - - -
    - - Flat -
    - - - - -
    - -
    - -
    - - -
    -
    -

    - Split buttons -

    -
    -
    - -

    - Normal split buttons: -

    -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - -

    - Flat split buttons: -

    -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - -

    - Hoverable split buttons: -

    -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    -
    - -
    - -
    - -
    - -
    -
    -

    - Application Buttons -

    -
    - - -
    - - -
    -
    -

    - Vertical Button Group -

    -
    -
    -

    - Vertical button groups are easy to create with bootstrap. Just add your buttons - inside - - <div class="btn-group-vertical"></div> - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ButtonIconsFlatDropdown
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - - - -
    -
    -
    - -
    - - -
    -
    -

    - Radio Button Group -

    -
    -
    -

    - Radio Button Group with - - .btn-secondary - -

    -
    - - - -
    -

    - Radio Button Group with - - .bg-olive - -

    -
    - - - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-general.html b/tests/jinja_adminlte/ui-general.html deleted file mode 100644 index 58835f9..0000000 --- a/tests/jinja_adminlte/ui-general.html +++ /dev/null @@ -1,1490 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI General {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Inline Charts

    -
    -
    - -
    -
    -
    - -
    - -
    -
    - -
    -
    -

    - - Color Palette -

    -
    -
    -
    -
    Theme Colors
    -
    - -
    -
    -

    Primary

    -
    -
    - #007bff -
    -
    - Disabled -
    -
    -
    - -
    -

    Secondary

    -
    -
    - #6c757d -
    -
    - Disabled -
    -
    -
    - -
    -

    Info

    -
    -
    - #17a2b8 -
    -
    - Disabled -
    -
    -
    - -
    -

    Success

    -
    -
    - #28a745 -
    -
    - Disabled -
    -
    -
    - -
    -

    Warning

    -
    -
    - #ffc107 -
    -
    - Disabled -
    -
    -
    - -
    -

    Danger

    -
    -
    - #dc3545 -
    -
    - Disabled -
    -
    -
    - -
    - -
    -
    Black/White Nuances
    -
    - -
    -
    -

    Black

    -
    -
    - #000000 -
    -
    - Disabled -
    -
    -
    - -
    -

    Gray Dark

    -
    -
    - #343a40 -
    -
    - Disabled -
    -
    -
    - -
    -

    Gray

    -
    -
    - #adb5bd -
    -
    - Disabled -
    -
    -
    - -
    -

    Light

    -
    -
    - #1f2d3d -
    -
    - Disabled -
    -
    -
    - -
    - -
    -
    Colors
    -
    - -
    -
    -

    Indigo

    -
    -
    - #6610f2 -
    -
    - Disabled -
    -
    -
    - -
    -

    Lightblue

    -
    -
    - #3c8dbc -
    -
    - Disabled -
    -
    -
    - -
    -

    Navy

    -
    -
    - - #001f3f - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Purple

    -
    -
    - - #605ca8 - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Fuchsia

    -
    -
    - - #f012be - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Pink

    -
    -
    - - #e83e8c - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Maroon

    -
    -
    - - #d81b60 - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Orange

    -
    -
    - - #ff851b - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Lime

    -
    -
    - - #01ff70 - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Teal

    -
    -
    - - #39cccc - -
    -
    - - Disabled - -
    -
    -
    - -
    -

    Olive

    -
    -
    - - #3d9970 - -
    -
    - - Disabled - -
    -
    -
    - -
    - -
    - -
    - - -
    Alerts and Callouts
    -
    -
    -
    -
    -

    - - Alerts -

    -
    - -
    -
    - -
    - - Alert! -
    - Danger alert preview. This alert is dismissable. A wonderful serenity has taken possession of my - entire - soul, like these sweet mornings of spring which I enjoy with my whole heart. -
    -
    - -
    - - Alert! -
    - Info alert preview. This alert is dismissable. -
    -
    - -
    - - Alert! -
    - Warning alert preview. This alert is dismissable. -
    -
    - -
    - - Alert! -
    - Success alert preview. This alert is dismissable. -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Callouts -

    -
    - -
    -
    -
    - I am a danger callout! -
    -

    - There is a problem that we need to fix. A wonderful serenity has taken possession of my entire - soul, - like these sweet mornings of spring which I enjoy with my whole heart. -

    -
    -
    -
    - I am an info callout! -
    -

    - Follow the steps to continue to payment. -

    -
    -
    -
    - I am a warning callout! -
    -

    - This is a yellow callout. -

    -
    -
    -
    - I am a success callout! -
    -

    - This is a green callout. -

    -
    -
    - -
    - -
    - -
    - - -
    Tabs in Cards
    -
    -
    - -
    - - -
    -
    -
    - A wonderful serenity has taken possession of my entire soul, - like these sweet mornings of spring which I enjoy with my whole heart. - I am alone, and feel the charm of existence in this spot, - which was created for the bliss of souls like mine. I am so happy, - my dear friend, so absorbed in the exquisite sense of mere tranquil existence, - that I neglect my talents. I should be incapable of drawing a single stroke - at the present moment; and yet I feel that I never was a greater artist than now. -
    - -
    - The European languages are members of the same family. Their separate existence is a myth. - For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ - in their grammar, their pronunciation and their most common words. Everyone realizes why a - new common language would be desirable: one could refuse to pay expensive translators. To - achieve this, it would be necessary to have uniform grammar, pronunciation and more common - words. If several languages coalesce, the grammar of the resulting language is more simple - and regular than that of the individual languages. -
    - -
    - Lorem Ipsum is simply dummy text of the printing and typesetting industry. - Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, - when an unknown printer took a galley of type and scrambled it to make a type specimen book. - It has survived not only five centuries, but also the leap into electronic typesetting, - remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset - sheets containing Lorem Ipsum passages, and more recently with desktop publishing software - like Aldus PageMaker including versions of Lorem Ipsum. -
    - -
    - -
    - -
    - -
    - -
    - - - -
    - Progress Bars -
    -
    -
    -
    -
    -

    - Progress Bars Different Sizes -

    -
    - -
    -

    - - .progress - -

    -
    -
    - - 40% Complete (success) - -
    -
    -

    - - .progress-sm - -

    -
    -
    - - 20% Complete - -
    -
    -

    - - .progress-xs - -

    -
    -
    - - 60% Complete (warning) - -
    -
    -

    - - .progress-xxs - -

    -
    -
    - - 60% Complete (warning) - -
    -
    -
    - -
    - -
    - -
    -
    -
    -

    - Progress bars -

    -
    - -
    -
    -
    - - 40% Complete (success) - -
    -
    -
    -
    - - 20% Complete - -
    -
    -
    -
    - - 60% Complete (warning) - -
    -
    -
    -
    - - 80% Complete - -
    -
    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Vertical Progress Bars Different Sizes -

    -
    - -
    -

    - By adding the class - - .vertical - - and - - .progress-sm - - , - - .progress-xs - - or - - .progress-xxs - - we achieve: -

    -
    -
    - - 40% - -
    -
    -
    -
    - - 100% - -
    -
    -
    -
    - - 60% - -
    -
    -
    -
    - - 60% - -
    -
    -
    - -
    - -
    - -
    -
    -
    -

    - Vertical Progress bars -

    -
    - -
    -

    - By adding the class - - .vertical - - we achieve: -

    -
    -
    - - 40% - -
    -
    -
    -
    - - 20% - -
    -
    -
    -
    - - 60% - -
    -
    -
    -
    - - 80% - -
    -
    -
    - -
    - -
    - -
    - - - -
    - Bootstrap Accordion & Carousel -
    -
    -
    -
    -
    -

    - Collapsible Accordion -

    -
    - -
    - -
    -
    - -
    -
    - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. - 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt - laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee - nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft - beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
    -
    -
    -
    - -
    -
    - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. - 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt - laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee - nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft - beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
    -
    -
    -
    - -
    -
    - Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. - 3 - wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt - laborum - eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee - nulla - assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred - nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft - beer - farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus - labore sustainable VHS. -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -

    - Carousel -

    -
    - -
    - -
    - -
    - -
    - -
    - - - -
    - Typography -
    -
    -
    -
    -
    -

    - - Headlines -

    -
    - -
    -

    - h1. Bootstrap heading -

    -

    - h2. Bootstrap heading -

    -

    - h3. Bootstrap heading -

    -

    - h4. Bootstrap heading -

    -
    - h5. Bootstrap heading -
    -
    - h6. Bootstrap heading -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Text Emphasis -

    -
    - -
    -

    - Lead to emphasize importance -

    -

    - Text green to emphasize success -

    -

    - Text aqua to emphasize info -

    -

    - Text light blue to emphasize info (2) -

    -

    - Text red to emphasize danger -

    -

    - Text yellow to emphasize warning -

    -

    - Text muted to emphasize general -

    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - - Primary Block Quotes -

    -
    - -
    -
    -

    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. -

    - - Someone famous in - - Source Title - - -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Secondary Block Quotes -

    -
    - -
    -
    -

    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante. -

    - - Someone famous in - - Source Title - - -
    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - - Unordered List -

    -
    - -
    -
      -
    • - Lorem ipsum dolor sit amet -
    • -
    • - Consectetur adipiscing elit -
    • -
    • - Integer molestie lorem at massa -
    • -
    • - Facilisis in pretium nisl aliquet -
    • -
    • - Nulla volutpat aliquam velit -
        -
      • - Phasellus iaculis neque -
      • -
      • - Purus sodales ultricies -
      • -
      • - Vestibulum laoreet porttitor sem -
      • -
      • - Ac tristique libero volutpat at -
      • -
      -
    • -
    • - Faucibus porta lacus fringilla vel -
    • -
    • - Aenean sit amet erat nunc -
    • -
    • - Eget porttitor lorem -
    • -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Ordered Lists -

    -
    - -
    -
      -
    1. - Lorem ipsum dolor sit amet -
    2. -
    3. - Consectetur adipiscing elit -
    4. -
    5. - Integer molestie lorem at massa -
    6. -
    7. - Facilisis in pretium nisl aliquet -
    8. -
    9. - Nulla volutpat aliquam velit -
        -
      1. - Phasellus iaculis neque -
      2. -
      3. - Purus sodales ultricies -
      4. -
      5. - Vestibulum laoreet porttitor sem -
      6. -
      7. - Ac tristique libero volutpat at -
      8. -
      -
    10. -
    11. - Faucibus porta lacus fringilla vel -
    12. -
    13. - Aenean sit amet erat nunc -
    14. -
    15. - Eget porttitor lorem -
    16. -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Unstyled List -

    -
    - -
    -
      -
    • - Lorem ipsum dolor sit amet -
    • -
    • - Consectetur adipiscing elit -
    • -
    • - Integer molestie lorem at massa -
    • -
    • - Facilisis in pretium nisl aliquet -
    • -
    • - Nulla volutpat aliquam velit -
        -
      • - Phasellus iaculis neque -
      • -
      • - Purus sodales ultricies -
      • -
      • - Vestibulum laoreet porttitor sem -
      • -
      • - Ac tristique libero volutpat at -
      • -
      -
    • -
    • - Faucibus porta lacus fringilla vel -
    • -
    • - Aenean sit amet erat nunc -
    • -
    • - Eget porttitor lorem -
    • -
    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - - Description -

    -
    - -
    -
    -
    - Description lists -
    -
    - A description list is perfect for defining terms. -
    -
    - Euismod -
    -
    - Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit. -
    -
    - Donec id elit non mi porta gravida at eget metus. -
    -
    - Malesuada porta -
    -
    - Etiam porta sem malesuada magna mollis euismod. -
    -
    -
    - -
    - -
    - -
    -
    -
    -

    - - Description Horizontal -

    -
    - -
    -
    -
    - Description lists -
    -
    - A description list is perfect for defining terms. -
    -
    - Euismod -
    -
    - Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit. -
    -
    - Donec id elit non mi porta gravida at eget metus. -
    -
    - Malesuada porta -
    -
    - Etiam porta sem malesuada magna mollis euismod. -
    -
    - Felis euismod semper eget lacinia -
    -
    - Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo - sit amet risus. -
    -
    -
    - -
    - -
    - -
    - - -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-icons.html b/tests/jinja_adminlte/ui-icons.html deleted file mode 100644 index 077a9f8..0000000 --- a/tests/jinja_adminlte/ui-icons.html +++ /dev/null @@ -1,79 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Icons {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Icons

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -

    Icons

    -
    - -
    -

    - You can use any font library you like with AdminLTE 3. -

    - Recommendations - -
    - -
    -
    - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-modals.html b/tests/jinja_adminlte/ui-modals.html deleted file mode 100644 index 526f8c7..0000000 --- a/tests/jinja_adminlte/ui-modals.html +++ /dev/null @@ -1,742 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Modals {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    - Modals & Alerts - - new - -

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    - - Modal Examples -

    -
    -
    - - - - - - - -
    -
    - - - -
    -
    - -
    - Instructions for how to use modals are available on the - - Bootstrap documentation - -
    -
    - -
    -
    -
    -

    - - Toasts Examples - - built in AdminLTE - -

    -
    -
    - - - - - -
    -
    - - - -
    -
    - - - - - -
    -
    -
    -
    -
    -

    - - SweetAlert2 Examples -

    -
    -
    - - - - - -
    - For more examples look at - https://sweetalert2.github.io/ -
    -
    - -
    -
    -
    -

    - - Toastr Examples -

    -
    -
    - - - - -
    - For more examples look at - - https://codeseven.github.io/toastr/ - -
    -
    - -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-navbar.html b/tests/jinja_adminlte/ui-navbar.html deleted file mode 100644 index ba73086..0000000 --- a/tests/jinja_adminlte/ui-navbar.html +++ /dev/null @@ -1,1088 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Navbar {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    - Navbar & Tabs - - new - -

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    - - Navbar Examples -

    -
    -
    -
    -
    -

    - Default Navbar - - (navbar-light) - -

    - -
    -
    -

    - Default Navbar - - (navbar-white navbar-light) - -

    - -
    -
    -
    -
    -

    - Primary Navbar - - - recommended - - (navbar-primary navbar-dark) - -

    - -
    -
    -

    - Primary Navbar - - (navbar-primary navbar-light) - -

    - -
    -
    -
    -
    -

    - Orange Navbar - - - recommended - - (navbar-orange navbar-light) - -

    - -
    -
    -

    - Orange Navbar - - (navbar-orange navbar-dark) - -

    - -
    -
    -
    - -
    -
    - -
    - -
    -
    -

    - Nav Tabs inside Card Header - - card-tabs / card-outline-tabs - -

    -
    -
    - -
    -
    -
    - -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    -
    -
    -
    -
    -

    Nav Tabs Overlay for loading

    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - Loading... -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    -
    -
    -
    - -
    - Loading... -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    -
    - -
    -
    -
    - -
    -
    -

    - - Vertical Tabs Examples -

    -
    -
    -

    Left Sided

    -
    - -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    -
    -

    - Right Sided - - (nav-tabs-right) - -

    -
    -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    -
    - -
    - -
    -
    -

    - - Tabs Custom Content Examples -

    -
    -
    -

    Custom Content Below

    - -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    -

    - Custom Content goes here -

    -
    -

    Custom Content Above

    - -
    -

    - Custom Content goes here -

    -
    -
    -
    - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin malesuada lacus ullamcorper dui molestie, sit amet congue quam finibus. Etiam ultricies nunc non magna feugiat commodo. Etiam odio magna, mollis auctor felis vitae, ullamcorper ornare ligula. Proin pellentesque tincidunt nisi, vitae ullamcorper felis aliquam id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin id orci eu lectus blandit suscipit. Phasellus porta, ante et varius ornare, sem enim sollicitudin eros, at commodo leo est vitae lacus. Etiam ut porta sem. Proin porttitor porta nisl, id tempor risus rhoncus quis. In in quam a nibh cursus pulvinar non consequat neque. Mauris lacus elit, condimentum ac condimentum at, semper vitae lectus. Cras lacinia erat eget sapien porta consectetur. -
    -
    - Mauris tincidunt mi at erat gravida, eget tristique urna bibendum. Mauris pharetra purus ut ligula tempor, et vulputate metus facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas sollicitudin, nisi a luctus interdum, nisl ligula placerat mi, quis posuere purus ligula eu lectus. Donec nunc tellus, elementum sit amet ultricies at, posuere nec nunc. Nunc euismod pellentesque diam. -
    -
    - Morbi turpis dolor, vulputate vitae felis non, tincidunt congue mauris. Phasellus volutpat augue id mi placerat mollis. Vivamus faucibus eu massa eget condimentum. Fusce nec hendrerit sem, ac tristique nulla. Integer vestibulum orci odio. Cras nec augue ipsum. Suspendisse ut velit condimentum, mattis urna a, malesuada nunc. Curabitur eleifend facilisis velit finibus tristique. Nam vulputate, eros non luctus efficitur, ipsum odio volutpat massa, sit amet sollicitudin est libero sed ipsum. Nulla lacinia, ex vitae gravida fermentum, lectus ipsum gravida arcu, id fermentum metus arcu vel metus. Curabitur eget sem eu risus tincidunt eleifend ac ornare magna. -
    -
    - Pellentesque vestibulum commodo nibh nec blandit. Maecenas neque magna, iaculis tempus turpis ac, ornare sodales tellus. Mauris eget blandit dolor. Quisque tincidunt venenatis vulputate. Morbi euismod molestie tristique. Vestibulum consectetur dolor a vestibulum pharetra. Donec interdum placerat urna nec pharetra. Etiam eget dapibus orci, eget aliquet urna. Nunc at consequat diam. Nunc et felis ut nisl commodo dignissim. In hac habitasse platea dictumst. Praesent imperdiet accumsan ex sit amet facilisis. -
    -
    -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-ribbons.html b/tests/jinja_adminlte/ui-ribbons.html deleted file mode 100644 index c8ff433..0000000 --- a/tests/jinja_adminlte/ui-ribbons.html +++ /dev/null @@ -1,271 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Ribbons {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Ribbons

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    Ribbons

    -
    - -
    -
    -
    -
    -
    -
    - Ribbon -
    -
    - Ribbon Default -
    - - .ribbon-wrapper.ribbon-lg .ribbon - -
    -
    -
    -
    -
    -
    - Ribbon Large -
    -
    - Ribbon Large -
    - - .ribbon-wrapper.ribbon-lg .ribbon - -
    -
    -
    -
    -
    -
    - Ribbon Extra Large -
    -
    - Ribbon Extra Large -
    - - .ribbon-wrapper.ribbon-xl .ribbon - -
    -
    -
    -
    -
    -
    -
    -
    - Ribbon -
    -
    - Ribbon Large -
    - with Large Text -
    - - .ribbon-wrapper.ribbon-lg .ribbon.text-lg - -
    -
    -
    -
    -
    -
    - Ribbon -
    -
    - Ribbon Extra Large -
    - with Large Text -
    - - .ribbon-wrapper.ribbon-xl .ribbon.text-lg - -
    -
    -
    -
    -
    -
    - Ribbon -
    -
    - Ribbon Extra Large -
    - with Extra Large Text -
    - - .ribbon-wrapper.ribbon-xl .ribbon.text-xl - -
    -
    -
    -
    -
    -
    - Photo 1 -
    -
    - Ribbon -
    -
    -
    -
    -
    -
    - Photo 2 -
    -
    - Ribbon -
    -
    -
    -
    -
    -
    - Photo 3 -
    -
    - Ribbon -
    -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-sliders.html b/tests/jinja_adminlte/ui-sliders.html deleted file mode 100644 index 8475f89..0000000 --- a/tests/jinja_adminlte/ui-sliders.html +++ /dev/null @@ -1,363 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Sliders {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Sliders

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    Ion Slider

    -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    Bootstrap Slider

    -
    - -
    -
    -
    -
    - -
    -

    - .slider-red input.slider -

    -
    - -
    -

    - .slider-blue input.slider -

    -
    - -
    -

    - .slider-green input.slider -

    -
    - -
    -

    - .slider-yellow input.slider -

    -
    - -
    -

    - .slider-teal input.slider -

    -
    - -
    -

    - .slider-purple input.slider -

    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/ui-timeline.html b/tests/jinja_adminlte/ui-timeline.html deleted file mode 100644 index 84a021b..0000000 --- a/tests/jinja_adminlte/ui-timeline.html +++ /dev/null @@ -1,190 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}UI Timeline {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Timeline

    -
    -
    - -
    -
    -
    - -
    - -
    -
    - -
    -
    - -
    - -
    - 10 Feb. 2014 -
    - - -
    - -
    - - - 12:05 - -

    - Support Team - sent you an email -

    -
    - Etsy doostang zoodles disqus groupon greplin oooj voxy zoodles, - weebly ning heekya handango imeem plugg dopplr jibjab, movity - jajah plickers sifteo edmodo ifttt zimbra. Babblely odeo kaboodle - quora plaxo ideeli hulu weebly balihoo... -
    - -
    -
    - - -
    - -
    - - - 5 mins ago - -

    - Sarah Young - accepted your friend request -

    -
    -
    - - -
    - -
    - - - 27 mins ago - -

    - Jay White - commented on your post -

    -
    - Take me to your leader! - Switzerland is small and neutral! - We are more like Germany, ambitious and misunderstood! -
    - -
    -
    - - -
    - 3 Jan. 2014 -
    - - -
    - -
    - - - 2 days ago - -

    - Mina Lee - uploaded new photos -

    -
    - ... - ... - ... - ... - ... -
    -
    -
    - - -
    - -
    - - - 5 days ago - -

    - Mr. Doe - shared a video -

    -
    -
    - -
    -
    - -
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/jinja_adminlte/widgets.html b/tests/jinja_adminlte/widgets.html deleted file mode 100644 index 2bb593e..0000000 --- a/tests/jinja_adminlte/widgets.html +++ /dev/null @@ -1,2811 +0,0 @@ -{% extends "layouts/base.html" %} -{% block title %}Widgets {% endblock %} - -{% block body_class %}{% endblock body_class %} - -{% block stylesheets %} - - - - - - - - -{% endblock stylesheets %} -{% block content %} - -
    - -
    -
    -
    -
    -

    Widgets

    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    Info Box
    -
    -
    -
    - - - -
    - Messages - 1,410 -
    - -
    - -
    - -
    -
    - - - -
    - Bookmarks - 410 -
    - -
    - -
    - -
    -
    - - - -
    - Uploads - 13,648 -
    - -
    - -
    - -
    -
    - - - -
    - Likes - 93,139 -
    - -
    - -
    - -
    - - -
    - Info Box With Custom Shadows - - - Using Bootstrap's Shadow Utility - - -
    -
    -
    -
    - - - -
    - Custom Shadows - None - -
    - -
    - -
    - -
    -
    - - - -
    - Custom Shadows - Small - -
    - -
    - -
    - -
    -
    - - - -
    - Custom Shadows - Regular - -
    - -
    - -
    - -
    -
    - - - -
    - Custom Shadows - Large - -
    - -
    - -
    - -
    - - -
    - Info Box With - - bg-* - -
    -
    -
    -
    - - - -
    - Bookmarks - 41,410 -
    -
    -
    - 70% Increase in 30 Days -
    - -
    - -
    - -
    -
    - - - -
    - Likes - 41,410 -
    -
    -
    - 70% Increase in 30 Days -
    - -
    - -
    - -
    -
    - - - -
    - Events - 41,410 -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    -
    - - - -
    - - Comments - - - 41,410 - -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    - - -
    - Info Box With - - bg-gradient-* - -
    -
    -
    -
    - - - -
    - - Bookmarks - - - 41,410 - -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    -
    - - - -
    - - Likes - - - 41,410 - -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    -
    - - - -
    - - Events - - - 41,410 - -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    -
    - - - -
    - - Comments - - - 41,410 - -
    -
    -
    - - 70% Increase in 30 Days - -
    - -
    - -
    - -
    - - - -
    - Small Box -
    -
    -
    - -
    -
    -

    150

    -

    - New Orders -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    - 53 - - % - -

    -

    - Bounce Rate -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    44

    -

    - User Registrations -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    -
    -

    65

    -

    - Unique Visitors -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - - -
    -
    - -
    - -
    - -
    - -
    -

    150

    -

    - New Orders -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - -
    - -
    - -
    - -
    -

    - 53 - - % - -

    -

    - Bounce Rate -

    -
    -
    - -
    - - More info - - -
    -
    - -
    - - -

    - Cards -

    -
    - Abilities -
    -
    -
    -
    -
    -

    - Expandable -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Collapsable -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Removable -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Maximizable -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Card Refresh -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - The body of the card after card refresh -
    -
    - -
    -
    -
    -

    - All together -

    -
    - - - - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Loading state -

    -
    -
    - The body of the card -
    - - -
    - -
    - -
    - -
    - -
    -
    -
    -

    - Loading state (dark) -

    -
    -
    - The body of the card -
    - - -
    - -
    - -
    - -
    - -
    - - -
    - Custom Shadows Variations - - - Using Bootstrap's Shadow Utility - - -
    -
    -
    -
    -
    -

    - Shadow - None -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Shadow - Small -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Shadow - Regular -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Shadow - Large -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    - - -
    - Colors Variations -
    -
    -
    -
    -
    -

    - Primary -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Success -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Warning -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Danger -

    -
    -
    - The body of the card -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Primary Outline -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Success Outline -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Warning Outline -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Danger Outline -

    -
    -
    - The body of the card -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Primary -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Success -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Warning -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Danger -

    -
    -
    - The body of the card -
    - -
    - -
    - -
    - -
    -
    -
    -
    -

    - Primary Gradient -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Success Gradient -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Warning Gradient -

    -
    - -
    - -
    - -
    - The body of the card -
    - -
    - -
    - -
    -
    -
    -

    - Danger Gradient -

    -
    -
    - The body of the card -
    - -
    - -
    - -
    - - - -

    - Direct Chat -

    -
    -
    - -
    -
    -

    - Direct Chat -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Direct Chat -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Direct Chat -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Direct Chat -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - - -
    - Custom Shadows Variations - - - Using Bootstrap's Shadow Utility - - -
    -
    -
    - -
    -
    -

    - Shadow - None -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Shadow - Small -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Shadow - Regular -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -
    -
    -

    - Shadow - Large -

    -
    - - 3 - - - - -
    -
    - -
    - -
    - -
    -
    - - Alexander Pierce - - - 23 Jan 2:00 pm - -
    - - Message User Image - -
    - Is this template really for free? That's unbelievable! -
    - -
    - - -
    -
    - - Sarah Bullock - - - 23 Jan 2:05 pm - -
    - - Message User Image - -
    - You better believe it! -
    - -
    - -
    - - - - -
    - - - -
    - -
    - -
    - -

    - Social Widgets -

    -
    -
    - -
    - -
    -
    - User Avatar -
    - -

    - Nadia Carmichael -

    -
    - Lead Developer -
    -
    - -
    - -
    - -
    - -
    - -
    -

    - Alexander Pierce -

    -
    - Founder & CEO -
    -
    -
    - User Avatar -
    - -
    - -
    - -
    - -
    - -
    -

    - Elizabeth Pierce -

    -
    - Web Designer -
    -
    -
    - User Avatar -
    - -
    - -
    - -
    - -
    -
    - -
    -
    -
    - User Image - - - Jonathan Burke Jr. - - - - Shared publicly - 7:30 PM Today - -
    - -
    - - - -
    - -
    - -
    - Photo -

    - I took this photo this morning. What do you guys think? -

    - - - - 127 likes - 3 comments - -
    - - - - - -
    - -
    - -
    - -
    -
    -
    - User Image - - - Jonathan Burke Jr. - - - - Shared publicly - 7:30 PM Today - -
    - -
    - - - -
    - -
    - -
    - -

    - Far far away, behind the word mountains, far from the - countries Vokalia and Consonantia, there live the blind - texts. Separated they live in Bookmarksgrove right at -

    -

    - the coast of the Semantics, a large language ocean. - A small river named Duden flows by their place and supplies - it with the necessary regelialia. It is a paradisematic - country, in which roasted parts of sentences fly into - your mouth. -

    - -
    - Attachment Image -
    -

    - - Lorem ipsum text generator - -

    -
    - Description about the attachment can be placed here. - Lorem Ipsum is simply dummy text of the printing and typesetting industry... - - more - -
    - -
    - -
    - - - - - - 45 likes - 2 comments - -
    - - - - - -
    - -
    - -
    - - -
    - Custom Shadows Variations - - - Using Bootstrap's Shadow Utility - - -
    -
    -
    - -
    - -
    -
    - User Avatar -
    - -

    - Nadia Carmichael -

    -
    - Lead Developer -
    -
    - -
    - -
    - -
    - -
    - -
    -

    - Alexander Pierce -

    -
    - Founder & CEO -
    -
    -
    - User Avatar -
    - -
    - -
    - -
    - -
    - -
    -

    - Elizabeth Pierce -

    -
    - Web Designer -
    -
    -
    - User Avatar -
    - -
    - -
    - -
    - -
    - -
    - - - - -
    - -{% endblock content %} - -{% block javascripts %} - - - - - - - - -{% endblock javascripts %} diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 0000000..b635214 --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,65 @@ +"""Djlint tests specific to pyproject.toml configuration. + +run:: + + pytest tests/test_config.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing + +for a single test, run:: + + pytest tests/test_config.py::test_custom_tags --cov=src/djlint \ + --cov-branch --cov-report xml:coverage.xml --cov-report term-missing + +""" +# pylint: disable=C0116 + +from click.testing import CliRunner + +from src.djlint import main as djlint + + +def test_custom_tags(runner: CliRunner) -> None: + result = runner.invoke(djlint, ["tests/config_custom_tags/html.html", "--check"]) + + assert ( + """-{% example stuff %}

    this is a long paragraph

    {% endexample %} ++{% example stuff %} ++

    ++ this is a long paragraph ++

    ++{% endexample %} +""" + in result.output + ) + assert result.exit_code == 1 + + +def test_extension(runner: CliRunner) -> None: + result = runner.invoke(djlint, ["tests/config_extension", "--check"]) + assert """Checking""" in result.output + assert """1/1""" in result.output + assert """0 files would be updated.""" in result.output + assert result.exit_code == 0 + + +def test_ignores(runner: CliRunner) -> None: + result = runner.invoke(djlint, ["tests/config_ignores"]) + assert """Linted 1 file, found 0 errors.""" in result.output + assert result.exit_code == 0 + + +def test_indent(runner: CliRunner) -> None: + result = runner.invoke(djlint, ["tests/config_indent", "--check"]) + + assert ( + """-

    ++
    ++

    ++

    ++ ++
    ++

    ++
    """ + in result.output + ) + assert result.exit_code == 1 diff --git a/tests/test_django.py b/tests/test_django.py new file mode 100644 index 0000000..5a5e1eb --- /dev/null +++ b/tests/test_django.py @@ -0,0 +1,259 @@ +"""Djlint tests specific to django. + +run:: + + pytest tests/test_django.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing + +for a single test, run:: + + pytest tests/test_django.py::test_single_line_tag --cov=src/djlint \ + --cov-branch --cov-report xml:coverage.xml --cov-report term-missing + +""" +# pylint: disable=C0116 + +from typing import TextIO + +from click.testing import CliRunner + +from .conftest import reformat + + +def test_dj_comments_tag(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, runner, b"{# comment #}\n{% if this %}
    {% endif %}" + ) + assert output["text"] == """{# comment #}\n{% if this %}
    {% endif %}\n""" + # no change was required + assert output["exit_code"] == 0 + + +def test_reformat_asset_tag(runner: CliRunner, tmp_file: TextIO) -> None: + # pylint: disable=C0301 + output = reformat( + tmp_file, + runner, + b"""{% block css %}{% assets "css_error" %}{% endassets %}{% endblock css %}""", + ) # noqa: E501 + assert ( + output["text"] + == """{% block css %} + {% assets "css_error" %} + + {% endassets %} +{% endblock css %} +""" + ) + assert output["exit_code"] == 1 + + +def test_autoescape(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, runner, b"{% autoescape on %}{{ body }}{% endautoescape %}" + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% autoescape on %} + {{ body }} +{% endautoescape %} +""" + ) + + +def test_comment(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, runner, b"""{% comment "Optional note" %}{{ body }}{% endcomment %}""" + ) + assert output["exit_code"] == 0 + # too short to put on multiple lines + assert ( + output["text"] + == r"""{% comment "Optional note" %}{{ body }}{% endcomment %} +""" + ) + + +def test_for_loop(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""
      {% for athlete in athlete_list %}
    • {{ athlete.name }}
    • {% empty %}
    • Sorry, no athletes in this list.
    • {% endfor %}
    """, + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""
      + {% for athlete in athlete_list %} +
    • {{ athlete.name }}
    • + {% empty %} +
    • Sorry, no athletes in this list.
    • + {% endfor %} +
    +""" + ) + + +def test_filter(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% filter force_escape|lower %}This text will be HTML-escaped, and will appear in all lowercase.{% endfilter %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% filter force_escape|lower %} + This text will be HTML-escaped, and will appear in all lowercase. +{% endfilter %} +""" + ) + + +def test_if(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% if athlete_list %}Number of athletes: {{ athlete_list|length }}{% elif athlete_in_locker_room_list %}Athletes should be out of the locker room soon!{% else %}No athletes.{% endif %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% if athlete_list %} + Number of athletes: {{ athlete_list|length }} +{% elif athlete_in_locker_room_list %} + Athletes should be out of the locker room soon! +{% else %} + No athletes. +{% endif %} +""" + ) + + +def test_ifchanged(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% for match in matches %}
    {% ifchanged match.ballot_id %}{% cycle "red" "blue" %}{% else %}gray{% endifchanged %}{{ match }}
    {% endfor %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% for match in matches %} +
    + {% ifchanged match.ballot_id %} + {% cycle "red" "blue" %} + {% else %} + gray + {% endifchanged %} + {{ match }} +
    +{% endfor %} +""" + ) + + +def test_include(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat(tmp_file, runner, b"""{% include "this" %}{% include "that"%}""") + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% include "this" %} +{% include "that" %} +""" + ) + + +def test_spaceless(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% spaceless %}

    Foo

    {% endspaceless %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% spaceless %} +

    + Foo +

    +{% endspaceless %} +""" + ) + + +def test_templatetag(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %}""", + ) + assert output["exit_code"] == 0 + assert ( + output["text"] + == r"""{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %} +""" + ) + + +def test_verbatim(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, runner, b"""{% verbatim %}Still alive.{% endverbatim %}""" + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% verbatim %} + Still alive. +{% endverbatim %} +""" + ) + + +def test_blocktranslate(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% blocktranslate %}The width is: {{ width }}{% endblocktranslate %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% blocktranslate %} + The width is: {{ width }} +{% endblocktranslate %} +""" + ) + + +def test_with(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% with total=business.employees.count %}{{ total }} employee{{ total|pluralize }}{% endwith %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% with total=business.employees.count %} + {{ total }} employee{{ total|pluralize }} +{% endwith %} +""" + ) + + +def test_single_line_tag(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{% if messages|length %}{% for message in messages %}{{ message }}{% endfor %}{% endif %}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{% if messages|length %} + {% for message in messages %}{{ message }}{% endfor %} +{% endif %} +""" + ) diff --git a/tests/test_djlint.py b/tests/test_djlint.py index 9389fbd..7c70d85 100644 --- a/tests/test_djlint.py +++ b/tests/test_djlint.py @@ -1,5 +1,5 @@ """ -Djlint Tests. +Djlint base tests. run:: @@ -15,24 +15,24 @@ or:: tox """ - +# pylint: disable=C0116 from pathlib import Path +from typing import TextIO + +from click.testing import CliRunner from src.djlint import main as djlint - -def write_to_file(the_file, the_text): - with open(the_file, mode="w+b") as open_file: - open_file.write(the_text) +from .conftest import write_to_file -def test_help(runner): +def test_help(runner: CliRunner) -> None: result = runner.invoke(djlint, ["-h"]) assert result.exit_code == 0 assert "Djlint django template files." in result.output -def test_bad_args(runner): +def test_bad_args(runner: CliRunner) -> None: result = runner.invoke(djlint, ["-a"]) assert result.exit_code == 2 assert "Error: No such option: -a" in result.output @@ -42,363 +42,92 @@ def test_bad_args(runner): assert "Error: No such option: --aasdf" in result.output -def test_nonexisting_file(runner): +def test_nonexisting_file(runner: CliRunner) -> None: result = runner.invoke(djlint, ["not_a_file.html"]) assert result.exit_code == 2 assert "Path 'not_a_file.html' does not exist." in result.output -def test_existing_file(runner): +def test_existing_file(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/bad.html"]) assert result.exit_code == 1 assert str(Path("tests/bad.html")) in result.output -def test_bad_path(runner): +def test_bad_path(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/nowhere"]) assert result.exit_code == 2 assert "does not exist." in result.output -def test_good_path_with_ext(runner): +def test_good_path_with_e(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/", "-e", "html"]) assert result.exit_code == 1 assert str(Path("tests/bad.html")) in result.output + +def test_good_path_with_extension(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/", "--extension", "html*"]) assert result.exit_code == 1 assert str(Path("tests/bad.html")) in result.output assert str(Path("tests/bad.html.dj")) in result.output -def test_good_path_with_bad_ext(runner): +def test_good_path_with_bad_ext(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/", "-e", "html.alphabet"]) assert result.exit_code == 0 assert "No files to check!" in result.output -def test_empty_file(runner, tmp_file): +def test_empty_file(runner: CliRunner, tmp_file: TextIO) -> None: write_to_file(tmp_file.name, b"") result = runner.invoke(djlint, [tmp_file.name]) assert result.exit_code == 0 -def test_E001(runner, tmp_file): - write_to_file(tmp_file.name, b"{{test }}\n{% test%}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "E001 1:" in result.output - assert "E001 2:" in result.output - - write_to_file(tmp_file.name, b"{%- test-%}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "E001 1:" in result.output - - write_to_file(tmp_file.name, b"{%-test -%}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "E001 1:" in result.output - - write_to_file(tmp_file.name, b"{%- test -%}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 0 - - -def test_E002(runner, tmp_file): - write_to_file(tmp_file.name, b"{% extends 'this' %}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "E002 1:" in result.output - - -def test_W003(runner, tmp_file): - write_to_file(tmp_file.name, b"{% endblock %}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W003 1:" in result.output - - -def test_W004(runner, tmp_file): - write_to_file(tmp_file.name, b'') - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W004 1:" in result.output - - -def test_W005(runner, tmp_file): - write_to_file(tmp_file.name, b"\n") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W005 2:" in result.output - - -def test_W006(runner, tmp_file): - write_to_file(tmp_file.name, b"") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W006 1:" in result.output - assert "found 1 error" in result.output - - -def test_W007(runner, tmp_file): - write_to_file(tmp_file.name, b'') - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W007 1:" in result.output - - -def test_W008(runner, tmp_file): - write_to_file(tmp_file.name, b"
    ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W008 1:" in result.output - - -def test_W009(runner, tmp_file): - write_to_file(tmp_file.name, b"

    ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W009 1:" in result.output - - -def test_W010(runner, tmp_file): - write_to_file(tmp_file.name, b'') - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W010 1:" in result.output - - write_to_file(tmp_file.name, b"
  • ID=username
  • ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 0 - - -def test_W011(runner, tmp_file): - write_to_file(tmp_file.name, b"
    ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W011 1:" in result.output - - -def test_W012(runner, tmp_file): - write_to_file(tmp_file.name, b'
    ') - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W012 1:" in result.output - - -def test_W013(runner, tmp_file): - open(tmp_file.name, mode="wb").write( - b"this is a very long line of random long text that is very long and should not be so long, hopefully it thows an error somwhere" - ) - tmp_file.seek(0) - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W013 1:" in result.output - - -def test_W014(runner, tmp_file): - write_to_file(tmp_file.name, b"
    \n\n\n

    ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W014 1:" in result.output - - -def test_W015(runner, tmp_file): - write_to_file(tmp_file.name, b"

    ") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W015 1:" in result.output - - -def test_W016(runner, tmp_file): - write_to_file(tmp_file.name, b"\nstuff\n") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W016 1:" in result.output - - -def test_W017(runner, tmp_file): - write_to_file(tmp_file.name, b"") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W017 1:" in result.output - - -def test_W018(runner, tmp_file): - write_to_file( - tmp_file.name, - b'', - ) - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 1 - assert "W018 1:" in result.output - - -def test_handlebars_else(runner, tmp_file): - write_to_file(tmp_file.name, b"{{^}}") - result = runner.invoke(djlint, [tmp_file.name]) - assert result.exit_code == 0 - assert "Linted 1 file, found 0 errors." in result.output - - -# assert "asdf" in result.output - - -def test_check(runner, tmp_file): +def test_check(runner: CliRunner, tmp_file: TextIO) -> None: write_to_file(tmp_file.name, b"

    ") result = runner.invoke(djlint, [tmp_file.name, "--check"]) assert result.exit_code == 0 - # assert "Linting 1 file!" in result.output - # assert "Linted 1 file, found 0 errors" in result.output -def test_check_non_existing_file(runner, tmp_file): +def test_check_non_existing_file(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/nothing.html", "--check"]) assert result.exit_code == 2 -def test_check_non_existing_folder(runner, tmp_file): +def test_check_non_existing_folder(runner: CliRunner) -> None: result = runner.invoke(djlint, ["tests/nothing", "--check"]) assert result.exit_code == 2 -def test_check_django_ledger(runner, tmp_file): - # source from https://github.com/arrobalytics/django-ledger - runner.invoke(djlint, ["tests/django_ledger", "--check"]) - # assert result.exit_code == 1 - # assert "Linting 120 files!" in result.output - # assert "0 files were updated." in result.output - - -def test_check_reformatter_simple_error(runner, tmp_file): +def test_check_reformatter_simple_error(runner: CliRunner, tmp_file: TextIO) -> None: write_to_file(tmp_file.name, b"

    nice stuff here

    ") result = runner.invoke(djlint, [tmp_file.name, "--check"]) assert result.exit_code == 1 assert "1 file would be updated." in result.output -def test_reformatter_simple_error(runner, tmp_file): +def test_reformatter_simple_error(runner: CliRunner, tmp_file: TextIO) -> None: write_to_file(tmp_file.name, b"

    nice stuff here

    ") result = runner.invoke(djlint, [tmp_file.name, "--reformat"]) assert result.exit_code == 1 assert "1 file was updated." in result.output -def test_check_reformatter_simple_error_quiet(runner, tmp_file): +def test_check_reformatter_simple_error_quiet( + runner: CliRunner, tmp_file: TextIO +) -> None: write_to_file(tmp_file.name, b"

    nice stuff here

    ") result = runner.invoke(djlint, [tmp_file.name, "--check", "--quiet"]) assert result.exit_code == 1 assert "1 file would be updated." in result.output -def test_check_reformatter_no_error(runner, tmp_file): +def test_check_reformatter_no_error(runner: CliRunner, tmp_file: TextIO) -> None: write_to_file( tmp_file.name, b"
    \n

    \n nice stuff here\n

    \n
    " ) result = runner.invoke(djlint, [tmp_file.name, "--check"]) assert result.exit_code == 0 assert "0 files would be updated." in result.output - - -def test_reformat_asset_tag(runner, tmp_file): - write_to_file( - tmp_file.name, - b"""{% block css %}{% assets "css_error" %}{% endassets %}{% endblock css %}""", - ) - result = runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """{% block css %} - {% assets "css_error" %} - - {% endassets %} -{% endblock css %} -""" - ) - assert result.exit_code == 1 - - -def test_textarea_tag(runner, tmp_file): - write_to_file(tmp_file.name, b"""
    """) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """
    - -
    -""" - ) - - -def test_script_tag(runner, tmp_file): - write_to_file( - tmp_file.name, - b"""
    \n \n
    """, - ) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """
    - -
    -""" - ) - - -def test_html_comments_tag(runner, tmp_file): - write_to_file( - tmp_file.name, - b"""
    \n \n\n
    """, - ) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """
    - - -
    -""" - ) - - -def test_dj_comments_tag(runner, tmp_file): - write_to_file( - tmp_file.name, - b"""{# comment #}\n{% if this %}
    {% endif %}""", - ) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """{# comment #}\n{% if this %}
    {% endif %}\n""" - ) - - -def test_template_tags(runner, tmp_file): - # njk tag - write_to_file( - tmp_file.name, - b"""{%- set posts = collections.docs -%}""", - ) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert open(tmp_file.name).read() == """{%- set posts = collections.docs -%}\n""" - - # ensure spaces are added - write_to_file( - tmp_file.name, - b"""{%-set posts = collections.docs-%}\n{%asdf%}""", - ) - runner.invoke(djlint, [tmp_file.name, "--reformat"]) - assert ( - open(tmp_file.name).read() - == """{%- set posts = collections.docs -%}\n{% asdf %}\n""" - ) diff --git a/tests/test_handlebars.py b/tests/test_handlebars.py new file mode 100644 index 0000000..3449188 --- /dev/null +++ b/tests/test_handlebars.py @@ -0,0 +1,56 @@ +"""Djlint tests specific to Handlebars.js. + +run:: + + pytest tests/test_handlebars.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing +""" +# pylint: disable=C0116 + +from typing import TextIO + +from click.testing import CliRunner + +from .conftest import reformat + + +def test_handlebars_else(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat(tmp_file, runner, b"{{^}}") + assert output["exit_code"] == 0 + + +def test_each(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{{#each people}}{{print_person}}

    and more long stuff

    {{/each}}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{{#each people }} + {{ print_person }} +

    + and more long stuff +

    +{{/each }} +""" + ) + + +def test_with(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""{{#with person}}

    {{firstname}} {{lastname}}

    {{/with}}""", + ) + assert output["exit_code"] == 1 + assert ( + output["text"] + == r"""{{#with person }} +

    + {{ firstname }} {{ lastname }} +

    +{{/with }} +""" + ) diff --git a/tests/test_html.py b/tests/test_html.py new file mode 100644 index 0000000..ac97cfe --- /dev/null +++ b/tests/test_html.py @@ -0,0 +1,92 @@ +"""Djlint tests specific to html. + +run:: + + pytest tests/test_html.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing + +""" +# pylint: disable=C0116 +from pathlib import Path +from typing import TextIO + +from click.testing import CliRunner + +from src.djlint import main as djlint + +from .conftest import reformat, write_to_file + + +def test_textarea_tag(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"""
    """) + runner.invoke(djlint, [tmp_file.name, "--reformat"]) + assert ( + Path(tmp_file.name).read_text() + == """
    + +
    +""" + ) + + +def test_script_tag(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file( + tmp_file.name, + b"""
    \n \n
    """, + ) + runner.invoke(djlint, [tmp_file.name, "--reformat"]) + assert ( + Path(tmp_file.name).read_text() + == """
    + +
    +""" + ) + + +def test_html_comments_tag(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file( + tmp_file.name, + b"""
    \n \n\n
    """, + ) + runner.invoke(djlint, [tmp_file.name, "--reformat"]) + assert ( + Path(tmp_file.name).read_text() + == """
    + + +
    +""" + ) + + +def test_long_attributes(runner: CliRunner, tmp_file: TextIO) -> None: + output = reformat( + tmp_file, + runner, + b"""""", + ) + + assert output["exit_code"] == 1 + + assert ( + output["text"] + == """ +""" + ) diff --git a/tests/test_linter.py b/tests/test_linter.py new file mode 100644 index 0000000..948bfdf --- /dev/null +++ b/tests/test_linter.py @@ -0,0 +1,180 @@ +"""Djlint linter rule tests. + +run:: + + pytest tests/test_linter.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing + +""" +# pylint: disable=C0116,C0103 + +from typing import TextIO + +from click.testing import CliRunner + +from src.djlint import main as djlint + +from .conftest import write_to_file + + +def test_E001(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"{{test }}\n{% test%}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "E001 1:" in result.output + assert "E001 2:" in result.output + + write_to_file(tmp_file.name, b"{%- test-%}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "E001 1:" in result.output + + write_to_file(tmp_file.name, b"{%-test -%}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "E001 1:" in result.output + + write_to_file(tmp_file.name, b"{%- test -%}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 0 + + +def test_E002(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"{% extends 'this' %}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "E002 1:" in result.output + + +def test_W003(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"{% endblock %}") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W003 1:" in result.output + + +def test_W004(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b'') + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W004 1:" in result.output + + +def test_W005(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"\n") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W005 2:" in result.output + + +def test_W006(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W006 1:" in result.output + assert "found 1 error" in result.output + + +def test_W007(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b'') + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W007 1:" in result.output + + +def test_W008(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"
    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W008 1:" in result.output + + +def test_W009(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"

    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W009 1:" in result.output + + +def test_W010(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b'') + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W010 1:" in result.output + + write_to_file(tmp_file.name, b"
  • ID=username
  • ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 0 + + +def test_W011(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"
    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W011 1:" in result.output + + +def test_W012(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b'
    ') + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W012 1:" in result.output + + +def test_W013(runner: CliRunner, tmp_file: TextIO) -> None: + # pylint: disable=C0301 + write_to_file( + tmp_file.name, + b"this is a very long line of random long text that is very long and should not be so long, hopefully it thows an error somewhere", + ) # noqa: E501 + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W013 1:" in result.output + + +def test_W014(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"
    \n\n\n

    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W014 1:" in result.output + + +def test_W015(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"

    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W015 1:" in result.output + + +def test_W016(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"\nstuff\n") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W016 1:" in result.output + + +def test_W017(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file(tmp_file.name, b"") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W017 1:" in result.output + + write_to_file(tmp_file.name, b"
    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W017 1:" in result.output + + write_to_file(tmp_file.name, b"
    ") + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W017 1:" in result.output + + +def test_W018(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file( + tmp_file.name, + b'
    ', + ) + result = runner.invoke(djlint, [tmp_file.name]) + assert result.exit_code == 1 + assert "W018 1:" in result.output diff --git a/tests/test_nunjucks.py b/tests/test_nunjucks.py new file mode 100644 index 0000000..fb1bea0 --- /dev/null +++ b/tests/test_nunjucks.py @@ -0,0 +1,39 @@ +"""Djlint tests specific to nunjucks. + +run:: + + pytest tests/test_nunjucks.py --cov=src/djlint --cov-branch \ + --cov-report xml:coverage.xml --cov-report term-missing + +""" +# pylint: disable=C0116 +from pathlib import Path +from typing import TextIO + +from click.testing import CliRunner + +from src.djlint import main as djlint + +from .conftest import write_to_file + + +def test_template_tags(runner: CliRunner, tmp_file: TextIO) -> None: + write_to_file( + tmp_file.name, + b"""{%- set posts = collections.docs -%}""", + ) + runner.invoke(djlint, [tmp_file.name, "--reformat"]) + assert ( + Path(tmp_file.name).read_text() == """{%- set posts = collections.docs -%}\n""" + ) + + # ensure spaces are added + write_to_file( + tmp_file.name, + b"""{%-set posts = collections.docs-%}\n{%asdf%}""", + ) + runner.invoke(djlint, [tmp_file.name, "--reformat"]) + assert ( + Path(tmp_file.name).read_text() + == """{%- set posts = collections.docs -%}\n{% asdf %}\n""" + ) diff --git a/tox.ini b/tox.ini index bb3b2e0..e002149 100644 --- a/tox.ini +++ b/tox.ini @@ -47,8 +47,9 @@ commands = ; check-manifest -v skip_install: true -[testenv] -deps = .[test] +[testenv:test] +extras = test commands = pytest --cov=src/djlint --cov-branch --cov-report xml:coverage.xml --cov-report term-missing skip_install: true +allowlist_externals = pytest

    +%&$K*PHn_T7}lk@z$JyFOzwFvrOx8em#G%ejnV#g?Eug@ICmB8?=SskF%4nt$<~_BQ zJm3EZVE^zqtH)@YvDpoE#JX@5*Wr4u0qh21ch+9?C~P`hgC=kkJ&5e+6x;we;>V5n zaWj70LOhIzgs1W2wkXIzvndBE))@-&ww-VzJi>QAq;dWc@PRoy%gO5?w5+2ZZsI!F zP94N<5O$eTE>~| zV5e5fw~3-EIYt=}-$?BG+)4dAPyQc74l2403&;CJvk{2u;jMl+d& zHZv8?WIBTw{P;ML!6Y}IPda(fz5?w8W1kYlPhUc_`73;@&g*H9a4nY@$KOjGc!+gd zfSS?`yv=N4O?%*Tkt1%58j6lfGi;hjB7Lh;P|CAx(qS-VH&zj00Ud<=+9LQ zatB}&5NOK20?276FD4l#y4 z$~g80w2Lz+5BH%ZJjICjk7y-dqRRYx|CUcUe-GXSV?UE|EoKTwLlZHMh99#a6cQl^ z%ApZE#@eB|XfY$CKStWCNP7dLT7LHjJ>+xdhy0yU>1T|4jkQCcFk=6hAb!Z%2mIw< zNacza^gGU9g6CmehcV`buvSLK(a?vCc|-o>E1JJd!(JiUNHsQENWY8p2S|GXMKDI% zt4MbP`Pz|y#|{GM}C2kf5ZOAG&9C!{sKHfy?BsVoaY+3 z3vK9jw4vLmpSPl2-o$ls1A53w{5XLh$MNGBeq2laID#&7nE5hSQ%4V?z8tuu&YZ!c z2T?SCLxes>z4{l7|B~00;}14m+BEsE)6_oA@d28cyUj+EJPDhQ@ zkN5?Dr73%5Hn)yh*ypx)VkWm#-aEkUXTO7$_Dy!s&MDKi&CXAo?IX0oK2hr&GPTB` zP^%p(v~p^lRyek5nPaz>Iu2@yio-QGj$^jV?~pY>|@*{fFH>(t_Vhnjq!P@~_U)!=8e z0RQ{{CSG>o({C%?>d~p{egDmG!svoT(lvsEur*>_8(Kze76;PbqO3-I>@?5UO#^;j z>h}*(uYZhs0#ei!n4`|XVs!*osXeGsZ9yGs37V_s;6-W-UZeWpU8)N?s+y3qst$Qf zRUz-HGUPi|pi^A}jj9r!kEUM4^5_lrz=jycUc9#mUxx8-kg}Q^JW0L5PH0}9=v@J7 z4~tY=SfX0OGt|sFwJB~ceu9Q77_ zt0FY2A~dR^2zJ4TU&YfdB+%`I?XVga^WHH2%#C9FLu@+v4YzjIx3xyOt2x?NjnQFh zh>25OOsZ;Qb5#>tqUzXcRmL@|BCcCyalf_y1o8YCIgkV)AMyoP0S>;Jt zDoZL}78RbKLD<)j=^cFN7lOnFclDX%F#&)myTbH*6{MFb zKfO-5>FvtN7*JNm5@lv=RC>l$O3k=QDH-=GIpcRq%J`>}(pl-9c9~R*?$4lo%%pvQ zHLwuo^4=V1#-BR;sp43kK2aqZPAbZrp~5U*{mkW4T{gbPqDc#D>ml~#b#R+XOP8;?@WvC$wrrg?XV&TjSzY` zZ-e?Q#y?QXd0~#V@^c-On>S6_d0xuO4^n1+l+yE)lva?b)Ph2#6jUm?uvv+PJxVBC zpt!;{iYeTy=)#kVEIhA>!k6H4MHH~oJ0J4Kxg(F^4{U}p7=%t}f@&y+`~vidLX$F! z?37;YqSRtfrIh$9xg=bPCGkoqO;dbnp5jW&6xb}O{(go4ZN zQBc{7@OK53@)WHEiur|xBKB!3g5Wk-XZ_$4U^lxQ`<0A^tI;Fae<=cOD4cmiq4l2VJN^o8 z2v<-;oB|ut6@ZxL-&iSMv>~6yet9*HX?EjQc{W}vkH$MRqwyJFl{dPOM?KV`ht#sW zKn3?IFy=}PLI>1C1$GM<9;DYW4y(g{1A0I+W0BTL@@sQM+nFw(b}xCi2g$2FQnT8V z}ZfX^M~Irm%L(Iu;0dbd=BHmZY#7MJGu8cX?oubP3!ZKTVIG=`(xzNpDO46d^z=3 z%dx*hQ~QVI(9b?5{a4AZ{}xT|dj#Iol-?g?*Td6I^dW=2fRH97pWsu)taN3uel0fiHw<%7S=JUXZDY3rc0Xph-3h`ZZy} zGMN|bqTxFU_fz1%hp%KBrguM&C#|rxmFofKLOV9=pqTTl4$7d5v1l*$8LoNF!~O{N zM;Q~2F-K+jWLYnFlxevejVm3Y<#a|?L;wxi3NEG$2^G*6A|0(!HG`K zbT01M5XeKJXrNKs!UeU3U~VCiEo&!p~F!e1PTH8tS7Q$ZsvjBJ!L* zOdZ7i;3bkbcHK$BX+3(-X2#^(g}wuOtY8ukq#O`@@nb)J9KesOg6ITrlR20LRP2Lf z>L3Xn+|6efjdi2=dBfLpff}J}%fZoxtWPxEW5vZEyw%ukNtnLD>{^8b>-K zZcJjwkNZL(1xnFss9YC_#f5#qAKv#YI?mtu9zMX_RkX`%xfVB32E;jvulZru9hV(X zqDL7v4O@4@-Ebc~01v`La1jWv9y2pgA|_8!HotO3o57Fg!x=zjpl4LWTv!jsfj@rn z9ry;=F?JjGMT#niIL8s=AnbbFLiyj0eZ%GjFl;>vPXbwB=rTSy`!&ax;AMCPUWM1K znS*1;ycuU6Y~#oKk?1qI=qA+952<7y?Ezx(;WO|t=ijQ4JQw3yD%B;N{CZ*6<$lWF z$eUr4uU;Aq{)VGr8#bg#;P)EM^VqhK1J~PEU^zTHY zA@Kh?0(Zf4@PWp)2V>2Q-R1KuYj&>aA-TL?0Zq^e1F!(bz|dtjGMe1ZjEB8wF;_E= zzYZPY7RIx8p*}oYGYnWSc60PJ68q5Vk^emzJ3yR41 zm*&P8^J88IV}8n0V9XO4pO5EZBPOoo&6|9Mk*7p#`Ky z1*AQO4zr5l*~mzL2k9T6$gU;#H!|uzhlcS8_FhBB_yTX}Ltn<2n{q!Gnuvv>`z7BI zi!X@9r;NQnX6*d|WA8ts4ZY30j5jEg-!cAw89#oFA1_cY&!Iy+gAVaDemsdEjpE+R%;68#<*JY^0KEF6oz$eic_i13E<;>35O-0BMhKbu1+c>(F0zQacW#&fJJL za*s9>$&Hlk25R+s>~8o4Uz^GQB$_pvxCd-$cDV)IiXW$BOP;1;Z#pUYpuvQahd6Ac zVC0q&B*k~ZvZP@6>#vo}g!h@B}+Sx)x4sdn?mF5n1?tTpK-XT(7!?@yl<@kv` z61O8wA)JBhX=;zq^dGX}_J(G-2mN#>^>Z8Ac(2-W2cN7P=lQ&EoZIW zGBn*W%4CUYsYXp3w9vd)3(Utf-|DP}tuB(Y|NVc2`qIB`PwZ$Kn(%uK+I*=&TUxze z@F#9HPty%J2iJ2OKEy3>H_iSw;<}&EZ)*hT`?cnT*BpX@v{0H}-P-saoRTu0{N=-h!$8){A4D<~gQm$T3#~ zP9>V_RHZ(rM)f*(sM~q2x||nkj`M1@yX;V#%MrD>oK}4 zUZ(aLwQ8Nws+Ji&YMMD;jWd_4e&$xydR(mNj8B`dcS3Mm_ zmn4X>A8ZdM{~Qf1X1+gT4}6)6FMS>p)#Kr$PS2U@nB}Lo*bf=?+Y_+DiP|5{nWe+Oo7vH)D3mV8N*IAY;OCaq zj6V!5#qt2Bjo+Dv1RZiHR!|pR`l4 zNyikEbf=<{o`JtAD)DDUCs@Xbx9ChF!vNTjL|sg#9)O_-H9|G-m*GnhKIJD`DJRKZ zS;?--O!h=$@>g0)xKdN%l#r`@5@ zw5Ju4_K`wU{{^hHPT>~;(5Y_5CfiMDO)A$R^g=5bdQb%v@_8=DtTg)I=~I-N?u5oP z1C7Z?iJ2kjI?;;DOj2xCmSVDs6rEMA$gEaHWY1Mt_LxGlwG0sWS-jz;Ulz}b=ozMtXPy)G-p2;{ci?L|VM8)S!MPr(#nB3Wl$_qf- ziBLpdyu$O-6_%f`(EJJo=Qk^;pjQC}qw*`*B;SI=@-DbdUImY9cK%=FmH(r>@|b0v zYmrY5zd%9yTS=jn*tkB|_3MuwQ-w9Dr zNsIzYQsiHfBfnDC%%BZWbWgeY=rPz%D8haTdPEuH@rp_EuS5^2oQA$LOWsuh@~R5g?5YIK zB6yzFMVeV%qZ!p5nqEDuY1M1wTD@N`Jm7Vzei+`BQ`Pr!u0#((6LN+9*jQbN76F~u zYJdtT1d3Nl4BKMLv0sV(YR02=R`TR`+h#U8q4BtDdZV|dH3rG8FBJILQM>$4l2OMQH;3n$Sz-<8f*8;AeYxE4b*{V^oTa>cd}-shdC1c*dIib7&f8#&>39l0M6h} zM!X=1#-2uPl#6Y&7zo_xTv!SF`TR8BeG)#VA;59my*vGExeDt7&XabATB$kPb*&3$Mz~jd%7b?{Z8X0eHI^68m(!j3G24b;x4)8~7 zckuZQ@G#$fpTGG}{uUorFb5f1U4*O&$~e#N**Xy9$Qu<>KtRBkx%7VLzXN>O&Q2KE zqw1&z@`*K%0L0@E`D1tH3hb{%kJ^YHv=zHMVJ{qjgO|CQcpRQgr@ZnmX`C+pON{DsFD0P6Z2CSj}Vb^&(WxwYa zdJx&5+di(%+`#chxEXFSq0`vXNw=dzprapkm)eP|uN(bNu1C$N0`i z3@UyC^bqV;jZqI*QU>d(gM4ikc3sG)-L>rFV%Rin-3n*n9NZ1}zVn-mgl4dhrYe`phA?3x3CE{{&`SkmsUJ=pj^@@cpzw*HHhkYkw2= z&ycQR^ImuWF2dvR)McLG_$)jRFT!u&xA5vj7CBHhZxN4og3wJ;nb%Uyz-kb-pw$qI zKR*iZ^ZIL5?xr4+=UCz#z(?-4QU7q$`T}WDg)iCs6-UF)%Ygfr9@@Xb@lE(6yaRs% zlKd}i=2Pm)=lJpU3?BAVN57>^zH3IKS&T+=0H_z=lkoS(+9hLNilKuT>varW#u;Wp zAjCo@6oWBWrWJZ%2o}OpbduGKUpF$s-@&MIKib6+^q5oV7iXEf@&M!77nqgt5hLFp z(H1P1Ff z{Q&k}!jn%K0gta0dX(dRU}z$@!!LcHG9g)Z9rx^28u7-nP`0y=!0Iz~^xm_d{7l_5( z)Qdahh3_HQh$a10nu=U%TnTeVs!*RANV}DEyU6uiG>iF^!WikUr77Kx7l+UhxY+&= z{F`{$2fHonN_Ug9UF38J*UEOTm2E^}`(=#t@A>YBU^F$fAeWj!qiMW}vN=iF97n4< zidJ=m>*X+-*+J^+0j`;S#AOe0*~N9UlelarF58I97V7I}l#-47x1Jl#I#O6eR9927 ztEgqh?$s->`%C_gz2BKB3%J8H-b5egy=y3&tGH(OqTB68tJ*=^u?>A@3w3o9dg=!J zSce~L@na3;vx<7MlKQ%w>lbx~(pkgKOglKchO7A&JiDJ-{4yo?4^}B!{u_UqLNm;5 z=Nw!Qhj_immRl@7ZKVy{h;FwYt!juz;f&r_$(m^y4Ws@-erNgu0m@{ekm%-S7jglFBjrEtmk~$G`eAQPZr?ch`qH& z*e`tEB=nHUv(!I1P`y(k)nk{SF1vJf+U07FeX-i@tJG%Ss22Mq$hTmJ_k#GiJ2X`60VtDC)=rn#zN z+AP&i4^XXpglgR5Rpp+h${D$;m{F{KU9Y2PaL^3q6rz?;XEpf9vJjQ~+N#vo5shiOiu}A(;2)@b zfA-Gsk5^7Wnz94(loe2_jKDgj2evCUa6l=6OO+I~MF~OIC_ac*H|R0N1pOI)P;4N* z1c(b@FD~ru52YI(PCbCW2x8B%fi6fj@0a6CDZUg1O;CQ2y>f$H(V0Az72>DNkT7M0 z#40^BMQNegN(n7ia#*zz!&;RP)~~p*#fk~rr0DRg6&Ze7;o*-cEc{)L-zz+fRnDQ~ z+H#!BC9jJipU<-KDV<|#%p@hnIHEI6LuZ<;xVQkt#)T^;E>6+$X^M(xy-Gam zRpJ{Jn$WF~garypSf_x51M*9_NxlgW$tU3t@`+~`e)J%}I6$Ym7CW2c#^*})$20b# zOUza=m-L_lUS~rppC@sQPq0yJqJyIO-L|MC4@D;VDk3>VVaYKHP3CuiQ?eDDQlh|= zIt8S3$}eTUd{Sv)Q}=0h>W%VDeLx;5Z^$#{8_hxwGMLTWr9-4`?C-Q732hLXpc0B9 z7t$dinf`AI&t+51XiQTSiZ&F&9!$X*UT8ak3do3*e@24*GBf1M+BWaZYI$Y0YgX2f zJhE15X4W3LXPwfttP66>d{xsjztVIxA@}rg_F-ccHs)btPU^TORmQOZvLFRw(;0_l zvVTW5dH~vxf3Aakb6w?=>mlzvKQx|D&CZLJXI`p2^7Aw^ze4W$Et;M`Ah-PGa>?H% z=ltvClz(21`LD<^@1JtYr6&z8=t4Wws0-Mbn?X51H59`oO^Rb8wxh5en#(vKpYb@_ z(5zxRd6b}sluSqCnXTz1ftpqlDYw!@xt3Z<|^jB8Tc2*;liVNll@qFwtdlO{XT+ER=2aMp;*1BdhA$Wv+fkR#kt6 zA7za;WP>iW78}EPTo2^27D^$H*Gx-O0=6Tu9aM__a_m+}5Z1m6 zO@d_2b8TtZ?O-Ym3pe_q8B}a;cJpX>=W(&kqcG=@fq5OU5VpbzzIQ+0e+RzfZ}DL+ zBRK4|lh0ZxCDvIS`I$&XG@?heFdip~Y1nn_V@y7PCNWQ3$gt1~oo6DI$)3i=5wX)1 z@!Nw6?#In99Jtt)6#@w@8-#UmgzwzLcVFY?^bO#{Vs@e6E6v2Xn*8Q-Od-}$hGgBGDlEW!3NSOpZZ*5JoF{9rwoHsZ%7{MdpYTm88aM?nS)NKbt&xU z^D{JxFYw(j`5S!Lz$^poHBxm-IA##**lz0JT-K}&V;{Q?{OP2X%uyj5bS_B;cEB#! z4SP+9-!|wpQ+Oydl@1|(9LA3$+~|(P1C{#-8NG Nq@hiL0OFdw)aM!3SWfnW`X{ zSSM12Ly5E381}L2u%0zbTd=be_Q6582Cju;a2zON1_8{$AtpBwlUpd8)6|bMp6DmR zkOEY)vlux;0B<`A7x)f!;`H~I)=)JL(k9_zDtV41&c188{;=ynK5Y+>wqet-XV|$3 zPQzKa9qxp?fFiy$Fd=C@XpM$J**wbi@&tZ75dqm~8Vx`OA0v2=-3FA$qo1SU{H#jy zoK2o%$#cMV=7^DB$HUmaj`RrIC7X9}yc-M~55XhwC_D~?RZqjS@I1T-zcDj!hO&7B zKYs7S{=AgQn_ z7&d+lFT-!)Rd^kK4}S#0t3Sc}@DcoNGP(@q@9K9~oK&@GlRf?R`kv6)f+E=F?3o-W7HFK%T- zbsh!cSC>`|eatsL;xCMSTwa6c;BhcC5ex4A8#CvIABHwG3xXjIG8q{aF*dD2A8BF^ zM+fQmqLB=tTP#FBSW5b97{_lW1iJ~vVYHHyXeGC!m0ToTuM@U^GNv70uVkzldKe5% zEy>3dl6_$N$5SCgQULz)nzGFVGYH# zg%S2%iq5!r{`db)yzIitr1$4OfmZb>W6q0I-iL_XgOsA7OBwTZ?gV4L%uVp`GNG#Q z_n*o{eC^PoT!^bDtT5uNigkK<{mRw{M{zvS6bIIn7ST*)`IR;0-@Zo3Rs=ZXbU*Y&1^F*GcY#yO( z9+EdULa`A?Ii`_z9wlBv+Et{@ez)ilH>rzJwlQyJgyw4u%WFx02PJbgP0fw`-&kGs z0=mMd@b7(H_He!ne!}Kwz*URwak-SIFxaspR?gV)Abo$GLJzrK3Do{{(#|9864I_B z?Rs+DielMGjhIXA9HEI_h6fwaE{t_V$Ivd$(&RtJJMY2xoSF65HdqJTMJ~y(MpJMe zXw9%^Orf-;raNH64I8s*wga&diQkFnFYGgmA6xKa6FTBX{8-OCvvtH{4dt?m>t-eY zUyc_`@pOzxEhdtSsmY^QT!h^#jB@^G?EMOiChfgqTaSLY z7R_u8bz>#h%nJNih96`2u>?OBSiBx zvlrV2MyvB%YxEG?@mtT;RO+3aZ?fX{j329M%a#+1rPR;GlnGB#u@Q!iShN@RG@%V) zB?LB@BSN|KQ%`%jetS6U;+vhM&_T(x6V*1#qlFf#gNI29pal#~=q$HA0pd+_nZZrF6;@86%%;z$Yt(!rT$H0{OQhPuNmZw*%6b*Y zEz04hob7n4G951}!|`opIDHGuoJ1GOgfrMZNEc|MC*8bR znyhL^M^!qxtK7+3rOrVragJ26OT3C)(p2D*t9+Ld<+;`>$F)saJfO^UTdZ`qjY@Sp zsARXBmE`u265QTY!nALch%RK1gf4Uw_V_srt@b7c-1d8*73#g{Z}NTxzLeuj*)$uK zOmk4tbT<`D_f)>SzjEC}mE#_xZ1$$knvtc98HGxpS*298p_G}uO7d8!1dnx!^EjYb zj~f-uoS`U>*A(UX6-VY~T;>F}cKFgI_M;2#&kz6_p_GYdx{|!|mFQKjc<)BVd3Pzsdqh#*YZT$LPvJhN6zX$9 zAwI9bKYmuII$Ddr{k_8z)lhBzQmEt=MooTib z{Q{KW7p8dsSjG9LDAqqm(f*~13aC>=z#N4I3@bDMl{H|G0s~IUKj6Il0$zqMIA;eu z|8cIy&IW8Q451uC8J0m6Fx^4S8$c0Lq~d3@s=flKDIVV#BNy9cG8lG_BqBn=5%CI&Ojlqe z>s2DFwQ9I-rbzC!}?v{Jhi*k?rf9#!gcvVNcx1YG~WXIjzh?9f} zQ6#~g;1GfY2!TNGpuyeUA-Dx7?v$cM+Vav;r2_TRQh~C*dy=;2J?H!W_}cz)&UKxJ z>t^k}_FD5iGxN->nctqZ_Lt&@9^?^K#~f^^+ZxnbsV>pzG0+rpAcK7=z_K8TfhhJx z#8^rg+E7TWlLW_lN>E&Y1jdD<@5G8;;+CLyyn|9G$Ci!E=?!xa?2sEE~am+{)d$b|Dj5ear=pnWlrDBsYNvt!LidDuAvCKFpmg$egD*d@w zqYLR$(IT)>QlIHKHd=$yq_Q9t5+MeVA|)sl`{~Tb8!{itG8M-ho!IBti(QT@_@MWM zh;44P*yN^&4sFOfw}n{cb`gu*fnt_BPE2zbh;hzVG0Zt7Mmg`pGciUNGR@+r#X%J&e9`~We}j}Wtb zo@0`qA;$Sl#Sm>s^7}#s%!Z8w+c9_uj2zL16vNVJlh|mV!6ER6CdED^&{|C_0NY-9 z*l&#ee4Z=Y%uuXaTA=sn#Hh6$1?U2Fs;z0nDyUnNsn$5#rZx2B^)Q$YYk|2|tNVZt z+)t($ME<&E@ewqJOx~wJ9IwN3h=E4T$D3fkfcaPp=AQeIpfCCB1kE82*E2wAQao-=ki*5h zIp5E>!hT!qQ?!Vtifl>P=> zU`)_@ED37-7;J}D<4hy-VgN*)l*RIz%2bPyhW3ErbjEXGJI7t-_^;_0@c|04)r!NK zG^ahXjc-j1;JR-o?2}(R>{=J02ldBp36uiW%Wx5m2P!C!QIy9R{1``hjK_~kVq+p5 z@We!*EGj9$N=~kv${=wA$DHQa$6T!OVGQ4IVXp<{oXs|gLs=dw{FDQCAq*vGCVP0CQ&ocx=u*=*;*LZE6H{MQY{3AH+XhB8@C-E6XD z{S1C=^8@N+TMk-HNA?Y6@Js@mcQJr`ok_$G9M6~%yO~AQ!2n`l2y1jGU%PSSU*&Tq zD4WXO3RnvpVGC>ps+KSJ|3jbI&+CJ5*c@%f2HgZdP6j~|U+5BK$1!wl66;+y!C80$ zFQgIGl!AK^MOY(WY*` zCfL4N&y6z2;65{+-}M<|UaPe`HlWtbctaQ@KtoV#cUpm(DRqaw%-%}Shsv1IRxpd2 zz*>uG=qYoVT`otz*~E-{AG5r(XgBIkrk~JOG<21^=enphGsi$_H2>kl@4hHM^q}si z3V?dpO2JMxNX%!mAc4W09$ZI!I z0lpz@>Ygd1v?*m8xK1Z*7okP1CzSUv`#wk0d4yK-DWX1Hbz~ z&q4m`)~&q5nyR~$#VzLE*U+k7W6pb-IyuL@`xJg0$B(1$l6HI2Eu`do(w!7zbqMN11*I^F^yl$!4XVf?$f?1bl+MYoNNI zYFG!$V7?fWKF^m$8=6jhPD2lwN;}~jWlB1U=u0R49Mb1mv*@Z7%=ky*M>+K}4Ar0v zm86s-)!kLV}uYT&MziS8SM*z76R+lD;SD2as|E z>Bo|O5~ZF_`Z=`FCfH~}`t2x%F0|S{{2PoSF^ZCzj$W~h=&gp+M9(AOxhnYaJE|Mp zX~3nyh)abrms&$E%j~0frNtSOk~KE$@Y@9&-qd&yHX^YRhmB-xq+=t8mfDmwStCN6 z7V@qWM|Z^I_O;5@LR$1@qF6=poA3kFJ!M?27F3$hdJFPz#bw@_IVjsfmJCHblMt~JLa9e#CmxF_*l9=!^mX`}6?%0~_iD^`H+GkDnVF(zcmgHRhwimI`?~O1p@pGzHnt>Bw%BsQjwebR!;aF(sF&m!4VE0EF_LXGTQZH-NJFE2l3{d3 z(v6=;y2%SkH$@MDE!doAPu)8(+;U_H2uh3Tz`nM2jC=8=m9+_4kF~Tkvyd9b zBTdbNq=`j@G`5J9Mi$AEYsvFOE%PMXvbkhhQ8HFNB;Be+(yT^H1M69mY`sR3thrys z`c-%=iMn3_O$2RdE%v56F=TRKsOU=mfu;7+iucXgpU>xf-7HOQ%%q9VMjGiHBv$@=b6Utb~#`q2`npCz&SH4?4gFH!o} zB+Bj!;3@#o=t9dGa!ht(IO;(ecrpx!*3gXijoq08;!h5~WIGs2mc5l^+UX_3-bK>v zy(QHlNE$dqNU}qmBsru=eaB2maBL#+j;$ruv8%*5^_O~16%xsV4#WAavQVeJ65{l# z1Uo%p%QqGf1`Dw>9-D(1lB%z8J3tF)!uuRA##?-r!7=IhlImh6DQH8HWcIKD$!m(QqL<$ zqP!y|g8RzCy;CL3Cr3hjnoF=xM+x*P5`Ujz;_EY2e0-LRm(MQo@VNjyectC+-ZMh* zrtika2yFHZpdJF5hA|XWdQcXx)7X~`iF_WU10=*h zOo9VqBq$(R0s^wcA8p7lu)X*M_7bnaq2duZS=<7bic8>5aSl8uPJygs4SXRk0gMn} z8tIo|uXix@5JDV4E@VIo`w}4*pXzZ;1lzD6GYJW{k)U7)2@G+QfDm8t4+%lvsVBan z^~F0hL%c$ph(}mkaSQ7qu3EGBE7^jG7ya?LfoU`#WgBT zT%z*Cxn3)AB^XEA1F_3vYNb_VohH?g zEw^V$0{fyN0)lz(UypHkGbX1r?-U9K{@%^qZ4@4y5tAKEy&4gaOqp zK5@)N;u(u4nuue4Yq3wV6T2j5@IvPa6x-xTG@nG#p$%Cl=ZjTxN3lrmD`v?f#Uy!_ z7$vV4gQUZ7R}7QB6(cku6BthVy-B}aEcF0ckOB!1&He}o!nQBAJ?djWnfVCXkUq^q zbm=x?o$i3fK?~>#gJBY^prH4`4T26I(1jHJIlNO6?ExD(P^(F?F9wi6S$~Bdk&1n6 zJ7i)%n>kUQftWWo6Qicq6rOEehh9KuTR;OYAixU9SOF(AYYH8C-5uDO(;A|(9yZ;>D=hh z+j#&TiV|JbL#okI&;zUqM-)^0mc1XwLhxXy&KyyKA#Dj z>5$KH{O6p956}Tu3$T?#8K;q7wN5H54^6HK_v{p4pDMM%u4Q}Xq@A(d1-e5|=#3wJ zOzC7Pk7E4jj~_gTSxS5$45-i&5-aJz{(&%=i^5utJAp9xY3({4>C1QuTTLK~{3cP> zk@>_xbJ{>_>|@skyXIuWpcgiapdXMN14%kJ7z)Fvm*Ez4`qWDWevENNZ}EeAyrwM1 zkde{7VKf89WgK&eW8Y`M_@Z{bP7CZcrkqpR#!%M5ZRvwLVV`i;Vb`=68_H&>vIQf7 zq!{ql=`)pVC&3iTq>8$kVa=D6_%RPZ<^=+cYc7R7heT(S$gDXGTz7KZEsp<@bvLYb zAir7IO(4%`l&vW+9cIB?mgTDbzs}b>K(6I}afq zMo=EA98`I$GEn(n1XL>%ygIFDJ==}21-3yo?1H^;z=*Xjw4GP*;}`>xW6`{(5get^ z4^zlB%i%D`eaIy5g)}7QVh7MKP;IU>XIskORN0*ebT73wH?Z9bRB4?Jwg-V^YA0*Q z*`9BZs0elQkD38xw*hTc8Q8P&%F06sVO~1*{+5y zpzb63-G^T(k6+*?_y&#Y3+9`jG57wI`PIkF@!my;c$4q{Z!=@N!EEj-Gp{Sm{4OyY zyuj@6EVI+obY3U%;~2qwlt8YbQV*bD>}Bt6DrYAvL6mK!#jJ$i?;}z^{0!g0r|>r1 zX5M?1vUruUxX3!D^Q-|-_cEPe-hGsLW)0>~A--&z;OjtC^v0W6rx7KQ_{# ztw%LjOGmN_iz_&K8Ktt6np%QwwN7O=C~c$)e#GV%pu$LnvI_4S*vDFgU1&o)n0r@? zFX0(V$;Oa&GAc_3Y3Gu5K575{e3wGf?uCZYpAsm;##ka_22Fc8Iz}~J-Dyha5j9o! zOqX$N$HHiMjJ>zu92|gcz!iowP4HPqblIctxRbU&%{82~V@W%iv@=LMhqRlJb_=@H zc4#n#bmzU$NCr?N!|84-(Ol;7YCT>ZqJ&#=ow7T1X0=DgBO=WCtRpJ<-~ZT5m^7YlrRjzi|Xx z>p|JCgb_e@jUDwhjsfXg;Ij?s^V_?$lkUVuH)6C4eiWk1bi$90_|buSX^-mB7B!>| zds}l>OT2DD$u*;`77#`G)OJ%kw5GK3rr1~HgVKc5ZN!t!xU_Qt8VG$%8L}AH4P81@ z79A-IR+i(t(nCD3!EenHqpfJOE$BO%6Ccfpj{@3DKCgJ93A#%+T5*3Omo*~PY!(rm zNt9<&@(o!H*bv*9zp(+Ev*=Do>lmUyFDQie>}zAe&=G%H8k%EEN9y+2alwu^c?iHx z7Dku)~5lssb_$u)G4Y(sa+GW1332}0-Leih?bNi*ho zqQ*Q=)Fe+*Oj<~iNk^$~(pwTthf193M2R(BBr&F2CEDbK)H8V~^-O<|C^Iw>Sct9h z*d4^>t%oD|hZfL;_qq0rb@)6JUov&3l4)rz85Vj;vv8JFOP(ca=`YEa+^@ntUG=RJ zCDAHX;;nKd&bpbzSa*s}IN%}OilN(r}KB%#*auVQ^df~+4(knRTwMi&YJ^(>(Z zZ1!`e47j|tW;oWAZ4NYaV$92D4LByn&OlOZ%_Z4JCrLK;lE|}u5^Q`V&L&7=Z6hVd zHV%!a0lH7NM4}Ca>)T5x&!rC5mr9_1q6Fv{i=TeG_~=iGxBh+cw)>IStj~ZdYz)U< zA2){X?saQ(^4MlVD*KZ0DG~n?I4<7aSmMxzV(s-3ZSN#e_MQ^y;4cvlVG`~TBcTpS z65`lUg3*Qo`Q0*q#~$MAG+2C`CWx2QLh*3gDsE0E#MOx>zdQXTZjRjT43n{6iaoVX zsjU|=0NIcRN$gATV2s1((fCsjUm{)1B?4_I%*8=MUECzZ)mMUCgC)>4N&>jA%pYyY zmkEluTWj%h>n0xVCF15jPF&pQix4#e(vJo?!&EEiV4a;)FKj7(h!7 z=p=Rl{X`!yN^AmVi!NZjSO?UIRlw_F<^PRX`!iDU)A)@yrZL#-5Ww6kkahqKAOWJ; z7XhIV2)^LOevcqCaSPUoOR$|d2fK(8)@^nUdaoi9v~5-c^?5tUua;=#d+-!jvf-pe5@XN zNQ}AI#Og#BYcJNZF6cYn=sdybJ@v#aE=f$7#2Rt4i9uXfDs>Q4!csEF6*~4+CU{Ta z1)xP>uM=rEW7wNT`bv|E<27=Zgt0#ee0lB3ewTXKk3kQJGZdQyGqFsv7PBP1m?Sxh z5%-lDa$lJwaYAxDWI#T2g8nd$&lbTBg6$GKfnUim>r6?z9cedV8j=A@lZt_eD9Ql* z!HfMY*<-B}_7j-{B^iii12ZvY-H>6L4LT2*vh`-4TLSj$V?TvCX)2mPI`gnh6AI3f z&V&m}j-CYQ#8l_jh_Yxz!8O9!Mp@7jdcbf#p9Nbu_AKXo1}|%Mp-!YdMkO4{9i%p^oz>oJHB;nK$``ER{u2~cGAd+Oj zK)TS{mM#e!BLL?i1Vn6cC3pa ze>sqby+q16l5HU2IaszqpXz`?s+XZ!oj%ovZC{|MYX_k`_eTbsa3Qp0V1yqd@S}nY&B$ON z!1$dmDW?$2OSxdr<`~-Q&>I~8BLi8q2tLlF-V@n!`>yylqfemx_1Lw*u0ap%D4YGE z1W1OVTHQdHY}M*TW7&>}iAD_2D4{AHI*zoKy}tm*sid>1~=h0ya{i^d+-Q8qdY#hLx%}~20W9v9g}?m>SK(2LGUx3X3D&iwAfOMH1zixKzFC_n7L9sMVenMplt zB%_mLq8T({-rj=r+p#vLko0??`t)VRLy6p@!Mu(iH<)8xMHP6J8TADU@hk;)ih1wv zdW_Oy)Y_C4uoRRJzrgqKEqn)0nCpGYeDg!*c^@#p`hYp!edfEbGjqCzA6F=kOLX4n znFXF!EV2=4HzV!Vq}_q0(UtW3pkoXql!j9i z6KJM$Xhy5iGt`|-uTn$mSF`GLn2Bu1gVII5#NPX$!s!gCFjviM8)dPH`Q}FE-W!vpK}bEMjB^epFE&Q&B@E^KT*^Ou)-=tne8_ zi7E|7txXvQLqTaH53#4h`Uq@?wV=9yd163WSyEPd(siP#dO;9rN0M?Jnn5!8NT>F5 zNVf@HSPQJSW5(TuQs{$5GKBQU5Un#&16ENwd+GA7)7?I!i&rbZ>h9O+!}conRI^jv zjB1kf9@wbso<>m?BhdiVGfY@fPTD^BAB6vrSWx%vB$0L+X=jsm6IuwrM@)It-M3RL zJvq8NCDDztP`~6|$o#uA5#1TP3bhhVaSVH#U;#`4x(V{YB?tyk7RBfxeTmN^>ZA{P zNFVW~MFx|8Ba3@Hup_*(ib8w7_g^D-~Elk6By(qm0mFjJd2sA+OsTFkIrZ zR$@r{7NoEA5WC;>5KnCQVyKQAKkxmip%W&a5f-s+ibIoUx0(qh`bwbL2njHoF8*e##n*H{ToWIYFU807rTCx=O~i&;!rk4TGH|HVgRH;_Q<90{;)E`GXB z;;ZW`-ntRushc70x;5gaJ0PysSH;Epb8*qV;5GU&HU?m?(21!4!;L&hhh*NzLyRMH z4?d5;pK!gAgrg0Gp$&!F*h#RBvjo|CNuX_j1lWe5`^2L2q@ep`iOyA+gings*u066iNczc02rx)2AhOo7}O+d%@aW7ro7VfYlnF~N=o z5`;DsfHvfBZ!3QGj^b8Daf*+rI12UAj^4`hEP#kDmH#T zV&fkyI{$j;JxOBepCuOl&Be^0p4NYW82OJA1OJ5-CWAx2v%r|z_b1@F=%m{bd-;B} zM^JJ?4BK!B_T?1t;d4)LG!=u84g^y%a3u^2UdJp|TiQuTOUt4Fcl54^GK z&enzf4jiKoMh^)!6RU8Z>l$GrrV$Qe9N~(_<0A%H*>)0)p8WfIT1Z03LIN2FCm&3_T=*dv>Bs#Vp!NjAQ6v zVrbypS0>z7Cb1+K7YX$t8(KmS7{+Ie3}QEN{7Jxv=;y$Ne~TTybof( zAHI09WvQGvhGU*Xy)~7>N9hwq&lPTC_PDqZUlTC*L=)(IU zFpcBZ!*R~Rhr}1aD4n#`^PJKl0hA^c%DzB+@n-ABd&em3M>GG3We%KxCP5Yrla1wn z!k_tXPPE#(ccq|JA?%YGE-o2#?wNG3nKbH5Dl(J8%S?gBK#XP%fQfWQt2y>4=X^w` zK$)q~8$gLk#x93GV>5p1gNX z#6EVFK4zYQCXt2h9B2ehARn6H2hSdomiW;cKiUx^>c-*rG%6(owo8KoI_2(A&P8$o z$L*z2yu~@sIhXsPlPC`05$ildi?)GXZ{EAm%lKMCqp_t zQwD^YdvXL8(j1}@jRX#RxO#IO6}W&`q>K-Gm~*N^wE znb;@4){R*sK^7Q1*4d<5860yy(DWF#)oCSt+4eJFU}(aifcO}SAL^ns%onKCGBPui zL`peu$V85zos^v8;{7cHDeeHtBo-*=dJSn8RGmBJY)=_mbBb|0((VM^K-p8a`a=l} zfif5lBVZJag$YLJ7x*#F7A?UA9V3v}l*LpMo=ifMMxw(kU&A@&q$KGRt@rxu=){!k}2h^_<<*e(8{eGmQ@>veb=0unZv)~Uq zyj~8gU@dHb%|KN%F|B*G^l*efcdZllr5^UR{yDHy90K^J~#x2;TW6(lCE9Da*ge6>gBE@+aPoq z0`EpU*2rMw3I%qF6ED0gVZCXG*tTQ0nW|5f-?^|9RQ^=nls#pu29%wXa2n3TCAb2F zIYI&VZNUS04<5l2_{y4lm)u$W5Y79h=rnzK{tcD*Xe-acxy&g0KQx&aVt^)Mjvk`! zUs7vS)bnM6LCpx%S{XG{YRc!Wn7MUew$PQ?Y;Sao{*2m7ndOgUPG5;x_1xd3xUgB? zr-0tZxi>iSDrX-7wMIl~66zTyYK@5U;W<2mr@!%xIo2=u@hkVKJQrUSop5Z#lYT0* z*Btbirf4NCnYFYh{VwP|Jy{#m4;@22V`d~XyNOiA9ExcbGpwCx8RwYgJg&9B{Wsf- z*eYE@J;US|?0yTX$Y?3GJfb|_XO8tY^SlSlYu;vVb(?wSRc1Ap@#8$@afXhv?zfQI zl745>??G4;qn8X}#$Q3GOrZ)FGSk~gX&jafs5)eTI8$!Gu*nR{1KCzZ^3ClVXu@nZ~rR1hB{n0>0}%MK$( zh7u#C#K>U$7=#}KiPQcZQTJ@wWoQe#h~C%eZl4i7b@%IZVOt2QIjg3px|^9m?@`ZK5CojJQB9k}}S z?DnWGZHdk{#AX}pwt|+wu?Jf#fYw@TTXm29pbzwfZj?n=;q85ibNu$J5(F;@Q1yZrENCQ>>s{B>{dx5%4wuWXvk4D-IcPNWGJ;a9e?ZE{b zUfA%*2ER9pAL-OfD)G^PJt>@(Old3CDv_E?AcyfpaUAs#ON)-B2Z+UX9H^&jsWKR8 z#8*Ei3=PZ}o`BL~a(JJ~{tN@gIATQl=A^F!p4~xvO(8atXe;&UI}%Yj5>P+l`CoYw zgO}0dq8`x@MKngzA|hx#;i$!7^c7*~w`zr881}@pG%5bBh?O>=MM4ccvE_%Y5PGpF>?KHm0nZaPXe53Ht;NTnn|K=x5>EquUxgmVoxa6L^q>@ohiLXi@>v*!=nT+YOeDn8Qi9EO5@e>AKvPHY zH+2&~Qy=j)3q<3I5O1?M@iJ>5p60pY&a-~p%)5$vF`2=RiB?x{AGyrzGhnh^>zMRdn31VtpFkhaZ4738dW> zJ1rcDLxvg+AP%A+lzlB6K%-Dmfv@=;rSi5j^bj={VKNHucGIE z6@3g^PYSwEuITlx#75sublgv7tsf^=`UPU4-zw(%lVYZS555;OTl#I%?u5MphQXQ6 zOba0f!hz|%_=69hd*O>a_ma7x3%S^vinG0?IN95XqrJV@+w=Sm2X6=xJ=%~B>xOiW znPTl&AXbi@#KN(km^qFTQ^&bt?6_Hs98QR#!$UE!|6UC3(b7q~J@%R~1XlNoDNQO0 zLLq>CzTm~@?)c*BWGK!~tPOE85qq>DJG3Fai(YJa=8z5dmFZmg-CdV3v2u+=^GOpk z*T!Pv+D?pl;DMp*2r+P-&BSFRFc@=r$Rz3qV0|O$x51uTPLK*plZt>K@N=X5`OE`c z@x_^EU^}`PiM=bo`Rj%r;$bD$9=2lT;UJbAWR7TJ<{6CE6OHDREQX%BWS}+lgkcOC zXTSy$#0QUe$=EYsT?Fa3#9p>1?GcnF6~;CId^|XX&)o3E#m#_qPKILdZX|jSW3(qT zbSEpZ@IenDSWJAK#mLuF4EzFcJ^~UU6IwtwC62}McpMYy8b_%fD(3`%< zhk5{(|A;^Plpf`QFRmQp1S}Ur`!b|w{qO&y>#Y5|J@Lf|8y{n__A^Bb;MB`BFC-b z_`_5_K7>8zeC}KEM-HGmxg|`ZL1|FH*LLi;!LAj_nnf}%j26-%M&j`!5kHdD#f}S21L`Ez2`GzHPErp{O3eUb zG_@z6S8&`SGQ6L2-llVY!TEfv9LC3_&7+%mb`|x2FG?fxVC#fkJNDaP*Aly?Bx#U< z{rZp$sRnc~_|XtQvhX8^I#FLpv%oIPS;+^aK|{!bTxbMMjJWvWM>AqWU5I%ubgd}e zij1`6~(<7K=IaUB|X{p2EtDIo1mBA zM=7zPg!&-_*kH)CD=Xn!7 z=U0Azk0!>){^Z#OS8WThugbS0bOmLz7?izID2Gun7ARJk2veX6NV---Sjcu6F|yj4 zNt6RyKeP-Ac{v$dLV}Ac(PB2Btz6;;fTt2mo`VQmck-;KoXu5!dqIB~0?MY!8>iLk z6f@b*1!ZS3EQ6Im70U+L0@bh^4&ujA9k`&Egz}!u?x#?959bSi>SIR@_al8Q;l!19 zJ7SQkvQ&8<2pm$I&&h0+&3V8n|4EnG#`_(x2Wakc2#&%DI16O4_DlZT)XN*h=w0gM zb%O2&1$~u*y*wQ~g#^y=bP#MiW80dtHYn%3@xaHmUyLtjyAD*|cEJHS0>|MboP~>U z1+Kv@xCam5efR`Ehi^@}3C96#CInrEfO~?`PsgCitmZhiYUDrbA>T8%dB*qNzld6+ zqDH}LBpwNBtxP)PF>7na=WWnQI>`?N>Qm+u-%@~IF%$lR+3{oMc^^|*A5b|DSrv1i zg*n|ngI^fLjt6#v(0uBVr6jVJfgY1b z+6AQD3jLx3Izm_0#`H!n8Ay=~qZ-Dcnap5rzlXMDyiqwY7Lm2Gvu&J<9Z z$T!&h7~Ta{gm1$;a9_;OVQj#OJa|*oA*3Bm@h35FPbckM(r(HOswFvXPe^pZMlV8f z0AVs5&7_hloQr0%j(-QyOWq)KU)1J%GIqy;(nQMPL+ss!tMDqQYF1UgUks4ttVq+2 z@^b}WauiCs(Ufp~nn4=rX4lTFm(!6frSn=$$5nUl&_HaBps7wFze{Mg+j(`KS=Tp| zP@NVtnC(F54=Rk#!7)%Fz5!N%Y6c6@h88g2TtJ=7CpP9Wx0;O~Gw`E|_?XHCWU^#Z zo_TZ?1*G4GXy{D$(VILDB9Eh~nVG0FYw22Q=+53_Z{7M7rHOQhu5cP#D%>}~BA5xP zNsfatl*K6Y5cO=?QOtQOn5C8D$1v(;D093a%tqDoWlM+=^?cd>C531Wy-H>XYs%ui+L^1RgW74w%Jve~} zY5S3O2Y~6u2#mWdRO^ZmjbS=wYFQcZ4UX+1R7Ho zjnM!aQ71f&k=M>d0MAs#k8J$N!jDY+$iRum)SO$A$|wJV~G5o5hbr>P4v` z{PHc{WT8qF5V;-bRn!xKhx6$S*nqbu;0e^N5>&mPDuY4L&4A&EVcn2OX)&q1PGWxo z#6ukY7PC3fVM7lN*x~sd=tEKTrIECk2rP!of)KE2seNiS{+wmy^Z77_wU}g#2t3sWG5~Crs z*xHPuhnEJ&p&xs`@275A1uwP;B(TrdlJ^ z$cnOuM2LY1_Jvw-ZRhhqGeZe5<{6@f7U(V3*kNr3b>d5G_>h`6ue|Wald|xjcHF5+ zHzLZF$abNHIn%nGhzTduY)82OUqRiI&PqtX3-+2b+{o6|4bi#nK_Vdp0@&{dK31&B zurv`bbJk^;T8XELPCSkE;$iG4ZpNj&c^ZLWSl0B#*M|nsGZmw^$|Ox z5u!JoC3=HRcz+T;hL_YT`Z4x9Vyh{a_zYXh0O~;~1hUT;yubrp$W3RA-eM-MRu zmZoourO7j~G-gc#_S<5kk)AlTBlbW|+k$xS2VUTgKd!77az+<&;u$}VIt%n3D{-*q zd8XFfuVT&pD%SkQi?xr~T8E(hM2k+BBG$S*vC_2`3tdk!*OiH>u1ZXFYsJ{QMvScQ zh@thjVra#h1njrMP7ZdH?U`plC1rXhQaSerwm(LiDzlqPMXY8yg$3 zv9%YStqaJ`(+>KKf6VnCe@I3EGem_mdg$3~J#yLt@*(1DeMB|4Z+%$#h+)R{Fa&aPtQ>?4NG zj3HfOAQhSby|D{dMCXaXfZPcmoc=|^KjIf!1U4FBw}A`&gDY_X{=8QDm>W3bi-RND zl!GZ+oSE2y&XM&pPCQe^*+NWRt;NXQMhx5uAa_nsf{t3?;t>VO(1;3d&$b^hc=lM% zafe8p(VOef_{O!I({iwz3rKf>tTBk5RGM^}%sPz9k7j-ZXTK4jW%@e z4_zqNmp+0t)xCtl;LCeY{BXsdBj|a}t)*hcXJ#a86eQS%Fo-nZMB1;q(8W_HiPTAb z%A!62RiBg8L!0W?hde&(2!ko`nRJTPWcn88{X*x&ngqfp0U{s}8%mS%zz=7z3U9;b#AQ0|Gi?)% z;8o81i2^{2Anh0kBX0qm;)6|=35q?hl^$h@T@z)OrdB(sAX{~s5ZesMglxz&WblO_ z`S{TsKhy)=no$=phP`)rwi?*3jtq9W;!P@VB>_2 zg$!29(P0*&aUAA?@q|Gf-*sU}$%-NP;*DKr%2`i2TasTRWw#-yd@7qwf$Y={{wP`o zzjcE_lKw-R>BH-O_)%ibV2wH{A)rb~d_X$;IjMLcS`0DKYZrr>=mEWIGMIU6SB`F{`0V}%C|Li0A;f$D0>4y*%}5TLD`~uYqgol zY^MQPtko_kZdrjJYlw~2?!1mbJIQ2H)tSlMa3&W^SzB|MH7K7+1aak?MfXjfb?Zv+1`Z*@IHJBU&2%P-UiXbn;T=O{4c2J&oK4~1Mey4|MQ=L zk+F%XxrL>b&c@cx-oeq?#ns)z)62)#&p$9II5aFgBC1|=Ok8|I{iNiS)U@=B%&hF( zyhe?i<`*1LPYTQhPyfrbeS3&PY)Vry$_f~NqK;Va{ z$d6Q^A4}{fs^D*+qQ4>GpQGZx2@Rl`Y5}cP6X-x2C{&H0hiU~yG=u)C9Sl|tVHho8 zq-qLdX$zIAF-%phVJ6LCu4)g9RD)Pfi&(9i#0J$Sw$dnes8+F;W^qupi=(PxoTO!( zRZZiPY8zK+95+?#xT~7SecH!6s)2k!3;9?zkteE+d`%;Hs#?iUs+s)yQX5=c9;@1b zQSAWizqAH}|Hu3P<>e&?28M=4M#jX9shOF%xdm}!Wo@k^bZqr{JEF(Ik@#_TA%fi8 zi6MfBC?brABLYc9Qf(;J#nOKXrrKB{l$teHT`4_jVb|_Gdlwb=A2_(QtbF9?aT6v@ zshT-^-hxF-m#bx! z9iKfWK0g0~2>I&kufHKkzI*!gd*bBTk3atO)6c}p^A|6E{q^Nb?SFgzwXH#>+Ljm_ zZCe9Z?Lba|cA_9oJJ&w%<%RBr-(BoG^wIf2Rc{?1y7KzLay1(HZ~rs@&4cTQIy|_r zYvj>W+eV*1x^euq18XPW-L-1wJ6o48{p9cRXUgOsAL?S`pK|!89R9tp_$MCziHCpU z;s3sd{?ji07qp9Qzm2K3Gp0J2=dHY()+Vf|J>^X9@?3LXIhM(KKd*qc>)uV4N z+A`tZ%nj4-|6R20zm>x-d^nQhr=2T^{pDJl+^4q-3!nU}=dgF*>^t+?^?_?noEyAr z-?5=bw$=*_SV!blkWXpYJJ#7UF>P#ti6)$_wr(X%#SzQ_9!2Sqb3-Waf|=E9)r>Jz00*Bu#peA&TaXXou5dAVxmn5&iBD{uZ?v}(#> zJ3j19an_D!`#!&%AN~E^);XU)>{$5GCtb^KzFjo^)U5$4_FgL4y6N z?Bt9C<>w~t9d&8!?(whvU9{>z<%3S!pW>vQ%J%v3wfyL>@3+eSF!#@dqo;RO}yj{_mpg2sF{E@!?R4)f-YyQ)r=?XNsO{P38g z6|a;Z9(&^NqV2?o9nm`NNV3Dv7qh&+ywfz|!;hM0zWsHZPFKGy9DMYH-j&sF_M5x< z*1+WpUmLuB#--A&lh2p!7<;CC&&X31`^!#@J@j|ccHzS=d^nzL|Mayik4F!hhTi|I zS?0~BtvjCmx^v0iN4>^uc&A_0l6xf!X5SjJeCqX~YsSAee8Z^ABQ_7eIBMIF^W%2> zU9>&;us_=B`PpRKC$DF@JovCt==HCfWnK8WRr|wFI~8wz+^c-~2mL0@eY>P;+FPY_ zD(?+jIOg_w2k&-#~7do*}#<@;q5N55M>WyCw9s)junJ9EhW3A0PyoILmMq8$h@ z{^d-h=|}gX&2D~@>U{2LUPO)7G`(7D(QMtX9Xl<2)~i?5w*v-LepxzX^po;oBR;Db zQTFMWiXk75A6@cj;@ANnO&#}l(GL3?eSXc~@b!;E%+7z?z^&$GcK9}}QOatqdEO$e zL(8g{z16oV|LuRj&;RY`%zruImw{a?ejM6!_zxrcls+BRckp-P`VIWHvVZ??CJ!wB zdRocf<=J@;gM07U8Jzz**y`|$2JYLnjF6RDZv0%WAbpzFK5v}Xt6+pSu;ox~Xq!RW zh;{>Cj_%O^*Kr+-UsQG~dNH}M&-1D-f0ui=Eal>t_J)U_2kWY}`fe+=)POl!R^&u2 zKVg*Cwn3TJqv0TJKu&+HG_S8#-nfre(WJLFwrMYILVgczQhs-BYQf({Tkmh8t&OtQ z)+IY>)mh%!fu<4Kk+x~tE8SW?KT_Q1tD4e^4|k84d4J2;l{Z&cZo9I0>VflfXB;~{ zW6qi5Qx;x2TDkmM&G-$s_Kx0i`>*nk4|QetPdWTk4*%YU{)vZw;^Cio_`k0!f3%DB zT(fp&dTWQcW*uvjrk&{8@|WX%i@tni@Td>=51;);_2@O%*N@+MY5AnXXBJL7eSFT$ zOGl>9zkYDavOD`GZFqD0giUwkC30v}FwY4ywLqM|QO4jTRb z;bC*{?x|RJb<3DN=hsX)c5>O|3r81Bzj|=?oI87`FTKBQ%Gw7TCvSY?ucB?>+O2%p zh!49ny|g1uBD7Pj)3mdNt$sPzr|%c%29A06*wFcR4vg4%rFzu)tY5f zZ|z?)_l;c(mp|ArbIm)eW^8!tukwcvoA6-|J{)ZluARY$^M$Q`zSz6(=a&YIefRW` z1-Fk3-+X!R$U~>Mk3Rd#=E~P%)4=VKYAL z#fMk$;asb+k~H9)9mj_Ytx}&~>D20nYdwk|-zpyW&TA!$ zZeA$ecJBDF!$%H|JiB}M*ehGAD{rpZGVR`y4Ri0$UBB|}S!>qc|EtvcumK;o)pyVi z;KPX~VJ|PYO#SIv$5!9H-o5zKdqv|P+#0a>%B8{Ej-MD>v**z8Gn@B}e05dzm>Y|> zR^FMlsp_q%8y5a+>ZUbs{Z;<(VLLt?!iQ6h!(Lozk@~~U4lTcWqg(N#2ffGNz0-fu zxyysL96|%wc6iuHrO7P*O_P~|CNqB1>^H}5Ui!vgMcd?OqN#GIu5Yi^H1yEUG!Fgw zT8jqX-EH6U$va(&-+#Z?`0MBZC$5xi+KnEv;pos;mL42_cJAJhm!_e~OrTCiZJU03 z#Mb$D{wlRTY>c$hcH+a443A&WHxB*bMvIiM{?)Ftyyq**ohejMx0fe%osG8@|{z!mF<{){jZ{JrW`im!|p^o?O2BU&zBm9d~>^b z^5gg0H2d&z$D*5$dW<>sR`HxY*9Wd%e{sta^k`MC#D|yt7zNsp*q4+dnG~l^wo67NB8r*-~6O$;ucB4^ z8f$yQ&0m~}w|aalP5;&h+1^*bY?^rHr{?+p?UR2T_hp*Z;Y8=dUyQ7LANI^>HqrFWqof=U;bCocKRA=hr>+2 zxe{yk;9S*!Gpf6EFJj8 z9?vQNt7u0&4L`f#XmI@#FXPisW9<)U8UCBK?C51$lLm9OR=HEPt_5SYeyz)24(U+( zVtD64&qs9`@bkEC{eG(KUi{OP9z{P^_3Zs@X0Kk)=JfunJiTZuHy>EZsi$6M2edfH z%~}JWrCP)AnOdXxiCW7BqqHuWWm<9GAZ>7y{@U>TVy&WCkv6t@Z>_RLFKu$mp4zll z-L;vmyKA%mGS{zJ$mvh44fbi?7F)C!hoxGg=X5PCaGaJKF6>5{SI%`$gowON$8EvJHiMA}lN?XdcV?&0!R^2#Q z+uJ%p+t(#e+tat>PdiHcf4ObR8$E{$Gy z`25Jt$Ih1TJb9|@;OS$f2hRLi{_&x%%>F5df6C$C+s;4n@INdbmeWrzr=Q$NKe@9} zkhZ^7f_9)VPupMA@yFeR2Yj);V(bU&#?SiKvMI}N&zrgF+KhR-UY)%7z{Ls6kDeQ| z=EUiWO=nJy*m?eN+1?9>hV47|XQ_>c<>8jvibQ*DbGo~>8y^m}OwejNH_~eQbb5AR zP|1@$BgVhCdF@UV^LN0tFvbvI6rOvu`?5woIWvb)rDiDH@?(kFmA_A66yUYg^OZw7vLnxJ80?v{NJPXs^yc93D96@xkGh535HlxVwJB zhO5ga@4h&1`qBT;@K;=`8MpD)u2EZWZ5_Sy%9hc)FaKHo@L_d=owf}h_T>d>NAcl! z$41(To}IrxHem3lN6IF>vwP&?*SCz_d}USTfwPOJo;-mjb9BanYc*9XZyv1La(m0T zEw|T?-*I)__?=h&EZS(y0&lbid#EpZM?H?^5(lMCskixF?q+;Kg%CJ zti^{NX{-^!hZD`?wKE+W{d%r@;nQ=)rJtM`Jmp_UhA+Rdr=t4e*0D!VZ=7=W$m*Gw z_b#1(y?Wu&Tbt&syR&lorn^h3w%=G>RekNx@`n%W;_bAZ_;3gxPBx2Y?Qf&!7rPZc zz0|k#;|qhP-ak>c;`+f6yDsb*cjVaCNoV%2tGZmha?Z7lOBcPqdeQ2;OXh95H-FZ) zoAYN?U;DGv`ml<+SRb#~cHzU}+yL!#v-p=6+UNcJYS+SVUn?s8_{zX(Z=Ne%b@f>J z&eQwH967Y3^32XnQ!j5?JL}r&RSRyhZv4*tC7bTeTCnZrtohZ~|18=X;z9Ya0Uvhb z!x4Nq(=6`A<#u_`u68Z_`bO`ek8bp@x_fExs!Jz_?>tsB>hRt@<4;Lxzy4>b^C8Sq+k_8$QeCv8_;9XS+|RGI&3k&Iu<(mJ zJ%_&kdU4gwD}z>@JyW)$=9P-WI}VIHy?*zkOUtXPt}fUz=jNNAokgH)~Vd--1)NyJ%+yhMp4yk*9WdV{(sne z&!{HTwS7P6*k^QR9LF*`V;Otz1-pnK9cj`-O&|#^KnNir2_&SDK!A`CLJy($-g^-c z`^EwmRP18!UcX!Se&6-3|N3vlZ~Mdka4bG@tUK+w&gZ=E2hHF4wdAt2vY>idVMuFK z9=nT|&Ff{Wqx@72)V$W~yTaNrSdiwZ=5!6$; zb>GzT+&ybz^9`ra;tQy!a>_F)ww08{LmidSYH~$TMPLoNEV!Oj!ff&=ifC~!lC-)N zNxvINMh;2HA%8RKi0qmDvh(nw|D^dJx1B7wck%ez>$mj}{Ns^{Mfa1Fo|VH`TGoKO zAfewgKC+vX!fx|X2RD)P{Oc)2-l#J}s1B{bRdK3ZD#g{#711@{3#6bmNnJG+iZ`Lo z%I;qtojyGO`t@V0&fnKRcf2bVA7y_nB*cs%kba?*`NhQ6{r&;*;(b6E9w0J*D%} z-uX3ewbtf?j%GR-=q7-rS>!vcUD!(xSK6qzN5JC%lFvh`5Ai;o?0JtBfV&$W=yoR} z$oaOAiXD!oISxy{8_4}*!keZ=8kevAs?qsy)%2P-nhWya(CQS>-Vq1-ha$m3j}2JU z;7^{G&_*V>P_m^xJ*B2Z&=jVKP>@yM0VN`;57>)7xUZ8T0#-;ul zn9c{YCse;#{Zk(7UXTR)S4co>6BqP$hl1Hb3ShN;!Q(gqybbUWVC)9LCN97@;S6ju zEO5*nKl3c?KSx^HeUez&ev0{SF11a?bX=H*se1F<54o^DGD~tVZ)AvfheOQ!Le0tV7v|s)*J1>WwQ+sww?r^?N;Ew!vca3w4LU_ z*l7l=T_+%Xw<+)t{O<-Ni++G8^qm=ra%>s;4NcKn0-1*EL49&Bs9f|Rm1OfqLGgGJ z#|#`1@mM!GV!^f0xR?Q&LVkggl62NTBdy;rTh-@Nkk#u|o^y)Wkl%{0FZdq*>+sL@ z`tLgYcOCxk=jK1+{Sfo7?+5X=pCJK#Kcs0bhHQiNkYlwMvYhlGgJAnAIe_p;&Y<3o z=5mI3kx>Ke7}~*dd88(kf*;M@-6m3zN5kCY!CaFDl+Loa!ANcDO+$^#Fw7uMx~r)#;H%y67oAK z$t7+6s)`oh-0CLpvf4^gd3C8*Rr&Yu)j@(BV$d~q5^_)@hXTFzP;9;riX03-72q76 z=lFV$WKfwy38CVP5^myYfiSZ>EV>Y7GUd%dD3b|DZ>%Hdwv>4lv=;c5*5&$DRDBN+ zx9|t};t+=%QjkOT;lH5h_ zCsRx7zK8#Hh(`|T$RQ6olp%*|)bFgZHGEs+;`FqN;6GgA7cr0>B=1Y6XSd73${J&Y zbyblu&80kfdjTi4D<>?wJDHY!N)b}fBBz(se-9u;jkfHqv8OR|Ybxg~3*L~^A ze5$uGd|mJC^rYT1;8ukX?_xoqqDMu`X;HGvs-?WTlIW=BJfXBh%~N)zb2CrLL$i9M z%!0N!W^u#!@YNx9sIP;%G9MeQ4PQ1pIX!B|2i~mp7Mv?4D?77- zbLvu4%ark(Q(~h#5~5|@QgLce zlpw2D$jfUN@`{?i2Z%?nMcm4%pg<04hk4ss|zxDXn2R=?{q-1DN(!r;MqTc@FZ zCrV!@PSDsuQj}EsWvPpTN|JKvHF4^&CQ-VeEh1IY$xcq_4oy*?3Q5T82$2;we-9u- z>mWt1MGA7r+xaV09{l4|v(Bp5J%+oVo;TCKd)eA)-~u+Vv&WrZ-AYKvuk%%>RsmlxMbhs}%MAh0#^P6%nW-!Ytu5 z1s6rO1{6r!{R&b$eDm|$e6x$1z6X$_*F}cbBxA!2DBkhQ=lTQlUv?c^{_ujqjyuD~ zx|fG79lEdElWYFr!pZB$OO>6(^yns^JWj2DDZP?f9azSw_bmx;Bo;?DdlbdD;EPqw zgtC(Q?*S5!gB&@i*H4G?9kbpwADH{(wDz*w*Yvjxju`3o-?Ol9x^3rMGUUQazkrX9 z>merc+PzhbCcnJEy1-)ZYFfExC9}%Cf?MNU9#xAiSJXLIW>$X>pg<0a@@XkS^;x~cD)wxQ0-zMrpLKfLJleci2X&kS{H zpPO3ekJ{jqMw|mAH}FjE6)ztBf?rhN*}yoT)4_5=FC!6mik;-r9g%|V6s6gB#AVoa zD836wLJq2Blb~|Vq|vS|Q?6az{^RM9!+*6r)7e(_PG7t5jfr{MD;uY{$1X(vh-X0P zE$@(^A%B+NRVtTsna=n82TSOFkt1@sAc(@AkCND*mB!khRm6P{kUDDtd`NkODf(U+nW1X?{L~@W25*FHr9eyuFkAcf(P}HuQ&NVh3qv#3nbiO zQgLVxk=w0^5a*jhhU1NBru}s(%XTP%{XIZBa;R9Oald!2M*r}i6I({N{#yS2;L>cA zMJUmJrZ_Ox5rB;`>yxV`^&QcU{Mrxe^)krC^Eure_l$*i8|8SoJmnLdo`{H!k0m6# zNAcda4;4P&1LV!oc+vVZ<}B)nG(Y`oa@mKiv$J6DVg(#t7X>;yxL|aE0oK|SaMkkx zq7ec7Oz{w8?)I5(>GFwX<@Awr68nK~?eJb?WB*=aYx^$V&gQMc{(E>|JrmQ1IwDPX zf6^%VxOl1>w$4s~-HRgOzzP;mocpw~h1z#;E2-J22+A*|eN5>Ar zb!{QyxD5#PtRYI@3gQebLH=FzHBZJgoSA|tem!%73YJWh!-ijlux)-QXf6(bBP)rZ zzs?QJHaUUgR(rs2w*{}A)t;Mbaf*E(bH zTW)+d%1b z8017Fh@sfNjbyn$j}Z7gV#NgAqsc>WQ<6A0$?5#-K3SqcuY%~S#M0O+glg%4XN&A2 zzBi%QwMQ{t{_F71wfgTm{D-Xr4}C7ex6XtpH1Ej%^|?s4*ak`1!;nBUhPXhxH)1C4 z8BgH*kSz%w36ZgeDawc&^!s__Dm=sHS(9E50Jx(qp_AP2S13dl9x2D!FcknLvnUghmFnjGXe zB4aVHiz6a0M~LIkG2>EB2P@R40#frk{j!SNy$j2miItVro+ytY)fW_bH)o9(5Pfk# z*OMaTkbt@}X$KZSHgfpVDJ-zjf;<=VcR3{2r>ek!J4#0Qwb*dU1))%RI!vPOMng>- z1@#I2)z!`9;@T?j(%NFLimE)H+Tv`##@zAp)j^0HqR_mfKn@wmAs6);i@)@BPHKHD zayEZmKyZJY<4+k*rA1tpv889DcN*0l%WZI zsD#lG8ClrKjV-TXC03U+GU`e~@)~l3iW}1dO6pT6Rpm)R^@Zc*t3xDmh(QiXsF$C$ zA9ZC=U#G%w>*q>Ktv8j97NZq7{Jm1|;Gvwr$TP__WoJBF-5A9$tP(_5lyGD<`RtVX zY-V<&ieA)|h&&R4D=TFowMF9vqR=(%7l&B1MxK_e&SQT$iwlYXYqN8FxCNvut#t4n0z zg}E_;3Y93PHd&C+px~u7%OdhxqF9A3Vs?48IIO00y!_Jv%{WrDHy{n&*U3W;O~|E*mcpja~~ea*!d143r%gAcsoifO;yg+fN*M(q&^Y+=2DD(1@dV zR**!s`Q*gnOlqb&CA2VE!6}!;i)v%y;u=H}Wiwx*ZsCXuTEZgBYQu%qW#i?G!++BJ zKl@pB&et`OqczFgHVcaOe(kJ$MCZG_>^438uqdf2zZkR$uQaEUNHMP!$EJ5_4$zF`29~VLGpxlM+?W zOp-T-B&9V6Clxja$xG{~@m1yH1tjzT>7YdWMsm<^dHLQs9~-q6zwA1`;qiIn1H%Ir zC(fUH#lT&(l=n^-q7zvE$VXT zWwa3E<#oQP;wnlur<`8IC0?w!PK4#;FQ z(DEpCVa2{Rf-+)tOoc~PVwHQP8c|t+E2%9WFAz5m<(A9Pxl603K-uQ$Z=3i0{P6VQ zc{c`+Ex&k2PqSyl#JGO=q;uhr137KLl`TE*A?Ba6m%P!7JgG8%=bLzzMtPBc`75kMrxJDhQ_-$?lzDY0e$|42QPpOxrfO+PXDEZQWKh zZa_A70wke*M1?CRy=~fnIwD)AUc9;Yx9$f=S2aFAu33)uGi5)uuu(pCz)2ps`*DYf zH2RP)E8q$x!uuZ~LeC4VD7SN5iSt=uoI}4vYI|BPJ9#=yZq=8YFkT=5IjH`e2$jnw zK1LmpOGB$Cci-2X+wekbb?IB(Jy~xIbdq12o5#L#aO6G1;X)sIc~kEB`}^LZ1`%&D zLhv`jLS3)(SWbhYFo$a~9J{M>uJx5vp4H{7aRZ6JqfF+H39p+MXS^^a zH0PImIuA91`~9twQ0 z55&F>_hZR+_vHT8BPoGacQYyD1=8kdppFP;0Chx8jm(}<_hR*o;!m3MGvMF~IUL<0 z2EDypFwzL>)6DpYQ@dNtyj<_xYo9f7#p9{ewqP2 z4qAZVpgD*SnL+H~6OeGk1d_*1N5dpcW#1%B&h4oh$uNI%EUfyG3maw!!}j?;u99fK(Kne02|F*p{T)uW-l1e;xk0PXAqp|Ia#vZ21u)cK!lU2j)Q>dQZli ztp};YZiw+b3Zg(0h+x^g4->k)V#Inrqbhu#1f&H%^i>Dn_sVCC5K35gJgUNO;~TlR zaGksxZvFgA&Xd(NsfpYh{%K!wq3A1Kg>eJKO8G_4ro?mj?xb$l?xYs?K3N0)Y|MB74su{4hwzOv zAPUVp@_ln589AgIt%r1LO-OOk1*MnOds&d{GYQ-0fj~&R&6aSkhsZ@&C@FE5$m)di z-UZ2Li52Pno=vJww-$91t|P71qeoFmI4vCy|Led-_xNIvg96PLsYe%s8ufKDtu!IS z>G;P~!pS#@0l25qQ2!Azk9mU|CA<trCpC_@h^%ZWPRb{)Xva& zbxUwkUOh!!SQAiGTky9CL5OA?8OjP%HRnL~ zk-wl2ITV{|zAd)XdsgUX`ykhgbTd7GaZw&3?u`zUxATQ*4Ph}^)r^GvGFp035jD3o zKd7P%WkO|X{`G~)fvuU!pw5)>@V^csv{xhnIi&BI1G$IMS!l=Cekwnq`MTUz?@6hP z-JJr0*Hx7t^R$vGZjWQi8$=OlXzx;XaaepoUTAW07Coy>6;e{3Os%R=1l1PHgPXHt zw2rj#06eq~9CVIn6mm#Jd8G>7&&Wp(WyjZks50I2qS{*TL6wvJ&0-Jl^V#0au9QG= zqns|Ul!T`h35D4?5wQiTu*8xSRz|s!Sx_NoR941@)Re|BnsOwJ_VjP@pEUokI6JZ6 zi!bod+{Z!pf1^?FR*BX`jk4^*!|0qF-8FCPjQ5PzpVS+v!`fdfclSA+=f!Nz@E27l zq7BeeR$5LpKRaC*U690+m&iG(<%L4#~(N zdp9~;1!dXQx~pF|8SQ@DVtM>_ql4Y0YB%rhB4TJmmY=9Bg(}ZY2u;g~<7O+PMFsI9 zX^BLTTrTEkR|@%MRS}%3@(6B2UIe!_b36bat-}|GSmcn3zPodGqjOCTE&N!kv+8B5 z;jV|B7RPV2+S{G2bM(C>&NVss$NL7ImCrg2caHR$>s;%!we4+m z_G+xeGs=p*h1uEu@hR!SDY9f%R;u%xmgB)YyJB&tO{ z9zcNBfrlJq$U%jEKZ?-xW%a@NZ(EM7c+z9A{q`9%?TbA&Hl3|bq?%eBy`YRFNH6e{ zCS+5SC92R&ekwOFELmJkSIWw$iK!J7MP7w}LS;putiFIEZBdU05TY5Jk8*$n^jogp zI2}rN&iYt?VBU)k?PU+n=x@1k(e!A4|4HlSE=NLHlN&9ohQL>r`NqW-QIZ6CbQL=* zJSQYmSV+l;DGBkofVUzVExojwcCGu*12!?o%31?2XE-C zKXcRQaLZK-i?Z`}ICY;hC7}x!E^Z}>!<)#mka}uTKn*j)yPB8fStZGFuT0Eyt;))G zuBym)DR0hpEo#pg4>8cEb3){p6^AP*z+7K#dwCc%KTK3c^Pxki8#{)=E z7NJCQSK;CbubY-nxOM*TiD!nl{Mi2J;G&vm$2Jx{)jObiY+{)3(Arx3z{xfIo(Cyp z#Mj?{m=f%DgC2?>3=4C)%I7*>j^^17$OP7xQX;J`Wr-{!=ktV0 zBs>iDcE8W@a~=@}INp^|>~71b*277`R>P_gi(7?svzt}p0%Wr_ApbYi5t)TKH!uU! z_UO+as$OsYCI8d@Khr)PSsVXRXQ$|+(V_5;>}-^ z^I*%bDWJJ177nfC!?DdwFx*WAs{?-Ebd&@HT|D^dy8+e68A44Qfpfwhgl4uNF}MCK zvpo4pX=V8_uW<^dsc$N#?8(dt*|214GHm`u0y`IQ(Vm$Q zIJ(*&3^tL#d^;W-ce{eeUUZhpeg_CVXbbei))02&B=EE>L44E#Vztd7;n)dC(J=+J zt_kEH9}oRiKVTYKCt*r1OvYq>{&`{|ESnky>t}_bTqX!K7ka~yrFb~L(g{r0*n#bO zYjE9U1;ou3;J4Kbg0`Ii`gT(Y+hGj6okk$qWr%Jf8-RSbJ}PwUp$8g`hsL^zn4(h? zG3nPPYRKW&iDFnfl?AJQ3V@Bj5@F|DS2*y8JskVf3JjN+f#ot2a9C~#t}6_Huu>0v zRvm|c)w&S8Mh8OI9E0$++Q3_j2E}z+5WDUOB&;6~#Vs0`bo6}1xQ7!pgfM$zC@h>z zM!5_g*35K7?~9YLXU+*YJl7C(=j(yV0v)hgs10_Dw7_}M5pe(W5D@-42;P4k0P^Df zKv}#GXp8p(bBQK!5yGY80jOwCUjWLCeYeg)+o5Jb*nv3^p|c1CCsqQ_aWim;n!pOu z0y;+@f}>ABV1gBp)9gO_WMSWv3S8cLmbt&d*Wh2_nmu2*brGLB_jx_Sp7$Pc81%Vi zcgJtg=I%H7ufspr=s#l}&~HWH%E>_9G6NVpW&vm491t8^1R|4_Ahh2MJkPxl9;gjW zHmYce(Kb4n?MMF<>^t8~*Ee4I_*aBd!V8aTujjZXpHa6izeg^8{`asK0)`!i0KelhkZ*? zy1yc45TE7W@$WJ^g0w3WUs1MvbLq=RrGj2Iu3cc(w$UNh4gWl^n9Q-YSh8!s9 z`h|+Fn$L0-47z4Fw{~R7+|1MPG{xUd$G#ZfV_t;lW zdEiwLa*t3JdKX{EzU|(@xru(rFFXB%-;cc<(d9JAYIDB9_!ba?@{l0pK-)0=YgZ-; z&3$o47D9slN|0M^1*!7^kdX92M78|L3wL@ICiWbq$NN1BN}}E)t3vO1=Z4=Rl=5zP z)Cz}i9pWo)XCFvp4neJLrT3BptRTu z3hY6MCm4K?1X#a`WV$_%5PCmi#RiQ8E11LnX%W|bvPIX3#gfaOwbFm!yX3ttJ&JbM z)A3F2=b~$H1N;j7RnE5nI$DQd`_;U?N^Xd;ajaL@ovq`_3B8=^661z_??MKBVQ2x|M8zR|J&pimi}Ky z2>sWZeCc||qPb6rGTe*<^C9Qh-=7MMw!F?idFW}blj%sNr_)f9uiv>iD)Uq%OVG;Y z$J8^U6DmXG$)!Q5>4kwgnRx+a>YRY)taQItRSL?ek^=jsiGk;$zr|OF5cIly>61xO zZkW8|XHcUYIse$Q4<&}1UzAuLdRXjedMgL#aw*N5+$#@cwn`X+IsqrPoFhsoM18It zx-ug(I8&WYEy_*}s>@acHfPCEMkS;6$>M|0#(WE4qIIC7`S(kQNrt{J(vU+o%8?7T zm%S}F*fd&cad4#E-gL0Q&E<@W9--e<%U%PsrFl3-xB^el9t>^mUc~rpI+= z2X9x|nf#-~#knV&;MbJu7h0J>6%@vX#$<^j6lr{MN+LI26(5$870b%biDs4OMlw+z z!)(tGvU(IkR)5^L02Xp!Acrr#nMAZdArt+66zu!`WBJh~FY5F*JZLsOaHGz~`FQQIZtM&z8|+(qh6B6ynGfsW46z%~NJYa@DzfZb=@O+nC4Uw5hn9Q;A&8 z>G*H))gct^3y4PViKKPYAZy!CP`r1}`zo!!MjQ3kkF=ZYyN1qT?yJH&H5cK0Dzd%k zd1?N<3?)sHC}SnW#qv|c(GnG3gkF|NRW4gtl*f#0$O{#;W-G%33r1rQJyZaeeY{0b$62i?WD#^m?e)Oo8Gp(?8Vi z`T1GKQt|t>KcXPSF`_>x@&5cv**AKx8u^G_1jw7hFq;B3CowNR`|Kd_|PfwOov3;Wsw#B=tpQKwyeIXxaUT9v@8b1wQ@01xFMQj|qxEt>GTYRQC0-AgB29$fxI@132$v^+Snv~omeYu;@m zt&|%UCt?Tf93!qcd(tm?`1@b*4k4WjWV@ebL^z${3hd8Bi>%KiMp>OvM_ZgJmzbaH zjJD{zAhPJXB={B}KzWFAt_Bp&*Lc}HPh)W47fkP+6_c8u?3`Wk^zgFW$H%s$KGZ)b zy>D(H7_qZr-F3wV-6r6DZdIXN#6E=_)+y(#Xw-d^D| zGi}zWoe_1^&4N5ivL!tYz~Z0MU0k1XaM-6J5Bn!lqRrzZFROI-&I4%IVo3cFjrpuzyL+2d#Cy_s6$0-=EkY z^xp2M?|Zl7#P?o?xc333F7N5)*!LVuhYuoa+xJo%>vu{!%eN|f^EY{pC*G7}OAVk2XyH8z4)lW%dQZ~~^I zZW5-tdlDx9>QuCEX6_FOuy%$BHvh^-duD>*;9_q$wgL}EYn{PrqXRf?u?5d<*5JFt z3MjiQfU(;QIGUyqxz_~Z_8CFqenUv#ZvZ(5^w1{S<4}F*TXdCAz*IH=fXO{G5tICI znuZh>OcKC~=?s+1_@lKTz`g~pp!KIc=r6Sbv*qSsx6%|`R~rLijUo80HGrUX`oLI! z9Ktu~f^ee_NH!fqo2rjO%4Sq#-*N;BzDZTh1WZmB2BW-;!ARi82|QTvLkP;Jd{JKp z2b+F&gk8T`!@;>`ptHaTj27yHwz9s=spgAlsx0J=f6 zAB2DJ1IhBeAYZNtNh`iZZZrD-XD}G?O$>$uGbd1C&O{Q*Wn5s{G+S8vqd9DyWdxeP z=)&RI+MxT}VKDmrAejHYAFSu@1&4W>;4*JF;O6fF;{2W9yI=1o6$5x2= zV+$(%e+%$N{WSvmoxpFM2EIFgf}s7sLddcCC<0spbcfYIBW{79;N1`qaS;4sj)J%H zIFK?8!86|k@MR|eS8EP#t(M^2dGZ6c*XE7GdD|EEgLb2~!}bqt?mLW}eCl}TfbucV&C}4aK|ew8-d};CJs;S{OMq#=2I!t!A()~G6wYDrm*{}6!T`K8 zOn{hY2A(CBfUmX&_h#FVuATO8oq8Q!IiAOk+7CKCvc2tm&*r|%E$gQ)H>^jU#sYj$ zMn^;rq)pR+vh7D;X#NUpt@*$;Tml@MwZO)01BO3}|5!&MNTd$|a#Qe4wE(Yd>(9g@ z`;Q)#*ble{=XY)$t}mT?-AA$K@edt_Jn!1wA>6RJPrPjV1b4~ysry)fFLEFu2Oo4# zDHwHS*n55f?vZ)G*IxqslWT$Nx*gcQ2Y^A>0h+)Vf}|GUpKSZdH`DPwDc|KSp$zvL zU+4MKy`4Df((C;Yd*1hs!*#zQ+dJe-w)cGc?H?2R?4Nj!1^A&%#_LNqwSFqlQCEhu z`xg)#o(CemB_Og`3j*gI!1X!=>|i}$a8G=uNo+n+60z^d8SbyWb3I=WOT3$=lG*ja~b;invLFxs)h)JErfb3v-J7~)OW zL7e@r&(V0T_d>GqD=x$4Ig97|BqWCPAW-2y;+sypP0D57^eE*Fx!3crxSonU=X62T zg}O>D&ey`~TyM}T-R@8--0lYa5C2K?|Kw1qnecxR9&9%J2)s48a+Xd{G~+ zGO7pH8r|i7R?_HtL0s*AnOBAzWEJ6W(F#0n2aN>;AP3(SlYoKlz4B3B7K3I_`M%#F zN&7EIHC+24<>anciO$+jWkj=kQGrgkA{bs*Lb<``sA6`Xe>|_-Cpog6loj1VD2{3L ztc$Dn?1`(upNTE@ycn5BxXQ^Q-e9PSw`gPW)xi(l^JJnKJQB^GQnde7iSpA_tv^4j z^w+#mS?(H5!ydbz=wWd)*4K4F80^;{&Zc!U1Yxbz7=B}bLR{mQ9#iR^CoS`;j4$?T zljWg|D%p(^hY&8Eyq0CN>X3rFqpQ?^5`jD-+`bCb} zu18t+$A(kgEw9ME-20;`ex3Z#kmj(6@LGmgfHpxy6$d8A=99DHbNou=YTw3$4BwuF zRFqLAkuM1q{@211{D+uh0TeW61fb`Pa?t&F3HqEU(05ik$}Y1GFMOMSeAQ^7>CTZn z+hap27pt>MqFYy-zh9Gx7E;X%3om60h53w_=`07AGb7ur{h(!)bo6(+?J->d=J^aV3BHfjb%8hpn7g=i$WIJ2- zrh2-yB>4K)#87Fak<9SC2%a!AEGjxRR3=r1q$bFNa}uS&70TG)jwDHNpDdboK1xhO zy8&s}!p8!F&^l024!}o9(f))Kv$5vD{$Mkj>FNu{i$1WBk`DQ1)=MTWK{2|{}l1k7_1e&_&?7kZU5 z7RX@&1f#iAfE;A#^O=rv{oGwYzbiR7?`hSszwg!?ZoOJ%snu8HXwj1G?oyRT@+nmK z2dkwt^vEH$AR$r^9m|iAin)peLAXj85muBO9@dx~9^Rt}4?i0d9zMVi3%kM{3!tKz zF9hvPh(vjW0{xDuHcmt5h|GLlabWJFI_;&y&4!yU)>$0sDzi7Q&vSDw%_Ml|B>M%Y zCQ!o?q)b7qBqCZQj*{|(@`Nycx{}E+NT&1a5T_Cu{4=o(-X#Ge;&Q}Te05-;93Tp< zg>of&9`S~$pG$W9^rB|}ocqm3|GM6;zwu0?+2OWIyAxGKE=~nG9$pz4KGekIKz6Kx z&KJozQQSCD97_@}4~a@iq>6KsDB|km!01!TAao>hkm!;yC~|-|77&cqfr&Z^60{a6 z=({R+{ge;o+h>e6?ECd@r`EzN-MSlkT2CBmsIxIGEqB6Z72-+BIbIa0%AYAprSZ5) zY%x=0)SyV1l#f+q; z@g)8!5~+8RLQY6hD?F0Q67k9H3PRGESYpB@AyGcS8w&{ek_(~Fh74V6XD*uvrK^8< z(X@HWNYAbrg9Ceh?>ncxrm5F>e`$x6k-EvjF0t0tLsIEU=9T({FbgSR)O-e?oWm89 zvc)lYb%NAQt&%ybOXN;jtuj~j*%-I)WcK_BfptY*{tf6LJuZ4a}r=4|Ni?h3+5%0sQ^$Ma^1%&!lgm8#u;R0N# zNbFo9lQm1gFBLugT{QX+}g9*(vrh8LZxKpEu zXWxMOAq^RkRt?1>%f^;StHyr_PF7tDKUp!z9t&Wi{~!082B?46_*69)bHC>o%=zoT zYjlmQo6>-ui(GnJYkAg9z3qvErdrXLPnvQrI@;0BySb6i5=n%9GTH4kEeP8e9%9=o z3O(5?XIu2D!pwS0!%y_JAqLqeI&RR-T5pDo1#nS6B=J|2NBn}h(lQ-$=G=5l=e>Cv zb&u9fFL}6kZq|b%%a!+Zwo2|AAB?ztQjdPi(JbI5&erROmlN)KAkKM+L9ic+@U|X` z_Ol#P_?r!>15K}&QH-y*QH*X3QH(C#@i#g@LLLhc&(eU5nV73psH4$74by&cI;Q5? zf{8`X*Z-LLOmm)M^w8hYPmgWnJ~7-we`0kc@G%Gkka#XK?S{n1Fl+X0YG~OmE#}Omp`XOx4xt znEba3f5>>d@hAD)-E+ln4=f3PtG$Ny)?kbO8_V6KH;xDJZ}3N4-ufKFz70BV_m-(| z{g!8B^;TkH@lIiS;+@LOVLRDCU;aA%;~ZpFpZ6qFlDDF zV{#t;q>%!DO^%0+KM7&S92V?bL;_getx zzzGl?GC>D_7(>btL&!dAfDXIYg9h#6aORjUTpN?K1sF_Y^+Zfb`$UZT;v`Jsr&$wX zVd-QZ$^hu7o8b?8<`LlVB3IB|>HsFotH#2YC+>JEodK;=28r%q+tR^)vJM#4^G5H!LJiI@YkeZSUKGX zHq6Aqj@ek)Ki3+x7np;=A`>wG%Mk1q>w(KsUGQ9X41E692Fh|RV5~R-oRx<_wCW%# zX&yiaeD4GG>b+33W-pYDNokb^M%97A#9zc<1W$j^2!q)Z0#PnQgr!qlV9g9$*fP@` zcK>1whi2=6&Kw;untK#1<{bvx`3C{JU_ZDo*bBrzG|}+38-f<@g3v`fAY##W5dXOi z;{V(NDSvH&j4{bGn(gA6}Uz@uEo0TxcOguka6!@B9mVe5}aL38FI zI5cY?9Q%0>82qveOn=z{mcMQT+u2(HJ9{&@{k9Q2f7<{)bJj!PoOKW~XAQ7_Ukw6; zXiUHjW!Bg=lK{JQD&Tj_0Mfo$;G;bU{7e>tpZzlMCawk&Z4-F%wgXZ%_-H$1_|E#a(W{dWjGtLOHF<3L(&WD7JL9nccXZw0j2v7yO$8F_ zEs^)kg1{qlAjohbP_6%lK-^j&2W$nOu-!n4IsgR45%5qQ16=-baIeq@*9JpyZZ`&O zkLf3eb7t@C2F+jE+_o6Ceqi~~YSe1P>Xqg2$@gYs0k|&?t0w_&!xZq@G93bU&4S>= zb09>2A<(V~zZNo#R>S zSN7LzM{RH0J+OXge-~wQx2#{;T(fy+ITnCN*Dfx|!E^l-Afs#Q;GHwkW5(v7$GBtQiPKBBTGtmY?YL2= zGoB9|28qLVBc!V~4~XY&pW^!LU$}HRym1%{@IbGN8*=bL^HwmL!P(n?0`C6b&@tzK zfY5k3@a#51IDXG3roYyETByMriopD(U!3hTFQwB{g3A3dKHu}9TZPv>=O*8~*k1o( z$LoQYY;RLe+u!%?c6dx|a~#DrI=yrr3-CmFojaN_$SA8~psb3EW^m!&*{HVp2Sgh# z2eI|0j{-N%w;Uhs7fhPTQySO$Q9zW_Js%nV4k5++CN9f=$fbyS)v1O)fbC>lz+PeW zINYSSVebSsI^FlJb$(2&aCzoF7C=A_9%#l0M7azL&A)s!gGZt4GUmtvkm~>aDb8}! zn`o!K&xJ(YM;waT2!rWxi^9iW^Og8sA|_DId8E-!yXP``+{&2Uu8r(Ym(yX*&V%e4 zms_+i*-wf41D^uiQ;)F#BAPP@C36K9RUmZxO10I6r-v~7SMx)QF4CRK22j_iA)?M~8)pX-yrR}~uQaAlU zk(c#(F2%K%$s~0I^8%U!ql4@GL#V$uAoKz+}Y19RVI99uG~HrjA6&3fN;g|oqhSb}wr z(BHL<6XMkn8XizZi=>rO;+Td0%J5uY6)(%DP@wXz6{dUlM5g#$j!^nsXDWPeQ{{g5 zea8a4P%h+$=1vwugx(YJ8>XVJ%*;<2`{%sO(q8;1&tUzq+G_9R6s&%q%;RKxv@bdm zfl8_fX9X06@^8YM#q*(CbRXootNrLXQmz zBo*-)0XgBEkPN1Xl}wj%6~Re@_@FFNETvQ|p|nIrQ!hq}saL~A)SL83>fL~`0B__F zfW9L*C<}-|4$5^?K(%ego7}y>J}Ex3@J^ZD>MMojd-}5MkGG__Syd+xU5aD;NjV}~ zKsuitlEe|Pruy!(JZJGYEaL+Ff%MUNOS#^Bnh0+tdyK-%H8!}uh%aS~u^JKonjF=$*BoUJ) z6GX5i+$e5jxLm+vr-?YMf@n6YE}F$Y9nEH6j$pB_Gg++LK?usf1AI^}L`CmQKJti1 zpO3WFlRoBcp7yMC_pEz02j>pf=`8QBFx}N!Xroh|@ak>0>0Xrf^#Ng&e)40{q!Q7r`TEqY^gge9v;oPPog8m&}9cU;A_;Mat!cuge z=c*sx6>gmJq-y7nw;K=qHqfN~_o*7=osFd@kCo+N&2utw*wj>#r##W0ERoTIg>h^q zM2Ka%(K~^Atm^v2dHsJ(dpj<|b-WN)AoteF2 z;_K4&lOEJ>pLU~T@6YGjw3fBk8*Q&a&ul9!b}&=rx;Z9h5 z!l_aT&p%cX=^K+N_KGQsBF45ydB+X#y(NQepQz#Bu>e2x|5+#tkRX?oztH&=e@}Q` zwdRMrt(zxb?cF}Bx9jkdrWS*3Wpx%>*%kJt$;B@A(mYR`DBH(}qoPn4X$*Q$3YSe* ziX*%di15k*zK48}~V7htun9jpdb2wo#>cH*S#^DKtO8KPV?8*e@$Al$aSA zj#I@)xMrmDoid69jv37Yr_9R{&S^tT*Q8>EV|XYFNcdd?vgc{MuKGh`q;rAB z)yoSt`Yvsn(RA*>qO!i@8?(Ah4=7u$4J3_ND_*U;Q)m^@GpK^><69aWNGN90+>3;v zPK8poeL*V6wxEz}jZO)(DY_D7mv@6m5>HWtH zOzZHU6RK}*o?duk-@J@L?UnM&hC3rKSZJ}&qK-(viiGmX}Sp zz}K=%>TlMS7HHa4NHOVdq8OjL8femS&(E~!p_ggnqkjud(-O}G0cEfCc@R02>zd>gs&ubnQu2+0*9j{Ow zZ7#E2EH4Y)Ph5`oFut5lFuYt$G`P}2)W3R-U@-8=!?1tUeJnsc19Ly)2h7>B$(Z)W z$(Xt?`)2OX)W~_VbW+-rtux~vYtD~+bog)fL){I*4^HgxyKlRnaNkAC{XRk0=^oj@ z{vOT5`d+x1#XXV5iTkpXCil~=4euA(8a!yQ)qi--PVd2eyW_(zY{%lAd?MyT-ULj0 zb{;NH6nXeB0Kjz*#D$1>m``>ga2H2=527-ii zcMLV;z|1f(Lw9#~cY`1;C81zqD|YKSK1a{7yAcINh3j|uJnOgC`}*Mf_w&bRjca*4 zdvotS!(5;Hd+l2?ev+~|e9}%n@H0~dZ}e(#J_qTzO-Ac8CXcw%D^{1C^Rq_z(&U z=+dTOFwzW;>YBo3T@!e&X96#N%cXuo4(;b6{n$6tdYzlpJQErgr5>*IVstl1!w?X1E1^n=rM;W~ps+P+_(+U~r{(sVT9LK+mVTEd!OAfgJU^OV4Hz9QJomj@@&t-uhK z0rv&c;JsiI1TNSJ5euate&KpZUnB|ni`GKL{}W*0?`s!1KAF%PIjjndQ8l2SRtNeOO>p^36PzDv0qwaq zIK9;Y$B#Nc942+YI!xQTdyj(?okKkAq`-j)B?sOZJ__D11=AA!TGr!(BA0HIF0L1 zJ5K6PIZPXTa+om~cL2TL0dDJffR1xuDGGo$W`_K==0lM2VhE-#gJ9-r2n^f+e(_tt zJ4YToD^P_ssR6r71KbC-z-_+{u#V}0>v?@(-ZTWpJtJ^=W<2Bk+GLtGZZhdKY5KoZ z|Bs4ME`4Z22VW&22-cVfVTOw!%z7C_xU7Ltzl{(S zBMbhSir`bK3f>Kx;Mt)AoLzdr9x(*>!$#mXW&*6MX2AT%e3tQ)^3CP7#iaAN9>SAU(b;K3V5K4W zHJXA?r^T#Szx9mAUg~$w5&LiMXC0^A{-8~|K5_oQd`*8vpI|&=d~trr{ONS7aBvQ8KV2DS+9G~>nV-FeItwAiY#F55t%VdfX-EiEgqTNU+e z;Pr$4JHQL);ET0ZB)WhU^Z+@S=PE>RSYm)Zb{1>Cl{rd(E@rE|&kfXnl@@LFBtDgP zKQh<-uaGjITY>d~*Zf*TF8lO^U+~%!b=LDp^q9wmn3En4V~=>fjyT}`A#ktHC!gKE zQ=CD+Y1Z!mFRVHJ@g8^#dVmb9e+#e%FT;IVsVDxU+I;n7t*!L?3RjgEMZSg)v%{!& zQWEGl;xajxqYC}bg;fQQ1viGD2enAT>bpPwpwFp<{XTyt45Jeo^nV-H7cd^s z6Y$xqEAR{ZcYrs}Aqe+nJl5dZxE>`~gIB5G^TKr&e{C>bHQs2m`DGnLXJx<5x`X7rf4LKBE8@WHUIc7MxJANo|PtriZ(d52>D=9sJPZDQ@%H7S=tC!!=g)1u~s zUMmftp39GhfVLh62-)3%%2 z-3`uH`PrN(4x=B+i}M)CO!FU1$qVgGERE`ntBr4sZb{k^)swnCVsCnV#Hozh$iFgb zqMyZAMZb=yjQJ2$5i{ZYJHQvOLj<~^bfg$Rw` zz4i*{+L`*t8ojLd)dac>mPK;9ixT|X@-jl3vht(r(#zv3QyP*>liSma5(hH#6Ax$Q zC0@zOOMaZ3m;53oH~DR7Zt{4*@A&r|Vt&@ZNF~@7&5a-mfC`d{}$o-y!=T9H&w^@)|MxSl$T^h6%`i6=jK-@XXG}gr)2kJ zCS~u-PRKr&otXPDEh*=DTvE=P@TBbbLB9h6(1RpmCZG`KQHS&CSjYW&U^CClee!(w zkE#k^A2nDtw%2;==%BOqP>;JsSG$i>^NwJ*x`rs<@|uL;!pe-uobrOWw35o?q@u>O zxWcYX3~ppa7LH{_7e7pkE_xOpQ}8+>Hve7l?|>lO2Pxv%GlL#rJ7y!g)^LsQk>Y-O zcni;+Q;I^D@Yz2n4qD3W8+Ov_!yH*#x0gdhM(J}n}(Ha9k*sw^qG zvLQ9RyfY)Dd{1Uj`N_`C3_qem>HhYmPs>>OsAHVt^#SM~Zci*|;2X1B)#q_!l7#qY?D zj%qAP2yLiM4ylZozG@`dbkSO&@|=@S{%MwZ+DT8lxMKk> z;YY&V0}sb}`5a2~=N!xrW*w*uqwjBypzYrk<#^z5l*56WQBDWmggFm?2y_|x==VDy z4Sh(J2zj)VkK7y)AQz4akW-fg$&q`aWbZvGp1!-v^IL8kNL1gllqtOKpq_q(X&8SA zGa?uK?E}w;xp<$AWwFnsahPZFy`9G@{T#=d1MJ5718v8S1X0i23bZ}*&fo6DCvW?s zlODeVa)rtGc3$#FA1^t-AD=aI63;fp-kse~7LlGO8+ltEtIn@^sJEi%K4oLZKX!`o zcj;Q;f3b}MZu?ny{TXWO{zt4M<5rpr?N$NP;Z~KK?X6a}&8-2B)gQ+=mVf?*ukYNg zZ+u}{U!G?E4k+UxciRcMIK)Ga9^xf?&+?I7*t^sDTAZutl{A0VD;3d#m%7W-UYM+p zdrp-Jd+wqX@QkhD^~_I~{WQ#o`83Yd`Dwa^0Vl(wCTlChpm+G;tQB~O_xQ80sg?A2-i z*{7py2!~Y+;F5|yJV8FF{*JLeLPjvB(v3b~`z7p~xyy}xGYhyEaR8g;wm@5H4J-)@{1RpkL2FI$rjQXNW8Y2=_Ux2lzs`2-)#==%g$GG% z!suoVxQP5C{X6yz;rOFCKIT+P{vagdITuNUg_5G3-yRR1q}@vkfl+{{}E$@7*&_Pk|KI)4e&{1$N7$OASCykM`y z4=$<#z|;{2S5r}7+KK_gZ5hx*R)KTUTA&rI2gjO?;Ly4m?0dF=-5wdRJ17gbC%1y_ zMLD3}mIvxngRU>l2q zJ5>zan9IR6Py(0<>wuoS0h}v018v6^aO#o;$3Z!8*e?$b#}vT+oFdrY+y-`!l)&zd z64*{CgY6e(p#D(#P6d^(HlQ*|1*Olw;oozh%JYJ=0(v5JRU8dr@H7+!PiryY(3b<- ze>J$pt_RnwO~5GI0`%=$!MQ^oX#I*n8`%a4Ia@n9USOcJW239`QWFMW15xm`6aydH3h?q-10GRQ z;GQlGtm3WUTBiUEbawP!6>!>8=(yz0d~7ah>lDQ@T_3-*qR@ z(|vFN?Y9n~@#Z%G4d>t>%L^=YB3_u?@lz3oKs`|iqKHAD;|lQiSPQ=48^J3@1~~cX z>#CH2wL=YDccQBs&;t5C^mIq{z~!7iINvh-L3?U6O?z)V=`>|B?)c-UlQMio1O4YT z(0N7!?YRJF^p>c(PYxv!DkMTFgA=7F4Df2HbS1FUu4=q1BzqNW#o3ei8{KN8@3z$8ogYkU^ z7~Erk{#<|y&VhkG#A_2e5p)p|=%=DJ=R=IK7{u7DfEdO)i16D2A<>F6f$3`Bd<%8H zdQ}@tc{G`PcJHK2u==e&y6(04z&L96j()-6jmurf7tXI}PhBRR9x-NY|7L>KpRPc; z&H|HbzX9kt2Nu3Je)@s4p{n$u$U(yiO+nd=Z{wGJ{Lxtw-;;BwRbuJd#E+l)`lo2(zSEAC)-0UK7& zu)$)C4V1Y6#yW0b<2(Y%OG2WhWAXRNqC#=)DR} zH+vRPVDreQ!s)(81LH2copsx-4?8SJJg&PQ^StVM+3OPXvDbOlN6uOHH|9ysEbXWV z*pK1??}t3WYA*gg2T!ayL($E|`Oj%-FUXE?CVrtwWsmn zh7TeWt?qiyoLk!c^(TI@w^(m+w)n_ zknd;je!s77z5YMw-2vd(6#x!%0j@ZQpLKXN)?R6NJ@RpXmMRF$RI1PWTx}r!w#H)3 z({h^3--T@T8`%NI7gHjw$KsQmjz?!PM+V1tKMrf~EL@Lb^mUbT{L^)+A|D#` z7QbjTlek~&u;pesOZ{SjuhHqOFzX|!aZU#k(p-mQ@;HN$Wj=l3b^cu;Ex{eZy`il^ zd&8RpPen8Z{wty>^nK9wuut9%VPD@U#9* z!y3E@Yw#LL?&)Uik?54?d(x{W{8z8R(#svzn@%-3s~oCj8|*3fv+OGhbL`BEWj1G} zavIWee5zAQ0?U(XLyHqyA`0UBqI2W+$7IKyi_J-V8kw8)AuuQDvv*F?SGSy`Y1UkT z7w&~9>`lnP8oYD`7c{Klnrf5cevMA#;gFKR&3?Tl=en#m9Brj3@7?aM-(TZnxwAaP zp}9DkQJ>eHE=f0qXN&3Xj;WJu~U-k`QRq*zxT@XUmemFKiy{`b*R&E+fXx0 zue-t9qP056zM(vlQB{(_E-g&=F38Id$j+$SToE+O|0EhE=PrFq8= zXf8T5Y$iF>Z>P}JP1oMh!7;08@v|*$40X=0k8#VaN%l&q%Jz@1C=QM)s|^n;ZH){r z8Hf%nIT{mCax*5l{9Q;$=|{iN;wesO@fY@7KrsINDcGk`g4u}1h2(S30`hF%eDde< zh2-L~O+3dBt1sNU-(*eS9;#g1fQx2*ue(Y4P9K|s_F!6OOO$JJQ=&)Q_6*<1`oh4F z+Un4Nn&t@K>RnM@)uU0KHP@ni>)rS<9jc1nup&~a7Kp~FTJod>LC8b@gAl|wAU!hSEytlmI}xP;0)QUvou}*Nz>b>>a(~ZaWTzvvynwXSciw^4KxqFKe%ddGa2A z+nAv+TG&7=GjLZ5+ow0z%cG~<&kb9+7~MTVF5L%%ox3jw(|ca|GrK=~xpsVYXLU@w z%>~5ICr~6r9yIZgo4x$x!d~A4u;qT9EhfQ?@MN~_vW~}j+A-0jBNLI8pfWP;RC+*BbR+0MqYV24S!+N z2EVyF4}53N1*8g*i3)CVyN#P%9N;4-4)BqKr|@i3bRxU{SVlT-$?`W`*IHb5)pTvn zC8|uy1!t9*b8fn!XM9Zj$AT@qPDN4OPbN7sPG&pPPLwemjyJMwkN3FQ96#u8ec}r8 znngW6&9FT(OS2oD8_3}%_v+C{ba9iDdw9r!Q64gQmY;Ovb9Y+rEy3OqY2Na`)kSmf z7_CUTZM7lh4=1^hn=Dno8(umd*MkgM*CNg6*ODxpu4dcVT`jY-x!UMpb+y;g;_4wM z%C&1wl&f#>&tL58%@6FZ!-K|C2jD%d5hkUT{5~q4#{fITtXhpYW?_(e3_G@J%kM6HE6?}N)4W; zQh-h*^(7yPgT-87Ac0O~6CVc@1R0<%;spAlwqU-<3aDb{;Jm~H+?E>Q872n!1wqK-Ew)Sz{ZD)g^ahC|4C>>+wAsRS?PWcL6e?FaCBU~VQ4 z&v!|>M@Zz15DA1uTpq9j9nE?kCy?R8@>#$Fw1iC2&lmz_o*qy|wSl%k16&uXf#)I> z2w0>9k&6`|NlXrM#bu!qdx)BsY=PdT(lD}gGn_)s%}FQjiCWwfd6=6?L`M_yh7fP` zL@e|~P9TnsMuMAye#Qv4^67yxzZPf;sDXi?GMEY~f|Zaw*bB>|o7sYHW;1w;Y=Gc- z>mhc&B&5$@gK~N`)QL(!o9HU&U$6=W=cEqzL_TJh5^fU`^n?)h6d}&&iKrk<%+V7W z!cuM>Sk0{t8+epJhDQMud1XP3Z!>7~Z3F|p^XiqiNFeA2`mF|!6gtP zCqS>*Z#Fnfr+-Uw!&kZ%b5pKO>h1F5%p>L3M@u8 zfW_gBSW#{Q$`$0^W}v)8K1u^+8i9W^i?81)uz8vSo8|(KxaJ0m+<%-1O_3kyYJ$Kp z5COW?0-!mIfs^lYaEM+7_8Duywsaj(>!rY^Z6nz9ZUXB)o5AX!G+3S70#+Ag!150A zTox?Hk*{0961L7D-z-7)izRHCv;^t70IN;hU?uw>CqkF!16LJ6aMKe3H;V2^`RHrvkmMIDTCc{CVmu8jkv@W%2rvZ(xj{CH}I2_ZSw7-CPvAcTXb}#kc+I=#3Wj~|$ z(h;UEdzmRFfzdW8i>7g(Toh6Orv0k%@y;EHwl&wNBE&Lsw2L<063CTh=vL=&-Z3Di}e zV_l`*NBC`h6&$Jh%s*M@kynoKJx(d*j$57epR5+!o6K(eYmD8FSLmZom*{6{7hLW- zpK*ChJMB7cd&(UwPq6V*gabyS959#*a6m8Qj^hXXtpCshB%&uvRlv-ShRF8}!^NM{ ztyaEGc9D7>=Oy2hRCC8BeC0MRLRQ)47oE|Uh2nEf(#BOL{mm$lBt7{*^Yf-#V*|; z)vg^uP42A$J2}n%yS*Cyj(RuvUG=UHckS9?R#bAIJ$u)DO7lEwRpkG(S$E;ZddoE@E1hHy6}zkL$@A6Ul^JT@l^RQJ zOGqV;+_r0C6yw}>a7o2ILtUglfD6_YmrP^QQt>2Xw zY~Gp`Wz(3R=vbSQ=~9_k$SRGmdF91)`DRBC`)5X<@=uTc+dnIQf|H&2ospdY zPKfPXfCuh_aI8O5(E}7NCO>_|_>L9i$<8%g|LT$ExwKPL^kj?Kssr2Yw+z)VRl3VP z_1cO8%^LF}tZTC49m+G(T#D23SotaCob03quk^$Y-;{*i{z(bP0}>N%2P7wtd!(j* zW2UCe(o$2velEZZ_dz6jfDH5iC5y<9`o-jJn;3b}x0KxI-^6pSM}7X04wIE5&9^L99bjZi-88c8+UiW+^*0z0NB!t<5(sb-+I+^=Lp;>dk=I zjQ5`LncrOFGiRL>GQfT=zz6q140?bpq+FCtHj0v$U83a9&;oLKXao1DU8?gAb{nr4 zY^QGO+Tpydxxrn#uEy7-yduP^s5II>w>Zf;qae#QIj@KvpIhS@o!#OSk+sV|G;1^< zBJ*RPKy(R1P@I1^DA$_*sYN&L>k<^T_>HA#%G{nA{wmPtFam=RP{5 zEIhKya9Lls^@g@~nqot-|FH(moM# za{pScgL}6L4er)o+SzZpzNyDizPi&@qqx=6Ah$VylHM3jO>BsBjHykfhgavZf~(5W zyEJ-vS9JS$mhboFR9x`&tbF0=Q~j0YS2^S2R{;)l0in1CX+q> zfQ%gyB!@>OxP}iZ2=wgJ6>Hf;k*poGmo4pMsOENa^wM|wnI^V}T1B_U*oQSI(*m1v z7`~0AZl2p4IPMKyo~(wwUd)DbUas4paoCMtTshlkojvNoVJ;vNuR#_cc~HfLwKy-i z(1&Mu4D*r0M=>LDd^y>5Y%5>;VXZ|C2TfO(@3WQ88+K7jA9B}981ONQ+7(O*?TxYt z=uWiv?#gmzca|_%9rY}FN2j}U#|WF&ah6T%eCkH;oT4*3z{#}@?B)XE1ju*+A-B;- zTCXBIAOe^;HdS6^ii68!a$1j)NU^yTM_G?ciDDDcyc>%E@sM?40_+W-cIwkO$}^ zuI@k|(Zfv+?dB%C@odqaF+S3Ec>!s>EX7@UQCYa)y#A7mvleR;#vG(0PcapPPI{>O z9{1PrI2LZmIvQ_EKayeLbfn1I{&1}=^>By1_2Cf*%fn}pr}*b7s?8`^Q4fK|TztqO z|K6)(^v`)6 zqrabN8{Pe^Wprm&%lI$QoQvzVgq*}R8OC0sZp>^nVLe`f&jHH2EkM#=Eg}i8B)KDB zZRHDkr6%nCN`Ha-D~dSdmHi6ZOQwYVD^E%4s~{<>SJ4|OuTnOfy~>v{epMxF__|fj z;PsHa-kTHhx^MrM*M0p#Uiak>dEFNvHy3BnlkLOoP!IMJHDNtoeh&L+ZenKT0Y8cU zEJi{;OLF^umf>Z8RuN=Q>WW|s#sb?(>&4cSG;xb5w`FEiKFdv}LRT72#YyOY$ylxX zrDU!4mj+4AuU+djzV2JEK7D?@+Vqq4YF|ICSNrl~P7a_a>&5I)(;*xmok$kuR^t99 zBy36;b0cD09CQFo*o;m@kq>X}3tEDKuo?OgW3Ux90B1a7#eJbR_$=0dP%%8?R$K)# zmncEmQblOQUZP&?B|5NN4$fmg(Ie!;oa{nR){JXVj%V&>q7#Y1eyV_{gm{1uafL<1 z3081XVLi76$nu(i5}yHR@#}!0fF_s=ssU9<8JvW%p+^LpTIOwqpm|#$X8vYK7u^UY zq8niQ0x9UiUZRnO>)<4EeNI}2as4qjlXVftMG1jpt_Cn8EH=w*!1%jm)e zZcUKoQ3WO5ZJ@y`4|;sEV9X~C7W^B*mR|~8$U1NnSOY$S5)dZ10uqImL7vc3s1{lR zEyCi^hm6cg)nQzJ+ygPUaD43NqQ68R^PS+>gczci(MB($21~fMfdrQvUXLvx&Ak!i zxYvUc&sxynkpNwum0-lP3@E%yfXXWdG~Pwv#)pL~-+YMVn+GX;!cf4E2U7A2LDQUo zz6>|$EAoH|LQ&=g3r&8Y7zu)zjR=^!ih^;#A~1{-1B09;pkJ{R^ct6gUgvVq-L(RA zM^=LFC~|rw=v-a}I)5WCka6VeD$s@h6a4Q0|IHj2;2aF)dB7a8L^ouu&JR`wf?#PS z0u;sqF!NgkCNbh*oVgT?%9ev+!wN8LUkL`itH5B-D$qYD0s1G93#&o@Hu4PlfP7g4 z`m^{7|G@wxW({D~T)@vc7;ohP3*={R$X1mf?DPbIYB3M2ofm+m_hO(#E&=njt>8#-FIV<{ALVmr;TCF zT!7&gZZMPK0c&(3_FH+u5&e{tjvzRh&jWi0bYvWKWMRv|I(Y?H=1YJ@@`qbN}0s z*`W`iN%P{d!4TaK%|u==L_%mx&nQbF#qEyzBygDrCbX6S|N z&;`)3=47Lb@Rs2PU+g#Z)fE9B%0lpTTml@ARX^N9B)>8fHcryBw|sIgksEiaRebNz zto+V?r|KKK0rgkZeVQ+*$F-l^T-JGF{ZRLT&3m1HY^OEv*n{eA2T=OM5fpDZf!r22L!2-Zz`{D%8=XJ^<|2a87lvStEZAhhOrY(OuYN3vPhS4(KX9U@-?*j9zhves zKXa*2e?n`}dg$1yci*AM;2--vhIi}^8{M`$Z+y${ACqf#Z;dZIeAT~%Ii(9OpnjeX zD(4uWbd~|zeg$ms=Xb&T@f^%01fUZL!}W;799Oiu;7pXE=v0K2_;@H?;&q_+hG#yZ zvJX8Hl>c$h)cA{4q;rc|t$&@~WOUV~!{idJ-|PZypZPhb6BcKju3MaPd~R{VdD8S4 zW|fY*g3b{ZXdZS0)zLWsJG=(2cn{tiYu^x@OEkKOcwCP}Wr3+g-FYA4&Bb2CIIVgV z&fa)8C{XT}U$n|q?-Z?z9=ZDG*ri5eZndT-U7IP#nO&Ag7(>>h^ii9G^z+pH^as?v zjB%?G){N;e8w`dyptIWpG!czo0f$vw;Ev<_|E<E(y3EshfGG(-rx~Gc<)?q#G}K zm~6N5cAV>mYmvV47ec~R#{%QEPxxgR9PutNIpkSE+0SXP9AUTF>~ZU}9c1mb?`NHK z=wtoi(Bt;Tu7~r@qQ?tNdc47)%LjB2?Oy>Jj_ZNr2V)H$i}iSl1Q%pUaevO;%KJKB zRp3#cf#~f_>lIg0=o`+)dCHxL3Q|2B7Oit2IN5L{Alq!nuh^pBr`o#LtI4*@bEkc$ z$B<(?=LoHpbA{H-dG6Hg{l%um56oKvz_>X8^mhb+?yrCgj_ZZv|GXESfOE-M!Sy{) zlIuh9X6~n@ihOrVbmv{mvs`{IlO}aMg)Mg|-d}YjI$UQcBHm~hW~jP@^DR3A%BijX z_4Ye_+Z-ExcG2p+54zNPpQl%QKcd(8f3~X)0?WE!{DchwL&V@$fPo&s7i+&rtie;z z1LQ0vQ^l*eURSK=dQdIPbE`s2knnJwhpKGs178A==8+I7IF^NibvZtKp)3N75yM{rSNz%i z7Z8X+($Pm0h>?l%W#n0{1i90&iTg^8hVWRq>C(eR_UlG+nOg@ky;QnWgS6WcBMo=N zC7LzFWLVWi71&lrR5+A|HPVVgchd7ib~AH>kGp1v{OOt-_JNikIYTXo1`EU_KN^gG z1>A5Qg0TLK|LFo2keT9zOQ zyD2T)ur4{ytSTYZsw^(owkW2|AwR0#IXkkQo)Iy~Op7?eN{P76N{f2yoDuuoHY*-1 z5z|aOeDPO+jr$;E9)U!30Xg%@MA>}uqJBR4yG4{-ZCTGXwnIg5wBAU3xXNa2UzxK^ zMKGCjt$BsJNxAUT_wlUVGK8DHa^8rRB5irwX!5Hre(i@m~%k9$o| zO8jP@k_=Xe8Djb?;DLJ~3~S&N5i*%CjCHUe`KwWw+-jdkE_AHrI^L=zu)oPbY@p6+ z&CV((>E<%GZS_Uonw9xM`XxD$rukWkmf7hU)bzAMhvbwhT72>jdQ4KUYh>aR)E}S79v-73X`#})m)>U3jBLo z^%nIsS*&iYcih}i?W$N+?x|5y5}=n~7;ci4A8(PGn`V=koo^qTSwV};XrzawcQb?2 z_OXJ}&$EIuo-snRzBoi=gH2>MeiO+C^Irj9T!R<^GKDVSAMBO5iB9Bln*cfABS?<- zt|a?<e9Hjin?Mr&vc9=GcYjmpKLJ zHMj)i?qvApj=1{dohl`g{`_8VlpX}V~z?xkL=A2qE`xOZ1A#XD9 z8laE3xSb1YPablpkDKfn<|2Iu7Lkqv8@Luw3YLskFk`fU z>90TxArEs2xmHEUSPK^!?dBqTu=eZSj~RiZ^GV}TNv`T6+XRY6br)tGpsY;ZXSY6P zgf0^{%vKEC?W^{`RR8~}uI%nJ6r#-;h|y>DryA3D<(bp^sx0mMTC8pR25oHmP9Xo- zQ2Qn1F#nD#agiSFgK|i6C#yoR*|Byt-M*M zwB{w9G+7dToVq&nsPhK@BW^NYhrJcqqroc7L(!Vf2a|Oi59I0F9;h_3-rr(kxqrZn zvj2n`<-k2ti~SSEmixfaY9HuX?FHRmd7Oorol5i(=mYkmqv;#M@elsY2=I{NivlF~ zia5!*vWYwKvZ`RzCBp^57cH0hUT|FPao$ymbTnGTv6m+mokY}aZW8cJhid+>gB4R+gB)m-m^k!^32L@laE(!`}}dm zwvV$2{1?Nx20L*d*5muK2)$G)I*Eus3Gum4i2I~4Vf+vyjz89LQGaaawwzJqF`d!m zGn_Ht*PEpXXwTXTX<#-)4ctYP!EfF+2*)#4lJSg{f(5cryKoD1E|iA7i!hslJX*8~ zCXlKBq8rzs0sFa%a1W$jz&;{$65cpI{RJTo=w)os%b25=F^2VAdLYBCg$_a;Guckpj!)j@1l4a8>DVDYbj zI*zaR)5{=cn3pkE;srAuelVp7f-y}53_a(Ae)vMrO<4pw1!ACGB@Wt6OF*l0DQN9N zhL?fXp=F?X3b~BjTMnA9kWb4&>-+K_TCnUJGOYzmzy60M`1*eVnzHDoFt1~VSfZD) zLN{cMj?Btb5GeK{VCF6gCc%rqC_xMi(UBRHEdzu4<)Gh+bguxt!Ihx5A33%P^vE zU~ec0wl?UenCPec&`(99pGsf$A3s%%eyT|Vj5}A)8t+;&V>G<>hta6yH={AhX`}1w zrVJmin=pF6{)5r<`gcYk`3AkzYhzgb$^;}{n!u`G0R!|Q6!ams=mQ+_)djBwLmAIt zLPzF|j?96!5bV9g!8UB!tWDC&?^e01r!C9YezB-uH$`b#|Jl52!zc5>jUUbSZyGl{ zzWIacCF!@O_qV(>eY@qE*;nbu=CJ7zhTtAp!20_ZAbHOM*8U0@W8H7Ph6^0ghcM6y zxS^wBEAj$c3w!HKMSy9yaE9)_IwVwbsuaCH@vf{+VsYH`<7Q$?XoW{ zd$&Hb*dzaxa#-Op<=nQ1lsnu0p}gMqm&KI)A66iH(;Bv1w}DO9sIc)W6{LOz%-3>( z9cB?+@SeOo*56*ZCcd~HzPKLVhQi-GtrvV|GnRZ{`K)@w2$y`}oV4+&Q}&ie_9b%n z?P?VNvE89`hq_bww#|U*Et>;sH>^*oU$efUaoPI0#s!l0{JaKO19Pwj_5Ya-SdI1gM(*!X@;nn!8Un8(jORZNwG;n4fF*Iu z$9Kb3&v2Ow>_mmLtW4$8u7zqR7?qkw>D#prJGbi{r0vq*Pupj>*Xfkeu+tw#yJ@ct z2VJIh1~I5Q;0nqEEKnS91NmP8I~kHqB zwidevcaJ^64!1Xj; zj^}Qgw&1lyi^b>APo0clZ#W#{FS|c5eA}>Jg4&Qzy4EhQeBB<8a)T~Ty>W+on`x{2 zF7sx$1C%DWvliP~4=lE`Crq|`g5Gv7&}{SpHAMMWfF_3PfDYiN3y8+KBrPVB8OzAa z>^0O1#$(v3%HyPUg~wmk6<#0AD}81REB!#HDgZR90zvgxzy&>k7uKJl=mO$! z9%&26c+Mj7q+ltzT_nYIDPNWURJQTL(RACDBS{RYfjCc@p6I}B9T5>~Eujh8O~D!Z z^?~_DH31c-m44ePWxgGjB|byeg+51Z3Vd!*3;f<%76yDbE(!v@;t${WLGVSqxiaTP$ z)Ec5(kwYskrRMZSY2`l7q@EtmIZJFRO^ zciXZf#YeF|F<7-KE=sE`CP}Y2D$^)GvdAnayxJl&tl2s(w3nJ3a=}cJj%p}9O^la1U zv=T~qN}W|matAdqdAF^9@<}_t63sh=!D(!n@11N6f(K<8I5B8^^%kVk2R+$!M0 zJ-|aw*YlF2&AeoPs~8z<-ORmnhnmoi?Z#rYbv6=ZRkRHS6>hTGrQX}pii6Y>3nR5- z^Aijrb2CjsbBfFZvuZ5;GTUstGY4%wGmqPPWZt#)&YrOF%>iToT+k291)X03KVC8w zOUOT&n2o?}z?m9uatwQC4q)%fP$!<>(Yb-UwOvK9zQtfsMU&;q!Uo6n*>$d4{+H^1 z__*0VwZ>C1p)x=7q?RdCzJy>Ohu zDVjC*ECPM6V$k^&2qffrA|ZdGAGuJ0=V>%>k%Q<+cJIXd^Sz>^y>}hg_MUD0RXg<- z6m?LRXSdo*rZzJ+$2W20qPF`fh1G|u2iC^u_|~N8dsgQevnwmiTq}22Fe-Lgx>Ovt za;~^#4w<^&76$nK?lZtDCwfI;K=0z~KvIm_+FV$ zpgeDJzxKSGKC>mMJyePKE@!F8PB)p5c5j7%wjdSnmM9HQbCM2gM~*(DsmzGh*ktP1 z*k^9vIBIU!cmrSGn>aT9FrYPpj&mbu{mRE^d~cwSIA4xunxGFD!Fs$8okZKudUzi{ zsocMu6z`Ma$=Rzelsas*C~mj)@`ypFwZQ|f8~t{9%6Rq#D7g1VC^LH!)t$Suv>dxi zb?v$u4QzJy8d~ifHL~iuVPv)QoxaV^A3D@d(ER_Hd+YG3uB~r-t}Sub9d~y(BE;R@ z-QC@lkPrw2Cuneo;O<(a^c31+#fuav4)govoWpZc&ilRJpWl<~y00Ay&6sP&A6%k&i@2Q_R{GrOr zw?1?5+49-eXA8CV-At{%=NFtCr;vkvi?D|VbFgw9>S5HQGtei|2`|%dQk2x5R3#NB zP1!{!90hWYdx@nV3zkkg7R`%0nyeCaBwHiwNU?VC;Trvb!)->sho+l&9a>=KacGUj z)I)nMrXIdxG4M&M;i zu(zz>vMkBDtjlCvw&o;XaubNVHUaV5}y4a%besQ{{ z+r|0XE*ID6PPw>Ocghbx>Q1@vLdWU+CmpAARLAM;e{&43aOV=718^dXu?A+sNle7A zLrq?CkwY?n5+untB}u|fbrN&agcWhikrR5$lP~aAu%O?q7!mJVDdHZtawVtUDwB4( z)hIjVR-e4%?GXk0+p84qZtqgGy>mg)_SREHo0}gLt$(9R*1!HYdoTy<;6#?diOkxG z_y_+LzX-i5=|8ba>>U9T^+cM4{h>~R{xD+v{;*+rJ$2!@KlS0dJ`Le_eikd}_$*b( z{#m|=?ej`etLLp^md^*p&0j2*FnzI6(&W#>;HISU^OuswPrphU|3M|bXXA1>F`S3P zScBaM5dS10g@~W}Gn~Xt^l7{nBL45BiT8UI;_+UOaeZ&ja{6G;vj5=5w)yD8vHBRo zHUAXDHT{&rXY@Ib-{5nlfZpeJL7gu{g4$n}3Tb`aBBc5CxUdGjEv)h7m5}=9&;P}8 zoQHF;27BPezQs>LuT1zY^oXEW#DfYDS1JJ~q5vnN0XJd5m{W7~irBFXsS8VwdcunY zz>7q%)oCKUNH#}_mUHkxX|6n-!Ih(V^f3+{s>f(h6GoLq!3=Dfh|n?*+O&ySi=^iJJ|yC=zlQ{=Rm_T#J`C6zYr2~mk{@dgxEeM#DWrH z4D={J(Snyzr&2_j@(7Qr5Lt{xis}*xYRrgH3r3XMF+$XZL30bkr6CMM;}}A-K_zHs zp_vve0@zUb9n{o}MXlf??BGT0&GBl>rq-?;Y7xLk&0_hfakc<8tQ4dMZ9-IkK$z;! z1*2e0gz9YsJHS4099$Hk`Zw`+kHKs32~Z(wFo}sje~&q0+rou704Mk%M{72y@I)c}8;0AaIUV@K+ihMPp zB455?OohLE2emX}r~`b&gp-))9dbe6kh3F)PVwfW4iN&>E>)1)6bVzSdJ$^bElMqh zkox&xnK-prBTmgXft}!h1T{YeegyXW1}EYHFEi1%<7o#!5@3*Z+Y!OvKkiO`-A+r%<^E&Q$ikGnM%s>a597Pxuf& z_<$h1hGI`w80I6?iA#gM1!zD7`lnLGsCS{{C$C!R_nz&tZ#|~Vzj2?4Q+n>UP5GJYK9xUQPpUq4y{3BK^^w|Lw>PS{+`g*(HkB&<;!YK>yHnoJ?o|GJ zs2hBUFY4}K_>hSniD>wcSjSbWL+;jgX-XFf*N{@YJ zs66zZt9IXOiTdxJW14q7H)-AW*rk2bA1E55C(BFZk{^I_G=F__XgW;}gCwjE?$$ z)<2A1r9**K^I#BFKM+LKfa+wZ58{TP4v$7JK(Z{M>6nu&ZRTs13F}R!J@;9fhv0*h zFtOW-NisKLa}|G#E?2!2*`Rqoyi@mV=yd&4A+rrn1TQo`7QDjrNYDneLxJPw2Lg{; z>I0qcp+VAwMx*{rfeXk%JzgkH zK9wqv7iF5vy)t9gFQty$%Z0uoXL2KDj%B4N9Zb*F*qc(OJDyZ$xILlGWJ`RX`KH*J zR_kNt+pLXVX16+ez5S}FamN)=C!Cf={pK_p{ioe%>{rXtcxt*Nff_AIr25}OLy?0x z)Snrk0OKf?Ab(X#lSkExO3#*kjvb-t1ffmpE}J+`eZYbOf5!IsL4nw zHT)hLjyXs~{h5uPfMOx?wo-(=K%d4PxS1at)ydfgE6$Ocslt0JgQRzq#wu+pOw(AK zpQksLQ)aY0tJZ8Zv(;)*dav#Lv?2SEl=)7xlb1WsOy1}^BWa)8K+=V&(~}>$4y1js zA4sQGgLwD=FdoeMJ2Yxy9^e7;_{f`bK61B~kNnaoNUpbtkPB@py8!{8!gPQGMks%WHl$J({@(YbcY$4bEZts7v9@+O3ao4MmR!*s%3E9?r#7!9O=q|&*KkHfiCKSHja6?+ zvu#&#w_|(Z4Cj`D`EHH*tK94Iw|ds(AN8!x|IM?u@U=@_F}1HRq1Fwh)V%RKXaYPy zHX#q;0&X;*-f3r(Gd)~#d>ZasFXPN|6~&u9%Zd+sl@?$3DldKMT2W3Nsw${W zbtSd<9-1_<76`eEn(xOZ>=D5IBaTnwkV6Bwm*)&=vSo%Yvu41Cf9W)Lu?5|Ma{rs^ zf0GT}i-tR*R0i9UwELPf4Z0c&Oxo(pEt_iVZ0c*;9jdGQr&LtUaVxD{>Rwc_(X*i9 zfLDISHLt?T7jDJXUmZ(osBKv-wFDNEp(!l#t`NN2LAsBNyXscdYuFKg(VQd~dm zT2QydJ-2qfXLjvAugu!ZUfFfe-EtegIOaD{+k!@F`8_m^kSAE1*HH(b@5J5}_<(&g z8M0#zo_R7?jI5fg!7LfE;LaU(5g8itm6WnI$V zWLMDEdpuK`fACCgdFqzl`q?qFmD*;tQLF4WYB?F2NyvSy z&8zScr+VN5W}p^FJ-!Kj5@QQR$kIisWd1@^&aC-PLj5D&QeCq{6k2A+sMXI%)~OoI zGAx^3Xj(L_!ZNR~!8W_M(;>ZkhI2~S0@uW@HB;lecDcuOop+D#dg7Yc{mC)8o7$%I zP|NT6k_#UKPjvyc_|fTj<_l`kEr`DcUSt&e%jPdrB*ROM*waVt1-ce{NVF^nl&_l? zsZu#NQL}VThF-yNzH!d1GV{!tbyle}+U*ht2OQ%D<~zp>jJZY*jJrh)oO6pDcG<;flqhacX&sQ?;`e<>;p^EHO@AP-7lHuhlAgZoh5B+_?^6BdeT3Ms`dI z9ytRZIfjgUunilbR^cPm{Cgf?9xk>1D+jwr&>w+%cm?9mM@>Gs5%n0JRo$^klWE#$ z!KvBcEL6VEN1||Th+NK^7^RHW$!aNMS=tFJi}YewRvAUEXfX|2-e(cKY{WWX*-Bf# zWjkzrmz}orUHZ_*Z|Mh1|50ilFiK5<$z*=3gBR;2WdAJqhy_>!a1x6UebY^dna9S{X6_pvnt81MVB)!+8hNgx2H$fTIXD7exf64+b`(AUUT7Hc zdne-WMvnyU`BQvImgFDOWwH-hvC|H^@+Tei6^=U)CLVPlPC9IVs(kSNT*ZKWWh%b= z8q~b@_Gr5AovrP*ce$?1-tD^1dryN$y3V^l=s549+Ro!t>w8Z1Vjbc<*f6mM;3P)i zB&H#L%O3QI9AZc=?m?V-R*WQ{RUrvyjhUFU_Uy>B9^BBgfdWBiqJ;g=B#HT)$(Hmy zQzA3taS6!EyPN~S(ABrXqZ7^jCWjKf18 zmfgcpw)LYpj^(3tuKA-PKGVl_{Kk)a1dN`H2pT+DEu{ZsuaMp!KMCnQ{!>Wr;TJ*O z2UO^L)=aFy)o^m~V(k;he-!c0V&BeXIDvl<;`JLLF3$zYlvk3(;k6R6eXT>R-gg7y!a&RJQ z!~hNg`*z?btl=k|;6*&(MFQYOBH%@m;6?ITQnVIsq!(^v0a(u#qX)q?@C^LzR{z=^rs zBgFDCT+B0qxP+(yCG_pcQxU|JAd={r5r>-*#aM)?CJ~_egiB2c3u7S|3!y$B93+Dx z(2SUaU?ErwaFeM?P(u@jn!-nzPXHfcYQv%i&TOjV$Dvv=9IBDYrE2ATRHX$>1GB** zeyY3ztOHxYZa%7f2%G^w;qUK*7vKXIyN3S1F`kGGA7M2CdPOWOSk%OkO^tjwR6mkS zb4_sife{@pY14p6=?;PWIt;rq!@ z(}~#d5w^fikD)g3MAr6fYU#1u~_(SV2 z;`gno_&sYXcGu>gh~BZGe}g(q#D@>@fDiD-s~>XVhxzcue0X_ssYfV3bxRWbM$n##9@>4V~25>hYm+%9ynZ-z3cG1>`jN4 zvcEWfmigI{N?&uLQdhwhCn^afCPSU!Lp`9wgk>QVn8 z^~3&iH4gfXYVG%3t-aTGi_UJ}{kpq+&*|;(`CV_D-)o&M{#0{Q09D%*NL4llQl*VS zRB#=ejhUONj_e@mSCc!<8Xl zbXSH_trcNZeMLA`U5*FwO@{izMTEme#KT3Tq884=JtJ}?$)j8z`7KAAT*BlxE{mBu|viS zW9FI8k6vy*61Bl{cGMoL;i$7#Go$WX&5U_xGBb`E%#5cxGZUy5(3lJj!Li3c?WeKG zlU#<}EaH%#O9jZaQekqgT!|blGiB{9apv1m=qI`nB_Fv^B}k4}%ai@phRlviNA9LFZ;{o-VN%Nr;(1H* z(p47ZkQ;p=}*gPGV00dGVRP9v}nti zYu%E*+_o`&vweN~L5I5ZYYuf8FRbgczM3^;Q=`Tlst;K}gQc13(~1kUdkV|-I}7TK z+Va~?oAdfD8gk}X*XAs>t)F3NxqQHnae7JUiu0sGq-GTzCMOT%deWt8A zJx=^Hy1c~t+CyYITVoVjnv+!<8nZNO8wzzR>naS(Y8y<7YdXyfst2uds}|U1RgT$b zRPJ<0t32bFR{79AqxyqoRy8%vuAxRbHPm1-GzDt`=jSE(h!ZWyK^I)WG}M99QHu`> zk;Q|GWbU95YiPPX-?V8SBAq>fQY~Fky!y^WmFo5kjf&QMosyO^gTm%It-dV)8QImvrY6uJ_^E8`~pD_=o zCe}d@`a=+Z?JQgyM@>93k0C?zrOCAU+Dz9xOHRv(i(uVsU$M&JP??gMF$%anyh`q1 zmPY14kxuILD*dGXW~2CNy{0jJvn?X~mRW`OZm|yQJ!TWyd)GR=_pNzEFEx(rr3O*G zRDUuL3NQ~?i$^DNfc$Sn{1xyb3l_kKEW!2hQ3=v9s!p0m%~-XIo%kyjd5IJ+43f;7 zA0?MHFHtdVZiZ^|NWMnGoN}F**^T;CT+9J#^5IeV5O{&+F%eQfrbMd744Kj~J5J%M zse(Bx{6#aChfAd_i<3)OmZlK9G*=~Zv{XH8NxfF^;!fRw#WM|j7cDXLUbM;BYta#K z%gAft8w2kJRL^Gt)dAX*`LPB$=!BP>fjv7o{$=n&BTKPoV-}fwbq&DmnL^Z9LbV zgNn{O7b!dK+@S2Z^RSA;&Rfb3+utZVY@^B!Td9)6mcMfZzYBH@V-7I?i*WoiSEEN{ zBYGsZE^ni8v-h!jEZ@(BtMz&~Yc0|8Xz2&+%Zc*YOyB_hTu7ZpU(k zosX4^Ivr~kw?8&r()QRwDVt;KrLB$~2DhcHj{GHUd6>#r9-=Z92mj9QA4{D-k`<^)56&T@(84McQ|%ddqDfA}hFaFL1_T%e+p z*)$J*QdoZ@$bTQ=HzM~X2N3@lAu*@n1TMfyTwxQ3>w?7QmISfBr9>=m>k*4Pmc;yy zGcmpELrm_5GDdgf8N=VRSo*)0v2^dXuyyXuU~Ao9#?idLgQIc(0!RJcQ;z!GPaL&7 zl&g08@2tf6HxKKtAMu+Izw{vDpTxao;Y9*25#n|YeHw5RW_V_|$ukLJ^qfZwo@)}l z7e++qg*DOoa|+S;(~GFR3??eCVi~1ZnT*2gGKTlMjgfydizWMJ6-(x?y)5a!equ?# zdBKu;^_eC0C;b}>aQ+Qo{#y{g>=5FgLi~$__+2H$`350Yx8Os5Cq(xRmuPhZl*07fB;{a4_6RE8NI1BM28FK=;Ct{0RPF z_~_feF$3$r74gd_;=_qW!%6x6Oo-EOgqYt&><926e-iYj5O^3tco;D_5oyFzfD=)L z6VZkfF(QK0lJHR{f`$h8j}U-2LyBL36F0Y_Safs+z(S))GX3dqwC|j7lGwL35g*6y z^9v!4w+S)54Tn<&O;cJ_|Ye%^3Y;T&q7 z!l9-GTxwFy_rDS{KIm#&|}MmLXRw$3qP=2Cw$Lxo5=5$`$X#5QpD~V zjO%=vQ!YzoPq?g+JLa-g{)o$d`NJ;fcn4hW^7gvClHcV@<#xJJnH_Fadizu=2_z;% z-4NFsE+haxA`Ii0=vRs4k=K!$qhx#CWb^-4QD#+A2u99P-mab0zz$1|1nUY`}$dQsjQ zZz>05SNl-u$xu&t7=K)k4@Dgug>l4+l6P^E6+kakKw`(nh~ID(n3gtFFa8%2)et(OBhsKy#(<51Pw- zA89W2d#^egK$VsRP=&>TR36AphWfxo1i?i_;`(zuhy0PmPaY=W8J~&pA#hY@lgyc8 ziLRUj@qq%nVq-+MN2f||j?9zU5K$(-Hmp{0b!e;d%8(w_;`2)*T7Ft2-z7FU{E@RBd)BRh}J26#;KD)NdjOgnWv{wclhyeoJSQpECH# zkJvYHHeG@IZ}<}U_aLM-1%!@f7&H6Qo!C24eFZirMTo3RNR%9l&y-yeTgY1)Q>nB# zszGI8WQY3v$bQX{h+*y7;fr-EW+*`y;7le-u^ikEY5% zaWXWJgEdLWQ@rioLjCn4+Cwkqa>+UD={cGsNA~9GGuw0Q*&DOG_}65FimXVBlN?P+ zlUa1CGPoQAPlY*2LG6XN+>3A$r_euhtbj}Q7fO*GMLJ|-p$&U=zB~W2 zoFI`!S<#a7GLmIyr)TkIrWPsPMogWnJ`DcEqw<%?oK|}Il zquS)PCe_KiO{gJGazFXl8Mk_&{NtOkaMgd{>!Hu|YK%)>DZBiuj8x5J^27Asxorhp=O`upuRiso)MS@&I zdAdSvX`V_|NvV2yajjNKQJZdIVZT9s;auaKf)%D&1>4Lr3yzzo7u+$+EPQL2T|{+( zR!%WhpUhjVh1*$}2l$Ai)yM&2Z*74KXoU-CUs!&m#qg+~9tX5P}t(9NiqMK9JXOLMo$0)sYnMrEt7PI8iqh?8^x6D$? z{xVE0!&S3#s+C?&)hF{}Vl7O}1J=R8dgK7HH=-V1*##HS#U``6WXNE*4%63Z#qQ{E z;css96|QRum8fctktu6R<`p+&DHYTgs^->JYG&0o>7>{6=%-W<8zxqd8pl^{GL5S` zY#Lkjn`vD2Yr}+Us+(9twSf9$o}|J{VIEE(2YZ{51H@kgFE!dn$ZUKp9>6oIdiym< z$24o=6)vn$FLTUAP3_e$N^%nn2uU}5b@y# zx^YkFwwWrVX~>wVongqTstMF4a})D$2Is9qn^+7Kec_QQ%%2qs_x%URVQ-|zmtyPJlKW# z-+=hb;brC`_H@+cEsJn{ehHV9j^e(mqgo_y)SSs$;>1Z?;>Dk|I7lddQKV?h!bHi) z1sO773ku|e=T|BO%xh8ho!77GHFv(c$J{j8EceD>KY>^X^kx_ZnYaHdbJ;4 z#8{YM=vbUc(5h51|5bUCJ}b**JXbc!xv%KsxvrS2=)7XJ(v%f@l$};wQF2=TLdj|A zS4F2$sxW1g@+NZ}=i)flz&gYqMf^E9_C9!-rZLpR>rfAF!Zmt4rz>Ww42jyNMIyGD zGojm@SV7x7*#TRFxV~GX_`S9!33_bJ5_a2CBI>fGUfgL*kEFxq5ox>4V=}gzcgxsp zxh!L|>4l8-#;-Eg8>o!+`oFUebFg^`>k#qhEyf(+*jrH^R&GR(z&7-VjAP%(UWWMX z7bU*?6^Qo%J>qr1ig+AwW~LtSVO$S{vYZdZvK#Gi%uUF!*{#jzLc#`AU% zJNzi(pM;Y*i~ETDz#&F>cDe3#aiViwf#}@OA=)?0iPkSpz>8@98cH;NOCajM}NuBej`NX4k5g!EF$+#n8>`7B$DstiNt$VBKARth<-33!XIsj;3rqY|H+?lKF1LD zmu$lNT0_W}et?tgGbZ;lWXtDg;4}F0KlCGh6XF*iz`iXUd-w(HTe^ZhONecZ*qVr~ zaGwzAC-5O334912Jd6ktf)C+GuL=kInHZ`Lzo7@rfg|t&5dd$<6F1oUrwhS2C=yK} zo+y6cBw7%^6!FvWR}q)6XX_{UFvK>z3m^1=AkT=6p^G5CASG}=1pP1^{0u=L3M7CG zPy`yl09XSz5Dbz*Ip_fkz&fz!Z%}pAx|-+cYO7J#K-3}f90wu61(1h@=-2QQefq8}OTU}8Rq z{fGDXelk>7i%@;_f1#^Ms3v+M)Zs&vU6GSOhRVmWsB9LCN|%8~& zdZGA)^;GE{>#-7LJyN3Vhsu=w0NkGdfBptFL2Pq)5DV;6F^2=NKu*jJ2{pBaFY|ye z3t{2Y4?I;4>$6rl`-4^^`<-SN`!CG__G`^K>{pr#*?(#-XTQ)~%YLT0mHkw65BrJc z3HBq+YwUYkkJ-1i-g0hgQO+;glye>Y4E_Orngq2#Tx<9cTh#w{@DdIflf4f9Yyns0 z%zUx%XWpAev)-7bv;Q)*j4A&)a0Z+Pr;I7zWT*||JHQ1v!b7;gOSoZ7uE>S6 zA^G5B$Go!lWS-iFu^!qavVXVEVc)hY=lo{Xz`bGF!S|D8Ki`j*!~9n)76@FjSSE1M zVy)nLi*17EEcOeXu{bMq((;b*QOlRYhpfH|AF!fAc#68vUMnj2J=6hlo#6u9&==r| zad;yiUJB%$rxtlW)r>rFox#0$FQzWN$33FRLFPUv5NnUW0T-1hc2NL4%3B? z+0Pa^V!u%Iu>A_rgZ3N5_S=t(@3lWBzQ_I_5joF%h1%B-;|LHXAN(cB|Awz`_5bW&e^Pqpr$~PH)+IN*ZOLVCFXo(A82hAW zBKN3!w!k6x5~2N5YlQc@wTSL^?G_t%9hBJNGDmWo%VMc5E@RT0UAD+7 zB0Vp(T6QF~S$=j%x5BL8LB$!t^OOgImaFs!ZBm;Sv|qh9=#qL*&>w2uA)l4HLn#l) z0h#Ww|1i-O`W`vB7lYa>3D?6@QGcc4nWxEIvNuVRY){c58&a&8v1B*)vcv%X#qp6s z^Wzf5Mq)E1hocLmhoZ{m1|#cv{gLg8eG$`?d%|a{c7-od>j+z?(H6E_vnA}DW^?#M zjpm3CD$S8pu{ny$134i3jfr*eJRCW|@&Ay9Ivh3Fp)AyZ87#6rU7T#lP$y#<=FHM` zXZFH0U%ru)Frit=aiTL4(DH zxyoc|t_ias$B{iJ%ZqO)BUos9dW>jaTCzlUN|tm-a-m#nQU$L$u|csRu|uUUVL+`q zex62U{7S9z_-)!{@yB&a;_v8`CcITIOQgzWNmLQ=fc!VUOsqw?fUEfUa|&?}pcWo4 z!e@WHt}YNJOA8gq!a_r4PJtb3D9?l2pBpIHlN~A2k(D6PnvpKul%6MBpH|ANO{-O` zN^MiANaji!|rOi8th?O4Vd% z%T#3-%a>cV8nih@j;()>dCqWlWQg1koM+}v)p?3|gJ897U|)3P_{q-Gz`P09HQywpt1 zrK)MUR5?ADDguRXJjMBNePSMvgZ=mjxE&vh*VUmf0L-mHZ$_;o>95rw-L+;+Ta6Q^ zvC50TwlYYlvOG$xtSnKoxHLnipd?=|x429pySQFCqo`9gwQz<;a^WJa#DaA?@df*I z;|j0p#uvWON+_giiA7X7sfa29g>O8HhnLF6JRk?VtFaDHkB>DY2ViC+_DVF0lddLJ z($-|cG&VZ0YwA7tD(V6ROKT%U3Txse@~YFMv#WCDGAc`WX%)3f$>r^;3FQOoab*iM zW6IWON0sf-i7dMWo@+*zeN~Mqqsl-rwu~x#<9B=nzJT-K5awV}9E>CH z8xVhaA9BzSCp3WG08oYdAC=6IB1J;M+S#$-8%jif8W*6_4JtDjq#gls&sYDSCEOo>w=O_v-o& z7x24a!cT5R{#Q>!f5sqkFa#$xj9PRKYSFobWMfZT#ylmGHqU@0&$D6T=en?C=K64> zMnd?*N1_Eo<|K;*&dwI|pIsv1Gh8R_Iou`dK5JOsZPs$0%dG7R&a=)aIL~~{a~}FA z?=pkR0olo%Kn`|c4mRNUm(4(b1Y-B2E^nES>*I^yLq_2vu%9e$sSJr(rb(ifnUU~i z4ov7W4_4690FM9C2(Itacz&Lolhn0CUFqw!B))sD#Twn8~1UUhjoD1HA~?GR-ztWje2w)_KmC; zBLV9biT`>%;=A68c&~S6JlA_O?(2hDZtJ7jF6&dcPU~~|9M)9`*sW_7v|cwu*mB*d zh{d`sBIfH(iI}f_C}Otyqo~;!6*XJ+cgC>>)*=5(5Pvp~y=MvPan$7{YtW;x0X-s{ z(W9{q&ziw~eq6>SiSxKBaT+%uj=QXh!!8$Mx66mv?h0kBcf~W7yE0kkyGq!myBayh zyZX6?yB2W`c5UL*-+h9szv}^4Z|4Vo-R+cLcN-O$%x0{+<%mBQrD;Eoy?G2yYCW9T z7DD27;P`i;M`a)O%^YNi*-=4aa!iUCA5$ep#|((!aVuhQ+?nW~@F999!iesPM51#t zmuQ`=W;9QBGwLVjF={8*GpeVKFsdi-F)GL3vy_igw(^mG!oll5S%vuj>=j!^NE`BA zu?hQT5IcSk?&E^m-2E`(AA^%Pg+7gQ9HM$jh$vl_B#KuQiNX~f!nJiNy7N;3ko{_L@jsr9|QiWh5^DhebI4nTX$k+*je) zb8*}Wh#hoW{PL^Mq($LXXHb^l9AS5{bLQMB;ZzB6d#^Xc5u-CPd`E9T9%u zPJ|wW5W$B@MBrf&;d{_ZxDVzK&V%)Y_24*R9zZNS`~WC!a`hjE5x;BgzxuTDaO?>< z?%GzocS2&{oC z2n2}$C;ls(^slhcUvC8X!Ef$^x8T$N(1ZAOSabP%aSk3u{4?kgLTsz6gy{cFi0W@R z_B(`#-y=lm5h2{y1kQ(n(-FXhN>PBi94TxWeHJ5Z8`^GLHK91Y+I_CZ+_AA}Ru_JvVPZ0YV!MFiZ_#ZgQ z<@_5iUjGf%gb&e#577Xs_?|bB4>P283UcCy@kGNku zBg~B*!8;rDTNoS_=0h?MR08BeqMP|5G01$Dn8SROSjc>kSjN1QSi`)P*v!0<*hOAT z93?L$E|F&v_sJv4SLA`@SLU7+Wqt>D|IHn|euEmoJs84+7)U`k;#D8{(8IdWvch;= z2~`OsR4JDEtdPmPS14xQ@@kpayf)?~ua9}b8)BaG<}y!tOPD9TmCR$_2Ie7e2lIe; zh`GnRz}!~&o%vPqCG)f5SJsbkLs!6MaOpd!31XX~Kg1M1z)S**{{R0kob~_w(x0>I zFg3&cm||{>ajqCRkPo`vyqXz)_JWz*{8L>uup1J_HlrxX0eZgBa@)!$cH8T zj1_t%Y>^jRdFHX|rrM(JyWMe>XTicQAR^H^YbvSduDv3E`mBTt|RmwhY zS<5+M*~&R&*~2|(IfHM%WV@3HVSUm}9$Nw+=?Lx@MsSJ5Jm5;o16(tX*NReM0)yO3$3vzaf8#z8Dh&enZ zmbKq0jlIVypF8eY&bPy{o`0J|o4^)_Uct={LqZ$v=LxO1UnacPex1k~`*G1R`xBxo z?Qe=Lb9gB_3O}_3ermBJ6zCg=7atWUj{CSk6d>XCKucl$O%s) za?sO>?D6zvc6vmxx4I{CHo0fF4-AiOEw31u-5wrvse4Ya98@K@-Oqr5nSS3BDBc6T4aG&lh{13 zF7Xl1L5bO(bERf^ER!Dc*dQ~*W3TLh#|7Db&quP;ygo|x!36=aUT-Qo8R~|&SsefG zi2Y*(YS1Y3Mns}FAr#Lz36Uh*LN&>TFiWyJ%$2n~)Sta1B!aszI8k6;P=?T)zgXYUO2d(5a25nQQ4?3n;7j#RpHu#Nv zZ3vYCQnjH}0*HU(3*KrUA_qUkp!UK?kV7f>+z+H$+9Jy&S|aMCnj+d{>cjixYQyL7s>7BkREBL6$ z9vM!tVFux+rX~4vyA#9tI}+lATH{kin&NWA8e)qjYGbRUs$-gEDx-Vl%cF;RCDEgb z#ZeoS3Zo7v7errEDTw}4u^@)Z7sOJT!dNN=B){rm8nezGAx0kyu@${~dh@%=|$SRs`SFQhU+`WwGu9!_B$Ot`tth`*`&=*gI!9J+od-L!Hh`N}6E2Wa6DO2dohlMnl`9@oSt=P>SuY)4(JdEJG0Y1p zU#1XPzE#n`{3N)q7*PH}KCqn10_mV~D)o&YaXubJ4t65{>k)r>3+m7|^d^A%X4HY$ zTUXp7NeWt3Np7n#$!fJ@(p%lwDJ{O7#O6@GxaJsvn5Jam$i{5Zu*PEXkcL{xz=jSP z|N5D7zV)N>-u0V#UiHU$p7r;5UUl!~yz8ipcP*9jsil(NxBy3a0Bdk-9oAwia?lAM z(hVO1YCr+V?hz#!JqjeXSC1t3S}_T|Q&_P*UhL?eAWlSgBwuKEf@{U-<5T3dnfJMMy1?ZsU(p2#!2L07v^9Cj(>R< za?pny^kW?iAP0k}#b=-vnjuKyhh#`B+)(sP6B03G&x8$4Wd#rUu>*%fIsP+Zxjr*e z`Mn171l9XRY8K%pv~|b7vV})zR+ldu@w{1d`yA;3Ncy zKm_9M?nc~|5JG@JaCZo9!5vD0qAi7%3iY0+?k?25UGKF6Jnebj^WpvW9{Rhwc4V*r z%ssPa&HVR0D_eR<+}3^)vvs6IZFQ4~t&^3otszRt))-CD))Z~PmK>emmQua%mUuVZ)_Kj+t@9m=37dYjn6Oc`n6LrX|ILM&#DMzmq3)a3;74r0 z6GFFf8*Q)yKVUcO(Y@p-beTy|S1$?Z8Z7=@JjZ0ehfLn@C%*f`74QA=%B1}n8qfVx zHSYVXwG;NY>c({~){pJlY;fs1Y;f+nVi?o)wqeZPA5BK@QB6kgR!v9m`WvG!wjcei z)P2n+{D7_GsO(}rjBefmJfXwnXdLC)s>fNApR^SBQ}*I^%26hqa+YzYJjM02pNu^n zAugvA#rbr$j6Pkaj66L}8F6~PGVJsQ&Ct^aG)`wOX&leIp>aI`e6RXgOksvCUl zZ;qhfovTIN7jLHx(5^X1js&`?C)qc1nrC@D#G3p(p1>no8Ai^I(-nJhyfOsF$Pn^& z249^bgRX|lz^h3z;98#ayH+iIug#J^*H%gI>wCoE`om&({Ux!#`mNYsRu%h8s$%zu zs(HYkb+kbz{_sw`(JnlxBkbEkI}P0^bp0Md{|fro@gyF{lXyZey`HuZ+h=-0f3bOH zxb%2-oLE2W17TwIY?4^rDGPL*Zp?J7cR2AocSxZ8n&WSv{+rdb{XE*;=t-5FW8WCs zQIC-$bdwyN+jtVskR$WFh~3NNr@Tgv$Xoa!?+KF*6R_e#v7US&)0YXc6O$olCZ-eF zz#GiujB8-?W^<6C?InkFswK?a9xvZ;3iPy-w`kCP(Id>i#jBpTU>#4N!${ ze&+ZK{6SPZKHKSZ_zeu&_Q$O$+HSKtYF6+V%_wq9Fr{p&n+!d{_?apc8gN7aW1pXkA3-hWsYa6QU2~XZe