nexus-5/core/graphql/queries/project_scope_template.py
2026-01-26 11:09:40 -05:00

50 lines
2.0 KiB
Python

from typing import List, Optional, Iterable
import strawberry
import strawberry_django as sd
from strawberry import ID
from strawberry_django.relay import DjangoCursorConnection
from core.graphql.filters.project_scope_template import (
ProjectScopeTemplateFilter,
ProjectAreaTemplateFilter,
ProjectTaskTemplateFilter,
)
from core.graphql.types.project_scope_template import (
ProjectScopeTemplateType,
ProjectAreaTemplateType,
ProjectTaskTemplateType,
)
from core.models.project_scope_template import (
ProjectAreaTemplate,
ProjectTaskTemplate,
)
@strawberry.type
class Query:
project_scope_template: Optional[ProjectScopeTemplateType] = sd.node()
project_scope_templates: List[ProjectScopeTemplateType] = sd.field(filters=ProjectScopeTemplateFilter)
project_area_template: Optional[ProjectAreaTemplateType] = sd.node()
project_area_templates: List[ProjectAreaTemplateType] = sd.field(filters=ProjectAreaTemplateFilter)
project_task_template: Optional[ProjectTaskTemplateType] = sd.node()
project_task_templates: List[ProjectTaskTemplateType] = sd.field(filters=ProjectTaskTemplateFilter)
@sd.connection(
DjangoCursorConnection["ProjectAreaTemplateType"],
name="getProjectAreaTemplates",
description="Return area templates for a given ProjectScopeTemplate",
filters=ProjectAreaTemplateFilter,
)
def get_project_area_templates(self, scope_template_id: ID) -> Iterable[ProjectAreaTemplate]:
return ProjectAreaTemplate.objects.filter(scope_template_id=scope_template_id).order_by("order", "name")
@sd.connection(
DjangoCursorConnection["ProjectTaskTemplateType"],
name="getProjectTaskTemplates",
description="Return task templates for a given ProjectAreaTemplate",
filters=ProjectTaskTemplateFilter,
)
def get_project_task_templates(self, area_template_id: ID) -> Iterable[ProjectTaskTemplate]:
return ProjectTaskTemplate.objects.filter(area_template_id=area_template_id).order_by("order", "id")