Skip to content
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions apps/tutorial/graphql/inputs/inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from .project_types.compare import CompareTutorialTaskPropertyInput
from .project_types.completeness import CompletenessTutorialTaskPropertyInput
from .project_types.find import FindTutorialTaskPropertyInput
from .project_types.street import StreetTutorialTaskPropertyInput
from .project_types.validate import ValidateTutorialTaskPropertyInput
from .project_types.validate_image import ValidateImageTutorialTaskPropertyInput

Expand All @@ -34,6 +35,7 @@ class TutorialTaskProjectTypeSpecificInput:
validate: ValidateTutorialTaskPropertyInput | None = strawberry.UNSET
validate_image: ValidateImageTutorialTaskPropertyInput | None = strawberry.UNSET
completeness: CompletenessTutorialTaskPropertyInput | None = strawberry.UNSET
street: StreetTutorialTaskPropertyInput | None = strawberry.UNSET


@strawberry_django.input(TutorialTask)
Expand Down
7 changes: 7 additions & 0 deletions apps/tutorial/graphql/inputs/project_types/street.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import strawberry

from project_types.street import tutorial as street_tutorial


@strawberry.experimental.pydantic.input(model=street_tutorial.StreetTutorialTaskProperty, all_fields=True)
class StreetTutorialTaskPropertyInput: ...
33 changes: 19 additions & 14 deletions project_types/street/tutorial.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import typing

from pyfirebase_mapswipe import extended_models as firebase_ext_models
from pyfirebase_mapswipe import models as firebase_models

from apps.project.models import ProjectTypeEnum
from apps.tutorial.models import Tutorial, TutorialTask
from project_types.base import tutorial as base_tutorial
from project_types.street.project import StreetProjectProperty
from utils.geo.transform import convert_json_str_to_wkt
from utils import fields as custom_fields


class StreetTutorialTaskProperty(base_tutorial.BaseTutorialTaskProperty):
# FIXME(tnagorra): Use geometry from TutorialTask
object_geometry: str
mapillary_image_id: custom_fields.PydanticLongText
# NOTE: geometry is not used but we are saving this for the records
geometry: str


# TODO(susilnem): This is not finalized
class StreetTutorial(
base_tutorial.BaseTutorial[
StreetProjectProperty,
Expand All @@ -28,20 +29,25 @@ def __init__(self, tutorial: Tutorial):
super().__init__(tutorial)

@typing.override
def get_task_specifics_for_firebase(self, task: TutorialTask, index: int):
task_specifics = self.tutorial_task_property_class(
**task.project_type_specifics,
)

geometry_wkt = convert_json_str_to_wkt(task_specifics.object_geometry)
def compress_tasks_on_firebase(self) -> bool:
return True

@typing.override
def get_task_specifics_for_firebase(self, task: TutorialTask, index: int):
task_specifics = self.tutorial_task_property_class.model_validate(task.project_type_specifics)
return firebase_models.FbStreetTutorialTask(
taskId=f"t{index}",
geometry=geometry_wkt,
screen=task.scenario.scenario_page_number,
projectId=self.tutorial.firebase_id,
groupId=self.get_tutorial_group_key(),
taskId=task_specifics.mapillary_image_id,
geometry="",
referenceAnswer=task.reference,
screen=task.scenario.scenario_page_number,
)

@typing.override
def get_group_specifics_for_firebase(self):
return firebase_ext_models.FbEmptyModel()

@typing.override
def get_tutorial_specifics_for_firebase(self):
custom_opts = self.project_type_specifics.custom_options
Expand All @@ -50,7 +56,6 @@ def get_tutorial_specifics_for_firebase(self):
assert projectType == 7, "Project Street should be 7"

return firebase_models.FbStreetTutorial(
zoomLevel=14,
projectType=projectType,
customOptions=[
firebase_models.FbObjCustomOption(
Expand Down
9 changes: 8 additions & 1 deletion schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -2152,8 +2152,14 @@ type StreetProjectPropertyType {
mapillaryImageFilters: StreetMapillaryImageFilters!
}

input StreetTutorialTaskPropertyInput {
geometry: String!
mapillaryImageId: String!
}

type StreetTutorialTaskPropertyType {
objectGeometry: String!
geometry: String!
mapillaryImageId: String!
}

"""Model representing assets for a tutorial."""
Expand Down Expand Up @@ -2493,6 +2499,7 @@ input TutorialTaskProjectTypeSpecificInput @oneOf {
compare: CompareTutorialTaskPropertyInput
completeness: CompletenessTutorialTaskPropertyInput
find: FindTutorialTaskPropertyInput
street: StreetTutorialTaskPropertyInput
validate: ValidateTutorialTaskPropertyInput
validateImage: ValidateImageTutorialTaskPropertyInput
}
Expand Down
Loading