|
8 | 8 | from graphql_api.utils import resolve_local_datetime_field |
9 | 9 |
|
10 | 10 | from ..models.response import Response |
11 | | -from .form import FormType |
12 | | -from .response_dimension_value import ResponseDimensionValueType |
13 | 11 |
|
14 | 12 |
|
15 | 13 | class LimitedResponseType(DjangoObjectType): |
@@ -104,102 +102,3 @@ class Meta: |
104 | 102 | "created_at", |
105 | 103 | "sequence_number", |
106 | 104 | ) |
107 | | - |
108 | | - |
109 | | -class FullResponseType(LimitedResponseType): |
110 | | - @staticmethod |
111 | | - def resolve_form(parent: Response, info): |
112 | | - return parent.form |
113 | | - |
114 | | - form = graphene.Field(graphene.NonNull(FormType)) |
115 | | - |
116 | | - @staticmethod |
117 | | - def resolve_dimensions(parent: Response, info, key_dimensions_only: bool = False): |
118 | | - qs = parent.dimensions.all() |
119 | | - |
120 | | - if key_dimensions_only: |
121 | | - qs = qs.filter(dimension__is_key_dimension=True) |
122 | | - |
123 | | - return qs |
124 | | - |
125 | | - dimensions = graphene.List( |
126 | | - graphene.NonNull(ResponseDimensionValueType), |
127 | | - key_dimensions_only=graphene.Boolean(), |
128 | | - ) |
129 | | - |
130 | | - class Meta: |
131 | | - model = Response |
132 | | - fields = ( |
133 | | - "id", |
134 | | - "form_data", |
135 | | - "created_at", |
136 | | - "sequence_number", |
137 | | - ) |
138 | | - |
139 | | - |
140 | | -class ProfileResponseType(LimitedResponseType): |
141 | | - @staticmethod |
142 | | - def resolve_form(parent: Response, info): |
143 | | - return parent.form |
144 | | - |
145 | | - form = graphene.Field(graphene.NonNull(FormType)) |
146 | | - |
147 | | - @staticmethod |
148 | | - def resolve_dimensions(response: Response, info, key_dimensions_only: bool = False): |
149 | | - """ |
150 | | - The respondent will only see values of dimensions that are designated as |
151 | | - being shown to the respondent. |
152 | | - """ |
153 | | - qs = response.dimensions.filter(value__dimension__is_public=True) |
154 | | - |
155 | | - if key_dimensions_only: |
156 | | - qs = qs.filter(value__dimension__is_key_dimension=True) |
157 | | - |
158 | | - return qs |
159 | | - |
160 | | - dimensions = graphene.List( |
161 | | - graphene.NonNull(ResponseDimensionValueType), |
162 | | - key_dimensions_only=graphene.Boolean(), |
163 | | - ) |
164 | | - |
165 | | - @staticmethod |
166 | | - def resolve_cached_dimensions(response: Response, info, key_dimensions_only: bool = False): |
167 | | - """ |
168 | | - Returns the dimensions of the response as |
169 | | - a dict of dimension slug -> list of dimension value slugs. If the response |
170 | | - is not related to a survey, there will be no dimensions and an empty dict |
171 | | - will always be returned. |
172 | | -
|
173 | | - Using this field is more efficient than querying the dimensions field |
174 | | - on the response, as the dimensions are cached on the response object. |
175 | | -
|
176 | | - The respondent will only see values of dimensions that are designated as |
177 | | - being shown to the respondent. |
178 | | - """ |
179 | | - cached_dimensions = response.cached_dimensions |
180 | | - |
181 | | - included_dimensions = response.dimensions.filter( |
182 | | - value__dimension__slug__in=cached_dimensions.keys(), |
183 | | - value__dimension__is_shown_to_subject=True, |
184 | | - ) |
185 | | - |
186 | | - if key_dimensions_only: |
187 | | - included_dimensions = included_dimensions.filter(value__dimension__is_key_dimension=True) |
188 | | - |
189 | | - included_dimension_slugs = response.dimensions.values_list("value__dimension__slug", flat=True) |
190 | | - |
191 | | - return {k: v for k, v in cached_dimensions.items() if k in included_dimension_slugs} |
192 | | - |
193 | | - cached_dimensions = graphene.Field( |
194 | | - GenericScalar, |
195 | | - description=normalize_whitespace(resolve_cached_dimensions.__doc__ or ""), |
196 | | - key_dimensions_only=graphene.Boolean(), |
197 | | - ) |
198 | | - |
199 | | - class Meta: |
200 | | - model = Response |
201 | | - fields = ( |
202 | | - "id", |
203 | | - "form_data", |
204 | | - "created_at", |
205 | | - ) |
0 commit comments