50 lines
2.0 KiB
Python
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")
|