Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.1] Add new app layout & relocate API to it #1340

Merged
merged 2 commits into from
Oct 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 0 additions & 5 deletions api/apps.py

This file was deleted.

4 changes: 2 additions & 2 deletions config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ class Common(Environment):
"tinymce",
"subforms",
# Our apps
"tilavarauspalvelu",
"common",
"users",
"applications",
Expand All @@ -93,7 +94,6 @@ class Common(Environment):
"services",
"spaces",
"terms_of_use",
"api",
]

MIDDLEWARE = [
Expand Down Expand Up @@ -391,7 +391,7 @@ def OIDC_API_TOKEN_AUTH(cls):
# --- Graphene settings ------------------------------------------------------------------------------------------

GRAPHENE = {
"SCHEMA": "api.graphql.schema.schema",
"SCHEMA": "tilavarauspalvelu.api.graphql.schema.schema",
"MIDDLEWARE": [
"config.middleware.GraphQLSentryMiddleware",
],
Expand Down
8 changes: 4 additions & 4 deletions config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
from django.views.decorators.csrf import csrf_exempt
from graphene_django_extensions import FileUploadGraphQLView

from api.gdpr.views import TilavarauspalveluGDPRAPIView
from api.rest.views import csrf_view, reservation_ical, terms_of_use_pdf
from api.webhooks.urls import webhook_router
from tilavarauspalvelu.api.gdpr.views import TilavarauspalveluGDPRAPIView
from tilavarauspalvelu.api.rest.views import csrf_view, reservation_ical, terms_of_use_pdf
from tilavarauspalvelu.api.webhooks.urls import webhook_router

# Mock the `each_context` method to add some custom context variables.
original_each_context = admin.site.each_context
Expand All @@ -34,7 +34,7 @@
path("v1/terms_of_use_pdf/", terms_of_use_pdf, name="terms_of_use_pdf"),
path("v1/webhook/", include(webhook_router.urls)),
path("pysocial/", include("social_django.urls", namespace="social")),
path("helauth/", include("api.helauth.urls")),
path("helauth/", include("tilavarauspalvelu.api.helauth.urls")),
re_path(
# GDPR UUID's are v1, not v4!
r"gdpr/v1/user/(?P<uuid>[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})/?$",
Expand Down
2 changes: 1 addition & 1 deletion email_notification/helpers/email_builder_reservation.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ def _get_reservation_reservation_unit_name(reservation: Reservation, language: L

@staticmethod
def _get_reservation_subsidised_price(reservation: Reservation) -> Decimal:
from api.graphql.types.reservation.serializers.mixins import ReservationPriceMixin
from tilavarauspalvelu.api.graphql.types.reservation.serializers.mixins import ReservationPriceMixin

if not reservation.applying_for_free_of_charge:
return reservation.price
Expand Down
10 changes: 5 additions & 5 deletions locale/fi/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,23 @@ msgstr ""
msgid "My bookings"
msgstr "Omat Varaukset"

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has upcoming or too recent reservations."
msgstr "Käyttäjällä on tulevia tai liian äskettäisiä varauksia."

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has an unhandled application."
msgstr "Käyttäjällä on käsittelemätön hakemus."

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has open payments."
msgstr "Käyttäjällä on avoimia maksuja."

#: api/graphql/extensions/fields.py
#: tilavarauspalvelu/api/graphql/extensions/fields.py
msgid "A valid integer is required."
msgstr "Syötä oikea kokonaisluku."

#: api/graphql/extensions/fields.py
#: tilavarauspalvelu/api/graphql/extensions/fields.py
#, python-format
msgid ""
"Choice \"%(choice)s\" is not allowed. Allowed choices are: "
Expand Down
10 changes: 5 additions & 5 deletions locale/sv/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,23 @@ msgstr ""
msgid "My bookings"
msgstr "Mina bokningar"

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has upcoming or too recent reservations."
msgstr ""

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has an unhandled application."
msgstr ""

#: api/gdpr/views.py
#: tilavarauspalvelu/api/gdpr/views.py
msgid "User has open payments."
msgstr ""

#: api/graphql/extensions/fields.py
#: tilavarauspalvelu/api/graphql/extensions/fields.py
msgid "A valid integer is required."
msgstr ""

#: api/graphql/extensions/fields.py
#: tilavarauspalvelu/api/graphql/extensions/fields.py
#, python-format
msgid ""
"Choice \"%(choice)s\" is not allowed. Allowed choices are: "
Expand Down
6 changes: 2 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ unsafe-fixes = true
line-length = 120
target-version = "py312"
extend-exclude = [
"api/examples.py",
"build",
"local_settings.py",
"migrations",
Expand Down Expand Up @@ -211,11 +210,11 @@ lint.ignore = [
"utils/query_performance.py" = [
"PLR0912", # This one is allowed to be as complex as it needs to be.
]
"api/webhooks/serializers.py" = [
"tilavarauspalvelu/api/webhooks/serializers.py" = [
"N802", # Allow non-lowercase function names for webhook serializers.
"N815", # Allow mixedCase variables for webhook serializers.
]
"api/graphql/extensions/error_codes.py" = [
"tilavarauspalvelu/api/graphql/extensions/error_codes.py" = [
"ERA001", # Commented code is fine here.
]
"test_*.py" = [
Expand Down Expand Up @@ -342,7 +341,6 @@ filterwarnings = [
[tool.coverage.run]
source = [
"allocation/",
"api/",
"applications/",
"email_notification/",
"merchants/",
Expand Down
4 changes: 3 additions & 1 deletion tests/test_graphql_api/test_application_round/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

@contextlib.contextmanager
def disable_reservation_generation():
path = "api.graphql.types.application_round.serializers.generate_reservation_series_from_allocations"
path = (
"tilavarauspalvelu.api.graphql.types.application_round.serializers.generate_reservation_series_from_allocations"
)
with patch(path, return_value=None) as mock:
yield mock
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
from graphene_django_extensions.testing.utils import parametrize_helper
from graphql_relay import to_global_id

from api.graphql.types.banner_notification.types import BannerNotificationNode
from common.enums import BannerNotificationTarget
from tests.factories import BannerNotificationFactory, UserFactory
from tilavarauspalvelu.api.graphql.types.banner_notification.types import BannerNotificationNode

# Applied to all tests
pytestmark = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@

import pytest

from api.graphql.types.reservation.serializers.mixins import ReservationPriceMixin
from common.date_utils import local_datetime
from reservation_units.enums import PriceUnit, PricingStatus, PricingType
from tests.factories import ReservationUnitFactory, ReservationUnitPricingFactory
from tilavarauspalvelu.api.graphql.types.reservation.serializers.mixins import ReservationPriceMixin

# Applied to all tests
pytestmark = [
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
File renamed without changes.
Empty file.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This file should contain all possible error codes that can be returned by the GraphQL API (WIP)
# Do not put anything else but error codes in this file, so that the error codes can be used like this:
#
# from api.graphql.extensions import error_codes
# from tilavarauspalvelu.api.graphql.extensions import error_codes
#
# error_codes.ERROR_CODE_NAME
#
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,49 +14,42 @@
# Import all queries before importing any mutations! See explanation above.
from .queries import * # noqa: F403 # isort:skip

from api.graphql.types.allocated_time_slot.mutations import (
AllocatedTimeSlotCreateMutation,
AllocatedTimeSlotDeleteMutation,
)
from api.graphql.types.application.mutations import (
from .types.allocated_time_slot.mutations import AllocatedTimeSlotCreateMutation, AllocatedTimeSlotDeleteMutation
from .types.application.mutations import (
ApplicationCancelMutation,
ApplicationCreateMutation,
ApplicationSendMutation,
ApplicationUpdateMutation,
RejectAllApplicationOptionsMutation,
RestoreAllApplicationOptionsMutation,
)
from api.graphql.types.application_round.mutation import SetApplicationRoundHandledMutation
from api.graphql.types.application_section.mutations import (
from .types.application_round.mutation import SetApplicationRoundHandledMutation
from .types.application_section.mutations import (
ApplicationSectionCreateMutation,
ApplicationSectionDeleteMutation,
ApplicationSectionUpdateMutation,
RejectAllSectionOptionsMutation,
RestoreAllSectionOptionsMutation,
)
from api.graphql.types.banner_notification.mutations import (
from .types.banner_notification.mutations import (
BannerNotificationCreateMutation,
BannerNotificationDeleteMutation,
BannerNotificationUpdateMutation,
)
from api.graphql.types.equipment.mutations import (
EquipmentCreateMutation,
EquipmentDeleteMutation,
EquipmentUpdateMutation,
)
from api.graphql.types.equipment_category.mutations import (
from .types.equipment.mutations import EquipmentCreateMutation, EquipmentDeleteMutation, EquipmentUpdateMutation
from .types.equipment_category.mutations import (
EquipmentCategoryCreateMutation,
EquipmentCategoryDeleteMutation,
EquipmentCategoryUpdateMutation,
)
from api.graphql.types.merchants.mutations import RefreshOrderMutation
from api.graphql.types.purpose.mutations import PurposeCreateMutation, PurposeUpdateMutation
from api.graphql.types.recurring_reservation.mutations import (
from .types.merchants.mutations import RefreshOrderMutation
from .types.purpose.mutations import PurposeCreateMutation, PurposeUpdateMutation
from .types.recurring_reservation.mutations import (
RecurringReservationCreateMutation,
RecurringReservationUpdateMutation,
ReservationSeriesCreateMutation,
)
from api.graphql.types.reservation.mutations import (
from .types.reservation.mutations import (
ReservationAdjustTimeMutation,
ReservationApproveMutation,
ReservationCancellationMutation,
Expand All @@ -72,17 +65,17 @@
ReservationUpdateMutation,
ReservationWorkingMemoMutation,
)
from api.graphql.types.reservation_unit.mutations import ReservationUnitCreateMutation, ReservationUnitUpdateMutation
from api.graphql.types.reservation_unit_image.mutations import (
from .types.reservation_unit.mutations import ReservationUnitCreateMutation, ReservationUnitUpdateMutation
from .types.reservation_unit_image.mutations import (
ReservationUnitImageCreateMutation,
ReservationUnitImageDeleteMutation,
ReservationUnitImageUpdateMutation,
)
from api.graphql.types.reservation_unit_option.mutations import ReservationUnitOptionUpdateMutation
from api.graphql.types.resource.mutations import ResourceCreateMutation, ResourceDeleteMutation, ResourceUpdateMutation
from api.graphql.types.space.mutations import SpaceCreateMutation, SpaceDeleteMutation, SpaceUpdateMutation
from api.graphql.types.unit.mutations import UnitUpdateMutation
from api.graphql.types.user.mutations import UserUpdateMutation
from .types.reservation_unit_option.mutations import ReservationUnitOptionUpdateMutation
from .types.resource.mutations import ResourceCreateMutation, ResourceDeleteMutation, ResourceUpdateMutation
from .types.space.mutations import SpaceCreateMutation, SpaceDeleteMutation, SpaceUpdateMutation
from .types.unit.mutations import UnitUpdateMutation
from .types.user.mutations import UserUpdateMutation

__all__ = [
"AllocatedTimeSlotCreateMutation",
Expand Down
File renamed without changes.
File renamed without changes.
Empty file.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from graphene_django_extensions import DjangoNode

from api.graphql.types.ability_group.permissions import AbilityGroupPermission
from reservations.models import AbilityGroup

from .permissions import AbilityGroupPermission


class AbilityGroupNode(DjangoNode):
class Meta:
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from graphene_django_extensions import DjangoNode

from api.graphql.types.address.permissions import AddressPermission
from applications.models import Address

from .permissions import AddressPermission


class AddressNode(DjangoNode):
class Meta:
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from graphene_django_extensions import DjangoNode

from api.graphql.types.age_group.permissions import AgeGroupPermission
from reservations.models import AgeGroup

from .permissions import AgeGroupPermission

__all__ = [
"AgeGroupNode",
]
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
from graphene_django_extensions.typing import AnyUser
from rest_framework.exceptions import ValidationError

from api.graphql.types.allocated_time_slot.permissions import AllocatedTimeSlotPermission
from api.graphql.types.allocated_time_slot.serializers import AllocatedTimeSlotCreateSerializer
from applications.models import AllocatedTimeSlot

from .permissions import AllocatedTimeSlotPermission
from .serializers import AllocatedTimeSlotCreateSerializer

__all__ = [
"AllocatedTimeSlotCreateMutation",
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from graphene_django_extensions.errors import GQLCodeError
from graphene_django_extensions.permissions import BasePermission

from api.graphql.extensions import error_codes
from applications.models import AllocatedTimeSlot, ReservationUnitOption
from common.typing import AnyUser
from tilavarauspalvelu.api.graphql.extensions import error_codes

__all__ = [
"AllocatedTimeSlotPermission",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
from rest_framework import serializers
from rest_framework.exceptions import ValidationError

from api.graphql.extensions import error_codes
from applications.enums import Weekday
from applications.models import AllocatedTimeSlot, ApplicationSection, ReservationUnitOption, SuitableTimeRange
from common.date_utils import time_difference, timedelta_to_json
from tilavarauspalvelu.api.graphql.extensions import error_codes

__all__ = [
"AllocatedTimeSlotCreateSerializer",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from graphene_django_extensions import DjangoNode

from api.graphql.types.allocated_time_slot.filtersets import AllocatedTimeSlotFilterSet
from api.graphql.types.allocated_time_slot.permissions import AllocatedTimeSlotPermission
from applications.models import AllocatedTimeSlot

from .filtersets import AllocatedTimeSlotFilterSet
from .permissions import AllocatedTimeSlotPermission

__all__ = [
"AllocatedTimeSlotNode",
]
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from graphene_django_extensions import CreateMutation, UpdateMutation

from api.graphql.types.application.permissions import ApplicationPermission, UpdateAllApplicationOptionsPermission
from api.graphql.types.application.serializers import (
from .permissions import ApplicationPermission, UpdateAllApplicationOptionsPermission
from .serializers import (
ApplicationCancelSerializer,
ApplicationCreateSerializer,
ApplicationSendSerializer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@
from rest_framework.exceptions import ValidationError
from rest_framework.settings import api_settings

from api.graphql.extensions import error_codes
from api.graphql.types.address.serializers import AddressSerializer
from api.graphql.types.application_section.serializers import ApplicationSectionForApplicationSerializer
from api.graphql.types.organisation.serializers import OrganisationSerializer
from api.graphql.types.person.serializers import PersonSerializer
from applications.enums import ApplicationStatusChoice
from applications.models import AllocatedTimeSlot, Application, ReservationUnitOption
from common.fields.serializer import CurrentUserDefaultNullable
from email_notification.helpers.application_email_notification_sender import ApplicationEmailNotificationSender
from tilavarauspalvelu.api.graphql.extensions import error_codes
from tilavarauspalvelu.api.graphql.types.address.serializers import AddressSerializer
from tilavarauspalvelu.api.graphql.types.application_section.serializers import (
ApplicationSectionForApplicationSerializer,
)
from tilavarauspalvelu.api.graphql.types.organisation.serializers import OrganisationSerializer
from tilavarauspalvelu.api.graphql.types.person.serializers import PersonSerializer

if TYPE_CHECKING:
from common.typing import AnyUser
Expand Down
Loading