diff --git a/apps/tutorial/graphql/inputs/inputs.py b/apps/tutorial/graphql/inputs/inputs.py index 56943640..2d0c9b39 100644 --- a/apps/tutorial/graphql/inputs/inputs.py +++ b/apps/tutorial/graphql/inputs/inputs.py @@ -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 @@ -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) diff --git a/apps/tutorial/graphql/inputs/project_types/street.py b/apps/tutorial/graphql/inputs/project_types/street.py new file mode 100644 index 00000000..1d2c6ad1 --- /dev/null +++ b/apps/tutorial/graphql/inputs/project_types/street.py @@ -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: ... diff --git a/firebase b/firebase index c2f3bc74..23eadc93 160000 --- a/firebase +++ b/firebase @@ -1 +1 @@ -Subproject commit c2f3bc74c5d5387c51c50e7ac569e378f2fc3e87 +Subproject commit 23eadc9377d026ff7107c9b9fb0cc1624f4f9a6f diff --git a/project_types/street/tutorial.py b/project_types/street/tutorial.py index b5816dfb..ff7d5ac6 100644 --- a/project_types/street/tutorial.py +++ b/project_types/street/tutorial.py @@ -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, @@ -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 @@ -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( diff --git a/schema.graphql b/schema.graphql index ca858d87..20efe53f 100644 --- a/schema.graphql +++ b/schema.graphql @@ -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.""" @@ -2493,6 +2499,7 @@ input TutorialTaskProjectTypeSpecificInput @oneOf { compare: CompareTutorialTaskPropertyInput completeness: CompletenessTutorialTaskPropertyInput find: FindTutorialTaskPropertyInput + street: StreetTutorialTaskPropertyInput validate: ValidateTutorialTaskPropertyInput validateImage: ValidateImageTutorialTaskPropertyInput }