From 07fb291eb8e8ebb54c0e2048e3098db68ea17bec Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2026 17:17:35 +0000 Subject: [PATCH] Migrate domain API types out of the top-level api app Move each domain's GraphQL/Strawberry code from api// into /api/, so every domain owns its own API layer. The top-level api app now only holds generic GraphQL setup (schema, types, context, permissions, extensions, helpers, utils, views) plus the orders package (which has no dedicated domain app yet). All api. imports across the backend were rewritten to .api, and parent-relative imports that reached into api-generic modules were converted to absolute api.* imports. Co-authored-by: Marco Acierno <3382153+marcoacierno@users.noreply.github.com> --- backend/api/cms/schema.py | 11 ---- backend/api/orders/query.py | 4 +- backend/api/schema.py | 50 +++++++++---------- ...st_manage_user_association_subscription.py | 2 +- .../test_subscribe_user_to_association.py | 6 +-- .../schema/badge_scanner/test_scan_badge.py | 4 +- .../schema/conference/test_conference.py | 2 +- .../tests/schema/conference/test_tickets.py | 6 +-- backend/api/tests/schema/test_get_order.py | 6 +-- backend/api/tests/schema/test_newsletter.py | 8 +-- backend/api/users/mutations/__init__.py | 13 ----- .../api}/__init__.py | 0 .../api}/mutation.py | 4 +- .../api}/mutations/__init__.py | 0 .../mutations/manage_user_subscription.py | 0 .../subscribe_user_to_association.py | 0 .../api}/__init__.py | 0 .../api}/mutation.py | 0 .../api}/query.py | 0 .../api}/schema.py | 0 .../api}/types.py | 0 .../{api/billing => billing/api}/__init__.py | 0 backend/{api/billing => billing/api}/types.py | 0 .../checklist => checklist/api}/__init__.py | 0 .../{api/checklist => checklist/api}/query.py | 0 .../api}/tests/test_query.py | 0 backend/{api/cms => cms/api}/__init__.py | 0 backend/{api/cms => cms/api}/base/__init__.py | 0 .../cms => cms/api}/base/blocks/__init__.py | 0 .../cms => cms/api}/base/blocks/accordion.py | 0 .../{api/cms => cms/api}/base/blocks/cta.py | 0 .../{api/cms => cms/api}/base/blocks/map.py | 2 +- backend/{api/cms => cms/api}/base/types.py | 0 backend/{api/cms => cms/api}/home/__init__.py | 0 .../cms => cms/api}/home/blocks/__init__.py | 0 .../api}/home/blocks/home_intro_section.py | 2 +- backend/{api/cms => cms/api}/news/__init__.py | 0 .../cms => cms/api}/news/blocks/__init__.py | 0 .../api}/news/blocks/news_grid_section.py | 2 +- .../cms => cms/api}/news/queries/__init__.py | 0 .../api}/news/queries/news_article.py | 4 +- .../api}/news/queries/news_articles.py | 4 +- backend/{api/cms => cms/api}/news/types.py | 0 backend/{api/cms => cms/api}/page/__init__.py | 0 .../cms => cms/api}/page/blocks/__init__.py | 0 .../api}/page/blocks/checkout_section.py | 2 +- .../api}/page/blocks/communities_section.py | 2 +- .../blocks/dynamic_content_display_section.py | 2 +- .../api}/page/blocks/homepage_hero.py | 2 +- .../api}/page/blocks/information_section.py | 4 +- .../api}/page/blocks/keynoters_section.py | 4 +- .../page/blocks/live_streaming_section.py | 2 +- .../page/blocks/schedule_preview_section.py | 4 +- .../api}/page/blocks/slider_cards_section.py | 6 +-- .../api}/page/blocks/socials_section.py | 2 +- .../api}/page/blocks/special_guest_section.py | 4 +- .../api}/page/blocks/sponsors_section.py | 4 +- .../api}/page/blocks/text_section.py | 6 +-- .../cms => cms/api}/page/queries/__init__.py | 0 .../cms => cms/api}/page/queries/cms_page.py | 4 +- .../cms => cms/api}/page/queries/cms_pages.py | 4 +- .../api}/page/queries/page_preview.py | 4 +- backend/{api/cms => cms/api}/page/registry.py | 0 backend/{api/cms => cms/api}/page/types.py | 2 +- backend/cms/api/schema.py | 11 ++++ .../{api/cms => cms/api}/tests/__init__.py | 0 .../{api/cms => cms/api}/tests/factories.py | 0 .../cms => cms/api}/tests/news/__init__.py | 0 .../api}/tests/news/test_frontend_queries.py | 2 +- .../api}/tests/news/test_queries.py | 2 +- .../cms => cms/api}/tests/page/__init__.py | 0 .../api}/tests/page/queries/__init__.py | 0 .../api}/tests/page/queries/test_cms_page.py | 2 +- .../api}/tests/page/queries/test_cms_pages.py | 2 +- .../tests/page/queries/test_page_preview.py | 2 +- .../cms => cms/api}/tests/test_registry.py | 6 +-- .../{api/cms => cms/api}/tests/test_utils.py | 2 +- backend/{api/cms => cms/api}/types.py | 4 +- backend/{api/cms => cms/api}/utils.py | 0 .../api}/__init__.py | 0 .../api}/helpers/days.py | 0 .../api}/helpers/maps.py | 0 .../conferences => conferences/api}/schema.py | 2 +- .../api}/tests/test_frontend_queries.py | 0 .../api}/tests/test_query_conference.py | 0 .../api}/tests/test_query_talk.py | 0 .../conferences => conferences/api}/types.py | 30 +++++------ .../countries => countries/api}/__init__.py | 0 .../countries => countries/api}/schema.py | 2 +- .../api}/tests/__init__.py | 0 .../api}/tests/test_schema.py | 0 .../{api/countries => countries/api}/types.py | 0 .../{api/events => events/api}/__init__.py | 0 .../api}/tests/test_event_queries.py | 0 backend/{api/events => events/api}/types.py | 4 +- .../api}/__init__.py | 0 .../api}/mutations/__init__.py | 0 .../api}/mutations/finalize_upload.py | 4 +- .../api}/mutations/upload_file.py | 2 +- .../api}/permissions.py | 4 +- .../api}/schema.py | 4 +- .../api}/tests/__init__.py | 0 .../api}/tests/mutations/__init__.py | 0 .../tests/mutations/test_finalize_upload.py | 10 ++-- .../api}/tests/mutations/test_upload_file.py | 0 .../api}/types.py | 0 .../api}/__init__.py | 0 .../api}/tests/__init__.py | 0 .../api}/tests/test_form_query.py | 0 .../api}/types.py | 0 .../{api/grants => grants/api}/__init__.py | 0 .../{api/grants => grants/api}/mutations.py | 2 +- .../grants => grants/api}/tests/__init__.py | 0 .../api}/tests/test_frontend_queries.py | 0 .../api}/tests/test_grant_type.py | 0 .../api}/tests/test_send_grant.py | 0 .../api}/tests/test_send_grant_reply.py | 6 +-- .../api}/tests/test_update_grant.py | 0 backend/{api/grants => grants/api}/types.py | 0 .../job_board => job_board/api}/__init__.py | 0 .../job_board => job_board/api}/schema.py | 0 .../{api/job_board => job_board/api}/types.py | 0 .../languages => languages/api}/__init__.py | 0 .../{api/languages => languages/api}/types.py | 0 .../api}/__init__.py | 0 .../api}/mutations/__init__.py | 0 .../api}/mutations/subscribe_to_newsletter.py | 0 .../newsletters => newsletters/api}/schema.py | 0 backend/{api/pages => pages/api}/__init__.py | 0 backend/{api/pages => pages/api}/schema.py | 0 backend/{api/pages => pages/api}/types.py | 4 +- .../api}/__init__.py | 0 .../api}/mutations.py | 0 .../api}/queries.py | 2 +- .../api}/tests/__init__.py | 0 .../api}/tests/test_frontend_queries.py | 0 .../api}/tests/test_queries.py | 0 .../api}/types.py | 6 +-- backend/pretix/__init__.py | 2 +- .../{api/pretix => pretix/api}/__init__.py | 0 .../{api/pretix => pretix/api}/constants.py | 0 .../{api/pretix => pretix/api}/mutations.py | 6 +-- .../{api/pretix => pretix/api}/permissions.py | 0 backend/{api/pretix => pretix/api}/query.py | 2 +- .../pretix => pretix/api}/tests/__init__.py | 0 .../api}/tests/test_get_conference_tickets.py | 4 +- .../pretix => pretix/api}/tests/test_types.py | 2 +- .../api}/tests/test_update_attendee_ticket.py | 0 backend/{api/pretix => pretix/api}/types.py | 2 +- backend/pretix/tests/test_create_order.py | 2 +- .../schedule => schedule/api}/__init__.py | 0 .../api}/mutations/__init__.py | 0 .../api}/mutations/book_schedule_item.py | 2 +- .../mutations/cancel_booking_schedule_item.py | 4 +- .../mutations/change_schedule_item_slot.py | 2 +- .../api}/mutations/create_schedule_item.py | 2 +- .../api}/mutations/create_schedule_slot.py | 2 +- .../api}/mutations/star_schedule_item.py | 2 +- .../api}/mutations/unstar_schedule_item.py | 2 +- .../mutations/update_schedule_invitation.py | 4 +- .../api}/queries/__init__.py | 0 .../api}/queries/schedule_invitation.py | 4 +- .../queries/search_events_for_schedule.py | 4 +- .../api}/queries/unassigned_schedule_items.py | 2 +- .../{api/schedule => schedule/api}/schema.py | 22 ++++---- .../tests/test_book_spot_schedule_item.py | 14 +++--- .../test_cancel_booking_schedule_item.py | 0 .../tests/test_change_schedule_item_slot.py | 0 .../api}/tests/test_create_schedule_item.py | 0 .../api}/tests/test_create_schedule_slot.py | 0 .../api}/tests/test_schedule_invitation.py | 0 ...test_schedule_invitation_frontend_query.py | 0 .../tests/test_search_events_for_schedule.py | 0 .../api}/tests/test_star_schedule_item.py | 0 .../tests/test_unassigned_schedule_items.py | 0 .../tests/test_update_schedule_invitation.py | 28 +++++------ .../api}/types/__init__.py | 0 .../schedule => schedule/api}/types/day.py | 6 +-- .../api}/types/day_room.py | 0 .../schedule => schedule/api}/types/room.py | 0 .../api}/types/schedule_invitation.py | 2 +- .../api}/types/schedule_item.py | 16 +++--- .../api}/types/schedule_item_user.py | 2 +- .../schedule => schedule/api}/types/slot.py | 2 +- .../sponsors => sponsors/api}/__init__.py | 0 .../{api/sponsors => sponsors/api}/schema.py | 0 .../api}/tests/__init__.py | 0 .../tests/test_brochure_frontend_query.py | 0 .../api}/tests/test_send_sponsor_lead.py | 10 ++-- .../api}/tests/test_sponsors_by_level.py | 0 .../{api/sponsors => sponsors/api}/types.py | 0 .../api}/__init__.py | 0 .../api}/mutations.py | 0 .../api}/permissions.py | 0 .../submissions => submissions/api}/schema.py | 2 +- .../api}/tests/__init__.py | 0 .../api}/tests/test_edit_submission.py | 0 .../api}/tests/test_frontend_queries.py | 0 .../api}/tests/test_permissions.py | 2 +- .../api}/tests/test_send_submission.py | 2 +- .../api}/tests/test_submission.py | 0 .../tests/test_submission_frontend_query.py | 0 .../api}/tests/test_submission_permissions.py | 4 +- .../api}/tests/test_submission_voting_tags.py | 0 .../api}/tests/test_submissions.py | 0 .../submissions => submissions/api}/types.py | 24 ++++----- backend/{api/users => users/api}/__init__.py | 0 backend/users/api/mutations/__init__.py | 13 +++++ .../users => users/api}/mutations/login.py | 2 +- .../users => users/api}/mutations/logout.py | 2 +- .../users => users/api}/mutations/register.py | 2 +- .../api}/mutations/request_reset_password.py | 2 +- .../api}/mutations/reset_password.py | 4 +- .../api}/mutations/update_profile.py | 2 +- backend/{api/users => users/api}/queries.py | 2 +- .../users => users/api}/tests/__init__.py | 0 .../api}/tests/test_billing_addresses.py | 0 .../api}/tests/test_booked_schedule_items.py | 0 .../api}/tests/test_frontend_queries.py | 0 .../tests/test_invitation_letter_request.py | 2 +- .../users => users/api}/tests/test_login.py | 0 .../users => users/api}/tests/test_logout.py | 0 .../{api/users => users/api}/tests/test_me.py | 0 .../api}/tests/test_participant.py | 0 .../api}/tests/test_register.py | 0 .../api}/tests/test_request_reset_password.py | 2 +- .../api}/tests/test_reset_password.py | 2 +- .../users => users/api}/tests/test_stars.py | 0 .../api}/tests/test_user_grants.py | 0 .../api}/tests/test_user_orders.py | 2 +- .../api}/tests/test_user_tickets.py | 0 backend/{api/users => users/api}/types.py | 16 +++--- backend/{api/visa => visa/api}/mutation.py | 4 +- .../visa => visa/api}/mutations/__init__.py | 0 .../mutations/request_invitation_letter.py | 4 +- .../update_invitation_letter_document.py | 4 +- backend/{api/visa => visa/api}/permissions.py | 0 .../visa => visa/api}/queries/__init__.py | 0 .../queries/invitation_letter_document.py | 4 +- backend/{api/visa => visa/api}/query.py | 2 +- .../{api/visa => visa/api}/tests/__init__.py | 0 .../api}/tests/mutations/__init__.py | 0 .../test_request_invitation_letter.py | 12 ++--- .../test_update_invitation_letter_document.py | 0 .../api}/tests/queries/__init__.py | 0 .../test_invitation_letter_document.py | 0 backend/{api/visa => visa/api}/types.py | 0 .../api}/__init__.py | 0 .../api}/mutations.py | 0 .../api}/query.py | 0 .../api}/tests/__init__.py | 0 .../api}/tests/test_mutations.py | 6 +-- .../{api/voting => voting/api}/__init__.py | 0 .../{api/voting => voting/api}/mutations.py | 0 backend/{api/voting => voting/api}/types.py | 6 +-- backend/voting/tests/test_types.py | 2 +- 256 files changed, 293 insertions(+), 293 deletions(-) delete mode 100644 backend/api/cms/schema.py delete mode 100644 backend/api/users/mutations/__init__.py rename backend/{api/association_membership => association_membership/api}/__init__.py (100%) rename backend/{api/association_membership => association_membership/api}/mutation.py (69%) rename backend/{api/association_membership => association_membership/api}/mutations/__init__.py (100%) rename backend/{api/association_membership => association_membership/api}/mutations/manage_user_subscription.py (100%) rename backend/{api/association_membership => association_membership/api}/mutations/subscribe_user_to_association.py (100%) rename backend/{api/badge_scanner => badge_scanner/api}/__init__.py (100%) rename backend/{api/badge_scanner => badge_scanner/api}/mutation.py (100%) rename backend/{api/badge_scanner => badge_scanner/api}/query.py (100%) rename backend/{api/badge_scanner => badge_scanner/api}/schema.py (100%) rename backend/{api/badge_scanner => badge_scanner/api}/types.py (100%) rename backend/{api/billing => billing/api}/__init__.py (100%) rename backend/{api/billing => billing/api}/types.py (100%) rename backend/{api/checklist => checklist/api}/__init__.py (100%) rename backend/{api/checklist => checklist/api}/query.py (100%) rename backend/{api/checklist => checklist/api}/tests/test_query.py (100%) rename backend/{api/cms => cms/api}/__init__.py (100%) rename backend/{api/cms => cms/api}/base/__init__.py (100%) rename backend/{api/cms => cms/api}/base/blocks/__init__.py (100%) rename backend/{api/cms => cms/api}/base/blocks/accordion.py (100%) rename backend/{api/cms => cms/api}/base/blocks/cta.py (100%) rename backend/{api/cms => cms/api}/base/blocks/map.py (96%) rename backend/{api/cms => cms/api}/base/types.py (100%) rename backend/{api/cms => cms/api}/home/__init__.py (100%) rename backend/{api/cms => cms/api}/home/blocks/__init__.py (100%) rename backend/{api/cms => cms/api}/home/blocks/home_intro_section.py (86%) rename backend/{api/cms => cms/api}/news/__init__.py (100%) rename backend/{api/cms => cms/api}/news/blocks/__init__.py (100%) rename backend/{api/cms => cms/api}/news/blocks/news_grid_section.py (80%) rename backend/{api/cms => cms/api}/news/queries/__init__.py (100%) rename backend/{api/cms => cms/api}/news/queries/news_article.py (86%) rename backend/{api/cms => cms/api}/news/queries/news_articles.py (84%) rename backend/{api/cms => cms/api}/news/types.py (100%) rename backend/{api/cms => cms/api}/page/__init__.py (100%) rename backend/{api/cms => cms/api}/page/blocks/__init__.py (100%) rename backend/{api/cms => cms/api}/page/blocks/checkout_section.py (96%) rename backend/{api/cms => cms/api}/page/blocks/communities_section.py (97%) rename backend/{api/cms => cms/api}/page/blocks/dynamic_content_display_section.py (91%) rename backend/{api/cms => cms/api}/page/blocks/homepage_hero.py (90%) rename backend/{api/cms => cms/api}/page/blocks/information_section.py (90%) rename backend/{api/cms => cms/api}/page/blocks/keynoters_section.py (81%) rename backend/{api/cms => cms/api}/page/blocks/live_streaming_section.py (81%) rename backend/{api/cms => cms/api}/page/blocks/schedule_preview_section.py (87%) rename backend/{api/cms => cms/api}/page/blocks/slider_cards_section.py (92%) rename backend/{api/cms => cms/api}/page/blocks/socials_section.py (86%) rename backend/{api/cms => cms/api}/page/blocks/special_guest_section.py (90%) rename backend/{api/cms => cms/api}/page/blocks/sponsors_section.py (87%) rename backend/{api/cms => cms/api}/page/blocks/text_section.py (88%) rename backend/{api/cms => cms/api}/page/queries/__init__.py (100%) rename backend/{api/cms => cms/api}/page/queries/cms_page.py (93%) rename backend/{api/cms => cms/api}/page/queries/cms_pages.py (84%) rename backend/{api/cms => cms/api}/page/queries/page_preview.py (93%) rename backend/{api/cms => cms/api}/page/registry.py (100%) rename backend/{api/cms => cms/api}/page/types.py (95%) create mode 100644 backend/cms/api/schema.py rename backend/{api/cms => cms/api}/tests/__init__.py (100%) rename backend/{api/cms => cms/api}/tests/factories.py (100%) rename backend/{api/cms => cms/api}/tests/news/__init__.py (100%) rename backend/{api/cms => cms/api}/tests/news/test_frontend_queries.py (97%) rename backend/{api/cms => cms/api}/tests/news/test_queries.py (99%) rename backend/{api/cms => cms/api}/tests/page/__init__.py (100%) rename backend/{api/cms => cms/api}/tests/page/queries/__init__.py (100%) rename backend/{api/cms => cms/api}/tests/page/queries/test_cms_page.py (99%) rename backend/{api/cms => cms/api}/tests/page/queries/test_cms_pages.py (97%) rename backend/{api/cms => cms/api}/tests/page/queries/test_page_preview.py (98%) rename backend/{api/cms => cms/api}/tests/test_registry.py (83%) rename backend/{api/cms => cms/api}/tests/test_utils.py (95%) rename backend/{api/cms => cms/api}/types.py (90%) rename backend/{api/cms => cms/api}/utils.py (100%) rename backend/{api/conferences => conferences/api}/__init__.py (100%) rename backend/{api/conferences => conferences/api}/helpers/days.py (100%) rename backend/{api/conferences => conferences/api}/helpers/maps.py (100%) rename backend/{api/conferences => conferences/api}/schema.py (85%) rename backend/{api/conferences => conferences/api}/tests/test_frontend_queries.py (100%) rename backend/{api/conferences => conferences/api}/tests/test_query_conference.py (100%) rename backend/{api/conferences => conferences/api}/tests/test_query_talk.py (100%) rename backend/{api/conferences => conferences/api}/types.py (93%) rename backend/{api/countries => countries/api}/__init__.py (100%) rename backend/{api/countries => countries/api}/schema.py (93%) rename backend/{api/countries => countries/api}/tests/__init__.py (100%) rename backend/{api/countries => countries/api}/tests/test_schema.py (100%) rename backend/{api/countries => countries/api}/types.py (100%) rename backend/{api/events => events/api}/__init__.py (100%) rename backend/{api/events => events/api}/tests/test_event_queries.py (100%) rename backend/{api/events => events/api}/types.py (89%) rename backend/{api/files_upload => files_upload/api}/__init__.py (100%) rename backend/{api/files_upload => files_upload/api}/mutations/__init__.py (100%) rename backend/{api/files_upload => files_upload/api}/mutations/finalize_upload.py (88%) rename backend/{api/files_upload => files_upload/api}/mutations/upload_file.py (96%) rename backend/{api/files_upload => files_upload/api}/permissions.py (94%) rename backend/{api/files_upload => files_upload/api}/schema.py (52%) rename backend/{api/files_upload => files_upload/api}/tests/__init__.py (100%) rename backend/{api/files_upload => files_upload/api}/tests/mutations/__init__.py (100%) rename backend/{api/files_upload => files_upload/api}/tests/mutations/test_finalize_upload.py (89%) rename backend/{api/files_upload => files_upload/api}/tests/mutations/test_upload_file.py (100%) rename backend/{api/files_upload => files_upload/api}/types.py (100%) rename backend/{api/generic_forms => generic_forms/api}/__init__.py (100%) rename backend/{api/generic_forms => generic_forms/api}/tests/__init__.py (100%) rename backend/{api/generic_forms => generic_forms/api}/tests/test_form_query.py (100%) rename backend/{api/generic_forms => generic_forms/api}/types.py (100%) rename backend/{api/grants => grants/api}/__init__.py (100%) rename backend/{api/grants => grants/api}/mutations.py (99%) rename backend/{api/grants => grants/api}/tests/__init__.py (100%) rename backend/{api/grants => grants/api}/tests/test_frontend_queries.py (100%) rename backend/{api/grants => grants/api}/tests/test_grant_type.py (100%) rename backend/{api/grants => grants/api}/tests/test_send_grant.py (100%) rename backend/{api/grants => grants/api}/tests/test_send_grant_reply.py (95%) rename backend/{api/grants => grants/api}/tests/test_update_grant.py (100%) rename backend/{api/grants => grants/api}/types.py (100%) rename backend/{api/job_board => job_board/api}/__init__.py (100%) rename backend/{api/job_board => job_board/api}/schema.py (100%) rename backend/{api/job_board => job_board/api}/types.py (100%) rename backend/{api/languages => languages/api}/__init__.py (100%) rename backend/{api/languages => languages/api}/types.py (100%) rename backend/{api/newsletters => newsletters/api}/__init__.py (100%) rename backend/{api/newsletters => newsletters/api}/mutations/__init__.py (100%) rename backend/{api/newsletters => newsletters/api}/mutations/subscribe_to_newsletter.py (100%) rename backend/{api/newsletters => newsletters/api}/schema.py (100%) rename backend/{api/pages => pages/api}/__init__.py (100%) rename backend/{api/pages => pages/api}/schema.py (100%) rename backend/{api/pages => pages/api}/types.py (88%) rename backend/{api/participants => participants/api}/__init__.py (100%) rename backend/{api/participants => participants/api}/mutations.py (100%) rename backend/{api/participants => participants/api}/queries.py (98%) rename backend/{api/participants => participants/api}/tests/__init__.py (100%) rename backend/{api/participants => participants/api}/tests/test_frontend_queries.py (100%) rename backend/{api/participants => participants/api}/tests/test_queries.py (100%) rename backend/{api/participants => participants/api}/types.py (92%) rename backend/{api/pretix => pretix/api}/__init__.py (100%) rename backend/{api/pretix => pretix/api}/constants.py (100%) rename backend/{api/pretix => pretix/api}/mutations.py (95%) rename backend/{api/pretix => pretix/api}/permissions.py (100%) rename backend/{api/pretix => pretix/api}/query.py (97%) rename backend/{api/pretix => pretix/api}/tests/__init__.py (100%) rename backend/{api/pretix => pretix/api}/tests/test_get_conference_tickets.py (98%) rename backend/{api/pretix => pretix/api}/tests/test_types.py (96%) rename backend/{api/pretix => pretix/api}/tests/test_update_attendee_ticket.py (100%) rename backend/{api/pretix => pretix/api}/types.py (99%) rename backend/{api/schedule => schedule/api}/__init__.py (100%) rename backend/{api/schedule => schedule/api}/mutations/__init__.py (100%) rename backend/{api/schedule => schedule/api}/mutations/book_schedule_item.py (98%) rename backend/{api/schedule => schedule/api}/mutations/cancel_booking_schedule_item.py (92%) rename backend/{api/schedule => schedule/api}/mutations/change_schedule_item_slot.py (98%) rename backend/{api/schedule => schedule/api}/mutations/create_schedule_item.py (97%) rename backend/{api/schedule => schedule/api}/mutations/create_schedule_slot.py (97%) rename backend/{api/schedule => schedule/api}/mutations/star_schedule_item.py (91%) rename backend/{api/schedule => schedule/api}/mutations/unstar_schedule_item.py (91%) rename backend/{api/schedule => schedule/api}/mutations/update_schedule_invitation.py (95%) rename backend/{api/schedule => schedule/api}/queries/__init__.py (100%) rename backend/{api/schedule => schedule/api}/queries/schedule_invitation.py (87%) rename backend/{api/schedule => schedule/api}/queries/search_events_for_schedule.py (95%) rename backend/{api/schedule => schedule/api}/queries/unassigned_schedule_items.py (87%) rename backend/{api/schedule => schedule/api}/schema.py (51%) rename backend/{api/schedule => schedule/api}/tests/test_book_spot_schedule_item.py (93%) rename backend/{api/schedule => schedule/api}/tests/test_cancel_booking_schedule_item.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_change_schedule_item_slot.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_create_schedule_item.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_create_schedule_slot.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_schedule_invitation.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_schedule_invitation_frontend_query.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_search_events_for_schedule.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_star_schedule_item.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_unassigned_schedule_items.py (100%) rename backend/{api/schedule => schedule/api}/tests/test_update_schedule_invitation.py (92%) rename backend/{api/schedule => schedule/api}/types/__init__.py (100%) rename backend/{api/schedule => schedule/api}/types/day.py (94%) rename backend/{api/schedule => schedule/api}/types/day_room.py (100%) rename backend/{api/schedule => schedule/api}/types/room.py (100%) rename backend/{api/schedule => schedule/api}/types/schedule_invitation.py (97%) rename backend/{api/schedule => schedule/api}/types/schedule_item.py (93%) rename backend/{api/schedule => schedule/api}/types/schedule_item_user.py (92%) rename backend/{api/schedule => schedule/api}/types/slot.py (94%) rename backend/{api/sponsors => sponsors/api}/__init__.py (100%) rename backend/{api/sponsors => sponsors/api}/schema.py (100%) rename backend/{api/sponsors => sponsors/api}/tests/__init__.py (100%) rename backend/{api/sponsors => sponsors/api}/tests/test_brochure_frontend_query.py (100%) rename backend/{api/sponsors => sponsors/api}/tests/test_send_sponsor_lead.py (95%) rename backend/{api/sponsors => sponsors/api}/tests/test_sponsors_by_level.py (100%) rename backend/{api/sponsors => sponsors/api}/types.py (100%) rename backend/{api/submissions => submissions/api}/__init__.py (100%) rename backend/{api/submissions => submissions/api}/mutations.py (100%) rename backend/{api/submissions => submissions/api}/permissions.py (100%) rename backend/{api/submissions => submissions/api}/schema.py (98%) rename backend/{api/submissions => submissions/api}/tests/__init__.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_edit_submission.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_frontend_queries.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_permissions.py (67%) rename backend/{api/submissions => submissions/api}/tests/test_send_submission.py (99%) rename backend/{api/submissions => submissions/api}/tests/test_submission.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_submission_frontend_query.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_submission_permissions.py (98%) rename backend/{api/submissions => submissions/api}/tests/test_submission_voting_tags.py (100%) rename backend/{api/submissions => submissions/api}/tests/test_submissions.py (100%) rename backend/{api/submissions => submissions/api}/types.py (90%) rename backend/{api/users => users/api}/__init__.py (100%) create mode 100644 backend/users/api/mutations/__init__.py rename backend/{api/users => users/api}/mutations/login.py (98%) rename backend/{api/users => users/api}/mutations/logout.py (84%) rename backend/{api/users => users/api}/mutations/register.py (98%) rename backend/{api/users => users/api}/mutations/request_reset_password.py (97%) rename backend/{api/users => users/api}/mutations/reset_password.py (96%) rename backend/{api/users => users/api}/mutations/update_profile.py (98%) rename backend/{api/users => users/api}/queries.py (91%) rename backend/{api/users => users/api}/tests/__init__.py (100%) rename backend/{api/users => users/api}/tests/test_billing_addresses.py (100%) rename backend/{api/users => users/api}/tests/test_booked_schedule_items.py (100%) rename backend/{api/users => users/api}/tests/test_frontend_queries.py (100%) rename backend/{api/users => users/api}/tests/test_invitation_letter_request.py (99%) rename backend/{api/users => users/api}/tests/test_login.py (100%) rename backend/{api/users => users/api}/tests/test_logout.py (100%) rename backend/{api/users => users/api}/tests/test_me.py (100%) rename backend/{api/users => users/api}/tests/test_participant.py (100%) rename backend/{api/users => users/api}/tests/test_register.py (100%) rename backend/{api/users => users/api}/tests/test_request_reset_password.py (97%) rename backend/{api/users => users/api}/tests/test_reset_password.py (99%) rename backend/{api/users => users/api}/tests/test_stars.py (100%) rename backend/{api/users => users/api}/tests/test_user_grants.py (100%) rename backend/{api/users => users/api}/tests/test_user_orders.py (97%) rename backend/{api/users => users/api}/tests/test_user_tickets.py (100%) rename backend/{api/users => users/api}/types.py (94%) rename backend/{api/visa => visa/api}/mutation.py (65%) rename backend/{api/visa => visa/api}/mutations/__init__.py (100%) rename backend/{api/visa => visa/api}/mutations/request_invitation_letter.py (98%) rename backend/{api/visa => visa/api}/mutations/update_invitation_letter_document.py (95%) rename backend/{api/visa => visa/api}/permissions.py (100%) rename backend/{api/visa => visa/api}/queries/__init__.py (100%) rename backend/{api/visa => visa/api}/queries/invitation_letter_document.py (80%) rename backend/{api/visa => visa/api}/query.py (68%) rename backend/{api/visa => visa/api}/tests/__init__.py (100%) rename backend/{api/visa => visa/api}/tests/mutations/__init__.py (100%) rename backend/{api/visa => visa/api}/tests/mutations/test_request_invitation_letter.py (98%) rename backend/{api/visa => visa/api}/tests/mutations/test_update_invitation_letter_document.py (100%) rename backend/{api/visa => visa/api}/tests/queries/__init__.py (100%) rename backend/{api/visa => visa/api}/tests/queries/test_invitation_letter_document.py (100%) rename backend/{api/visa => visa/api}/types.py (100%) rename backend/{api/volunteers_notifications => volunteers_notifications/api}/__init__.py (100%) rename backend/{api/volunteers_notifications => volunteers_notifications/api}/mutations.py (100%) rename backend/{api/volunteers_notifications => volunteers_notifications/api}/query.py (100%) rename backend/{api/volunteers_notifications => volunteers_notifications/api}/tests/__init__.py (100%) rename backend/{api/volunteers_notifications => volunteers_notifications/api}/tests/test_mutations.py (94%) rename backend/{api/voting => voting/api}/__init__.py (100%) rename backend/{api/voting => voting/api}/mutations.py (100%) rename backend/{api/voting => voting/api}/types.py (79%) diff --git a/backend/api/cms/schema.py b/backend/api/cms/schema.py deleted file mode 100644 index 702f40bc7d..0000000000 --- a/backend/api/cms/schema.py +++ /dev/null @@ -1,11 +0,0 @@ -from api.cms.page.queries.page_preview import page_preview -from strawberry.tools import create_type - -from api.cms.page.queries.cms_page import cms_page -from api.cms.page.queries.cms_pages import cms_pages -from api.cms.news.queries.news_articles import news_articles -from api.cms.news.queries.news_article import news_article - -CMSQuery = create_type( - "CMSQuery", fields=[cms_page, cms_pages, news_articles, news_article, page_preview] -) diff --git a/backend/api/orders/query.py b/backend/api/orders/query.py index 5aab8742e7..37827fa2e1 100644 --- a/backend/api/orders/query.py +++ b/backend/api/orders/query.py @@ -3,8 +3,8 @@ from api.context import Info import strawberry from api.permissions import IsAuthenticated -from api.pretix.query import get_order -from api.pretix.types import PretixOrder +from pretix.api.query import get_order +from pretix.api.types import PretixOrder from conferences.models import Conference diff --git a/backend/api/schema.py b/backend/api/schema.py index bd396cc711..76ce059e5a 100644 --- a/backend/api/schema.py +++ b/backend/api/schema.py @@ -1,33 +1,33 @@ import strawberry from strawberry_django.optimizer import DjangoOptimizerExtension -from api.participants.mutations import ParticipantMutations -from .users.mutations import UsersMutations -from .files_upload.schema import FilesUploadMutation -from .checklist.query import ChecklistQuery -from .conferences.schema import ConferenceQuery -from .countries.schema import CountryQuery -from .grants.mutations import GrantMutation -from .job_board.schema import JobBoardQuery -from .newsletters.schema import NewsletterMutations +from participants.api.mutations import ParticipantMutations +from users.api.mutations import UsersMutations +from files_upload.api.schema import FilesUploadMutation +from checklist.api.query import ChecklistQuery +from conferences.api.schema import ConferenceQuery +from countries.api.schema import CountryQuery +from grants.api.mutations import GrantMutation +from job_board.api.schema import JobBoardQuery +from newsletters.api.schema import NewsletterMutations from .orders.mutations import OrdersMutations from .orders.query import OrdersQuery -from .pages.schema import PagesQuery -from .pretix.mutations import AttendeeTicketMutation -from .schedule.schema import ScheduleQuery, ScheduleMutations -from .submissions.mutations import SubmissionsMutations -from .submissions.schema import SubmissionsQuery -from .volunteers_notifications.mutations import VolunteersNotificationsMutation -from .volunteers_notifications.query import VolunteersNotificationsQuery -from .voting.mutations import VotesMutations -from .badge_scanner.schema import BadgeScannerQuery, BadgeScannerMutation -from .participants.queries import ParticipantQueries -from .users.queries import UserQuery -from .association_membership.mutation import AssociationMembershipMutation -from .cms.schema import CMSQuery -from .sponsors.schema import SponsorsMutation -from .visa.query import VisaQuery -from .visa.mutation import VisaMutation +from pages.api.schema import PagesQuery +from pretix.api.mutations import AttendeeTicketMutation +from schedule.api.schema import ScheduleQuery, ScheduleMutations +from submissions.api.mutations import SubmissionsMutations +from submissions.api.schema import SubmissionsQuery +from volunteers_notifications.api.mutations import VolunteersNotificationsMutation +from volunteers_notifications.api.query import VolunteersNotificationsQuery +from voting.api.mutations import VotesMutations +from badge_scanner.api.schema import BadgeScannerQuery, BadgeScannerMutation +from participants.api.queries import ParticipantQueries +from users.api.queries import UserQuery +from association_membership.api.mutation import AssociationMembershipMutation +from cms.api.schema import CMSQuery +from sponsors.api.schema import SponsorsMutation +from visa.api.query import VisaQuery +from visa.api.mutation import VisaMutation @strawberry.type diff --git a/backend/api/tests/association_membership/mutations/test_manage_user_association_subscription.py b/backend/api/tests/association_membership/mutations/test_manage_user_association_subscription.py index 5763bec26f..af81d18b02 100644 --- a/backend/api/tests/association_membership/mutations/test_manage_user_association_subscription.py +++ b/backend/api/tests/association_membership/mutations/test_manage_user_association_subscription.py @@ -28,7 +28,7 @@ def test_manage_user_subscription(graphql_client): }""" with patch( - "api.association_membership.mutations.manage_user_subscription.stripe.billing_portal.Session.create", + "association_membership.api.mutations.manage_user_subscription.stripe.billing_portal.Session.create", ) as mock_create: mock_create.return_value.url = ( "https://stripe.com/stripe_test_customer_portal/cus_test_12345" diff --git a/backend/api/tests/association_membership/mutations/test_subscribe_user_to_association.py b/backend/api/tests/association_membership/mutations/test_subscribe_user_to_association.py index cdda940c2e..37a0618802 100644 --- a/backend/api/tests/association_membership/mutations/test_subscribe_user_to_association.py +++ b/backend/api/tests/association_membership/mutations/test_subscribe_user_to_association.py @@ -26,9 +26,9 @@ def test_subscribe_user_to_association( }""" with patch( - "api.association_membership.mutations.subscribe_user_to_association.stripe.checkout.Session.create", + "association_membership.api.mutations.subscribe_user_to_association.stripe.checkout.Session.create", ) as mock_create_session, patch( - "api.association_membership.mutations.subscribe_user_to_association.stripe.Customer.create" + "association_membership.api.mutations.subscribe_user_to_association.stripe.Customer.create" ) as mock_customers_create: mock_customers_create.return_value.id = "cus_created" mock_create_session.return_value.id = "cs_xxx" @@ -59,7 +59,7 @@ def test_subscribe_user_to_association_with_existing_canceled_subscription( }""" with patch( - "api.association_membership.mutations.subscribe_user_to_association.stripe.checkout.Session.create", + "association_membership.api.mutations.subscribe_user_to_association.stripe.checkout.Session.create", ) as mock_create: mock_create.return_value.id = "cs_xxx" response = graphql_client.query(query, variables={}) diff --git a/backend/api/tests/schema/badge_scanner/test_scan_badge.py b/backend/api/tests/schema/badge_scanner/test_scan_badge.py index a07ef7a60c..eaa2d67694 100644 --- a/backend/api/tests/schema/badge_scanner/test_scan_badge.py +++ b/backend/api/tests/schema/badge_scanner/test_scan_badge.py @@ -56,7 +56,7 @@ def test_works_when_user_is_logged_in(user, graphql_client, mocker): graphql_client.force_login(user) get_order_position_mock = mocker.patch( - "api.badge_scanner.mutation.pretix.get_order_position", + "badge_scanner.api.mutation.pretix.get_order_position", return_value={ "attendee_name": "Test User", "attendee_email": "barko@marco.pizza", @@ -100,7 +100,7 @@ def test_works_when_user_is_logged_in_but_no_user_on_service( graphql_client.force_login(user) get_order_position_mock = mocker.patch( - "api.badge_scanner.mutation.pretix.get_order_position", + "badge_scanner.api.mutation.pretix.get_order_position", return_value={ "attendee_name": "Test User", "attendee_email": "barko@marco.pizza", diff --git a/backend/api/tests/schema/conference/test_conference.py b/backend/api/tests/schema/conference/test_conference.py index b4db1fa746..1521a3769a 100644 --- a/backend/api/tests/schema/conference/test_conference.py +++ b/backend/api/tests/schema/conference/test_conference.py @@ -17,7 +17,7 @@ from pytest import mark import zoneinfo -from api.conferences.types import DeadlineStatus +from conferences.api.types import DeadlineStatus pytestmark = mark.django_db diff --git a/backend/api/tests/schema/conference/test_tickets.py b/backend/api/tests/schema/conference/test_tickets.py index 2d89e9d7dd..546fbf4545 100644 --- a/backend/api/tests/schema/conference/test_tickets.py +++ b/backend/api/tests/schema/conference/test_tickets.py @@ -1,12 +1,12 @@ from conferences.tests.factories import ConferenceFactory from pytest import mark -from api.pretix.types import TicketItem +from pretix.api.types import TicketItem @mark.django_db def test_returns_tickets(graphql_client, mocker): - get_tickets_mock = mocker.patch("api.conferences.types.get_conference_tickets") + get_tickets_mock = mocker.patch("conferences.api.types.get_conference_tickets") get_tickets_mock.return_value = [ TicketItem( name="Example Ticket", @@ -47,7 +47,7 @@ def test_returns_tickets(graphql_client, mocker): @mark.django_db def test_is_business(graphql_client, mocker): - get_tickets_mock = mocker.patch("api.conferences.types.get_conference_tickets") + get_tickets_mock = mocker.patch("conferences.api.types.get_conference_tickets") get_tickets_mock.return_value = [ TicketItem( name="Business Ticket", diff --git a/backend/api/tests/schema/test_get_order.py b/backend/api/tests/schema/test_get_order.py index c678ca6f7e..3ef07274c0 100644 --- a/backend/api/tests/schema/test_get_order.py +++ b/backend/api/tests/schema/test_get_order.py @@ -6,7 +6,7 @@ def test_calls_get_order(graphql_client, user, mocker): graphql_client.force_login(user) - get_order_mock = mocker.patch("api.pretix.query.pretix.get_order") + get_order_mock = mocker.patch("pretix.api.query.pretix.get_order") get_order_mock.return_value = { "code": "abc", "status": "p", @@ -35,7 +35,7 @@ def test_calls_returns_none(graphql_client, user, mocker): graphql_client.force_login(user) - get_order_mock = mocker.patch("api.pretix.query.pretix.get_order") + get_order_mock = mocker.patch("pretix.api.query.pretix.get_order") get_order_mock.return_value = None response = graphql_client.query( @@ -58,7 +58,7 @@ def test_calls_returns_none_when_email_is_different(graphql_client, user, mocker graphql_client.force_login(user) - get_order_mock = mocker.patch("api.pretix.query.pretix.get_order") + get_order_mock = mocker.patch("pretix.api.query.pretix.get_order") get_order_mock.return_value = { "code": "abc", "status": "p", diff --git a/backend/api/tests/schema/test_newsletter.py b/backend/api/tests/schema/test_newsletter.py index 856a2fe705..3bcde092b7 100644 --- a/backend/api/tests/schema/test_newsletter.py +++ b/backend/api/tests/schema/test_newsletter.py @@ -29,7 +29,7 @@ def test_subscribe_to_newsletter(graphql_client): """ with patch( - "api.newsletters.mutations.subscribe_to_newsletter.subscribe" + "newsletters.api.mutations.subscribe_to_newsletter.subscribe" ) as mock_subscription: mock_subscription.return_value = SubscriptionResult.SUBSCRIBED @@ -71,7 +71,7 @@ def test_subscribe_to_newsletter_fails_on_api_side(graphql_client, exception): """ with patch( - "api.newsletters.mutations.subscribe_to_newsletter.subscribe" + "newsletters.api.mutations.subscribe_to_newsletter.subscribe" ) as mock_subscription: mock_subscription.side_effect = exception @@ -104,7 +104,7 @@ def test_subscribe_to_newsletter_with_invalid_email_fails(graphql_client, email) """ with patch( - "api.newsletters.mutations.subscribe_to_newsletter.subscribe" + "newsletters.api.mutations.subscribe_to_newsletter.subscribe" ) as mock_subscription: mock_subscription.return_value = SubscriptionResult.SUBSCRIBED @@ -142,7 +142,7 @@ def test_subscribe_to_newsletter_with_invalid_conference_code( """ with patch( - "api.newsletters.mutations.subscribe_to_newsletter.subscribe" + "newsletters.api.mutations.subscribe_to_newsletter.subscribe" ) as mock_subscription: mock_subscription.return_value = SubscriptionResult.SUBSCRIBED resp = graphql_client.query(query, variables={"input": variables}) diff --git a/backend/api/users/mutations/__init__.py b/backend/api/users/mutations/__init__.py deleted file mode 100644 index 1a7ee4e6d1..0000000000 --- a/backend/api/users/mutations/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from strawberry.tools import create_type - -from api.users.mutations.login import login -from api.users.mutations.register import register -from api.users.mutations.update_profile import update_profile -from api.users.mutations.request_reset_password import request_reset_password -from api.users.mutations.logout import logout -from api.users.mutations.reset_password import reset_password - -UsersMutations = create_type( - "UsersMutations", - [login, register, update_profile, reset_password, request_reset_password, logout], -) diff --git a/backend/api/association_membership/__init__.py b/backend/association_membership/api/__init__.py similarity index 100% rename from backend/api/association_membership/__init__.py rename to backend/association_membership/api/__init__.py diff --git a/backend/api/association_membership/mutation.py b/backend/association_membership/api/mutation.py similarity index 69% rename from backend/api/association_membership/mutation.py rename to backend/association_membership/api/mutation.py index 94f560e429..4222197c51 100644 --- a/backend/api/association_membership/mutation.py +++ b/backend/association_membership/api/mutation.py @@ -1,9 +1,9 @@ from strawberry.tools import create_type -from api.association_membership.mutations.manage_user_subscription import ( +from association_membership.api.mutations.manage_user_subscription import ( manage_user_subscription, ) -from api.association_membership.mutations.subscribe_user_to_association import ( +from association_membership.api.mutations.subscribe_user_to_association import ( subscribe_user_to_association, ) diff --git a/backend/api/association_membership/mutations/__init__.py b/backend/association_membership/api/mutations/__init__.py similarity index 100% rename from backend/api/association_membership/mutations/__init__.py rename to backend/association_membership/api/mutations/__init__.py diff --git a/backend/api/association_membership/mutations/manage_user_subscription.py b/backend/association_membership/api/mutations/manage_user_subscription.py similarity index 100% rename from backend/api/association_membership/mutations/manage_user_subscription.py rename to backend/association_membership/api/mutations/manage_user_subscription.py diff --git a/backend/api/association_membership/mutations/subscribe_user_to_association.py b/backend/association_membership/api/mutations/subscribe_user_to_association.py similarity index 100% rename from backend/api/association_membership/mutations/subscribe_user_to_association.py rename to backend/association_membership/api/mutations/subscribe_user_to_association.py diff --git a/backend/api/badge_scanner/__init__.py b/backend/badge_scanner/api/__init__.py similarity index 100% rename from backend/api/badge_scanner/__init__.py rename to backend/badge_scanner/api/__init__.py diff --git a/backend/api/badge_scanner/mutation.py b/backend/badge_scanner/api/mutation.py similarity index 100% rename from backend/api/badge_scanner/mutation.py rename to backend/badge_scanner/api/mutation.py diff --git a/backend/api/badge_scanner/query.py b/backend/badge_scanner/api/query.py similarity index 100% rename from backend/api/badge_scanner/query.py rename to backend/badge_scanner/api/query.py diff --git a/backend/api/badge_scanner/schema.py b/backend/badge_scanner/api/schema.py similarity index 100% rename from backend/api/badge_scanner/schema.py rename to backend/badge_scanner/api/schema.py diff --git a/backend/api/badge_scanner/types.py b/backend/badge_scanner/api/types.py similarity index 100% rename from backend/api/badge_scanner/types.py rename to backend/badge_scanner/api/types.py diff --git a/backend/api/billing/__init__.py b/backend/billing/api/__init__.py similarity index 100% rename from backend/api/billing/__init__.py rename to backend/billing/api/__init__.py diff --git a/backend/api/billing/types.py b/backend/billing/api/types.py similarity index 100% rename from backend/api/billing/types.py rename to backend/billing/api/types.py diff --git a/backend/api/checklist/__init__.py b/backend/checklist/api/__init__.py similarity index 100% rename from backend/api/checklist/__init__.py rename to backend/checklist/api/__init__.py diff --git a/backend/api/checklist/query.py b/backend/checklist/api/query.py similarity index 100% rename from backend/api/checklist/query.py rename to backend/checklist/api/query.py diff --git a/backend/api/checklist/tests/test_query.py b/backend/checklist/api/tests/test_query.py similarity index 100% rename from backend/api/checklist/tests/test_query.py rename to backend/checklist/api/tests/test_query.py diff --git a/backend/api/cms/__init__.py b/backend/cms/api/__init__.py similarity index 100% rename from backend/api/cms/__init__.py rename to backend/cms/api/__init__.py diff --git a/backend/api/cms/base/__init__.py b/backend/cms/api/base/__init__.py similarity index 100% rename from backend/api/cms/base/__init__.py rename to backend/cms/api/base/__init__.py diff --git a/backend/api/cms/base/blocks/__init__.py b/backend/cms/api/base/blocks/__init__.py similarity index 100% rename from backend/api/cms/base/blocks/__init__.py rename to backend/cms/api/base/blocks/__init__.py diff --git a/backend/api/cms/base/blocks/accordion.py b/backend/cms/api/base/blocks/accordion.py similarity index 100% rename from backend/api/cms/base/blocks/accordion.py rename to backend/cms/api/base/blocks/accordion.py diff --git a/backend/api/cms/base/blocks/cta.py b/backend/cms/api/base/blocks/cta.py similarity index 100% rename from backend/api/cms/base/blocks/cta.py rename to backend/cms/api/base/blocks/cta.py diff --git a/backend/api/cms/base/blocks/map.py b/backend/cms/api/base/blocks/map.py similarity index 96% rename from backend/api/cms/base/blocks/map.py rename to backend/cms/api/base/blocks/map.py index a020a8b256..6d65f1a351 100644 --- a/backend/api/cms/base/blocks/map.py +++ b/backend/cms/api/base/blocks/map.py @@ -1,6 +1,6 @@ from decimal import Decimal from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block from api.context import Info from django.conf import settings import strawberry diff --git a/backend/api/cms/base/types.py b/backend/cms/api/base/types.py similarity index 100% rename from backend/api/cms/base/types.py rename to backend/cms/api/base/types.py diff --git a/backend/api/cms/home/__init__.py b/backend/cms/api/home/__init__.py similarity index 100% rename from backend/api/cms/home/__init__.py rename to backend/cms/api/home/__init__.py diff --git a/backend/api/cms/home/blocks/__init__.py b/backend/cms/api/home/blocks/__init__.py similarity index 100% rename from backend/api/cms/home/blocks/__init__.py rename to backend/cms/api/home/blocks/__init__.py diff --git a/backend/api/cms/home/blocks/home_intro_section.py b/backend/cms/api/home/blocks/home_intro_section.py similarity index 86% rename from backend/api/cms/home/blocks/home_intro_section.py rename to backend/cms/api/home/blocks/home_intro_section.py index da44a60731..b7e4cbfd03 100644 --- a/backend/api/cms/home/blocks/home_intro_section.py +++ b/backend/cms/api/home/blocks/home_intro_section.py @@ -1,5 +1,5 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/news/__init__.py b/backend/cms/api/news/__init__.py similarity index 100% rename from backend/api/cms/news/__init__.py rename to backend/cms/api/news/__init__.py diff --git a/backend/api/cms/news/blocks/__init__.py b/backend/cms/api/news/blocks/__init__.py similarity index 100% rename from backend/api/cms/news/blocks/__init__.py rename to backend/cms/api/news/blocks/__init__.py diff --git a/backend/api/cms/news/blocks/news_grid_section.py b/backend/cms/api/news/blocks/news_grid_section.py similarity index 80% rename from backend/api/cms/news/blocks/news_grid_section.py rename to backend/cms/api/news/blocks/news_grid_section.py index 471762041a..e3e10749d6 100644 --- a/backend/api/cms/news/blocks/news_grid_section.py +++ b/backend/cms/api/news/blocks/news_grid_section.py @@ -1,5 +1,5 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/news/queries/__init__.py b/backend/cms/api/news/queries/__init__.py similarity index 100% rename from backend/api/cms/news/queries/__init__.py rename to backend/cms/api/news/queries/__init__.py diff --git a/backend/api/cms/news/queries/news_article.py b/backend/cms/api/news/queries/news_article.py similarity index 86% rename from backend/api/cms/news/queries/news_article.py rename to backend/cms/api/news/queries/news_article.py index 48a1fcd376..111a262bc0 100644 --- a/backend/api/cms/news/queries/news_article.py +++ b/backend/cms/api/news/queries/news_article.py @@ -1,7 +1,7 @@ import strawberry_django -from api.cms.news.types import NewsArticle -from api.cms.utils import get_site_by_host +from cms.api.news.types import NewsArticle +from cms.api.utils import get_site_by_host from cms.components.news import models diff --git a/backend/api/cms/news/queries/news_articles.py b/backend/cms/api/news/queries/news_articles.py similarity index 84% rename from backend/api/cms/news/queries/news_articles.py rename to backend/cms/api/news/queries/news_articles.py index 961a3cf2d3..c0c5028d1e 100644 --- a/backend/api/cms/news/queries/news_articles.py +++ b/backend/cms/api/news/queries/news_articles.py @@ -1,7 +1,7 @@ import strawberry_django -from api.cms.news.types import NewsArticle -from api.cms.utils import get_site_by_host +from cms.api.news.types import NewsArticle +from cms.api.utils import get_site_by_host from cms.components.news import models diff --git a/backend/api/cms/news/types.py b/backend/cms/api/news/types.py similarity index 100% rename from backend/api/cms/news/types.py rename to backend/cms/api/news/types.py diff --git a/backend/api/cms/page/__init__.py b/backend/cms/api/page/__init__.py similarity index 100% rename from backend/api/cms/page/__init__.py rename to backend/cms/api/page/__init__.py diff --git a/backend/api/cms/page/blocks/__init__.py b/backend/cms/api/page/blocks/__init__.py similarity index 100% rename from backend/api/cms/page/blocks/__init__.py rename to backend/cms/api/page/blocks/__init__.py diff --git a/backend/api/cms/page/blocks/checkout_section.py b/backend/cms/api/page/blocks/checkout_section.py similarity index 96% rename from backend/api/cms/page/blocks/checkout_section.py rename to backend/cms/api/page/blocks/checkout_section.py index db89d5ee6c..b6a88d84d4 100644 --- a/backend/api/cms/page/blocks/checkout_section.py +++ b/backend/cms/api/page/blocks/checkout_section.py @@ -1,6 +1,6 @@ from enum import Enum from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/page/blocks/communities_section.py b/backend/cms/api/page/blocks/communities_section.py similarity index 97% rename from backend/api/cms/page/blocks/communities_section.py rename to backend/cms/api/page/blocks/communities_section.py index 0ed5791e15..b2535b8c65 100644 --- a/backend/api/cms/page/blocks/communities_section.py +++ b/backend/cms/api/page/blocks/communities_section.py @@ -1,6 +1,6 @@ from typing import Self import strawberry -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block @strawberry.type diff --git a/backend/api/cms/page/blocks/dynamic_content_display_section.py b/backend/cms/api/page/blocks/dynamic_content_display_section.py similarity index 91% rename from backend/api/cms/page/blocks/dynamic_content_display_section.py rename to backend/cms/api/page/blocks/dynamic_content_display_section.py index 072803a2a9..4ec6948969 100644 --- a/backend/api/cms/page/blocks/dynamic_content_display_section.py +++ b/backend/cms/api/page/blocks/dynamic_content_display_section.py @@ -1,6 +1,6 @@ from typing import Self import strawberry -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import enum diff --git a/backend/api/cms/page/blocks/homepage_hero.py b/backend/cms/api/page/blocks/homepage_hero.py similarity index 90% rename from backend/api/cms/page/blocks/homepage_hero.py rename to backend/cms/api/page/blocks/homepage_hero.py index 037136475a..f98c7b59bc 100644 --- a/backend/api/cms/page/blocks/homepage_hero.py +++ b/backend/cms/api/page/blocks/homepage_hero.py @@ -1,6 +1,6 @@ from enum import Enum from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/page/blocks/information_section.py b/backend/cms/api/page/blocks/information_section.py similarity index 90% rename from backend/api/cms/page/blocks/information_section.py rename to backend/cms/api/page/blocks/information_section.py index 959f9642f9..0e26871ec5 100644 --- a/backend/api/cms/page/blocks/information_section.py +++ b/backend/cms/api/page/blocks/information_section.py @@ -1,9 +1,9 @@ import datetime from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.cta import CTA @register_page_block() diff --git a/backend/api/cms/page/blocks/keynoters_section.py b/backend/cms/api/page/blocks/keynoters_section.py similarity index 81% rename from backend/api/cms/page/blocks/keynoters_section.py rename to backend/cms/api/page/blocks/keynoters_section.py index 88c85f8e13..a62ecd45d9 100644 --- a/backend/api/cms/page/blocks/keynoters_section.py +++ b/backend/cms/api/page/blocks/keynoters_section.py @@ -1,8 +1,8 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.cta import CTA @register_page_block diff --git a/backend/api/cms/page/blocks/live_streaming_section.py b/backend/cms/api/page/blocks/live_streaming_section.py similarity index 81% rename from backend/api/cms/page/blocks/live_streaming_section.py rename to backend/cms/api/page/blocks/live_streaming_section.py index d6a6f01854..d76ff83e52 100644 --- a/backend/api/cms/page/blocks/live_streaming_section.py +++ b/backend/cms/api/page/blocks/live_streaming_section.py @@ -1,5 +1,5 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/page/blocks/schedule_preview_section.py b/backend/cms/api/page/blocks/schedule_preview_section.py similarity index 87% rename from backend/api/cms/page/blocks/schedule_preview_section.py rename to backend/cms/api/page/blocks/schedule_preview_section.py index 6fa89b6e77..a2494d2544 100644 --- a/backend/api/cms/page/blocks/schedule_preview_section.py +++ b/backend/cms/api/page/blocks/schedule_preview_section.py @@ -1,8 +1,8 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.cta import CTA @register_page_block diff --git a/backend/api/cms/page/blocks/slider_cards_section.py b/backend/cms/api/page/blocks/slider_cards_section.py similarity index 92% rename from backend/api/cms/page/blocks/slider_cards_section.py rename to backend/cms/api/page/blocks/slider_cards_section.py index 2291b71371..7f499ce187 100644 --- a/backend/api/cms/page/blocks/slider_cards_section.py +++ b/backend/cms/api/page/blocks/slider_cards_section.py @@ -1,9 +1,9 @@ from typing import Annotated, Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.cta import CTA -from api.cms.base.types import Spacing +from cms.api.base.blocks.cta import CTA +from cms.api.base.types import Spacing @strawberry.type diff --git a/backend/api/cms/page/blocks/socials_section.py b/backend/cms/api/page/blocks/socials_section.py similarity index 86% rename from backend/api/cms/page/blocks/socials_section.py rename to backend/cms/api/page/blocks/socials_section.py index b7f0d93692..ce22e1c12e 100644 --- a/backend/api/cms/page/blocks/socials_section.py +++ b/backend/cms/api/page/blocks/socials_section.py @@ -1,5 +1,5 @@ from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry diff --git a/backend/api/cms/page/blocks/special_guest_section.py b/backend/cms/api/page/blocks/special_guest_section.py similarity index 90% rename from backend/api/cms/page/blocks/special_guest_section.py rename to backend/cms/api/page/blocks/special_guest_section.py index 44e9cf7189..9f2d797e3c 100644 --- a/backend/api/cms/page/blocks/special_guest_section.py +++ b/backend/cms/api/page/blocks/special_guest_section.py @@ -1,9 +1,9 @@ import datetime from typing import Any -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.cta import CTA @register_page_block diff --git a/backend/api/cms/page/blocks/sponsors_section.py b/backend/cms/api/page/blocks/sponsors_section.py similarity index 87% rename from backend/api/cms/page/blocks/sponsors_section.py rename to backend/cms/api/page/blocks/sponsors_section.py index d9831b040c..b5c362ee9a 100644 --- a/backend/api/cms/page/blocks/sponsors_section.py +++ b/backend/cms/api/page/blocks/sponsors_section.py @@ -1,9 +1,9 @@ import enum from typing import Self import strawberry -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.cta import CTA @strawberry.enum diff --git a/backend/api/cms/page/blocks/text_section.py b/backend/cms/api/page/blocks/text_section.py similarity index 88% rename from backend/api/cms/page/blocks/text_section.py rename to backend/cms/api/page/blocks/text_section.py index ba92d82438..451692cc14 100644 --- a/backend/api/cms/page/blocks/text_section.py +++ b/backend/cms/api/page/blocks/text_section.py @@ -1,10 +1,10 @@ from enum import Enum from typing import Self -from api.cms.page.registry import register_page_block +from cms.api.page.registry import register_page_block import strawberry -from api.cms.base.blocks.accordion import Accordion -from api.cms.base.blocks.cta import CTA +from cms.api.base.blocks.accordion import Accordion +from cms.api.base.blocks.cta import CTA @strawberry.enum diff --git a/backend/api/cms/page/queries/__init__.py b/backend/cms/api/page/queries/__init__.py similarity index 100% rename from backend/api/cms/page/queries/__init__.py rename to backend/cms/api/page/queries/__init__.py diff --git a/backend/api/cms/page/queries/cms_page.py b/backend/cms/api/page/queries/cms_page.py similarity index 93% rename from backend/api/cms/page/queries/cms_page.py rename to backend/cms/api/page/queries/cms_page.py index 373faf8b04..8941386223 100644 --- a/backend/api/cms/page/queries/cms_page.py +++ b/backend/cms/api/page/queries/cms_page.py @@ -1,11 +1,11 @@ from pretix import user_has_admission_ticket -from api.cms.utils import get_site_by_host +from cms.api.utils import get_site_by_host from api.context import Context from cms.components.page.models import GenericPage as GenericPageModel import strawberry -from api.cms.page.types import GenericPage, SiteNotFoundError +from cms.api.page.types import GenericPage, SiteNotFoundError @strawberry.field diff --git a/backend/api/cms/page/queries/cms_pages.py b/backend/cms/api/page/queries/cms_pages.py similarity index 84% rename from backend/api/cms/page/queries/cms_pages.py rename to backend/cms/api/page/queries/cms_pages.py index 1aed1f84a2..7e8dab38a7 100644 --- a/backend/api/cms/page/queries/cms_pages.py +++ b/backend/cms/api/page/queries/cms_pages.py @@ -1,8 +1,8 @@ -from api.cms.utils import get_site_by_host +from cms.api.utils import get_site_by_host import strawberry from cms.components.page.models import GenericPage as GenericPageModel -from api.cms.page.types import GenericPage +from cms.api.page.types import GenericPage @strawberry.field diff --git a/backend/api/cms/page/queries/page_preview.py b/backend/cms/api/page/queries/page_preview.py similarity index 93% rename from backend/api/cms/page/queries/page_preview.py rename to backend/cms/api/page/queries/page_preview.py index accc21d387..e251399196 100644 --- a/backend/api/cms/page/queries/page_preview.py +++ b/backend/cms/api/page/queries/page_preview.py @@ -2,8 +2,8 @@ from django.contrib.contenttypes.models import ContentType from wagtail_headless_preview.models import PagePreview -from api.cms.news.types import NewsArticle -from api.cms.page.types import GenericPage +from cms.api.news.types import NewsArticle +from cms.api.page.types import GenericPage from cms.components.news import models as news_models from cms.components.page import models as page_models diff --git a/backend/api/cms/page/registry.py b/backend/cms/api/page/registry.py similarity index 100% rename from backend/api/cms/page/registry.py rename to backend/cms/api/page/registry.py diff --git a/backend/api/cms/page/types.py b/backend/cms/api/page/types.py similarity index 95% rename from backend/api/cms/page/types.py rename to backend/cms/api/page/types.py index ffa591f1db..79b1477d58 100644 --- a/backend/api/cms/page/types.py +++ b/backend/cms/api/page/types.py @@ -1,5 +1,5 @@ from typing import Self -from api.cms.page.registry import get_block, get_block_union +from cms.api.page.registry import get_block, get_block_union from cms.components.page.models import GenericPage as GenericPageModel import strawberry diff --git a/backend/cms/api/schema.py b/backend/cms/api/schema.py new file mode 100644 index 0000000000..0839b98158 --- /dev/null +++ b/backend/cms/api/schema.py @@ -0,0 +1,11 @@ +from cms.api.page.queries.page_preview import page_preview +from strawberry.tools import create_type + +from cms.api.page.queries.cms_page import cms_page +from cms.api.page.queries.cms_pages import cms_pages +from cms.api.news.queries.news_articles import news_articles +from cms.api.news.queries.news_article import news_article + +CMSQuery = create_type( + "CMSQuery", fields=[cms_page, cms_pages, news_articles, news_article, page_preview] +) diff --git a/backend/api/cms/tests/__init__.py b/backend/cms/api/tests/__init__.py similarity index 100% rename from backend/api/cms/tests/__init__.py rename to backend/cms/api/tests/__init__.py diff --git a/backend/api/cms/tests/factories.py b/backend/cms/api/tests/factories.py similarity index 100% rename from backend/api/cms/tests/factories.py rename to backend/cms/api/tests/factories.py diff --git a/backend/api/cms/tests/news/__init__.py b/backend/cms/api/tests/news/__init__.py similarity index 100% rename from backend/api/cms/tests/news/__init__.py rename to backend/cms/api/tests/news/__init__.py diff --git a/backend/api/cms/tests/news/test_frontend_queries.py b/backend/cms/api/tests/news/test_frontend_queries.py similarity index 97% rename from backend/api/cms/tests/news/test_frontend_queries.py rename to backend/cms/api/tests/news/test_frontend_queries.py index cb90c6285f..e9fd9f785a 100644 --- a/backend/api/cms/tests/news/test_frontend_queries.py +++ b/backend/cms/api/tests/news/test_frontend_queries.py @@ -3,7 +3,7 @@ import pytest from wagtail.rich_text import RichText -from api.cms.tests.factories import GenericPageFactory, SiteFactory +from cms.api.tests.factories import GenericPageFactory, SiteFactory from cms.components.news.tests.factories import NewsArticleFactory from users.tests.factories import UserFactory diff --git a/backend/api/cms/tests/news/test_queries.py b/backend/cms/api/tests/news/test_queries.py similarity index 99% rename from backend/api/cms/tests/news/test_queries.py rename to backend/cms/api/tests/news/test_queries.py index 120b743cbe..85a088250d 100644 --- a/backend/api/cms/tests/news/test_queries.py +++ b/backend/cms/api/tests/news/test_queries.py @@ -1,6 +1,6 @@ import datetime import pytest -from api.cms.tests.factories import GenericPageFactory, SiteFactory +from cms.api.tests.factories import GenericPageFactory, SiteFactory from cms.components.news.tests.factories import NewsArticleFactory from users.tests.factories import UserFactory diff --git a/backend/api/cms/tests/page/__init__.py b/backend/cms/api/tests/page/__init__.py similarity index 100% rename from backend/api/cms/tests/page/__init__.py rename to backend/cms/api/tests/page/__init__.py diff --git a/backend/api/cms/tests/page/queries/__init__.py b/backend/cms/api/tests/page/queries/__init__.py similarity index 100% rename from backend/api/cms/tests/page/queries/__init__.py rename to backend/cms/api/tests/page/queries/__init__.py diff --git a/backend/api/cms/tests/page/queries/test_cms_page.py b/backend/cms/api/tests/page/queries/test_cms_page.py similarity index 99% rename from backend/api/cms/tests/page/queries/test_cms_page.py rename to backend/cms/api/tests/page/queries/test_cms_page.py index 437e9db83e..1db1d20a70 100644 --- a/backend/api/cms/tests/page/queries/test_cms_page.py +++ b/backend/cms/api/tests/page/queries/test_cms_page.py @@ -1,7 +1,7 @@ from decimal import Decimal from conferences.tests.factories import ConferenceFactory import pytest -from api.cms.tests.factories import GenericPageFactory, SiteFactory +from cms.api.tests.factories import GenericPageFactory, SiteFactory from wagtail.models import PageViewRestriction pytestmark = pytest.mark.django_db diff --git a/backend/api/cms/tests/page/queries/test_cms_pages.py b/backend/cms/api/tests/page/queries/test_cms_pages.py similarity index 97% rename from backend/api/cms/tests/page/queries/test_cms_pages.py rename to backend/cms/api/tests/page/queries/test_cms_pages.py index d7c3d5076b..a488dc2cbe 100644 --- a/backend/api/cms/tests/page/queries/test_cms_pages.py +++ b/backend/cms/api/tests/page/queries/test_cms_pages.py @@ -1,6 +1,6 @@ from wagtail.models import PageViewRestriction import pytest -from api.cms.tests.factories import GenericPageFactory, SiteFactory +from cms.api.tests.factories import GenericPageFactory, SiteFactory pytestmark = pytest.mark.django_db diff --git a/backend/api/cms/tests/page/queries/test_page_preview.py b/backend/cms/api/tests/page/queries/test_page_preview.py similarity index 98% rename from backend/api/cms/tests/page/queries/test_page_preview.py rename to backend/cms/api/tests/page/queries/test_page_preview.py index 89121f2dbc..ea10cc1703 100644 --- a/backend/api/cms/tests/page/queries/test_page_preview.py +++ b/backend/cms/api/tests/page/queries/test_page_preview.py @@ -4,7 +4,7 @@ from django.contrib.contenttypes.models import ContentType import pytest -from api.cms.tests.factories import GenericPageFactory, SiteFactory +from cms.api.tests.factories import GenericPageFactory, SiteFactory pytestmark = pytest.mark.django_db diff --git a/backend/api/cms/tests/test_registry.py b/backend/cms/api/tests/test_registry.py similarity index 83% rename from backend/api/cms/tests/test_registry.py rename to backend/cms/api/tests/test_registry.py index b21d5104e5..ccb0889a58 100644 --- a/backend/api/cms/tests/test_registry.py +++ b/backend/cms/api/tests/test_registry.py @@ -2,7 +2,7 @@ import strawberry -from api.cms.page.registry import REGISTRY, get_block_union +from cms.api.page.registry import REGISTRY, get_block_union def test_get_block_union_imports_blocks_in_sorted_order(): @@ -32,6 +32,6 @@ class SecondBlock: get_block_union() assert import_module.call_args_list == [ - call("api.cms.page.blocks.first"), - call("api.cms.page.blocks.second"), + call("cms.api.page.blocks.first"), + call("cms.api.page.blocks.second"), ] diff --git a/backend/api/cms/tests/test_utils.py b/backend/cms/api/tests/test_utils.py similarity index 95% rename from backend/api/cms/tests/test_utils.py rename to backend/cms/api/tests/test_utils.py index e183118dc2..a4682c16c7 100644 --- a/backend/api/cms/tests/test_utils.py +++ b/backend/cms/api/tests/test_utils.py @@ -1,5 +1,5 @@ import pytest -from api.cms.utils import get_site_by_host +from cms.api.utils import get_site_by_host from wagtail_factories import SiteFactory diff --git a/backend/api/cms/types.py b/backend/cms/api/types.py similarity index 90% rename from backend/api/cms/types.py rename to backend/cms/api/types.py index aa3cd18d6d..2afa45e75d 100644 --- a/backend/api/cms/types.py +++ b/backend/cms/api/types.py @@ -1,10 +1,10 @@ import strawberry import strawberry_django -from api.pages.types import Page +from pages.api.types import Page from cms import models -from ..helpers.i18n import make_localized_resolver +from api.helpers.i18n import make_localized_resolver @strawberry.type diff --git a/backend/api/cms/utils.py b/backend/cms/api/utils.py similarity index 100% rename from backend/api/cms/utils.py rename to backend/cms/api/utils.py diff --git a/backend/api/conferences/__init__.py b/backend/conferences/api/__init__.py similarity index 100% rename from backend/api/conferences/__init__.py rename to backend/conferences/api/__init__.py diff --git a/backend/api/conferences/helpers/days.py b/backend/conferences/api/helpers/days.py similarity index 100% rename from backend/api/conferences/helpers/days.py rename to backend/conferences/api/helpers/days.py diff --git a/backend/api/conferences/helpers/maps.py b/backend/conferences/api/helpers/maps.py similarity index 100% rename from backend/api/conferences/helpers/maps.py rename to backend/conferences/api/helpers/maps.py diff --git a/backend/api/conferences/schema.py b/backend/conferences/api/schema.py similarity index 85% rename from backend/api/conferences/schema.py rename to backend/conferences/api/schema.py index 5be3d825b4..736793f535 100644 --- a/backend/api/conferences/schema.py +++ b/backend/conferences/api/schema.py @@ -1,4 +1,4 @@ -from api.conferences.types import Conference +from conferences.api.types import Conference import strawberry import strawberry_django diff --git a/backend/api/conferences/tests/test_frontend_queries.py b/backend/conferences/api/tests/test_frontend_queries.py similarity index 100% rename from backend/api/conferences/tests/test_frontend_queries.py rename to backend/conferences/api/tests/test_frontend_queries.py diff --git a/backend/api/conferences/tests/test_query_conference.py b/backend/conferences/api/tests/test_query_conference.py similarity index 100% rename from backend/api/conferences/tests/test_query_conference.py rename to backend/conferences/api/tests/test_query_conference.py diff --git a/backend/api/conferences/tests/test_query_talk.py b/backend/conferences/api/tests/test_query_talk.py similarity index 100% rename from backend/api/conferences/tests/test_query_talk.py rename to backend/conferences/api/tests/test_query_talk.py diff --git a/backend/api/conferences/types.py b/backend/conferences/api/types.py similarity index 93% rename from backend/api/conferences/types.py rename to backend/conferences/api/types.py index 8acd4f69d7..209585fb34 100644 --- a/backend/api/conferences/types.py +++ b/backend/conferences/api/types.py @@ -6,24 +6,24 @@ from django.db.models import prefetch_related_objects from django.utils import timezone, translation -from api.cms.types import FAQ, Menu +from cms.api.types import FAQ, Menu from api.context import Info -from api.events.types import Event -from api.generic_forms.types import Form as GenericForm -from api.generic_forms.types import FormPurpose -from api.languages.types import Language -from api.pretix.query import get_conference_tickets, get_voucher -from api.pretix.types import TicketItem, Voucher -from api.schedule.types import Room, ScheduleItem, ScheduleItemUser -from api.schedule.types.day import Day -from api.sponsors.types import ( +from events.api.types import Event +from generic_forms.api.types import Form as GenericForm +from generic_forms.api.types import FormPurpose +from languages.api.types import Language +from pretix.api.query import get_conference_tickets, get_voucher +from pretix.api.types import TicketItem, Voucher +from schedule.api.types import Room, ScheduleItem, ScheduleItemUser +from schedule.api.types.day import Day +from sponsors.api.types import ( SponsorBenefit, SponsorLevel, SponsorsByLevel, SponsorSpecialOption, ) -from api.submissions.types import Submission, SubmissionTag, SubmissionType -from api.voting.types import RankRequest +from submissions.api.types import Submission, SubmissionTag, SubmissionType +from voting.api.types import RankRequest from cms import models as cms_models from conferences import models as conference_models from conferences.models import deadline as deadline_models @@ -31,9 +31,9 @@ from submissions import models as submission_models from voting import models as voting_models -from ..helpers.i18n import make_localized_resolver -from ..helpers.maps import Map, resolve_map -from ..permissions import CanSeeSubmissions, IsStaffPermission +from api.helpers.i18n import make_localized_resolver +from api.helpers.maps import Map, resolve_map +from api.permissions import CanSeeSubmissions, IsStaffPermission @strawberry_django.type(conference_models.AudienceLevel) diff --git a/backend/api/countries/__init__.py b/backend/countries/api/__init__.py similarity index 100% rename from backend/api/countries/__init__.py rename to backend/countries/api/__init__.py diff --git a/backend/api/countries/schema.py b/backend/countries/api/schema.py similarity index 93% rename from backend/api/countries/schema.py rename to backend/countries/api/schema.py index 6c70d220bd..ed4b3e3f86 100644 --- a/backend/api/countries/schema.py +++ b/backend/countries/api/schema.py @@ -1,7 +1,7 @@ from api.context import Info import strawberry -from api.countries.types import Country +from countries.api.types import Country from countries import countries diff --git a/backend/api/countries/tests/__init__.py b/backend/countries/api/tests/__init__.py similarity index 100% rename from backend/api/countries/tests/__init__.py rename to backend/countries/api/tests/__init__.py diff --git a/backend/api/countries/tests/test_schema.py b/backend/countries/api/tests/test_schema.py similarity index 100% rename from backend/api/countries/tests/test_schema.py rename to backend/countries/api/tests/test_schema.py diff --git a/backend/api/countries/types.py b/backend/countries/api/types.py similarity index 100% rename from backend/api/countries/types.py rename to backend/countries/api/types.py diff --git a/backend/api/events/__init__.py b/backend/events/api/__init__.py similarity index 100% rename from backend/api/events/__init__.py rename to backend/events/api/__init__.py diff --git a/backend/api/events/tests/test_event_queries.py b/backend/events/api/tests/test_event_queries.py similarity index 100% rename from backend/api/events/tests/test_event_queries.py rename to backend/events/api/tests/test_event_queries.py diff --git a/backend/api/events/types.py b/backend/events/api/types.py similarity index 89% rename from backend/api/events/types.py rename to backend/events/api/types.py index 760296bd3c..eb7be7869e 100644 --- a/backend/api/events/types.py +++ b/backend/events/api/types.py @@ -10,13 +10,13 @@ from events import models if TYPE_CHECKING: - from api.conferences.types import Conference + from conferences.api.types import Conference @strawberry_django.type(models.Event) class Event: id: strawberry.auto - conference: Annotated["Conference", strawberry.lazy("api.conferences.types")] + conference: Annotated["Conference", strawberry.lazy("conferences.api.types")] title: str = strawberry_django.field( resolver=make_localized_resolver("title"), only=["title"] ) diff --git a/backend/api/files_upload/__init__.py b/backend/files_upload/api/__init__.py similarity index 100% rename from backend/api/files_upload/__init__.py rename to backend/files_upload/api/__init__.py diff --git a/backend/api/files_upload/mutations/__init__.py b/backend/files_upload/api/mutations/__init__.py similarity index 100% rename from backend/api/files_upload/mutations/__init__.py rename to backend/files_upload/api/mutations/__init__.py diff --git a/backend/api/files_upload/mutations/finalize_upload.py b/backend/files_upload/api/mutations/finalize_upload.py similarity index 88% rename from backend/api/files_upload/mutations/finalize_upload.py rename to backend/files_upload/api/mutations/finalize_upload.py index 3a2ec094cb..f07502579f 100644 --- a/backend/api/files_upload/mutations/finalize_upload.py +++ b/backend/files_upload/api/mutations/finalize_upload.py @@ -1,7 +1,7 @@ from api.permissions import IsAuthenticated -from api.files_upload.types import File +from files_upload.api.types import File from files_upload.models import File as FileModel -from api.files_upload.permissions import IsFileOwner +from files_upload.api.permissions import IsFileOwner from files_upload.tasks import post_process_file_upload import strawberry from celery.exceptions import TimeoutError diff --git a/backend/api/files_upload/mutations/upload_file.py b/backend/files_upload/api/mutations/upload_file.py similarity index 96% rename from backend/api/files_upload/mutations/upload_file.py rename to backend/files_upload/api/mutations/upload_file.py index 5ce12fe1c3..2964fefd27 100644 --- a/backend/api/files_upload/mutations/upload_file.py +++ b/backend/files_upload/api/mutations/upload_file.py @@ -1,6 +1,6 @@ from typing import Annotated from uuid import uuid4 -from api.files_upload.permissions import IsFileTypeUploadAllowed +from files_upload.api.permissions import IsFileTypeUploadAllowed from api.extensions import RateLimit from files_upload.models import File, get_upload_to from api.context import Info diff --git a/backend/api/files_upload/permissions.py b/backend/files_upload/api/permissions.py similarity index 94% rename from backend/api/files_upload/permissions.py rename to backend/files_upload/api/permissions.py index c595124dca..8380aa45e5 100644 --- a/backend/api/files_upload/permissions.py +++ b/backend/files_upload/api/permissions.py @@ -6,8 +6,8 @@ from strawberry.permission import BasePermission if TYPE_CHECKING: - from api.files_upload.mutations.upload_file import UploadFileInput - from api.files_upload.mutations.finalize_upload import FinalizeUploadInput + from files_upload.api.mutations.upload_file import UploadFileInput + from files_upload.api.mutations.finalize_upload import FinalizeUploadInput class IsFileTypeUploadAllowed(BasePermission): diff --git a/backend/api/files_upload/schema.py b/backend/files_upload/api/schema.py similarity index 52% rename from backend/api/files_upload/schema.py rename to backend/files_upload/api/schema.py index 87cea821ba..976ffe5b73 100644 --- a/backend/api/files_upload/schema.py +++ b/backend/files_upload/api/schema.py @@ -1,5 +1,5 @@ -from api.files_upload.mutations.upload_file import upload_file -from api.files_upload.mutations.finalize_upload import finalize_upload +from files_upload.api.mutations.upload_file import upload_file +from files_upload.api.mutations.finalize_upload import finalize_upload from strawberry.tools import create_type diff --git a/backend/api/files_upload/tests/__init__.py b/backend/files_upload/api/tests/__init__.py similarity index 100% rename from backend/api/files_upload/tests/__init__.py rename to backend/files_upload/api/tests/__init__.py diff --git a/backend/api/files_upload/tests/mutations/__init__.py b/backend/files_upload/api/tests/mutations/__init__.py similarity index 100% rename from backend/api/files_upload/tests/mutations/__init__.py rename to backend/files_upload/api/tests/mutations/__init__.py diff --git a/backend/api/files_upload/tests/mutations/test_finalize_upload.py b/backend/files_upload/api/tests/mutations/test_finalize_upload.py similarity index 89% rename from backend/api/files_upload/tests/mutations/test_finalize_upload.py rename to backend/files_upload/api/tests/mutations/test_finalize_upload.py index 35b198977f..839e6e8fbe 100644 --- a/backend/api/files_upload/tests/mutations/test_finalize_upload.py +++ b/backend/files_upload/api/tests/mutations/test_finalize_upload.py @@ -21,7 +21,7 @@ def _finalize_upload(client, input): def test_finalize_upload(graphql_client, user, mocker): mock_task = mocker.patch( - "api.files_upload.mutations.finalize_upload.post_process_file_upload" + "files_upload.api.mutations.finalize_upload.post_process_file_upload" ) graphql_client.force_login(user) @@ -36,7 +36,7 @@ def test_finalize_upload(graphql_client, user, mocker): def test_finalize_upload_when_the_task_takes_too_long(graphql_client, user, mocker): mock_task = mocker.patch( - "api.files_upload.mutations.finalize_upload.post_process_file_upload" + "files_upload.api.mutations.finalize_upload.post_process_file_upload" ) mock_task.delay.return_value.get.side_effect = TimeoutError @@ -52,7 +52,7 @@ def test_finalize_upload_when_the_task_takes_too_long(graphql_client, user, mock def test_cannot_finalize_other_user_file(graphql_client, user, mocker): mock_task = mocker.patch( - "api.files_upload.mutations.finalize_upload.post_process_file_upload" + "files_upload.api.mutations.finalize_upload.post_process_file_upload" ) graphql_client.force_login(user) @@ -67,7 +67,7 @@ def test_cannot_finalize_other_user_file(graphql_client, user, mocker): def test_finalize_with_invalid_id(graphql_client, user, mocker): mock_task = mocker.patch( - "api.files_upload.mutations.finalize_upload.post_process_file_upload" + "files_upload.api.mutations.finalize_upload.post_process_file_upload" ) graphql_client.force_login(user) @@ -84,7 +84,7 @@ def test_finalize_upload_of_already_processed_file_is_ignored( graphql_client, user, mocker ): mock_task = mocker.patch( - "api.files_upload.mutations.finalize_upload.post_process_file_upload" + "files_upload.api.mutations.finalize_upload.post_process_file_upload" ) graphql_client.force_login(user) diff --git a/backend/api/files_upload/tests/mutations/test_upload_file.py b/backend/files_upload/api/tests/mutations/test_upload_file.py similarity index 100% rename from backend/api/files_upload/tests/mutations/test_upload_file.py rename to backend/files_upload/api/tests/mutations/test_upload_file.py diff --git a/backend/api/files_upload/types.py b/backend/files_upload/api/types.py similarity index 100% rename from backend/api/files_upload/types.py rename to backend/files_upload/api/types.py diff --git a/backend/api/generic_forms/__init__.py b/backend/generic_forms/api/__init__.py similarity index 100% rename from backend/api/generic_forms/__init__.py rename to backend/generic_forms/api/__init__.py diff --git a/backend/api/generic_forms/tests/__init__.py b/backend/generic_forms/api/tests/__init__.py similarity index 100% rename from backend/api/generic_forms/tests/__init__.py rename to backend/generic_forms/api/tests/__init__.py diff --git a/backend/api/generic_forms/tests/test_form_query.py b/backend/generic_forms/api/tests/test_form_query.py similarity index 100% rename from backend/api/generic_forms/tests/test_form_query.py rename to backend/generic_forms/api/tests/test_form_query.py diff --git a/backend/api/generic_forms/types.py b/backend/generic_forms/api/types.py similarity index 100% rename from backend/api/generic_forms/types.py rename to backend/generic_forms/api/types.py diff --git a/backend/api/grants/__init__.py b/backend/grants/api/__init__.py similarity index 100% rename from backend/api/grants/__init__.py rename to backend/grants/api/__init__.py diff --git a/backend/api/grants/mutations.py b/backend/grants/api/mutations.py similarity index 99% rename from backend/api/grants/mutations.py rename to backend/grants/api/mutations.py index d067e49e40..2eacbf0374 100644 --- a/backend/api/grants/mutations.py +++ b/backend/grants/api/mutations.py @@ -7,7 +7,7 @@ from strawberry.scalars import JSON from strawberry.types import Info -from api.grants.types import AgeGroup, Grant, GrantType, Occupation +from grants.api.types import AgeGroup, Grant, GrantType, Occupation from api.permissions import IsAuthenticated from api.types import BaseErrorType from conferences.models.conference import Conference diff --git a/backend/api/grants/tests/__init__.py b/backend/grants/api/tests/__init__.py similarity index 100% rename from backend/api/grants/tests/__init__.py rename to backend/grants/api/tests/__init__.py diff --git a/backend/api/grants/tests/test_frontend_queries.py b/backend/grants/api/tests/test_frontend_queries.py similarity index 100% rename from backend/api/grants/tests/test_frontend_queries.py rename to backend/grants/api/tests/test_frontend_queries.py diff --git a/backend/api/grants/tests/test_grant_type.py b/backend/grants/api/tests/test_grant_type.py similarity index 100% rename from backend/api/grants/tests/test_grant_type.py rename to backend/grants/api/tests/test_grant_type.py diff --git a/backend/api/grants/tests/test_send_grant.py b/backend/grants/api/tests/test_send_grant.py similarity index 100% rename from backend/api/grants/tests/test_send_grant.py rename to backend/grants/api/tests/test_send_grant.py diff --git a/backend/api/grants/tests/test_send_grant_reply.py b/backend/grants/api/tests/test_send_grant_reply.py similarity index 95% rename from backend/api/grants/tests/test_send_grant_reply.py rename to backend/grants/api/tests/test_send_grant_reply.py index e2dab34779..d40ef0cacd 100644 --- a/backend/api/grants/tests/test_send_grant_reply.py +++ b/backend/grants/api/tests/test_send_grant_reply.py @@ -81,7 +81,7 @@ def test_status_is_updated_when_reply_is_confirmed( graphql_client.force_login(user) grant = GrantFactory(user_id=user.id, status=Grant.Status.waiting_for_confirmation) mock_voucher = mocker.patch( - "api.grants.mutations.create_and_send_voucher_to_grantee" + "grants.api.mutations.create_and_send_voucher_to_grantee" ) with django_capture_on_commit_callbacks(execute=True): @@ -106,7 +106,7 @@ def test_status_is_updated_when_reply_is_refused(graphql_client, user, mocker): graphql_client.force_login(user) grant = GrantFactory(user_id=user.id, status=Grant.Status.waiting_for_confirmation) mock_voucher = mocker.patch( - "api.grants.mutations.create_and_send_voucher_to_grantee" + "grants.api.mutations.create_and_send_voucher_to_grantee" ) response = _send_grant_reply(graphql_client, grant, status="refused") @@ -130,7 +130,7 @@ def test_status_is_updated_when_reply_is_refused(graphql_client, user, mocker): def test_call_notify_new_grant_reply(graphql_client, user, mocker): graphql_client.force_login(user) grant = GrantFactory(user_id=user.id, status=Grant.Status.waiting_for_confirmation) - mock_publisher = mocker.patch("api.grants.mutations.notify_new_grant_reply_slack") + mock_publisher = mocker.patch("grants.api.mutations.notify_new_grant_reply_slack") response = _send_grant_reply(graphql_client, grant, status="refused", message="wtf") diff --git a/backend/api/grants/tests/test_update_grant.py b/backend/grants/api/tests/test_update_grant.py similarity index 100% rename from backend/api/grants/tests/test_update_grant.py rename to backend/grants/api/tests/test_update_grant.py diff --git a/backend/api/grants/types.py b/backend/grants/api/types.py similarity index 100% rename from backend/api/grants/types.py rename to backend/grants/api/types.py diff --git a/backend/api/job_board/__init__.py b/backend/job_board/api/__init__.py similarity index 100% rename from backend/api/job_board/__init__.py rename to backend/job_board/api/__init__.py diff --git a/backend/api/job_board/schema.py b/backend/job_board/api/schema.py similarity index 100% rename from backend/api/job_board/schema.py rename to backend/job_board/api/schema.py diff --git a/backend/api/job_board/types.py b/backend/job_board/api/types.py similarity index 100% rename from backend/api/job_board/types.py rename to backend/job_board/api/types.py diff --git a/backend/api/languages/__init__.py b/backend/languages/api/__init__.py similarity index 100% rename from backend/api/languages/__init__.py rename to backend/languages/api/__init__.py diff --git a/backend/api/languages/types.py b/backend/languages/api/types.py similarity index 100% rename from backend/api/languages/types.py rename to backend/languages/api/types.py diff --git a/backend/api/newsletters/__init__.py b/backend/newsletters/api/__init__.py similarity index 100% rename from backend/api/newsletters/__init__.py rename to backend/newsletters/api/__init__.py diff --git a/backend/api/newsletters/mutations/__init__.py b/backend/newsletters/api/mutations/__init__.py similarity index 100% rename from backend/api/newsletters/mutations/__init__.py rename to backend/newsletters/api/mutations/__init__.py diff --git a/backend/api/newsletters/mutations/subscribe_to_newsletter.py b/backend/newsletters/api/mutations/subscribe_to_newsletter.py similarity index 100% rename from backend/api/newsletters/mutations/subscribe_to_newsletter.py rename to backend/newsletters/api/mutations/subscribe_to_newsletter.py diff --git a/backend/api/newsletters/schema.py b/backend/newsletters/api/schema.py similarity index 100% rename from backend/api/newsletters/schema.py rename to backend/newsletters/api/schema.py diff --git a/backend/api/pages/__init__.py b/backend/pages/api/__init__.py similarity index 100% rename from backend/api/pages/__init__.py rename to backend/pages/api/__init__.py diff --git a/backend/api/pages/schema.py b/backend/pages/api/schema.py similarity index 100% rename from backend/api/pages/schema.py rename to backend/pages/api/schema.py diff --git a/backend/api/pages/types.py b/backend/pages/api/types.py similarity index 88% rename from backend/api/pages/types.py rename to backend/pages/api/types.py index f062869998..4516873fa6 100644 --- a/backend/api/pages/types.py +++ b/backend/pages/api/types.py @@ -2,8 +2,8 @@ import strawberry_django from pages import models -from ..helpers.i18n import make_localized_resolver -from ..helpers.images import resolve_image +from api.helpers.i18n import make_localized_resolver +from api.helpers.images import resolve_image @strawberry_django.type(models.Page) diff --git a/backend/api/participants/__init__.py b/backend/participants/api/__init__.py similarity index 100% rename from backend/api/participants/__init__.py rename to backend/participants/api/__init__.py diff --git a/backend/api/participants/mutations.py b/backend/participants/api/mutations.py similarity index 100% rename from backend/api/participants/mutations.py rename to backend/participants/api/mutations.py diff --git a/backend/api/participants/queries.py b/backend/participants/api/queries.py similarity index 98% rename from backend/api/participants/queries.py rename to backend/participants/api/queries.py index aeff885d55..67a864ca22 100644 --- a/backend/api/participants/queries.py +++ b/backend/participants/api/queries.py @@ -8,7 +8,7 @@ import pretix from api.context import Info from api.helpers.ids import decode_hashid, encode_hashid -from api.participants.types import Participant +from participants.api.types import Participant from api.permissions import HasTokenPermission from badges.roles import ConferenceRole, get_conference_roles_for_ticket_data from conferences.models import Conference diff --git a/backend/api/participants/tests/__init__.py b/backend/participants/api/tests/__init__.py similarity index 100% rename from backend/api/participants/tests/__init__.py rename to backend/participants/api/tests/__init__.py diff --git a/backend/api/participants/tests/test_frontend_queries.py b/backend/participants/api/tests/test_frontend_queries.py similarity index 100% rename from backend/api/participants/tests/test_frontend_queries.py rename to backend/participants/api/tests/test_frontend_queries.py diff --git a/backend/api/participants/tests/test_queries.py b/backend/participants/api/tests/test_queries.py similarity index 100% rename from backend/api/participants/tests/test_queries.py rename to backend/participants/api/tests/test_queries.py diff --git a/backend/api/participants/types.py b/backend/participants/api/types.py similarity index 92% rename from backend/api/participants/types.py rename to backend/participants/api/types.py index 00ac9d2e3b..d3bce6e965 100644 --- a/backend/api/participants/types.py +++ b/backend/participants/api/types.py @@ -5,12 +5,12 @@ from strawberry.scalars import JSON from api.context import Info -from api.submissions.permissions import CanSeeSubmissionPrivateFields +from submissions.api.permissions import CanSeeSubmissionPrivateFields from participants import models from submissions import models as submission_models if TYPE_CHECKING: - from api.submissions.types import Submission + from submissions.api.types import Submission @strawberry_django.type(models.Participant) @@ -47,7 +47,7 @@ def fullname(self) -> str: @strawberry_django.field(only=["conference_id", "user_id"]) def proposals( self, - ) -> list[Annotated["Submission", strawberry.lazy("api.submissions.types")]]: + ) -> list[Annotated["Submission", strawberry.lazy("submissions.api.types")]]: return submission_models.Submission.objects.for_conference( self.conference_id ).filter( diff --git a/backend/pretix/__init__.py b/backend/pretix/__init__.py index 49395208c2..780a4c23aa 100644 --- a/backend/pretix/__init__.py +++ b/backend/pretix/__init__.py @@ -9,7 +9,7 @@ import strawberry from django.conf import settings from django.core.cache import cache -from api.pretix.types import ( +from pretix.api.types import ( AttendeeNameInput, AttendeeNameInputError, UpdateAttendeeTicketInput, diff --git a/backend/api/pretix/__init__.py b/backend/pretix/api/__init__.py similarity index 100% rename from backend/api/pretix/__init__.py rename to backend/pretix/api/__init__.py diff --git a/backend/api/pretix/constants.py b/backend/pretix/api/constants.py similarity index 100% rename from backend/api/pretix/constants.py rename to backend/pretix/api/constants.py diff --git a/backend/api/pretix/mutations.py b/backend/pretix/api/mutations.py similarity index 95% rename from backend/api/pretix/mutations.py rename to backend/pretix/api/mutations.py index 2cfd151997..83e8f9cd3e 100644 --- a/backend/api/pretix/mutations.py +++ b/backend/pretix/api/mutations.py @@ -6,9 +6,9 @@ from strawberry.types import Info import pretix -from api.pretix.permissions import IsTicketOwner -from api.pretix.query import get_user_tickets -from api.pretix.types import ( +from pretix.api.permissions import IsTicketOwner +from pretix.api.query import get_user_tickets +from pretix.api.types import ( AttendeeTicket, UpdateAttendeeTicketErrors, UpdateAttendeeTicketInput, diff --git a/backend/api/pretix/permissions.py b/backend/pretix/api/permissions.py similarity index 100% rename from backend/api/pretix/permissions.py rename to backend/pretix/api/permissions.py diff --git a/backend/api/pretix/query.py b/backend/pretix/api/query.py similarity index 97% rename from backend/api/pretix/query.py rename to backend/pretix/api/query.py index 6c7e3d390a..1dbc46bea5 100644 --- a/backend/api/pretix/query.py +++ b/backend/pretix/api/query.py @@ -5,7 +5,7 @@ from django.utils import timezone import pretix -from api.pretix.constants import ASSOCIATION_CATEGORY_INTERNAL_NAME +from pretix.api.constants import ASSOCIATION_CATEGORY_INTERNAL_NAME from conferences.models.conference import Conference from .types import AttendeeTicket, PretixOrder, TicketItem, Voucher diff --git a/backend/api/pretix/tests/__init__.py b/backend/pretix/api/tests/__init__.py similarity index 100% rename from backend/api/pretix/tests/__init__.py rename to backend/pretix/api/tests/__init__.py diff --git a/backend/api/pretix/tests/test_get_conference_tickets.py b/backend/pretix/api/tests/test_get_conference_tickets.py similarity index 98% rename from backend/api/pretix/tests/test_get_conference_tickets.py rename to backend/pretix/api/tests/test_get_conference_tickets.py index 08ceaa39ce..b841593670 100644 --- a/backend/api/pretix/tests/test_get_conference_tickets.py +++ b/backend/pretix/api/tests/test_get_conference_tickets.py @@ -5,8 +5,8 @@ from django.test import override_settings from django.utils import timezone -from api.pretix.query import get_conference_tickets -from api.pretix.types import Option +from pretix.api.query import get_conference_tickets +from pretix.api.types import Option pytestmark = pytest.mark.django_db diff --git a/backend/api/pretix/tests/test_types.py b/backend/pretix/api/tests/test_types.py similarity index 96% rename from backend/api/pretix/tests/test_types.py rename to backend/pretix/api/tests/test_types.py index 04bf8f2c62..74c9128375 100644 --- a/backend/api/pretix/tests/test_types.py +++ b/backend/pretix/api/tests/test_types.py @@ -1,4 +1,4 @@ -from api.pretix.types import AttendeeNameInput, UpdateAttendeeTicketErrors +from pretix.api.types import AttendeeNameInput, UpdateAttendeeTicketErrors def test_validate_attendee_name(): diff --git a/backend/api/pretix/tests/test_update_attendee_ticket.py b/backend/pretix/api/tests/test_update_attendee_ticket.py similarity index 100% rename from backend/api/pretix/tests/test_update_attendee_ticket.py rename to backend/pretix/api/tests/test_update_attendee_ticket.py diff --git a/backend/api/pretix/types.py b/backend/pretix/api/types.py similarity index 99% rename from backend/api/pretix/types.py rename to backend/pretix/api/types.py index 1d52355d6e..94ff9d5c5d 100644 --- a/backend/api/pretix/types.py +++ b/backend/pretix/api/types.py @@ -7,7 +7,7 @@ import strawberry -from api.pretix.constants import ( +from pretix.api.constants import ( ASSOCIATION_CATEGORY_INTERNAL_NAME, SOCIAL_EVENTS_CATEGORY_INTERNAL_NAME, ) diff --git a/backend/pretix/tests/test_create_order.py b/backend/pretix/tests/test_create_order.py index aad515ebb0..2303dd4da9 100644 --- a/backend/pretix/tests/test_create_order.py +++ b/backend/pretix/tests/test_create_order.py @@ -1,4 +1,4 @@ -from api.pretix.types import AttendeeNameInput +from pretix.api.types import AttendeeNameInput from conferences.tests.factories import ConferenceFactory import pytest from django.test import override_settings diff --git a/backend/api/schedule/__init__.py b/backend/schedule/api/__init__.py similarity index 100% rename from backend/api/schedule/__init__.py rename to backend/schedule/api/__init__.py diff --git a/backend/api/schedule/mutations/__init__.py b/backend/schedule/api/mutations/__init__.py similarity index 100% rename from backend/api/schedule/mutations/__init__.py rename to backend/schedule/api/mutations/__init__.py diff --git a/backend/api/schedule/mutations/book_schedule_item.py b/backend/schedule/api/mutations/book_schedule_item.py similarity index 98% rename from backend/api/schedule/mutations/book_schedule_item.py rename to backend/schedule/api/mutations/book_schedule_item.py index 84b8b37af8..b1f1de60e1 100644 --- a/backend/api/schedule/mutations/book_schedule_item.py +++ b/backend/schedule/api/mutations/book_schedule_item.py @@ -7,7 +7,7 @@ ScheduleItem, ScheduleItemAttendee, ) -from api.schedule.types import ( +from schedule.api.types import ( ScheduleItem as ScheduleItemType, ) diff --git a/backend/api/schedule/mutations/cancel_booking_schedule_item.py b/backend/schedule/api/mutations/cancel_booking_schedule_item.py similarity index 92% rename from backend/api/schedule/mutations/cancel_booking_schedule_item.py rename to backend/schedule/api/mutations/cancel_booking_schedule_item.py index c0ab288ca5..aed4f578bb 100644 --- a/backend/api/schedule/mutations/cancel_booking_schedule_item.py +++ b/backend/schedule/api/mutations/cancel_booking_schedule_item.py @@ -1,6 +1,6 @@ from api.context import Info -from api.schedule.mutations.book_schedule_item import ScheduleItemNotBookable -from api.schedule.types import ( +from schedule.api.mutations.book_schedule_item import ScheduleItemNotBookable +from schedule.api.types import ( ScheduleItem as ScheduleItemType, ) from typing import Annotated, Union diff --git a/backend/api/schedule/mutations/change_schedule_item_slot.py b/backend/schedule/api/mutations/change_schedule_item_slot.py similarity index 98% rename from backend/api/schedule/mutations/change_schedule_item_slot.py rename to backend/schedule/api/mutations/change_schedule_item_slot.py index 2a4db1c6a0..0bcf7a9f17 100644 --- a/backend/api/schedule/mutations/change_schedule_item_slot.py +++ b/backend/schedule/api/mutations/change_schedule_item_slot.py @@ -1,5 +1,5 @@ from api.permissions import CanEditSchedule -from api.schedule.types.slot import ScheduleSlot +from schedule.api.types.slot import ScheduleSlot from schedule.models import Room, ScheduleItem as ScheduleItemModel, Slot as SlotModel import strawberry from strawberry.types import Info diff --git a/backend/api/schedule/mutations/create_schedule_item.py b/backend/schedule/api/mutations/create_schedule_item.py similarity index 97% rename from backend/api/schedule/mutations/create_schedule_item.py rename to backend/schedule/api/mutations/create_schedule_item.py index 19bfe5d643..da872cc40c 100644 --- a/backend/api/schedule/mutations/create_schedule_item.py +++ b/backend/schedule/api/mutations/create_schedule_item.py @@ -5,7 +5,7 @@ import strawberry from schedule.models import ScheduleItem as ScheduleItemModel, Slot as SlotModel -from api.schedule.types.slot import ScheduleSlot +from schedule.api.types.slot import ScheduleSlot from strawberry.types import Info from submissions.models import Submission diff --git a/backend/api/schedule/mutations/create_schedule_slot.py b/backend/schedule/api/mutations/create_schedule_slot.py similarity index 97% rename from backend/api/schedule/mutations/create_schedule_slot.py rename to backend/schedule/api/mutations/create_schedule_slot.py index 715f4fea68..74b54d2990 100644 --- a/backend/api/schedule/mutations/create_schedule_slot.py +++ b/backend/schedule/api/mutations/create_schedule_slot.py @@ -1,7 +1,7 @@ from api.context import Info from custom_admin.audit import create_addition_admin_log_entry from django.db import transaction -from api.schedule.types.day import Day +from schedule.api.types.day import Day from datetime import time, timedelta, datetime from schedule.models import Day as DayModel, Slot as SlotModel import strawberry diff --git a/backend/api/schedule/mutations/star_schedule_item.py b/backend/schedule/api/mutations/star_schedule_item.py similarity index 91% rename from backend/api/schedule/mutations/star_schedule_item.py rename to backend/schedule/api/mutations/star_schedule_item.py index 01c5bf2f24..6668d9be74 100644 --- a/backend/api/schedule/mutations/star_schedule_item.py +++ b/backend/schedule/api/mutations/star_schedule_item.py @@ -1,6 +1,6 @@ from api.context import Info from api.permissions import IsAuthenticated -from api.users.types import OperationSuccess +from users.api.types import OperationSuccess from schedule.models import ScheduleItemStar import strawberry diff --git a/backend/api/schedule/mutations/unstar_schedule_item.py b/backend/schedule/api/mutations/unstar_schedule_item.py similarity index 91% rename from backend/api/schedule/mutations/unstar_schedule_item.py rename to backend/schedule/api/mutations/unstar_schedule_item.py index 271c724429..3c45f893fa 100644 --- a/backend/api/schedule/mutations/unstar_schedule_item.py +++ b/backend/schedule/api/mutations/unstar_schedule_item.py @@ -2,7 +2,7 @@ from api.permissions import IsAuthenticated from schedule.models import ScheduleItemStar import strawberry -from api.users.types import OperationSuccess +from users.api.types import OperationSuccess @strawberry.mutation(permission_classes=[IsAuthenticated]) diff --git a/backend/api/schedule/mutations/update_schedule_invitation.py b/backend/schedule/api/mutations/update_schedule_invitation.py similarity index 95% rename from backend/api/schedule/mutations/update_schedule_invitation.py rename to backend/schedule/api/mutations/update_schedule_invitation.py index dc44326ff9..bd6b44cc55 100644 --- a/backend/api/schedule/mutations/update_schedule_invitation.py +++ b/backend/schedule/api/mutations/update_schedule_invitation.py @@ -3,8 +3,8 @@ from api.context import Info from api.permissions import IsAuthenticated -from api.schedule.types import ScheduleInvitation, ScheduleInvitationOption -from api.submissions.permissions import IsSubmissionSpeakerOrStaff +from schedule.api.types import ScheduleInvitation, ScheduleInvitationOption +from submissions.api.permissions import IsSubmissionSpeakerOrStaff from schedule import models as schedule_models from schedule.tasks import ( create_and_send_voucher_to_speaker, diff --git a/backend/api/schedule/queries/__init__.py b/backend/schedule/api/queries/__init__.py similarity index 100% rename from backend/api/schedule/queries/__init__.py rename to backend/schedule/api/queries/__init__.py diff --git a/backend/api/schedule/queries/schedule_invitation.py b/backend/schedule/api/queries/schedule_invitation.py similarity index 87% rename from backend/api/schedule/queries/schedule_invitation.py rename to backend/schedule/api/queries/schedule_invitation.py index 97ee282529..9ab270cc54 100644 --- a/backend/api/schedule/queries/schedule_invitation.py +++ b/backend/schedule/api/queries/schedule_invitation.py @@ -3,8 +3,8 @@ from api.context import Info from api.permissions import IsAuthenticated -from api.schedule.types.schedule_invitation import ScheduleInvitation -from api.submissions.permissions import IsSubmissionSpeakerOrStaff +from schedule.api.types.schedule_invitation import ScheduleInvitation +from submissions.api.permissions import IsSubmissionSpeakerOrStaff from schedule import models as schedule_models from submissions import models as submission_models diff --git a/backend/api/schedule/queries/search_events_for_schedule.py b/backend/schedule/api/queries/search_events_for_schedule.py similarity index 95% rename from backend/api/schedule/queries/search_events_for_schedule.py rename to backend/schedule/api/queries/search_events_for_schedule.py index 416d9c0287..e7e742ec5a 100644 --- a/backend/api/schedule/queries/search_events_for_schedule.py +++ b/backend/schedule/api/queries/search_events_for_schedule.py @@ -2,10 +2,10 @@ from django.db.models import Q, QuerySet from strawberry_django.optimizer import OptimizerStore, optimize -from api.conferences.types import Keynote +from conferences.api.types import Keynote from api.context import Info from api.permissions import CanEditSchedule -from api.submissions.types import Submission +from submissions.api.types import Submission from conferences.models import Keynote as KeynoteModel from submissions.models import Submission as SubmissionModel diff --git a/backend/api/schedule/queries/unassigned_schedule_items.py b/backend/schedule/api/queries/unassigned_schedule_items.py similarity index 87% rename from backend/api/schedule/queries/unassigned_schedule_items.py rename to backend/schedule/api/queries/unassigned_schedule_items.py index 07440e2916..e03877ad61 100644 --- a/backend/api/schedule/queries/unassigned_schedule_items.py +++ b/backend/schedule/api/queries/unassigned_schedule_items.py @@ -1,4 +1,4 @@ -from api.schedule.types.schedule_item import ScheduleItem +from schedule.api.types.schedule_item import ScheduleItem from schedule.models import ScheduleItem as ScheduleItemModel import strawberry from api.permissions import CanEditSchedule diff --git a/backend/api/schedule/schema.py b/backend/schedule/api/schema.py similarity index 51% rename from backend/api/schedule/schema.py rename to backend/schedule/api/schema.py index 5c1eeb8058..d9c99ad480 100644 --- a/backend/api/schedule/schema.py +++ b/backend/schedule/api/schema.py @@ -1,16 +1,16 @@ -from api.schedule.mutations.book_schedule_item import book_schedule_item -from api.schedule.mutations.cancel_booking_schedule_item import ( +from schedule.api.mutations.book_schedule_item import book_schedule_item +from schedule.api.mutations.cancel_booking_schedule_item import ( cancel_booking_schedule_item, ) -from api.schedule.mutations.change_schedule_item_slot import change_schedule_item_slot -from api.schedule.mutations.create_schedule_item import create_schedule_item -from api.schedule.mutations.create_schedule_slot import create_schedule_slot -from api.schedule.mutations.update_schedule_invitation import update_schedule_invitation -from api.schedule.mutations.unstar_schedule_item import unstar_schedule_item -from api.schedule.mutations.star_schedule_item import star_schedule_item -from api.schedule.queries.schedule_invitation import schedule_invitation -from api.schedule.queries.unassigned_schedule_items import unassigned_schedule_items -from api.schedule.queries.search_events_for_schedule import search_events_for_schedule +from schedule.api.mutations.change_schedule_item_slot import change_schedule_item_slot +from schedule.api.mutations.create_schedule_item import create_schedule_item +from schedule.api.mutations.create_schedule_slot import create_schedule_slot +from schedule.api.mutations.update_schedule_invitation import update_schedule_invitation +from schedule.api.mutations.unstar_schedule_item import unstar_schedule_item +from schedule.api.mutations.star_schedule_item import star_schedule_item +from schedule.api.queries.schedule_invitation import schedule_invitation +from schedule.api.queries.unassigned_schedule_items import unassigned_schedule_items +from schedule.api.queries.search_events_for_schedule import search_events_for_schedule from strawberry.tools import create_type diff --git a/backend/api/schedule/tests/test_book_spot_schedule_item.py b/backend/schedule/api/tests/test_book_spot_schedule_item.py similarity index 93% rename from backend/api/schedule/tests/test_book_spot_schedule_item.py rename to backend/schedule/api/tests/test_book_spot_schedule_item.py index 982a4be1a3..17755ed488 100644 --- a/backend/api/schedule/tests/test_book_spot_schedule_item.py +++ b/backend/schedule/api/tests/test_book_spot_schedule_item.py @@ -38,7 +38,7 @@ def simple_schedule_item(): def test_book_schedule_item(graphql_client, user, mocker, simple_schedule_item): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) graphql_client.force_login(user) @@ -74,7 +74,7 @@ def test_needs_ticket_to_book( mocker, ): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=False, ) @@ -103,7 +103,7 @@ def test_needs_ticket_to_book( def test_cannot_overbook(graphql_client, user, simple_schedule_item, mocker): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) @@ -133,7 +133,7 @@ def test_cannot_overbook(graphql_client, user, simple_schedule_item, mocker): def test_user_cannot_book_twice(graphql_client, user, simple_schedule_item, mocker): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) @@ -161,7 +161,7 @@ def test_user_cannot_book_twice(graphql_client, user, simple_schedule_item, mock def test_user_cannot_book_any_event(graphql_client, user, simple_schedule_item, mocker): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) @@ -193,7 +193,7 @@ def test_user_book_with_limited_capacity_from_room( graphql_client, user, simple_schedule_item, mocker ): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) @@ -226,7 +226,7 @@ def test_user_book_full_item_from_room( graphql_client, user, simple_schedule_item, mocker ): mocker.patch( - "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", + "schedule.api.mutations.book_schedule_item.user_has_admission_ticket", return_value=True, ) diff --git a/backend/api/schedule/tests/test_cancel_booking_schedule_item.py b/backend/schedule/api/tests/test_cancel_booking_schedule_item.py similarity index 100% rename from backend/api/schedule/tests/test_cancel_booking_schedule_item.py rename to backend/schedule/api/tests/test_cancel_booking_schedule_item.py diff --git a/backend/api/schedule/tests/test_change_schedule_item_slot.py b/backend/schedule/api/tests/test_change_schedule_item_slot.py similarity index 100% rename from backend/api/schedule/tests/test_change_schedule_item_slot.py rename to backend/schedule/api/tests/test_change_schedule_item_slot.py diff --git a/backend/api/schedule/tests/test_create_schedule_item.py b/backend/schedule/api/tests/test_create_schedule_item.py similarity index 100% rename from backend/api/schedule/tests/test_create_schedule_item.py rename to backend/schedule/api/tests/test_create_schedule_item.py diff --git a/backend/api/schedule/tests/test_create_schedule_slot.py b/backend/schedule/api/tests/test_create_schedule_slot.py similarity index 100% rename from backend/api/schedule/tests/test_create_schedule_slot.py rename to backend/schedule/api/tests/test_create_schedule_slot.py diff --git a/backend/api/schedule/tests/test_schedule_invitation.py b/backend/schedule/api/tests/test_schedule_invitation.py similarity index 100% rename from backend/api/schedule/tests/test_schedule_invitation.py rename to backend/schedule/api/tests/test_schedule_invitation.py diff --git a/backend/api/schedule/tests/test_schedule_invitation_frontend_query.py b/backend/schedule/api/tests/test_schedule_invitation_frontend_query.py similarity index 100% rename from backend/api/schedule/tests/test_schedule_invitation_frontend_query.py rename to backend/schedule/api/tests/test_schedule_invitation_frontend_query.py diff --git a/backend/api/schedule/tests/test_search_events_for_schedule.py b/backend/schedule/api/tests/test_search_events_for_schedule.py similarity index 100% rename from backend/api/schedule/tests/test_search_events_for_schedule.py rename to backend/schedule/api/tests/test_search_events_for_schedule.py diff --git a/backend/api/schedule/tests/test_star_schedule_item.py b/backend/schedule/api/tests/test_star_schedule_item.py similarity index 100% rename from backend/api/schedule/tests/test_star_schedule_item.py rename to backend/schedule/api/tests/test_star_schedule_item.py diff --git a/backend/api/schedule/tests/test_unassigned_schedule_items.py b/backend/schedule/api/tests/test_unassigned_schedule_items.py similarity index 100% rename from backend/api/schedule/tests/test_unassigned_schedule_items.py rename to backend/schedule/api/tests/test_unassigned_schedule_items.py diff --git a/backend/api/schedule/tests/test_update_schedule_invitation.py b/backend/schedule/api/tests/test_update_schedule_invitation.py similarity index 92% rename from backend/api/schedule/tests/test_update_schedule_invitation.py rename to backend/schedule/api/tests/test_update_schedule_invitation.py index 3095a5c7d9..df9e1e845e 100644 --- a/backend/api/schedule/tests/test_update_schedule_invitation.py +++ b/backend/schedule/api/tests/test_update_schedule_invitation.py @@ -24,13 +24,13 @@ def test_update_invitation_answer( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) mock_plain = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" + "schedule.api.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" ) mock_send_voucher = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" + "schedule.api.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" ) graphql_client.force_login(user) @@ -95,13 +95,13 @@ def test_saving_the_same_answer_does_not_trigger_event( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) mock_plain = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" + "schedule.api.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" ) mock_send_voucher = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" + "schedule.api.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" ) graphql_client.force_login(user) @@ -161,10 +161,10 @@ def test_changing_notes_triggers_a_new_event( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) mock_plain = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" + "schedule.api.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" ) graphql_client.force_login(user) @@ -226,7 +226,7 @@ def test_random_user_cannot_update_an_invitation( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) graphql_client.force_login(user) @@ -274,7 +274,7 @@ def test_cannot_update_schedule_if_submission_doesnt_have_a_matching_schedule( graphql_client, user, mocker ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) graphql_client.force_login(user) @@ -310,7 +310,7 @@ def test_requires_authentication( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) submission = SubmissionFactory() @@ -357,13 +357,13 @@ def test_staff_can_update_invitation_answer( mocker, ): mock_event = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" + "schedule.api.mutations.update_schedule_invitation.notify_new_schedule_invitation_answer_slack" ) mock_plain = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" + "schedule.api.mutations.update_schedule_invitation.send_schedule_invitation_plain_message" ) mock_send_voucher = mocker.patch( - "api.schedule.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" + "schedule.api.mutations.update_schedule_invitation.create_and_send_voucher_to_speaker" ) graphql_client.force_login(admin_user) diff --git a/backend/api/schedule/types/__init__.py b/backend/schedule/api/types/__init__.py similarity index 100% rename from backend/api/schedule/types/__init__.py rename to backend/schedule/api/types/__init__.py diff --git a/backend/api/schedule/types/day.py b/backend/schedule/api/types/day.py similarity index 94% rename from backend/api/schedule/types/day.py rename to backend/schedule/api/types/day.py index 79717596a4..7dae0e813d 100644 --- a/backend/api/schedule/types/day.py +++ b/backend/schedule/api/types/day.py @@ -1,10 +1,10 @@ from api.context import Info from schedule.models import ScheduleItem as ScheduleItemModel -from api.schedule.types.schedule_item import ScheduleItem +from schedule.api.types.schedule_item import ScheduleItem from django.utils import timezone from datetime import timedelta -from api.schedule.types.day_room import DayRoom -from api.schedule.types.slot import ScheduleSlot +from schedule.api.types.day_room import DayRoom +from schedule.api.types.slot import ScheduleSlot import strawberry import strawberry_django from schedule import models diff --git a/backend/api/schedule/types/day_room.py b/backend/schedule/api/types/day_room.py similarity index 100% rename from backend/api/schedule/types/day_room.py rename to backend/schedule/api/types/day_room.py diff --git a/backend/api/schedule/types/room.py b/backend/schedule/api/types/room.py similarity index 100% rename from backend/api/schedule/types/room.py rename to backend/schedule/api/types/room.py diff --git a/backend/api/schedule/types/schedule_invitation.py b/backend/schedule/api/types/schedule_invitation.py similarity index 97% rename from backend/api/schedule/types/schedule_invitation.py rename to backend/schedule/api/types/schedule_invitation.py index c037477005..09721846cb 100644 --- a/backend/api/schedule/types/schedule_invitation.py +++ b/backend/schedule/api/types/schedule_invitation.py @@ -4,7 +4,7 @@ import strawberry import strawberry_django -from api.submissions.types import Submission +from submissions.api.types import Submission from schedule import models diff --git a/backend/api/schedule/types/schedule_item.py b/backend/schedule/api/types/schedule_item.py similarity index 93% rename from backend/api/schedule/types/schedule_item.py rename to backend/schedule/api/types/schedule_item.py index c2cee51b0a..660d702e50 100644 --- a/backend/api/schedule/types/schedule_item.py +++ b/backend/schedule/api/types/schedule_item.py @@ -7,15 +7,15 @@ from django.db.models.functions import Coalesce from api.context import Info -from api.languages.types import Language +from languages.api.types import Language from api.permissions import IsStaffPermission -from api.schedule.types.room import Room -from api.schedule.types.schedule_item_user import ScheduleItemUser -from api.submissions.types import Submission +from schedule.api.types.room import Room +from schedule.api.types.schedule_item_user import ScheduleItemUser +from submissions.api.types import Submission from schedule import models if TYPE_CHECKING: # pragma: no cover - from api.conferences.types import AudienceLevel, Conference, Keynote + from conferences.api.types import AudienceLevel, Conference, Keynote ATTENDEES_COUNT_ANNOTATION = "graphql_attendees_count" @@ -70,7 +70,7 @@ def _attendees_count(schedule_item) -> int: @strawberry_django.type(models.ScheduleItem) class ScheduleItem: id: strawberry.auto - conference: Annotated["Conference", strawberry.lazy("api.conferences.types")] + conference: Annotated["Conference", strawberry.lazy("conferences.api.types")] title: strawberry.auto start: datetime = strawberry_django.field( only=["slot__day__day", "slot__hour"], @@ -89,7 +89,7 @@ class ScheduleItem: highlight_color: str | None language: Language audience_level: ( - Annotated["AudienceLevel", strawberry.lazy("api.conferences.types")] | None + Annotated["AudienceLevel", strawberry.lazy("conferences.api.types")] | None ) youtube_video_id: str | None link_to: strawberry.auto @@ -206,7 +206,7 @@ def speakers(self) -> list[ScheduleItemUser]: @strawberry_django.field(select_related=["keynote"]) def keynote( self, info: Info - ) -> Annotated["Keynote", strawberry.lazy("api.conferences.types")] | None: + ) -> Annotated["Keynote", strawberry.lazy("conferences.api.types")] | None: return self.keynote if self.keynote_id else None rooms: list[Room] diff --git a/backend/api/schedule/types/schedule_item_user.py b/backend/schedule/api/types/schedule_item_user.py similarity index 92% rename from backend/api/schedule/types/schedule_item_user.py rename to backend/schedule/api/types/schedule_item_user.py index 783e7f45ef..840a71dc78 100644 --- a/backend/api/schedule/types/schedule_item_user.py +++ b/backend/schedule/api/types/schedule_item_user.py @@ -1,7 +1,7 @@ import strawberry import strawberry_django -from api.participants.types import Participant +from participants.api.types import Participant from users import models as user_models diff --git a/backend/api/schedule/types/slot.py b/backend/schedule/api/types/slot.py similarity index 94% rename from backend/api/schedule/types/slot.py rename to backend/schedule/api/types/slot.py index 131cf7fed9..8e9c4dae09 100644 --- a/backend/api/schedule/types/slot.py +++ b/backend/schedule/api/types/slot.py @@ -3,7 +3,7 @@ from django.utils import timezone -from api.schedule.types.schedule_item import ScheduleItem +from schedule.api.types.schedule_item import ScheduleItem import strawberry diff --git a/backend/api/sponsors/__init__.py b/backend/sponsors/api/__init__.py similarity index 100% rename from backend/api/sponsors/__init__.py rename to backend/sponsors/api/__init__.py diff --git a/backend/api/sponsors/schema.py b/backend/sponsors/api/schema.py similarity index 100% rename from backend/api/sponsors/schema.py rename to backend/sponsors/api/schema.py diff --git a/backend/api/sponsors/tests/__init__.py b/backend/sponsors/api/tests/__init__.py similarity index 100% rename from backend/api/sponsors/tests/__init__.py rename to backend/sponsors/api/tests/__init__.py diff --git a/backend/api/sponsors/tests/test_brochure_frontend_query.py b/backend/sponsors/api/tests/test_brochure_frontend_query.py similarity index 100% rename from backend/api/sponsors/tests/test_brochure_frontend_query.py rename to backend/sponsors/api/tests/test_brochure_frontend_query.py diff --git a/backend/api/sponsors/tests/test_send_sponsor_lead.py b/backend/sponsors/api/tests/test_send_sponsor_lead.py similarity index 95% rename from backend/api/sponsors/tests/test_send_sponsor_lead.py rename to backend/sponsors/api/tests/test_send_sponsor_lead.py index 5ca4f3df88..26ad9b8cc9 100644 --- a/backend/api/sponsors/tests/test_send_sponsor_lead.py +++ b/backend/sponsors/api/tests/test_send_sponsor_lead.py @@ -31,9 +31,9 @@ def _send_sponsor_lead(client, input): @mark.parametrize("consent_to_contact_via_email", [True, False]) def test_send_sponsor_lead(graphql_client, consent_to_contact_via_email, mocker): - mock_send_brochure = mocker.patch("api.sponsors.schema.send_sponsor_brochure") + mock_send_brochure = mocker.patch("sponsors.api.schema.send_sponsor_brochure") mock_notify_new_sponsor_lead_via_slack = mocker.patch( - "api.sponsors.schema.notify_new_sponsor_lead_via_slack" + "sponsors.api.schema.notify_new_sponsor_lead_via_slack" ) conference = ConferenceFactory() @@ -71,9 +71,9 @@ def test_send_sponsor_lead(graphql_client, consent_to_contact_via_email, mocker) def test_send_sponsor_lead_works_if_email_was_sent_to_different_conf( graphql_client, mocker ): - mock_send_brochure = mocker.patch("api.sponsors.schema.send_sponsor_brochure") + mock_send_brochure = mocker.patch("sponsors.api.schema.send_sponsor_brochure") mock_notify_new_sponsor_lead_via_slack = mocker.patch( - "api.sponsors.schema.notify_new_sponsor_lead_via_slack" + "sponsors.api.schema.notify_new_sponsor_lead_via_slack" ) SponsorLeadFactory( @@ -110,7 +110,7 @@ def test_send_sponsor_lead_works_if_email_was_sent_to_different_conf( def test_send_sponsor_lead_only_sends_the_brochure_once_to_email( graphql_client, mocker ): - mock_send_brochure = mocker.patch("api.sponsors.schema.send_sponsor_brochure") + mock_send_brochure = mocker.patch("sponsors.api.schema.send_sponsor_brochure") conference = ConferenceFactory() sponsor_lead = SponsorLeadFactory( diff --git a/backend/api/sponsors/tests/test_sponsors_by_level.py b/backend/sponsors/api/tests/test_sponsors_by_level.py similarity index 100% rename from backend/api/sponsors/tests/test_sponsors_by_level.py rename to backend/sponsors/api/tests/test_sponsors_by_level.py diff --git a/backend/api/sponsors/types.py b/backend/sponsors/api/types.py similarity index 100% rename from backend/api/sponsors/types.py rename to backend/sponsors/api/types.py diff --git a/backend/api/submissions/__init__.py b/backend/submissions/api/__init__.py similarity index 100% rename from backend/api/submissions/__init__.py rename to backend/submissions/api/__init__.py diff --git a/backend/api/submissions/mutations.py b/backend/submissions/api/mutations.py similarity index 100% rename from backend/api/submissions/mutations.py rename to backend/submissions/api/mutations.py diff --git a/backend/api/submissions/permissions.py b/backend/submissions/api/permissions.py similarity index 100% rename from backend/api/submissions/permissions.py rename to backend/submissions/api/permissions.py diff --git a/backend/api/submissions/schema.py b/backend/submissions/api/schema.py similarity index 98% rename from backend/api/submissions/schema.py rename to backend/submissions/api/schema.py index 914971885c..ea7d0ac2b3 100644 --- a/backend/api/submissions/schema.py +++ b/backend/submissions/api/schema.py @@ -6,7 +6,7 @@ from api.context import Info from api.permissions import CanSeeSubmissions, IsAuthenticated -from api.submissions.permissions import CanSeeSubmissionRestrictedFields +from submissions.api.permissions import CanSeeSubmissionRestrictedFields from api.types import Paginated from conferences import models as conference_models from submissions import models as submission_models diff --git a/backend/api/submissions/tests/__init__.py b/backend/submissions/api/tests/__init__.py similarity index 100% rename from backend/api/submissions/tests/__init__.py rename to backend/submissions/api/tests/__init__.py diff --git a/backend/api/submissions/tests/test_edit_submission.py b/backend/submissions/api/tests/test_edit_submission.py similarity index 100% rename from backend/api/submissions/tests/test_edit_submission.py rename to backend/submissions/api/tests/test_edit_submission.py diff --git a/backend/api/submissions/tests/test_frontend_queries.py b/backend/submissions/api/tests/test_frontend_queries.py similarity index 100% rename from backend/api/submissions/tests/test_frontend_queries.py rename to backend/submissions/api/tests/test_frontend_queries.py diff --git a/backend/api/submissions/tests/test_permissions.py b/backend/submissions/api/tests/test_permissions.py similarity index 67% rename from backend/api/submissions/tests/test_permissions.py rename to backend/submissions/api/tests/test_permissions.py index 2bf7978c73..6c7405c728 100644 --- a/backend/api/submissions/tests/test_permissions.py +++ b/backend/submissions/api/tests/test_permissions.py @@ -1,4 +1,4 @@ -from api.submissions.permissions import IsSubmissionSpeakerOrStaff +from submissions.api.permissions import IsSubmissionSpeakerOrStaff def test_doesnt_implement_generic_permission(rf): diff --git a/backend/api/submissions/tests/test_send_submission.py b/backend/submissions/api/tests/test_send_submission.py similarity index 99% rename from backend/api/submissions/tests/test_send_submission.py rename to backend/submissions/api/tests/test_send_submission.py index 0f3bfeef16..bf6bbbc932 100644 --- a/backend/api/submissions/tests/test_send_submission.py +++ b/backend/submissions/api/tests/test_send_submission.py @@ -150,7 +150,7 @@ def test_submit_talk( sent_emails, ): settings.FRONTEND_URL = "http://testserver" - mock_notify = mocker.patch("api.submissions.mutations.notify_new_cfp_submission") + mock_notify = mocker.patch("submissions.api.mutations.notify_new_cfp_submission") graphql_client.force_login(user) conference = ConferenceFactory( diff --git a/backend/api/submissions/tests/test_submission.py b/backend/submissions/api/tests/test_submission.py similarity index 100% rename from backend/api/submissions/tests/test_submission.py rename to backend/submissions/api/tests/test_submission.py diff --git a/backend/api/submissions/tests/test_submission_frontend_query.py b/backend/submissions/api/tests/test_submission_frontend_query.py similarity index 100% rename from backend/api/submissions/tests/test_submission_frontend_query.py rename to backend/submissions/api/tests/test_submission_frontend_query.py diff --git a/backend/api/submissions/tests/test_submission_permissions.py b/backend/submissions/api/tests/test_submission_permissions.py similarity index 98% rename from backend/api/submissions/tests/test_submission_permissions.py rename to backend/submissions/api/tests/test_submission_permissions.py index 4c5b191d33..0869097886 100644 --- a/backend/api/submissions/tests/test_submission_permissions.py +++ b/backend/submissions/api/tests/test_submission_permissions.py @@ -71,7 +71,7 @@ def test_voting_open_and_user_cannot_vote(graphql_client, user, other_user, mock submission = _submission(user) graphql_client.force_login(other_user) mocker.patch( - "api.submissions.permissions.check_if_user_can_vote", return_value=False + "submissions.api.permissions.check_if_user_can_vote", return_value=False ) data = _query(graphql_client, submission) @@ -83,7 +83,7 @@ def test_voting_open_and_user_can_vote(graphql_client, user, other_user, mocker) submission = _submission(user) graphql_client.force_login(other_user) can_vote_mock = mocker.patch( - "api.submissions.permissions.check_if_user_can_vote", return_value=True + "submissions.api.permissions.check_if_user_can_vote", return_value=True ) data = _query(graphql_client, submission) diff --git a/backend/api/submissions/tests/test_submission_voting_tags.py b/backend/submissions/api/tests/test_submission_voting_tags.py similarity index 100% rename from backend/api/submissions/tests/test_submission_voting_tags.py rename to backend/submissions/api/tests/test_submission_voting_tags.py diff --git a/backend/api/submissions/tests/test_submissions.py b/backend/submissions/api/tests/test_submissions.py similarity index 100% rename from backend/api/submissions/tests/test_submissions.py rename to backend/submissions/api/tests/test_submissions.py diff --git a/backend/api/submissions/types.py b/backend/submissions/api/types.py similarity index 90% rename from backend/api/submissions/types.py rename to backend/submissions/api/types.py index a9c1cbe1da..457d92f075 100644 --- a/backend/api/submissions/types.py +++ b/backend/submissions/api/types.py @@ -6,9 +6,9 @@ from strawberry.types import Info from strawberry.types.field import StrawberryField -from api.languages.types import Language +from languages.api.types import Language from api.utils import validate_url -from api.voting.types import VoteType +from voting.api.types import VoteType from files_upload import models as file_models from i18n.strings import LazyI18nString from submissions import models @@ -18,10 +18,10 @@ from .permissions import CanSeeSubmissionPrivateFields, CanSeeSubmissionRestrictedFields if TYPE_CHECKING: - from api.conferences.types import AudienceLevel, Conference, Duration, Topic - from api.participants.types import Participant - from api.schedule.types import ScheduleItem - from api.submissions.mutations import SendSubmissionErrors + from conferences.api.types import AudienceLevel, Conference, Duration, Topic + from participants.api.types import Participant + from schedule.api.types import ScheduleItem + from submissions.api.mutations import SendSubmissionErrors def private_field(name: str) -> StrawberryField: @@ -59,7 +59,7 @@ class SubmissionSpeaker: @strawberry_django.field def participant( self, - ) -> Annotated["Participant", strawberry.lazy("api.participants.types")] | None: + ) -> Annotated["Participant", strawberry.lazy("participants.api.types")] | None: return next( ( participant @@ -111,24 +111,24 @@ def file_mime_type(self) -> str | None: @strawberry_django.type(models.Submission) class Submission: - conference: Annotated["Conference", strawberry.lazy("api.conferences.types")] + conference: Annotated["Conference", strawberry.lazy("conferences.api.types")] title: str slug: strawberry.auto status: strawberry.auto speaker_level: str | None = private_field("speaker_level") previous_talk_video: str | None = private_field("previous_talk_video") short_social_summary: str | None = private_field("short_social_summary") - topic: Annotated["Topic", strawberry.lazy("api.conferences.types")] | None + topic: Annotated["Topic", strawberry.lazy("conferences.api.types")] | None type: SubmissionType | None - duration: Annotated["Duration", strawberry.lazy("api.conferences.types")] | None + duration: Annotated["Duration", strawberry.lazy("conferences.api.types")] | None audience_level: ( - Annotated["AudienceLevel", strawberry.lazy("api.conferences.types")] | None + Annotated["AudienceLevel", strawberry.lazy("conferences.api.types")] | None ) notes: str | None = private_field("notes") do_not_record: bool | None = private_field("do_not_record") schedule_items: list[ - Annotated["ScheduleItem", strawberry.lazy("api.schedule.types")] + Annotated["ScheduleItem", strawberry.lazy("schedule.api.types")] ] @strawberry_django.field(only=["elevator_pitch"]) diff --git a/backend/api/users/__init__.py b/backend/users/api/__init__.py similarity index 100% rename from backend/api/users/__init__.py rename to backend/users/api/__init__.py diff --git a/backend/users/api/mutations/__init__.py b/backend/users/api/mutations/__init__.py new file mode 100644 index 0000000000..fa9a535751 --- /dev/null +++ b/backend/users/api/mutations/__init__.py @@ -0,0 +1,13 @@ +from strawberry.tools import create_type + +from users.api.mutations.login import login +from users.api.mutations.register import register +from users.api.mutations.update_profile import update_profile +from users.api.mutations.request_reset_password import request_reset_password +from users.api.mutations.logout import logout +from users.api.mutations.reset_password import reset_password + +UsersMutations = create_type( + "UsersMutations", + [login, register, update_profile, reset_password, request_reset_password, logout], +) diff --git a/backend/api/users/mutations/login.py b/backend/users/api/mutations/login.py similarity index 98% rename from backend/api/users/mutations/login.py rename to backend/users/api/mutations/login.py index 3fe5ff415f..d209e84c72 100644 --- a/backend/api/users/mutations/login.py +++ b/backend/users/api/mutations/login.py @@ -9,7 +9,7 @@ from api.context import Info from api.types import BaseErrorType -from api.users.types import User +from users.api.types import User from users import models logger = logging.getLogger(__name__) diff --git a/backend/api/users/mutations/logout.py b/backend/users/api/mutations/logout.py similarity index 84% rename from backend/api/users/mutations/logout.py rename to backend/users/api/mutations/logout.py index 8c8a7589ec..57f1782a4d 100644 --- a/backend/api/users/mutations/logout.py +++ b/backend/users/api/mutations/logout.py @@ -2,7 +2,7 @@ from django.contrib.auth import logout as django_logout from api.context import Info -from api.users.types import OperationSuccess +from users.api.types import OperationSuccess @strawberry.mutation diff --git a/backend/api/users/mutations/register.py b/backend/users/api/mutations/register.py similarity index 98% rename from backend/api/users/mutations/register.py rename to backend/users/api/mutations/register.py index 9a5c16ebec..235520b07a 100644 --- a/backend/api/users/mutations/register.py +++ b/backend/users/api/mutations/register.py @@ -8,7 +8,7 @@ from api.context import Info from api.types import BaseErrorType -from api.users.types import User +from users.api.types import User from users import models diff --git a/backend/api/users/mutations/request_reset_password.py b/backend/users/api/mutations/request_reset_password.py similarity index 97% rename from backend/api/users/mutations/request_reset_password.py rename to backend/users/api/mutations/request_reset_password.py index e33c48a3e1..b87b9ca2b3 100644 --- a/backend/api/users/mutations/request_reset_password.py +++ b/backend/users/api/mutations/request_reset_password.py @@ -3,7 +3,7 @@ import strawberry from django.utils import timezone from datetime import timedelta -from api.users.types import OperationSuccess +from users.api.types import OperationSuccess from users.models import User as UserModel from django.conf import settings import jwt diff --git a/backend/api/users/mutations/reset_password.py b/backend/users/api/mutations/reset_password.py similarity index 96% rename from backend/api/users/mutations/reset_password.py rename to backend/users/api/mutations/reset_password.py index bdd56b39fb..8713181ef9 100644 --- a/backend/api/users/mutations/reset_password.py +++ b/backend/users/api/mutations/reset_password.py @@ -1,12 +1,12 @@ from django.db.models import F -from api.users.mutations.request_reset_password import create_reset_password_jti +from users.api.mutations.request_reset_password import create_reset_password_jti from users.models import User as UserModel from django.utils.functional import cached_property import jwt import strawberry from django.conf import settings from api.types import BaseErrorType -from api.users.types import OperationSuccess +from users.api.types import OperationSuccess import logging from typing import Annotated, Union diff --git a/backend/api/users/mutations/update_profile.py b/backend/users/api/mutations/update_profile.py similarity index 98% rename from backend/api/users/mutations/update_profile.py rename to backend/users/api/mutations/update_profile.py index 10f7c88d12..50c08cf762 100644 --- a/backend/api/users/mutations/update_profile.py +++ b/backend/users/api/mutations/update_profile.py @@ -6,7 +6,7 @@ from api.context import Info from api.permissions import IsAuthenticated from api.types import BaseErrorType -from api.users.types import User +from users.api.types import User @strawberry.type diff --git a/backend/api/users/queries.py b/backend/users/api/queries.py similarity index 91% rename from backend/api/users/queries.py rename to backend/users/api/queries.py index 3cddb68713..68d6a6a179 100644 --- a/backend/api/users/queries.py +++ b/backend/users/api/queries.py @@ -3,7 +3,7 @@ from api.context import Info from api.permissions import IsAuthenticated -from api.users.types import User +from users.api.types import User @strawberry_django.field(permission_classes=[IsAuthenticated]) diff --git a/backend/api/users/tests/__init__.py b/backend/users/api/tests/__init__.py similarity index 100% rename from backend/api/users/tests/__init__.py rename to backend/users/api/tests/__init__.py diff --git a/backend/api/users/tests/test_billing_addresses.py b/backend/users/api/tests/test_billing_addresses.py similarity index 100% rename from backend/api/users/tests/test_billing_addresses.py rename to backend/users/api/tests/test_billing_addresses.py diff --git a/backend/api/users/tests/test_booked_schedule_items.py b/backend/users/api/tests/test_booked_schedule_items.py similarity index 100% rename from backend/api/users/tests/test_booked_schedule_items.py rename to backend/users/api/tests/test_booked_schedule_items.py diff --git a/backend/api/users/tests/test_frontend_queries.py b/backend/users/api/tests/test_frontend_queries.py similarity index 100% rename from backend/api/users/tests/test_frontend_queries.py rename to backend/users/api/tests/test_frontend_queries.py diff --git a/backend/api/users/tests/test_invitation_letter_request.py b/backend/users/api/tests/test_invitation_letter_request.py similarity index 99% rename from backend/api/users/tests/test_invitation_letter_request.py rename to backend/users/api/tests/test_invitation_letter_request.py index 34960e13eb..f4d9bcd3a5 100644 --- a/backend/api/users/tests/test_invitation_letter_request.py +++ b/backend/users/api/tests/test_invitation_letter_request.py @@ -1,4 +1,4 @@ -from api.visa.types import ( +from visa.api.types import ( InvitationLetterRequestStatus as InvitationLetterRequestStatusAPI, ) from visa.models import InvitationLetterRequestStatus as InvitationLetterRequestStatusDB diff --git a/backend/api/users/tests/test_login.py b/backend/users/api/tests/test_login.py similarity index 100% rename from backend/api/users/tests/test_login.py rename to backend/users/api/tests/test_login.py diff --git a/backend/api/users/tests/test_logout.py b/backend/users/api/tests/test_logout.py similarity index 100% rename from backend/api/users/tests/test_logout.py rename to backend/users/api/tests/test_logout.py diff --git a/backend/api/users/tests/test_me.py b/backend/users/api/tests/test_me.py similarity index 100% rename from backend/api/users/tests/test_me.py rename to backend/users/api/tests/test_me.py diff --git a/backend/api/users/tests/test_participant.py b/backend/users/api/tests/test_participant.py similarity index 100% rename from backend/api/users/tests/test_participant.py rename to backend/users/api/tests/test_participant.py diff --git a/backend/api/users/tests/test_register.py b/backend/users/api/tests/test_register.py similarity index 100% rename from backend/api/users/tests/test_register.py rename to backend/users/api/tests/test_register.py diff --git a/backend/api/users/tests/test_request_reset_password.py b/backend/users/api/tests/test_request_reset_password.py similarity index 97% rename from backend/api/users/tests/test_request_reset_password.py rename to backend/users/api/tests/test_request_reset_password.py index e3b047cefd..6cfaa96dda 100644 --- a/backend/api/users/tests/test_request_reset_password.py +++ b/backend/users/api/tests/test_request_reset_password.py @@ -12,7 +12,7 @@ def test_request_reset_password(graphql_client): user = UserFactory(full_name="Sushi Op", email="reset@example.org") with patch( - "api.users.mutations.request_reset_password.EmailTemplate" + "users.api.mutations.request_reset_password.EmailTemplate" ) as mock_email_template: body = graphql_client.query( """mutation($email: String!) { diff --git a/backend/api/users/tests/test_reset_password.py b/backend/users/api/tests/test_reset_password.py similarity index 99% rename from backend/api/users/tests/test_reset_password.py rename to backend/users/api/tests/test_reset_password.py index 639da6eb02..e92913a772 100644 --- a/backend/api/users/tests/test_reset_password.py +++ b/backend/users/api/tests/test_reset_password.py @@ -1,6 +1,6 @@ import time_machine import pytest -from api.users.mutations.request_reset_password import _create_reset_password_token +from users.api.mutations.request_reset_password import _create_reset_password_token from users.tests.factories import UserFactory diff --git a/backend/api/users/tests/test_stars.py b/backend/users/api/tests/test_stars.py similarity index 100% rename from backend/api/users/tests/test_stars.py rename to backend/users/api/tests/test_stars.py diff --git a/backend/api/users/tests/test_user_grants.py b/backend/users/api/tests/test_user_grants.py similarity index 100% rename from backend/api/users/tests/test_user_grants.py rename to backend/users/api/tests/test_user_grants.py diff --git a/backend/api/users/tests/test_user_orders.py b/backend/users/api/tests/test_user_orders.py similarity index 97% rename from backend/api/users/tests/test_user_orders.py rename to backend/users/api/tests/test_user_orders.py index df135c81d9..f49796cd0b 100644 --- a/backend/api/users/tests/test_user_orders.py +++ b/backend/users/api/tests/test_user_orders.py @@ -2,7 +2,7 @@ import pytest from django.test import override_settings -from api.pretix.types import PretixOrderStatus +from pretix.api.types import PretixOrderStatus pytestmark = pytest.mark.django_db diff --git a/backend/api/users/tests/test_user_tickets.py b/backend/users/api/tests/test_user_tickets.py similarity index 100% rename from backend/api/users/tests/test_user_tickets.py rename to backend/users/api/tests/test_user_tickets.py diff --git a/backend/api/users/types.py b/backend/users/api/types.py similarity index 94% rename from backend/api/users/types.py rename to backend/users/api/types.py index a6f5cf3bb5..c75ed59e9b 100644 --- a/backend/api/users/types.py +++ b/backend/users/api/types.py @@ -3,15 +3,15 @@ from django.urls import reverse from strawberry.types import Info -from api.billing.types import BillingAddress -from api.grants.types import Grant -from api.participants.types import Participant +from billing.api.types import BillingAddress +from grants.api.types import Grant +from participants.api.types import Participant from api.permissions import IsAuthenticated -from api.pretix.query import get_user_orders, get_user_tickets -from api.pretix.types import AttendeeTicket, PretixOrder, PretixOrderStatus -from api.schedule.types import ScheduleItem -from api.submissions.types import Submission -from api.visa.types import InvitationLetterRequest +from pretix.api.query import get_user_orders, get_user_tickets +from pretix.api.types import AttendeeTicket, PretixOrder, PretixOrderStatus +from schedule.api.types import ScheduleItem +from submissions.api.types import Submission +from visa.api.types import InvitationLetterRequest from association_membership import models as association_membership_models from badges.roles import ConferenceRole, get_conference_roles_for_user from billing import models as billing_models diff --git a/backend/api/visa/mutation.py b/backend/visa/api/mutation.py similarity index 65% rename from backend/api/visa/mutation.py rename to backend/visa/api/mutation.py index 8456062124..fb05d51393 100644 --- a/backend/api/visa/mutation.py +++ b/backend/visa/api/mutation.py @@ -1,7 +1,7 @@ -from api.visa.mutations.update_invitation_letter_document import ( +from visa.api.mutations.update_invitation_letter_document import ( update_invitation_letter_document, ) -from api.visa.mutations.request_invitation_letter import request_invitation_letter +from visa.api.mutations.request_invitation_letter import request_invitation_letter from strawberry.tools import create_type VisaMutation = create_type( diff --git a/backend/api/visa/mutations/__init__.py b/backend/visa/api/mutations/__init__.py similarity index 100% rename from backend/api/visa/mutations/__init__.py rename to backend/visa/api/mutations/__init__.py diff --git a/backend/api/visa/mutations/request_invitation_letter.py b/backend/visa/api/mutations/request_invitation_letter.py similarity index 98% rename from backend/api/visa/mutations/request_invitation_letter.py rename to backend/visa/api/mutations/request_invitation_letter.py index b342f6e672..2a9833977e 100644 --- a/backend/api/visa/mutations/request_invitation_letter.py +++ b/backend/visa/api/mutations/request_invitation_letter.py @@ -4,13 +4,13 @@ import strawberry from django.db import transaction -from api.conferences.types import Conference +from conferences.api.types import Conference from api.context import Context from api.extensions import RateLimit from api.permissions import IsAuthenticated from api.types import BaseErrorType, FormNotAvailable, NoAdmissionTicket from api.utils import validate_email -from api.visa.types import InvitationLetterOnBehalfOf, InvitationLetterRequest +from visa.api.types import InvitationLetterOnBehalfOf, InvitationLetterRequest from conferences import models as conference_models from conferences.models.deadline import Deadline from pretix import user_has_admission_ticket diff --git a/backend/api/visa/mutations/update_invitation_letter_document.py b/backend/visa/api/mutations/update_invitation_letter_document.py similarity index 95% rename from backend/api/visa/mutations/update_invitation_letter_document.py rename to backend/visa/api/mutations/update_invitation_letter_document.py index 2708d9cc9b..3c01cdc484 100644 --- a/backend/api/visa/mutations/update_invitation_letter_document.py +++ b/backend/visa/api/mutations/update_invitation_letter_document.py @@ -3,8 +3,8 @@ from api.types import NotFound from custom_admin.audit import create_change_admin_log_entry from visa.models import InvitationLetterDocument as InvitationLetterDocumentModel -from api.visa.permissions import CanEditInvitationLetterDocument -from api.visa.types import InvitationLetterDocument +from visa.api.permissions import CanEditInvitationLetterDocument +from visa.api.types import InvitationLetterDocument import strawberry diff --git a/backend/api/visa/permissions.py b/backend/visa/api/permissions.py similarity index 100% rename from backend/api/visa/permissions.py rename to backend/visa/api/permissions.py diff --git a/backend/api/visa/queries/__init__.py b/backend/visa/api/queries/__init__.py similarity index 100% rename from backend/api/visa/queries/__init__.py rename to backend/visa/api/queries/__init__.py diff --git a/backend/api/visa/queries/invitation_letter_document.py b/backend/visa/api/queries/invitation_letter_document.py similarity index 80% rename from backend/api/visa/queries/invitation_letter_document.py rename to backend/visa/api/queries/invitation_letter_document.py index a195276bd2..66eb5456e8 100644 --- a/backend/api/visa/queries/invitation_letter_document.py +++ b/backend/visa/api/queries/invitation_letter_document.py @@ -1,6 +1,6 @@ -from api.visa.permissions import CanViewInvitationLetterDocument +from visa.api.permissions import CanViewInvitationLetterDocument from visa.models import InvitationLetterDocument as InvitationLetterDocumentModel -from api.visa.types import InvitationLetterDocument +from visa.api.types import InvitationLetterDocument import strawberry diff --git a/backend/api/visa/query.py b/backend/visa/api/query.py similarity index 68% rename from backend/api/visa/query.py rename to backend/visa/api/query.py index 04720a5db8..92cab63cb9 100644 --- a/backend/api/visa/query.py +++ b/backend/visa/api/query.py @@ -1,4 +1,4 @@ -from api.visa.queries.invitation_letter_document import invitation_letter_document +from visa.api.queries.invitation_letter_document import invitation_letter_document from strawberry.tools import create_type diff --git a/backend/api/visa/tests/__init__.py b/backend/visa/api/tests/__init__.py similarity index 100% rename from backend/api/visa/tests/__init__.py rename to backend/visa/api/tests/__init__.py diff --git a/backend/api/visa/tests/mutations/__init__.py b/backend/visa/api/tests/mutations/__init__.py similarity index 100% rename from backend/api/visa/tests/mutations/__init__.py rename to backend/visa/api/tests/mutations/__init__.py diff --git a/backend/api/visa/tests/mutations/test_request_invitation_letter.py b/backend/visa/api/tests/mutations/test_request_invitation_letter.py similarity index 98% rename from backend/api/visa/tests/mutations/test_request_invitation_letter.py rename to backend/visa/api/tests/mutations/test_request_invitation_letter.py index b5e8868057..3075cabf0b 100644 --- a/backend/api/visa/tests/mutations/test_request_invitation_letter.py +++ b/backend/visa/api/tests/mutations/test_request_invitation_letter.py @@ -2,7 +2,7 @@ from privacy_policy.models import PrivacyPolicyAcceptanceRecord from datetime import date -from api.visa.mutations.request_invitation_letter import MAX_LENGTH_FIELDS +from visa.api.mutations.request_invitation_letter import MAX_LENGTH_FIELDS from visa.tests.factories import InvitationLetterRequestFactory from visa.models import ( InvitationLetterRequest, @@ -54,7 +54,7 @@ def test_request_invitation_letter( graphql_client, user, mock_has_ticket, mocker, django_capture_on_commit_callbacks ): mock_notify = mocker.patch( - "api.visa.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" + "visa.api.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" ) conference = ConferenceFactory() ActiveDeadlineFactory( @@ -119,7 +119,7 @@ def test_can_request_invitation_letter_to_multiple_conferences( graphql_client, user, mock_has_ticket, mocker ): mocker.patch( - "api.visa.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" + "visa.api.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" ) graphql_client.force_login(user) @@ -194,7 +194,7 @@ def test_request_invitation_letter_email_is_ignored_for_self_requests( graphql_client, user, mock_has_ticket, mocker ): mocker.patch( - "api.visa.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" + "visa.api.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" ) conference = ConferenceFactory() @@ -246,7 +246,7 @@ def test_request_invitation_letter_on_behalf_of_other( graphql_client, user, mock_has_ticket, has_ticket, mocker ): mocker.patch( - "api.visa.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" + "visa.api.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" ) conference = ConferenceFactory() @@ -304,7 +304,7 @@ def test_duplicate_requests_for_others_are_ignored( graphql_client, user, mock_has_ticket, mocker ): mocker.patch( - "api.visa.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" + "visa.api.mutations.request_invitation_letter.notify_new_invitation_letter_request_on_slack" ) conference = ConferenceFactory() diff --git a/backend/api/visa/tests/mutations/test_update_invitation_letter_document.py b/backend/visa/api/tests/mutations/test_update_invitation_letter_document.py similarity index 100% rename from backend/api/visa/tests/mutations/test_update_invitation_letter_document.py rename to backend/visa/api/tests/mutations/test_update_invitation_letter_document.py diff --git a/backend/api/visa/tests/queries/__init__.py b/backend/visa/api/tests/queries/__init__.py similarity index 100% rename from backend/api/visa/tests/queries/__init__.py rename to backend/visa/api/tests/queries/__init__.py diff --git a/backend/api/visa/tests/queries/test_invitation_letter_document.py b/backend/visa/api/tests/queries/test_invitation_letter_document.py similarity index 100% rename from backend/api/visa/tests/queries/test_invitation_letter_document.py rename to backend/visa/api/tests/queries/test_invitation_letter_document.py diff --git a/backend/api/visa/types.py b/backend/visa/api/types.py similarity index 100% rename from backend/api/visa/types.py rename to backend/visa/api/types.py diff --git a/backend/api/volunteers_notifications/__init__.py b/backend/volunteers_notifications/api/__init__.py similarity index 100% rename from backend/api/volunteers_notifications/__init__.py rename to backend/volunteers_notifications/api/__init__.py diff --git a/backend/api/volunteers_notifications/mutations.py b/backend/volunteers_notifications/api/mutations.py similarity index 100% rename from backend/api/volunteers_notifications/mutations.py rename to backend/volunteers_notifications/api/mutations.py diff --git a/backend/api/volunteers_notifications/query.py b/backend/volunteers_notifications/api/query.py similarity index 100% rename from backend/api/volunteers_notifications/query.py rename to backend/volunteers_notifications/api/query.py diff --git a/backend/api/volunteers_notifications/tests/__init__.py b/backend/volunteers_notifications/api/tests/__init__.py similarity index 100% rename from backend/api/volunteers_notifications/tests/__init__.py rename to backend/volunteers_notifications/api/tests/__init__.py diff --git a/backend/api/volunteers_notifications/tests/test_mutations.py b/backend/volunteers_notifications/api/tests/test_mutations.py similarity index 94% rename from backend/api/volunteers_notifications/tests/test_mutations.py rename to backend/volunteers_notifications/api/tests/test_mutations.py index f27b08bc5f..e59129ef47 100644 --- a/backend/api/volunteers_notifications/tests/test_mutations.py +++ b/backend/volunteers_notifications/api/tests/test_mutations.py @@ -10,7 +10,7 @@ def test_register_volunteer_device(graphql_client, mocker, settings, platform): settings.VOLUNTEERS_PUSH_NOTIFICATIONS_IOS_ARN = "arn::ios_arn" settings.VOLUNTEERS_PUSH_NOTIFICATIONS_ANDROID_ARN = "arn::android_arn" - boto3_mock = mocker.patch("api.volunteers_notifications.mutations.boto3") + boto3_mock = mocker.patch("volunteers_notifications.api.mutations.boto3") boto3_mock.client.return_value.create_platform_endpoint.return_value = { "EndpointArn": "arn::endpoint_arn", } @@ -48,7 +48,7 @@ def test_register_again_the_same_device(graphql_client, mocker, settings, platfo device_token="test", endpoint_arn="arn::endpoint_arn", platform=platform ) - boto3_mock = mocker.patch("api.volunteers_notifications.mutations.boto3") + boto3_mock = mocker.patch("volunteers_notifications.api.mutations.boto3") boto3_mock.client.return_value.create_platform_endpoint.return_value = { "EndpointArn": "arn::endpoint_arn", } @@ -83,7 +83,7 @@ def test_cant_register_if_feature_is_disabled( device_token="test", endpoint_arn="arn::endpoint_arn", platform=platform ) - boto3_mock = mocker.patch("api.volunteers_notifications.mutations.boto3") + boto3_mock = mocker.patch("volunteers_notifications.api.mutations.boto3") boto3_mock.client.return_value.create_platform_endpoint.return_value = { "EndpointArn": "arn::endpoint_arn", } diff --git a/backend/api/voting/__init__.py b/backend/voting/api/__init__.py similarity index 100% rename from backend/api/voting/__init__.py rename to backend/voting/api/__init__.py diff --git a/backend/api/voting/mutations.py b/backend/voting/api/mutations.py similarity index 100% rename from backend/api/voting/mutations.py rename to backend/voting/api/mutations.py diff --git a/backend/api/voting/types.py b/backend/voting/api/types.py similarity index 79% rename from backend/api/voting/types.py rename to backend/voting/api/types.py index cf5c6aa72e..0cd453b450 100644 --- a/backend/api/voting/types.py +++ b/backend/voting/api/types.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Annotated if TYPE_CHECKING: - from api.submissions.types import Submission + from submissions.api.types import Submission @strawberry.enum @@ -29,7 +29,7 @@ def from_int(cls, value: int): class VoteType: id: strawberry.ID value: int - submission: Annotated["Submission", strawberry.lazy("api.submissions.types")] + submission: Annotated["Submission", strawberry.lazy("submissions.api.types")] @strawberry.type @@ -42,7 +42,7 @@ class RankStat: @strawberry.type class RankSubmission: - submission: Annotated["Submission", strawberry.lazy("api.submissions.types")] + submission: Annotated["Submission", strawberry.lazy("submissions.api.types")] rank: int score: Decimal diff --git a/backend/voting/tests/test_types.py b/backend/voting/tests/test_types.py index 340c3b7c8a..50a9c7397a 100644 --- a/backend/voting/tests/test_types.py +++ b/backend/voting/tests/test_types.py @@ -1,4 +1,4 @@ -from api.voting.types import VoteValues +from voting.api.types import VoteValues def test_get_enum_member_from_int():